Bonjour, j'ai reçu un DM avec un algorithme à faire.
Voici le sujet :
On dispose de 72 allumettes, à tour de rôle deux joueurs prennent 1,2 ou 3 allumettes.
Le gagnant est celui qui prend les dernières allumettes se trouvant sur la table.
Trouver une stratégie permettant au joueur qui joue le deuxième de gagner à tous les coups !
Ecrire un algorithme qui utilise cette stratégie
Puis, écrire un programme tel que si la calculette joue en 2ème, elle gagne à tous les coups (on suppose que personne ne triche)
Si vous avez un programme qui fonctionne, transformez le pour que personne ne triche (?)
J'ai essayé d'écrire l'algorithme et voici ce que j'ai :
Algorithme utilisant cette stratégie
N, A et B sont des entiers
N = 72
Tant que N > 0
Afficher « Joueur 1, combien prenez vous d'allumettes (1, 2 ou 3) ? »
Entrer A
Si 1 ≤ A ≤ 3
N = N-A
Sinon
Afficher « Incorrect, entrer 1, 2 ou 3 »
Aller à instruction « Entrer A »
Fin
Afficher « Il reste N allumettes »
Si N = 0
Afficher « Joueur 1 a gagné »
Fin
B = 4 – A
N = N – B
Afficher « CPU retire B allumettes, il en reste N »
Si N = 0
Afficher « CPU gagne »
Fin
Fin
Mais je n'arrive pas à l'écrire en TI BASIC car je n'ai pas vu les instruction nécessaires, j'ai tenté un truc mais ça m'affiche une belle "SYNTAX ERROR"
J'aurais besoin d'aide et je vous remercie de votre patience et j'espère pouvoir résoudre ce problème
Autorisation : Membre
Nb de messages : 835
Inscrit le : Sam 20 Jui 2009, 20:35
Posté le : Lun 02 Nov 2009, 12:36
Code
:72->N
:Lbl1
:While N>0
:Disp "JOUEUR 1,COMBIEN","D'ALLUMETTES
:Input "(1,2 ou 3) ? ",A
:If A<1 ou A>3 ou partDéc(A)[différent de]0
:Goto 1
:N-A->N
:Disp "IL RESTE",N,"ALLUMETTES
:Pause
:If N[inférieur ou égal à]0
:Then
:Disp "LE JOUEUR 1 A","GAGNE
:Stop
:End
:4-A->B
:N-B->N
:Disp "CPU RETIRE",B,"ALLUMETTES","IL EN RESTE",N
:If N[inférieur ou égal à]0
:Then
:Disp "CPU GAGNE
:Stop
:End:End
Voilà,ça doit marcher.
Ganji Invité
Posté le : Lun 02 Nov 2009, 14:04
Bonjour, merci pour votre aide.
Quelle est la syntaxe à employer pour la ligne "If A<1 ou A>3 ou partDéc(A)[différent de]0", j'ai essayé d'employer des virgules pour séparer les conditions mais ça ne marche pas
Je vous remercie tout fonctionne parfaitement, et je suis heureux de pouvoir comparer mon code avec le bon (je précise que je n'étais pas si loin de la vérité :p)
Merci à tous