Solution tours de hanoi sur XNA

bastfiche - 11 juin 2013 à 10:56
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 12 juin 2013 à 12:04
Bonjour,

Je dois faire un programme qui affiche pas a pas la solution des tours de hanoi sous XNA, j'ai déja vu ici des jeux a ce sujet ou des programmes qui affichent la solution, mais ils sont bien trop compliqués.

Je dispose des éléments suivants : http://sendbox.fr/pro/n5lnidqt3m3z/Resources.7z.html

Sauf que je suis débutant en C# et que je n'ai aucune idée de comment faire :'(

1 réponse

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
12 juin 2013 à 12:04
L'algorithme pour résoudre les tours de Hanoï est simple :

Déplacer N pièces de la tour A à la tour C, c'est l'équivalent de :

- Déplacer N-1 pièces de la tour A à la tour B
- Déplacer 1 pièce de la tour A à la tour C
- Déplacer N-1 pièces de la tour B à la tour C

Déplacer 1 pièce, c'est possible. Pour déplacer N-1 pièces, tu rappelles ta méthode de manière récursive (si tu ne sais pas ce que ça veut dire, à toi de faire des recherches là dessus) jusqu'à ce que tu ne tu ne déplaces qu'une seule pièce à la fois.

En gros, si tu as 4 pièces, voici la liste des appels que ça doit faire :
Déplacer (4, A, C)
Déplacer (3, A, B)
Déplacer (2, A, C)
Déplacer (1, A, B)
Déplacer (1, A, C)
Déplacer (1, B, C)
Déplacer (1, A, B)
Déplacer (2, C, B)
Déplacer (1, C, A)
Déplacer (1, C, B)
Déplacer (1, A, B)
Déplacer (1, A, C)
Déplacer (3, B, C)
Déplacer (2, B, A)
Déplacer (1, B, C)
Déplacer (1, B, A)
Déplacer (1, C, A)
Déplacer (1, B, C)
Déplacer (2, A, C)
Déplacer (1, A, B)
Déplacer (1, A, C)
Déplacer (1, B, C)

Les couleurs correspondent à des mêmes niveaux récursifs.
Et au final, tu ne fais des mouvements que quand tu as 1 pièce à déplacer, ce qui fait donc 15 mouvements.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
Rejoignez-nous