Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Connexion

Récupérer mon mot de passe

Chatbox externe


Derniers sujets
» [JEU] Mon voisin du dessous
Hier à 11:52 par Clément.7

» 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++

» flappy bird
Jeu 15 Déc 2016 - 10:23 par Ti64CLi++

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
Wistaro
 
Clément.7
 


Jeu et solution des Tours de Hanoi

Poster un nouveau sujet   Répondre au sujet

Voir le sujet précédent Voir le sujet suivant Aller en bas

Jeu et solution des Tours de Hanoi

Message par Linkakro le Jeu 2 Jan 2014 - 3:03

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).

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," "

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
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

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Jeu et solution des Tours de Hanoi

Message par Wistaro le Jeu 2 Jan 2014 - 14:34

Merci! ;-)

Dans HANOI:
Code:
0->E
0->F
0->S
0->G

Peux se simplifier par
Code:
DelvarEDelvarGDelvarFDelvarS

Non?

__________________________________________________________________________
Clique ici pour retrouver tout mes programmes en TIbasic

Tu es curieux, Invité? Alors clique ici:


Coucou Invité !Ta dernière visite sur ce forum date de . Tu as posté un total de 78 message(s) sur Tout 82 et enfin, tu as 0 ans.
Si nous sommes le 0, je te souhaite un joyeux anniversaire ;-)

avatar
Wistaro
Passioné
Passioné

Messages : 906
Points Concours : 86
Productivité : 28
Date d'inscription : 16/06/2013
Localisation : Tarbes - DUT GEII
Calculatrice(s) :
  • TI-82
  • TI-82 Stats
  • TI-82 Stats.fr

. : TI-82 Stats.fr

Voir le profil de l'utilisateur http://www.youtube.com/user/Wistaro

Revenir en haut Aller en bas

Re: Jeu et solution des Tours de Hanoi

Message par Linkakro le Jeu 2 Jan 2014 - 15:18

Oui.
J'oublie beaucoup d'étapes telles que celle-ci.

__________________________________________________________________________
Vétéran du TI-Basic Zilog80. Ti82statfr sur Tout82 depuis 2009 et ti84pocketfr depuis noël 2012. Ti83plusfrUSB (été 2014, concours tiplanet suite du geek). Bidouille un peu d'assembleur Z80.
Incappable de gérer le temps et manque de tact, plutôt serviable.
Je prend les commandes de programme. Je suis motivé par les maths et la physique tant que ce n'est pas une simple copie d'antisèche.
Vous pouvez trouver une grande partie de mes données hébergées dans mon mediafire. Le ZIP et la liste sont périmées depuis longtemps.
coucou Invité What a Face
avatar
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

. : TI-82 Stats.fr

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Jeu et solution des Tours de Hanoi

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum