Cahier des charges
Le but de ce programme est de résoudre le problème des tours de Hanoï.
Ce problème est le suivant. Le joueur dispose de n anneaux et de trois tours.
Ces anneaux sont de tailles toutes différentes et à tout moment, au-dessus de tout anneau, il n'y a que des anneaux plus petits que lui. Initialement tous les anneaux sont disposés sur la première tour et on veut les déplacer sur la deuxième, en les déplaçant un par un d'une tour à l'autre. La première tour est rouge, la seconde verte et la troisième bleue.
Spécifications :
Nous allons traiter ce problème de manière récursive.
Supposons que nous sachions déplacer un nombre donné d'anneaux situés en haut de la pile, d'une tour de départ donnée vers une tour d'arrivée donnée. Pour déplacer les n anneaux de la tour rouge vers la tour verte, on déplace n-1 anneaux de la tour rouge vers la tour bleue, puis l'unique anneau restant de la tour rouge vers la verte, et enfin les n-1 anneaux de la tour bleue vers la tour verte. Pour effectuer le déplacement nous allons construire de manière "récursive" une fonction "hanoi", à quatre paramètres, un entier représentant le nombre de tours à déplacer, puis trois paramètres de type "Tour", type énuméré contenant les couleurs des trois tours considérées, et qui représentent l'origine et la destination du mouvement ainsi que la tour intermédiaire.
Choisir un traitement en cliquant sur la ligne correspondante
Lire le programme et obtenir
des commentaires
 Suivre l'exécution pas à pas
On utilise une version simplifiée du programme.
Récupérer le programme
Il vous faut cliquer en appuyant en même temps sur shift.
Nous vous conseillons maintenant, avant de poursuivre avec les exemples suivants, de faire les exercices ci-dessous.