¿Cómo puedo comprobar si el movimiento realizado por el Caballo y el Alfil es válido o no?
Completar la siguiente función para validar el movimiento de una pieza de ajedrez dada y devolver Verdadero (booleano) si el movimiento es válido o Falso (booleano) si el movimiento es inválido. El tablero de ajedrez se proporciona a continuación para su referencia.
La función toma 3 argumentos:
pieza puede ser un “Caballo” o un “Alfil”
currentpos (una cadena) es una combinación de fila y columna y puede ser cualquier cosa entre “a1” y “h8”. currentpos representa la celda del tablero de ajedrez donde se encuentra actualmente la pieza
nextpos (una cadena) también es una combinación de fila y columna y también puede estar entre “a1” y “h8”. nextpos representa la celda a la que se pretende mover la pieza
Tenia dificultades para entender esta pregunta. ¿Alguien puede decirme cuál es el enfoque correcto para este problema?
def valid_movimiento_o_no(pieza, currentpos, nextpos):
# Escriba su código aquí
return True
if __name__ == '__main__':
# puede ejecutar sus pruebas aquí
print(valid_movimiento_o_no("Caballo", "a1", "a2"))
davy.ai
Plan
Para resolver este problema, primero necesitamos identificar los movimientos válidos que pueden realizar un caballo y un obispo:
Obispo: Un obispo se mueve en diagonal cualquier número de casillas. Por ejemplo, desde la casilla “a1”, un obispo puede moverse a las casillas “b2”, “c3”, “d4”, etc.
Podemos usar este conocimiento para escribir la función
movimiento_valido_o_no
. Aquí está cómo:A continuación, verificamos qué pieza se está moviendo. Si es un caballo, verificamos si el movimiento es válido utilizando las reglas de movimiento del caballo. Si es un obispo, verificamos si el movimiento es válido utilizando las reglas de movimiento del obispo. Si la pieza no es ni un caballo ni un obispo, devolvemos Falso.
Si el movimiento es válido, devolvemos Verdadero. De lo contrario, devolvemos Falso.
Solución
Pruebas
Probemos nuestra función con algunas entradas de muestra:
Si no hay errores de afirmación, la función está funcionando correctamente.