eXoPython Exercice de type Bac
TP - Hanoi

Exercice









Thème & objectifs

On s’intéresse dans cet exercice à la résolution du jeu des tours d'Hanoi.
Le jeu des tours d'Hanoi est un jeu de réflexion imaginé par le mathématicien français Édouard Lucas, et consistant à déplacer des disques de diamètres différents d'une tour de « départ » à une tour d'« arrivée » en passant par une tour « intermédiaire », et ceci en un minimum de coups, tout en respectant les règles suivantes :
  • on ne peut déplacer plus d'un disque à la fois ;
  • on ne peut placer un disque que sur un autre disque plus grand que lui ou sur un emplacement vide.

On suppose que cette dernière règle est également respectée dans la configuration de départ.

Dans ce TP, nous allons :
  • Déterminer une méthode de résolution du ce jeu
  • L'implémenter en Pyhton


  1. Après avoir effectuer plusieurs partie en changeant le nombre de disque, proposer une méthode / un algorithme de résolution du jeu des to b urs d'Hanoi. Jeu tour d'Hanoi

  2. On nomme les 3 tours "A", "B" et "C".

    Implémenter une fonction hanoi(n,depart,intermediaire,arrivee) qui devra déplacer n disques de la tour depart à la tour arrivee en utilisant la tour intermediaire comme tour de transit.
    Pour indiquer qu'on déplace un disque de la tour A à la tour B on utilisera l'instruction print("A->B")

    Prototype de la fonction.
    Nom :
    • hanoi
    Argument.s :
    • n : nombre de disque (entier)
    • depart : nom de la tour de départ ("A", "B", "C")
    • intermediaire : nom de la tour de intermédiaire ("A", "B", "C")
    • arrivee : nom de la tour de d'arrivée ("A", "B", "C")
    Retour.s :
    • lst : la liste aprés permutation des deux éléments

    
    fonction Hanoi(n, depart, intermediaire, arrivee):
        Si n = 0 alors:
            renvoyer Rien
        Sinon:
            hanoi(n - 1,depart, arrivee ,intermediaire)
            afficher depart "->" arrivee
            hanoi(n - 1,intermediaire, depart, arrivee)