Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Utilitaires >> Graph 35 à 100 >> Divers >> Tours de hanoi
Tours de hanoi
Version : 1.00 Taille : 500 octets Ajouté le : 2013-03-09 22:01 Modifié le : 2013-06-09 18:48
Auteur et posteur :
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Planète Casio - Programme Casio - Tours de hanoi - alex_1186 - Calculatrices
Nombre de visites sur cette page : 6901
Score au progrank : 35
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
1234 téléchargements | Soumettre un test


Description :

Le programme qui résout le problème des Tours de Hanoï, jusqu'au rang 10, avec appels récursifs! 8)

Les Tours de Hanoï
Trois aiguilles A,B,C sont disposées côte-à-côte, avec n disques, de rayon croissant, empilés du plus large au plus étroit, autour de la A. Le but étant de tous les faire passer à la C, en un minimum de coups, et ce en en soulevant un à la fois et en ne posant un disque que sur un plus grand ou une tour vide.

La légende
Dans la ville de Hanoï, capitale du Viêt Nam, il existe trois aiguilles de diamant, plantées dans une dalle d'airain, et sur l'une d'elles 64 disques d'or enfilées par Dieu à la création du monde.
Les moines se succèdent pour terminer le jeu, et lorsque cela sera fait, ce sera LA FIN DU MONDE!!!

(avec un disque déplacé par seconde, il faudrait 2^64-1 déplacements et donc 584 milliards d'années pour finir le jeu...)

L'algorithme
Pour résoudre ce problème, j'utilise un algorithme récursif! Je sais, vous allez vous dire que je suis un ouf de faire ça en Basic avec 10 niveaux de sous-programmes maximum...
Mais pour ce jeu, ça marche:

Pour déplacer n disques de A vers C:
- En supposant qu'on sait déplacer n-1 disques, on déplace les n-1 premiers de A vers B (en passant par C).
- Puis on déplace le n-ième vers C.

Pour cela je plonge successivement dans les sous-programmes, c'est-à-dire les appels récursifs, en mémorisant les variables de chaque niveau.
En fait on a programmé ça en OCaml en option info (je suis en prépa MPSI), où la récursivité est bien mieux gérée (forcément c'est fait pour!).

Attention le programme crée jusqu'à 10 listes!

Le programme marche jusqu'à n=9 (ce qui fait déjà 511 instructions), pour n=10 initialisez vos variables en mode RUN, regardez le code de HANOI, puis lancez le programme auxiliaire HANOIAUX.

Amusez-vous bien!

(Voilà c'était plus un défi qu'autre chose de faire de la récursivité en Basic en fait...)


Commentaires :


JavierxdHors ligneMembrePoints: 1899 Défis: 13 Message
Posté le 10-03-2013 à 13:13 | #
Moi je sais le faire en un minimum de mouvement indépendamment du nombre d'anneaux (cependant à partir de 6 ça commence à devenir assez long)
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 10-03-2013 à 20:37 | #
Bah là c'est la méthode optimale mon programme. On peut pas le faire en moins, je crois que ça a été prouvé.
JavierxdHors ligneMembrePoints: 1899 Défis: 13 Message
Posté le 10-03-2013 à 21:37 | #
Ah, merde, j'avais pas vu la partie ou t'expliquais la méthode
PositonHors ligneRédacteurPoints: 2396 Défis: 57 Message
Posté le 14-08-2013 à 15:14 | #
Ce sera la fin du monde bien avant que les moines ne déplacent le dernier disque

Terre devenue inhabitable : dans 1,1 milliards d'années (estimation, et si mes souvenirs sont bons)

Transformation du soleil en géante rouge et destruction de la Terre : dans 4,5 milliards d'années
PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message
Posté le 14-08-2013 à 19:05 | #
Sur le même principe, j'avais fais un programme pour résoudre les Sudoku

Alex_1186 a écrit :
En fait on a programmé ça en OCaml en option info (je suis en prépa MPSI), où la récursivité est bien mieux gérée (forcément c'est fait pour!).

Ouais avec des variables locales, c'est plus facile. A partir de cette année, les MPSI info ne travailleront plus en Caml mais en Python.
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message
Posté le 15-08-2013 à 21:55 | #
Ah ouais???
Oh c'était bien pourtant le Caml...

Sinon j'ai fait un programme de récursivité, et j'ai fait tourner des trucs comme l'exponentiation rapide dessus!

EDIT:
Précision: En fait ils arrêtent Mathematica pour Python, mais continuent le Caml en option info!

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 162 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd