Rechercher
Connexion
Chatbox externe
Derniers sujets
Partenaires
TI-Planet | Espace-TI : Forum |
Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)
Les posteurs les plus actifs du mois
Aucun utilisateur |
Jeu et solution des Tours de Hanoi
2 participants
Page 1 sur 1
Jeu et solution des Tours de Hanoi
Bonjour, j'ai un petit cadeau pour bien commencer l'année 2014 et poster un projet plutôt que de tenter de conseiller les autres.
Voici mon jeu des Tours de Hanoi dont la particularité est la solution récursive au problème qui est incluse au jeu et en TI-Basic.
Le projet est composé d'un programme de menu+jeu, d'un afficheur, d'un empileur, d'un dépileur, et de la fonction récursive.
La fonction récursive est plus optimisée que je prévoyais car aucune variable n'est stockée dans une liste, tandis que j'ai l'habitude de simuler des variables locales par une liste et un pointeur (globaux).
J'utilise deux variables et calcule la tour intermédiaire, mais on peut en avoir 3 et les permuter, à condition de passer par une variable temporaire supplémentaire.
Si on supprimmait les fonctions graphiques, la fonction récursive aurait pour seule limite la pile d'appel de la TI.
HANOI sur TIPlanet
Voici mon jeu des Tours de Hanoi dont la particularité est la solution récursive au problème qui est incluse au jeu et en TI-Basic.
Le projet est composé d'un programme de menu+jeu, d'un afficheur, d'un empileur, d'un dépileur, et de la fonction récursive.
La fonction récursive est plus optimisée que je prévoyais car aucune variable n'est stockée dans une liste, tandis que j'ai l'habitude de simuler des variables locales par une liste et un pointeur (globaux).
- histoire:
- J'ai imaginé l'algorithme récursif de résolution tout seul, mais ce même algorithme est déjà exposé ailleurs (wikipedia par exemple).
J'ai codé une application Cmd en langage C en janvier 2011 pour justement élaborer cet algorithme.
Puis j'ai participé au concours de CalcBank ce même janvier 2011 en tentant de le coder dans une HP39gii émulée, ce fut un échec (impossibilité de récursivité complète que j'attribue à un bug de l'émulateur qui refusait toutes mes tentatives de création de procédure, mes propres incompréhensions de la machine, et enfin manque de correction graphique après avoir perdu du temps sur des tentatives vaines de récursivité)
Après avoir ruminé ma frustration envers la HP39gii, et des mois voire même années d'inactivité dans mes projets personnels de programmation, j'ai subitement décidé de réaliser ce programme TI. Le noyau était prêt en un jour.
J'utilise deux variables et calcule la tour intermédiaire, mais on peut en avoir 3 et les permuter, à condition de passer par une variable temporaire supplémentaire.
Si on supprimmait les fonctions graphiques, la fonction récursive aurait pour seule limite la pile d'appel de la TI.
HANOI sur TIPlanet
- hanoi:
- Code:
ClrDraw
AxesOff
Text(0,4,"TOWERS OF HANOI
Text(6,8,"INSTANCE BY LINKAKRO
Text(12,14,"<> LEVEL : 3
Text(18,16,"1 PLAY
Text(24,16,"2 SOLUTION
Text(30,16,"3 EXIT AND CLEAR DATA
3->A
Repeat max(K={92,93,94
Repeat K
getKey->K
End
max(2,min(9,A-(K=24)+(K=26->A
Text(12,47,A
End
max(2,min(9,A-(K=24)+(K=26->A
Text(6,47,A
End
If K=94
Goto Q
ClrDraw
Text(0,0,"WHICH BEGIN STACK ? (1/2/3)
Repeat P
max({1,2,3,1,2,3}(getKey={12,13,14,92,93,94->P
End
If K=93
Then
Text(6,0,"WHICH FINAL STACK ?
Repeat M and M-P
max({1,2,3,1,2,3}(getKey={12,13,14,92,93,94->M
End
Text(18,0,"PRESS ANY KEY TO PAUSE
Text(24,0,"ENTER ALLOW NEXT PAUSE
Text(30,0,"ANY ELSE KEY ALLOW SKIP
Text(36,0,"
Repeat W
getKey->W
End
End
ClrDraw
DelVar [A]{3,A+1->dim([A]
For(D,1,A
D->[A](P,D
End
A+{1,1,1->L6
1->L6(P
1->G
P->X
For(C,1,A
C->B
prgmHANOIZ
End
0->E
0->F
0->G
0->S
If K=92
Then
Repeat H-P and max(1=L6
Text(0,0,S
Repeat H
max({1,2,3,1,2,3}(getKey={12,13,14,92,93,94->H
End
L6(H->I
If F
Then
If I>A or E<[A](H,I
prgmHANOIY
Else
If I<=A
prgmHANOIX
End
End
If A<4
Then
Text(0,0,S,", PIECE OF CAKE
Else
If A<6
Then
Text(0,0,S,", CONGRATS PADAWAN
Else
If A<8
Text(0,0,S,", YOU ARE SO PATIENT...
End
End
If A=8
Text(0,0,S,", ALMOST HANOI MASTER.
If A=9
Text(0,0,S,", ARE YOU CHEATING ? >D
Else
A->N
prgmHANOIW
End
Pause
Lbl Q
ClrDraw
ClrHome
ClrList L6
DelVar [A]
- hanoiw:
- Code:
getKey or W=105
While Ans
getKey->W
not(Ans
End
Text(0,0,"FROM ",P," TO ",M," AND ",N," PLATES
If N=1
Then
P->H
L6(H->I
prgmHANOIX
M->H
L6(H->I
prgmHANOIY
Text(6,0,S
Else
N-1->N
6-M-P->M
prgmHANOIW
6-M-P->M
N->R
1->N
prgmHANOIW
R->N
6-M-P->P
prgmHANOIW
N+1->N
6-M-P->P
End
- hanoix:
- Code:
H->F
H->X
I->C
[A](H,I->E
0->[A](H,I
E->B
prgmHANOIZ
1->G
0->C
If K=92
prgmHANOIZ
I+1->I
I->L6(H
- hanoiy:
- Code:
If H-F
S+1->S
I-1->I
I->L6(H
I->C
H->X
E->B
prgmHANOIZ
E->[A](H,I
0->G
0->C
F->X
If K=92
prgmHANOIZ
0->F
- hanoiz:
- Code:
For(D,0,2B+3
If G
Text(6C,30X-15-B+D,"[
If not(G
Text(6C,30X-15-B+D," "
End
If G
Text(6C,30X-15,B
Text(6C,30X-15-B+D," "
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Re: Jeu et solution des Tours de Hanoi
Merci! ;-)
Dans HANOI:
Peux se simplifier par
Non?
Dans HANOI:
- Code:
0->E
0->F
0->S
0->G
Peux se simplifier par
- Code:
DelvarEDelvarGDelvarFDelvarS
Non?
Re: Jeu et solution des Tours de Hanoi
Oui.
J'oublie beaucoup d'étapes telles que celle-ci.
J'oublie beaucoup d'étapes telles que celle-ci.
Linkakro- ----------------------
- Messages : 533
Points Concours : 55
Productivité : 31
Date d'inscription : 30/07/2013
Localisation : origine région centre, puis perpignan
Calculatrice(s) :- TI-82 Stats.fr
. :
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Dim 16 Oct 2022 - 21:11 par Wistaro
» Bonne année 2018!
Ven 2 Nov 2018 - 19:42 par Ti64CLi++
» Lancement du TI-Concours 2017 !
Sam 20 Mai 2017 - 0:27 par Paulo1026
» Chaînes Youtube des membres
Ven 19 Mai 2017 - 22:41 par Wistaro
» cacul du taux d'intêret
Ven 24 Mar 2017 - 21:50 par m@thieu41
» [Projet] Un mario by tout82
Dim 29 Jan 2017 - 14:09 par Wistaro
» Cherche documentation assembleur TI82stat
Mer 25 Jan 2017 - 12:29 par Ti64CLi++
» Probleme Ti-82 Stats fr
Jeu 12 Jan 2017 - 13:56 par Ti64CLi++
» ROM 82 stats.fr
Jeu 15 Déc 2016 - 10:24 par Ti64CLi++