Commit d29bd8bc by almagosi

Camino Optimo Finalizado

parent c1aa5849
Showing with 44 additions and 36 deletions
...@@ -81,38 +81,45 @@ def encontrarCamino(matriz,posicionInicial, posicionFinal): ...@@ -81,38 +81,45 @@ def encontrarCamino(matriz,posicionInicial, posicionFinal):
def factible(direc,pos): def factible(direc,pos):
def movimientoAceptado(direccion : Direccion, bloque : int): def movimientoAceptado(direccion : Direccion, bloque : int, bloqueSiguiente : int):
#print(direccion.name, bloque)
if(direccion == Direccion.Arriba): def moviAcept(direccion : Direccion, bloque : int):
#print(direccion.name, bloque)
#arriba = [2,4,5,8,9,10,11] if(direccion == Direccion.Arriba):
arriba = [2,3,6,7,8,10,11]
if(bloque in arriba): #arriba = [2,4,5,8,9,10,11]
return True arriba = [2,3,6,7,8,10,11]
return False if(bloque in arriba):
if(direccion == Direccion.Abajo): return True
#abajo = [2,3,6,7,8,10,11] return False
abajo = [2,4,5,8,9,10,11] if(direccion == Direccion.Abajo):
if(bloque in abajo): #abajo = [2,3,6,7,8,10,11]
return True abajo = [2,4,5,8,9,10,11]
return False if(bloque in abajo):
#if(bloquePosterio.value == 2 or bloquePosterio.value == 3 return True
# or bloquePosterio.value == 6 or bloquePosterio.value == 7 return False
# or bloquePosterio.value == 10 or bloquePosterio.value == 11): #if(bloquePosterio.value == 2 or bloquePosterio.value == 3
# return True # or bloquePosterio.value == 6 or bloquePosterio.value == 7
#return False # or bloquePosterio.value == 10 or bloquePosterio.value == 11):
if(direccion == Direccion.Izquierda): # return True
#izquierda = [1,3,4,7,8,9,11] #return False
izquierda = [1,5,6,7,9,10,11] if(direccion == Direccion.Izquierda):
if(bloque in izquierda): #izquierda = [1,3,4,7,8,9,11]
return True izquierda = [1,5,6,7,9,10,11]
return False if(bloque in izquierda):
if(direccion == Direccion.Derecha): return True
#derecha = [1,6,7,9,10,11] return False
derecha = [1,3,4,7,8,9,11] if(direccion == Direccion.Derecha):
if(bloque in derecha): #derecha = [1,6,7,9,10,11]
return True derecha = [1,3,4,7,8,9,11]
return False if(bloque in derecha):
return True
return False
direcSiguiente = Direccion((direccion.value + 2) % 4)
if(moviAcept(direccion,bloque) and moviAcept(direcSiguiente,bloqueSiguiente)):
return True
return False
#pos = sol[-1] #pos = sol[-1]
if(pos == posicionInicial): if(pos == posicionInicial):
...@@ -131,7 +138,7 @@ def encontrarCamino(matriz,posicionInicial, posicionFinal): ...@@ -131,7 +138,7 @@ def encontrarCamino(matriz,posicionInicial, posicionFinal):
#print(f"Descartado Edificio {direccion} : {pos}") #print(f"Descartado Edificio {direccion} : {pos}")
return False return False
if(not movimientoAceptado(direc,matriz[sol[-1][0]][sol[-1][1]])): if(not movimientoAceptado(direc,matriz[sol[-1][0]][sol[-1][1]],matriz[pos[0]][pos[1]])):
#print(f"Descartado Movimiento no aceptado {direccion} : {sol[-1]}") #print(f"Descartado Movimiento no aceptado {direccion} : {sol[-1]}")
return False return False
...@@ -226,8 +233,9 @@ matriz = [["02","02","00","01","05"], ...@@ -226,8 +233,9 @@ matriz = [["02","02","00","01","05"],
#pos = mAdy[6][0] #pos = mAdy[6][0]
#mAdy[6][0] = 2 #mAdy[6][0] = 2
sol = encontrarCamino(matriz,(5,2),(0,3)) sol = encontrarCamino(matriz,(5,2),(6,0))
#mAdy[6][0] = pos #mAdy[6][0] = pos
print(sol) for s in sol:
\ No newline at end of file print(s)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment