CommencezCommencez gratuitement

Tours de Hanoï

Dans cet exercice, vous allez implémenter l'énigme des Tours de Hanoï avec un algorithme récursif. Le but du jeu est de transférer tous les disques d'une des trois tiges vers une autre, en respectant ces règles :

  • Vous ne pouvez déplacer qu'un seul disque à la fois.
  • Vous ne pouvez prendre que le disque du dessus d'une pile et le déposer sur le dessus d'une autre pile.
  • Vous ne pouvez pas placer un disque plus grand sur un plus petit.

Picture of the game Tower of Hanoi

L'algorithme présenté est une implémentation de ce jeu avec quatre disques et trois tiges nommées « A », « B » et « C ». Le code contient deux erreurs. En fait, si vous l'exécutez, il fait planter la console parce qu'il dépasse la profondeur de récursion maximale. Pouvez-vous trouver les bogues et les corriger ?

Cette activité fait partie du cours

Structures de données et algorithmes en Python

Voir le cours

Instructions de l’exercice

  • Corrigez le cas de base.
  • Corrigez les appels à la fonction hanoi().

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code