ComenzarEmpieza gratis

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.

Imagen del juego Torres de Hanói

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

Ver curso

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)
Editar y ejecutar código