Torres de Hanói
En este ejercicio, implementarás el rompecabezas Torres de Hanói con un algoritmo recursivo. El objetivo de este juego es transferir todos los discos de una de las tres barras a otra, siguiendo estas reglas:
- Solo puedes mover un disco cada vez.
- Solo puedes coger el disco superior de una de las pilas y colocarlo encima de otra pila.
- No puedes poner un disco mayor encima de otro menor.
El algoritmo mostrado es una implementación de este juego con cuatro discos y tres barras llamadas "A", "B" y "C". El código contiene dos errores. Si lo ejecutas, bloquea la consola porque supera la profundidad máxima de recursión. ¿Puedes encontrar los errores y solucionarlos?
Este ejercicio forma parte del curso
Estructuras de datos y algoritmos en Python
Instrucciones del ejercicio
- Corrige el caso base.
- Corrige las llamadas a la función
hanoi()
.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
def hanoi(num_disks, from_rod, to_rod, aux_rod):
# Correct the base case
if num_disks >= 0:
# Correct the calls to the hanoi function
hanoi(num_disks, from_rod, aux_rod, to_rod)
print("Moving disk", num_disks, "from rod", from_rod,"to rod",to_rod)
hanoi(num_disks, aux_rod, to_rod, from_rod)
num_disks = 4
source_rod = 'A'
auxiliar_rod = 'B'
target_rod = 'C'
hanoi(num_disks, source_rod, target_rod, auxiliar_rod)