Mi solución no pasa el segundo test, pero a mí me funciona bien.
Este código filtra algunos movimientos, lo que lo hace más eficiente.
PD: Vengo desde la próxima clase y me faltó poner una forma de verificar si ya había visitado un lugar en el tablero.
def minKnightMoves(origenX, origenY, objetivoX, objetivoY):
# Tu código aquí 👇
saltos = 0
movimientos = [(origenX,origenY)]
while movimientos:
for _ in range(len(movimientos)):
mov = movimientos.pop(0)
x = mov[0]
y = mov[1]
current_modulo = int(((x - objetivoX )**2 + (y - objetivoY)**2)**(1/2))
print(current_modulo)
if x == objetivoX and y == objetivoY:
print("-------------------")
print(x,y)
print("-------------------")
return saltos
for next_mov in [(-1,2),(1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,1),(-2,-1)]:
"""mi pequeño aporte para mejorar un poco el rendimineto"""
new_modulo = int((((x + next_mov[0] )- objetivoX )**2 + ((y + next_mov[1]) - objetivoY)**2)**(1/2))
if current_modulo-1 > new_modulo or new_modulo <= 2:
movimientos.append((x + next_mov[0] , y + next_mov[1] ))
saltos += 1
return saltos```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.