TI-62 Galaxy

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: TI-62 Galaxy

Message par C.Ret »

Schraf a écrit : 31 mars 2022 10:50Je n'ai pas repris le programme en BASIC, mais j'imagine qu'à partir d'une position (X,Y) il cherche n tel que l'on puisse arriver à une position gagnante ([nφ] , [nφ²])
Merci pour le lien vers la vidéo qui explique tout ça très bien !

Oui, le petit programme en BASIC part d'une position (M,N) avec M>N et calcule C tel que l'on arrive à une nouvelle position (M,N) gagnante car il existe un entier n tel que M=[nφ] et N=[nφ²]. Mis à part un petit bug à corriger, sinon cela ne marche pas.


Voici une version pour Ti-58c qui fait de même:

Code : Tout sélectionner

000 43 01    RCL 01     026 76 35    LBL 1/x     055 76 34    Lbl √x     074 76 15    LBL E     098 76 95    Lbl =
002 32       x:t        028 43 01    RCL 01      057 43 03    RCL 03     076 22 58    INV Fix   100 43 02    RCL 02
003 43 02    RCL 02     030 85        +          059 55        ÷         078 22 44 02 SUB 02    102 32       x:t
005 75        -         031 01 93 05 1.5         060 43 00    RCL 00     081 66 66    Pse Pse   103 43 01    RCL 01
006 43 01    RCL 01     034 95        =          062 95        =         083 32       x:t       105 22 77 93 x<t? →.
008 95        =         035 55        ÷          063 76 33    Lbl x²     084 22 44 01 SUB 01    108 48 02    Exc 02
009 65        ×         036 43 00    RCL 00      065 59       Intg       087 66 66    Pse Pse   110 42 01    STO 01 
010 43 00    RCL 00     038 95        =          066 85        +         089 67 95    x=t? →=   111 76 93    Lbl .
012 95        =         039 42 03    STO 03      067 43 02    RCL 02     091 65        ×        114 29       C.t
013 59       Intg       041 59       Intg        069 75        -         092 32       x:t       115 58 02    Fix 2 
014 77 35    x≥t? →1/x  042 65        ×          070 43 01    RCL 01     093 95        =        117 43 01    RCL 01
016 32       x:t        043 43 00    RCL 00      072 95        =         094 29       C.t       119 85        +
017 75        -         045 95        =          073 29       C.t        095 22 67 10 x≠t?→"Err"120 43 02    RCL 02
018 32       x:t        046 59       Intg                                                       122 55        ÷
019 95        =         047 22 67 34 x≠t? →√x                                                   123 02        2
020 85        +         050 43 03    RCL 03                                                     124 22 28    10^x
021 32       x:t        052 94       +/-                                                        126 95        =
022 00        0         053 61 33    GTO x²                                                     127 67 10    x=t?→"0.00"
023 95        =                                                                                 129 92       INV SBR
Usage:
Mémoriser phi dans le registre R00:
( 1 + 5 √x ) ÷ 2 = STO 00
Mémoriser le nombre d'allumettes dans les tas 1 et 2 :
n1 STO 01
n2 STO 02
idéalement n1 et n2 deux nombres aléatoires jusqu'à 99

Puis afficher la situation : SBR = Ce qui aura pour effet corolaire de trier les valeurs afin que R2 > R1, ce qui simplifie le traitement automatique des coups. La situation s'affiche sous la forme nn.mmnn et mm sont respectivement les nombres d'allumettes dans les tas 1 et 2.

Pour jouer, entrer le nombre d'allumettes retirées du premier tas ou zéro , presser [ x:t ] , saisir zéro ou le nombre retiré du second tas et presser [ E ]. La Ti-58 affiche la nouvelle situation ou clignote en cas d'erreur.

Pour faire jouer la Ti-58c, presser [ RST ] [R/S]. Le nombre d'allumettes retirées des tas 1 et 2 sont affichés brièvement. Puis la nouvelle situation est affichée. En cas de victoire l'affichage " 0.00 " clignote.

La machine ne peut jouer contre elle-même, si on la fait jouer deux fois de suite, son second coup sera 0 x:t 0 .

Je laisse le soin à Andromede de convertir ce code en une version pour Ti-62 Galaxy.
Et à Eric celui de faire en Python. Oupss ! Déjà fait :)
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: TI-62 Galaxy

Message par Schraf »

@C.Ret : ma version Python n'est pas encore au point, le plus pénible est la gestion des 2 tas dont on ne sait jamais qui a le plus d'allumettes et pour trouver la bonne ligne, par exemple le "5" doit donner n = 2 alors que "4" doit donner n = 3...

Code : Tout sélectionner

n	n*phi	n*phi*phi
0	0	0	
1	1	2	
[2]	3	[5]	
[3]	[4]	7	
4	6	10	
5	8	13	
6	9	15	
7	11	18	
8	12	20	
9	14	23	
Quand je vois tes 123 lignes je commence à douter de mettre ça sur une Ti-57 ou 62 GALAXY !
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: TI-62 Galaxy

Message par C.Ret »

Schraf a écrit : 31 mars 2022 16:28 Il manque la partie où c'est une situation gagnante pour le joueur, dans ce cas la machine s'obstine à jouer "Je retire 0 des 2 tas" pour rester elle-aussi gagnante, sacrée tricheuse quoi...
La Ti-58c est tout aussi mauvaise perdante, elle préfère ne rien joueur que de s'éloigner d'une situation favorable !!
Schraf a écrit : 31 mars 2022 18:22Quand je vois tes 123 lignes je commence à douter de mettre ça sur une Ti-57 ou 62 GALAXY !
J'ai moi aussi un doute !

Mais, attention la façon de compter des Ti57/58/59 revient presque à compter deux pas pour une seule instruction sur les Ti récentes.
De plus, je n'ai pas cherché à optimiser. L'idée d'utiliser la touche [ x:t ] lors de la saisie du coup du joueur n'est peut-être pas une bonne idée, il y vraiment beaucoup d'échanges entre x et t !

Pour parfaire ton code Python, tu peux ajouter l'astuce consistant à échanger le contenu des tas de façon à ce que, par exemple, le tas A contienne toujours plus d'allumettes que le tas B (ou inversement).
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: TI-62 Galaxy

Message par Schraf »

@C.Ret : il y vraiment beaucoup d'échanges entre x et t !
Mais c'est normal, tu penses HP, tu vis HP donc cette mini-pile tu l'utilises à fond !
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: TI-62 Galaxy

Message par C.Ret »

Schraf a écrit : 31 mars 2022 19:31
@C.Ret : il y vraiment beaucoup d'échanges entre x et t !
Mais c'est normal, tu penses HP, tu vis HP donc cette mini-pile tu l'utilises à fond !
Oui, c'est bizarre comme la logique du RPL ou du RPN prend le pas sur les logiques pourtant acquises préalablement du BASIC et de l'AOS.

En tout cas, je n'aurais jamais pensé que le nombre d'or Image permet de lister les entiers naturels sans répétition à l'aide des couples Image
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: TI-62 Galaxy

Message par Schraf »

Je viens de voir que cette propriété assez incroyable est en fait un peu généralisable, c'est le théorème de Beatty.

https://fr.wikipedia.org/wiki/Th%C3%A9o ... _de_Beatty
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: TI-62 Galaxy

Message par Schraf »

@C.Ret : Pour être sûr, l'erreur (les erreurs) dans le programme BASIC proposé dans la revue, c'est le 0.5 qui est en fait 1.5 c'est ça ?
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: TI-62 Galaxy

Message par C.Ret »

Schraf a écrit : 02 avr. 2022 13:48 @C.Ret : Pour être sûr, l'erreur (les erreurs) dans le programme BASIC proposé dans la revue, c'est le 0.5 qui est en fait 1.5 c'est ça ?
Oui, c'est bien cela.
Depuis que j'ai changé cela, je n'arrive plus à battre mon Commodore.

Par contre, je suis encore incapable de démontrer les astuces utilisées. Je suis à deux doigts de comprendre la stratégie qui permet de rester dans la suite gagnante [ nφ , nφ² ], mais je ne comprends pas le calcul qui est fait. Comme toi, mes propres algorithme font une recherche des "sauts" possibles

Avec le facteur 1.5, sans recherche, le petit programme fait le bon choix.

L'explication doit être géométrique. La composition (m,n) des deux tas revient à chercher le moyen de rejoindre le centre du plan repéré tout en restant sur les "ilots gagnants", c'est à dire les points fiable de coordonnée [ nφ , nφ² ]

A chaque coup, on peut se déplacer horizontalement (on ne retire des allumettes que du premier tas) , verticalement (en consommant des allumettes du second tas) ou en diagonale (en retirant le même nombre d'allumettes dans les deux tas) vers l'ilot suivant.

En fait, le petit programme détermine un déplacement diagonal en considérant la différence entre les deux tas.
Wythoff vs CRet on 2D plan (4).png
Wythoff vs CRet on 2D plan (4).png (24.07 Kio) Vu 3871 fois
Wythoff vs CRet on 2D plan (3).png
Wythoff vs CRet on 2D plan (3).png (22.23 Kio) Vu 3871 fois
Wythoff vs CRet on 2D plan (2).png
Wythoff vs CRet on 2D plan (2).png (19.83 Kio) Vu 3871 fois
Wythoff vs CRet on 2D plan (1).png
Wythoff vs CRet on 2D plan (1).png (22.25 Kio) Vu 3871 fois
Bon, j'en ai gagné aucune :(
Les pixels en verts sont les ilots que Wythoff affectionne particulièrement; c'est à dire les points de coordonnées [ kφ , kφ² ].
A chaque coup, son petit programme l'emmène sur l'un deux ce qui m'empêche de gagner directement.

Le croisement des deux axes (en rouge) est l'objectif (prendre la dernière allumette). Ces axes sont en rouge car le premier joueur qui s'y arrête donne la victoire à son adversaire.



Mais, je commence à comprendre, l'astuce provient du Théorème de Beatty. Il n'y a pas à chercher, tous les entiers suffisamment proches de [ nφ ] ou de [ nφ² ] sont bons à prendre. Le petit programme ne se préoccupe que de la limite basse car il cherche à rejoindre l'objectif le plus vite possible !


Petite video (en anglais) qui est pile-poil sur le sujet.
https://www.youtube.com/watch?v=AYOB-6wyK_I

On voit bien sur les grille dessinées ans la vidéo, il n'y a pas à chercher, pour chaque ligne ou chaque colonne, il y a un entier qui appartient à un "ilot". C'est donc bien la conséquence du Théorème de Beatty qui simplifie l'algorithme, il n'y a pas de "trou", de "perte" ou de "doublon". A chaque point il existe nécessairement en ligne, colonne ou diagonale un "ilot".

J'aurais jamais imaginé une telle propriété !
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: TI-62 Galaxy

Message par Schraf »

@C.Ret : Je suis d'accord avec toi, pour gagner plus vite il a la possibilité d'aller en diagonale (càd supprimer la même valeur sur les 2 tas), or ce n'est pas toujours nécessaire, par exemple 2 tas identiques avec 15 allumettes, il va retirer 15 allumettes dans chaque tas et gagner directement. Mais il aurait pu prendre le tas minimum (15), rechercher cette valeur dans la suite des [ nφ , nφ² ] ce qui l'amène à la paire gagnante [ 9, 15 ] et finalement ne retirer que 6 allumettes du plus gros tas, ça laisserait un peu d'espoir au joueur humain (même s'il perdra !).

Sinon, as-tu essayé de mettre un "1" à la place du "1.5" ? Est-ce que cela fonctionne(rait) ? En effet, je me dis que si on cherche n tel que [ nφ ] = A (A entier) alors :

A ≤ nφ < A + 1
A ÷ φ ≤ n < (A + 1) ÷ φ

Comme A est un entier, A ÷ φ ne sera jamais un entier et donc forcément n = [ (A + 1) ÷ φ ]

Par exemple si A = 17 :

17 ÷ φ ≈ 10,506
18 ÷ φ ≈ 11,124

la bonne réponse est bien n = [ 11,124 ] = 11 (ce n convient puisque [11 × φ] = 17)

Pour A = 28 :

28 ÷ φ ≈ 17,305
29 ÷ φ ≈ 17,922

on voit que ce n'est pas possible. Il faudra donc chercher A = 28 sous la forme [ nφ² ] et dans ce cas n = [ (A + 1) ÷ φ² ]

28 ÷ φ² ≈ 10,695
29 ÷ φ² ≈ 11,077

la bonne réponse est bien n = [ 11,077 ] = 11

Pour savoir si on est dans le 1er cas ou le second, on peut regarder la partie fractionnaire de A ÷ φ :

Si frac(A ÷ φ) < 1 - 1 ÷ φ on est dans le premier cas (càd qu'en ajoutant 1 ÷ φ à A ÷ φ on a la même partie entière, comme 17,305 et 17,922) sinon on est dans le second cas (En ajoutant 1 ÷ φ à 10,695 on change de partie entière)

Ca donne qq chose comme :

Code : Tout sélectionner

R = A ÷ φ

SI(frac(R) < 1-1÷phi; ENT((R+1÷phi)÷phi); 1+ENT(R))
Et peut-être que ça sera une piste pour réussir à faire tenir ce fichu jeu sur une Ti-57 (c'est mon but !). En tous cas je constate qu'il vaut mieux mettre 1÷φ en mémoire, tiens bizarre c'est ça que l'on voit dans le programme en BASIC 😅
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: TI-62 Galaxy

Message par C.Ret »

Schraf a écrit : 03 avr. 2022 08:43 Sinon, as-tu essayé de mettre un "1" à la place du "1.5" ? Est-ce que cela fonctionne(rait) ? En effet, je me dis que si on cherche n tel que [ nφ ] = A (A entier) alors :
Je me suis aussi posé la question, mais je n'étais à la maison et je n'ai pas été aussi perspicace que toi.

A un moment donné, je me suis même demandé s'il ne fallait pas remplacer 1,5 par φ ?

Ce qui revient à chercher le coup à jouer R₁ ou R₂ tel qu'il existe un entier vérifiant l'une des deux inégalités:
A < k₁.φ ≤ R₁ < k₁.(φ+ 1) < (k₁+1).φ ou A < k₂.φ² ≤ R₂ < k₂.(φ²+ 1) < (k₂+1).φ²
Comme A est un entier, A ÷ φ ne sera jamais un entier et donc forcément n = [ (A + 1) ÷ φ ]
Oui, voilà l'assertion qui me manquait !

En fait n = CEIL( A ÷ φ ) car effectivement (A÷ φ) ne sera jamais un entier et donc CEIL donnera à chaque fois l'entier immédiatement supérieur.

Les formules sont effectivement plus simple avec ψ = 1/φ :

A.ψ → R ;
IF 1-ψ > FRAC R THEN INT((R+ψ)*ψ) ELSE CEIL(R) ;

Tiens ! On a justement (R+ψ)ψ qui est égal à (A+ψ).ψ²

Et peut-être que ça sera une piste pour réussir à faire tenir ce fichu jeu sur une Ti-57 (c'est mon but !).
Ou a défaut une Ti-62 galaxy :)
En tout cas, je suis loin de réussir à faire tenir cela dans une TI 57 LCD :(
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Andromede
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 157
Enregistré le : 09 oct. 2021 15:15

Re: TI-62 Galaxy

Message par Andromede »

Bonjour,
Désolé de vous faire revenir un peu en arrière. Après avoir lu et assimilé vos precieux commentaires relatifs au jeu des allumettes dans sa version classique, j'en ai profité pour refaire mon code d'une façon plus structurée et lisible par rapport à ma première version et ce de sorte à bien distinguer clairement la logique du jeu selon toutes vos explications. Cela a donné le code suivant : :D Seul inconvénient, le nombre de pas a augmenté.

Code : Tout sélectionner

Le Jeu des Allumettes
Version 2.0

00	LBL 1		#-------------------------------------------------------------
01	STO 1		#  Calcul de la partie entière de N/4
02	/		#  avec sauvegarde du résultat dans le registre R2
03	4		#  N étant le nombre initial d'allumettes
04	=		#  mais qui devient le nombre d'allumettes	
05	INTG		#  restant lors de l'exécution du programme
06	STO 2		#-------------------------------------------------------------  

07 	RCL 1		#------------------------------------------------------------- 
08	-		#  Calcul du reste de la division de N
09	RCL 2		#  par 4 (N%4) et sauvegarde du 
10	X		#  résultat dans le registre R3
11	4		#  
12	=		#
13	STO 3		#-------------------------------------------------------------
14	X<>T		#-------------------------------------------------------------
15	3		#  Si le reste de la division est égal à 3 alors 
16	X=T		#  se brancher sur l'étiquette 2 (tirer 02 allumettes)
17 	GTO 2		#-------------------------------------------------------------
18	2		#-------------------------------------------------------------
19	X=T		#  Si le reste de la division est égal à 2 alors
20	GTO 3		#  se brancher sur l'étiquette 3 (tirer 01 allumette)
21	1		#-------------------------------------------------------------	
22	X=T		#  Si le reste de la division est égal à 1 alors
23	GTO 4		# se brancher sur l'étiquette 4 (tirer 03 allumettes)
24	0		#-------------------------------------------------------------
25	X=T		# Si le reste de la division est égal à 0 alors
26	GTO 4		# se brancher sur l'étiquette 4 (tirer 03 allumettes)
27	LBL 5		#-------------------------------------------------------------
28	PAUSE		#
29 	PAUSE		#
30	RCL 1		#  Calcul du nombre d'allumettes restant
31	-		#  et sauvegarde du résultat
32	RCL 4		#  dans le registre R1
33	=		#
34	STO 1		#------------------------------------------------------------
35	X<>T		#------------------------------------------------------------
36	1		#  Si le reste des allumettes 
37	X=T		# est égal à 1 alors se brancher sur l'étiquette 6
38	GTO 6		#  qui n'existe pas pour quitter le programme (ERROR)
39	RCL 1		#  en l'absence du clignotement de la TI 57
40	-		#------------------------------------------------------------		
41	R/S		#------------------------------------------------------------
42 	=		#  Calcul du nouveau reste d'allumettes à partir 
43	PAUSE		#  de la nouvelle valeur entrée par le joueur
44	PAUSE		#  et se brancher sur l'étiquette 1 pour donner la main à la machine
45	GTO 1		#------------------------------------------------------------	
46	LBL 2		#-------------------------------------------------------------
47	2		#  Tirer 02 allumettes et sauvegarder
48	STO 4		# ce nombre dans R3 puis se brancher sur l'étiquette 5
49	GTO 5		#-------------------------------------------------------------
50	LBL 3		#-------------------------------------------------------------
51	1		# Tirer 01 allumette et sauvegarder
52	STO 4		#  ce nombre dans R3 puis se brancher sur l'étiquette 5
53	GTO 5		#-------------------------------------------------------------
54	LBL 4		#-------------------------------------------------------------	
55	3		# Tirer 03 allumettes et sauvegarder 
56	STO 4		# ce nombre dans R3 puis se brancher sur l'étiquette 5
57 	GTO 5		#-------------------------------------------------------------
Exemple d'utilisation du programme
2nd CM
INV X<>T
RST
20 R/S (Nombre initial d'allumettes)
3 (La machine tire 3 allumettes)
17 (La machine affiche qu'il reste 17 allumettes et attend le tirage du joueur)
2 (A mon tour, je tire 2 allumettes)
15 (La machine affiche le nombre restant d'allumettes)
2 (La machine tire à son tour 2 allumettes)
13 (La machine affiche le nombre restant d'allumettes et attend le tirage du joueur)
.... et ainsi de suite jusqu'à la fin de la partie qui envoie le message ERROR lorsqu'il reste 1 allumette à jouer car le programme pointe sur l'étiquette 6 qui n'existe pas dans le programme. Dommage, on ne peut pas faire de clignotement comme sur une TI-57 :(
Modifié en dernier par Andromede le 10 avr. 2022 19:00, modifié 1 fois.
Casio FX-850P, FX-880P, FX-7000G, FX-7000GA, FX-3900P
Canon X-07
Sharp E500, EL-9000, PC 1500
Texas Instruments TI-57 II, TI-62 Galaxy, TI-66 Programmable, TI-74 Basicalc, TI-74S, TI-95 Procalc
" Les machines un jour pourront résoudre tous les problèmes, mais jamais aucune d'entre elles ne pourra en poser un !" Albert Einstein
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: TI-62 Galaxy

Message par C.Ret »

C'est bien, mais un peu compliqué !

Pourquoi autant de labels pour effectuer le calcul du nombre d'allumette du tirage alors qu'il existe une relation arithmétique:
T = 3 - ( Nb MOD 4 ) avec une petite astuce pour minimiser le nombre de pas nécessaire
Si T==0 alors on tire aléatoirement 1, 2 ou 3 allumettes.

Je reprends la structure du code d' Eric en simplifiant le tirage aléatoire; les TI-57 LCD ne sont pas bien puissantes, la mienne tire à chaque tirage aléatoire exactement une et une seule allumette ! Le code qui réalise cela fait deux pas (en comptant le test)

Code : Tout sélectionner

00 STO 0                                     // Mémorise le nb d'allumettes
01 x=t?  1/x                                 // Fin de partie affiche "Error"
03 RCL 0  /  4  =  Frac  x=t?  1             // Multiple de 4 tire 3 allumettes
10  *  3  =  Intg                            // Calcul du tirage 3+(R01 MOD 4) 
14 x=t?   1                                  // Si null tirage aléatoire 1 allumette
16 STO-0  Pse  Pse                           // Affiche jeu de la Ti
19 RCL 0  -  R/S  =                          // Saisie jeu joueur (R/S) pour continuer
23 RST                                       // Boucle
Préparation : Saisir le nombre initial d'allumette, effacer le contenu du registre de test t et lancer au début du programme

Exemple d'une partie :

Code : Tout sélectionner

Affichage	Saisie
        0	2nd  C.t  20  RST R/S   // Initialisation 20 allumettes au départ
       "3"	                        // La Ti 57 LCd retire 3 allumettes				
       17       1  R/S                  // Il reste 17 allumettes, j'en retire une seule
      "3"
       13	2  R/S			// Reste 13, j'en prends deux
      "2"
        9       3  R/S                  // Reste 10, j'en prends trois
      "1"
        5	1  R/S			// C'est sûr, je vais gagner !!
      "3"
        1       R/S                     //  Ah! Non, je vais perdre
  Error                                 //  Eh! Oui :( j'ai perdu
Modifié en dernier par C.Ret le 10 avr. 2022 20:04, modifié 2 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Andromede
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 157
Enregistré le : 09 oct. 2021 15:15

Re: TI-62 Galaxy

Message par Andromede »

C.Ret a écrit : 10 avr. 2022 18:50 Pourquoi autant de label pour effectuer le calcul du nombre d'allumette du tirage alors qu'il existe une relation arithmétique:
T = 3 - ( Nb MOD 4 )
Merci C.Ret :D Effectivement, je n'ai pas pensé à cette relation arithmétique. Je ne l'ai pas déduite de ton premier tableau explicatif qui m'a bien servi.
J'en prends note pour ma 3ème version de code
Casio FX-850P, FX-880P, FX-7000G, FX-7000GA, FX-3900P
Canon X-07
Sharp E500, EL-9000, PC 1500
Texas Instruments TI-57 II, TI-62 Galaxy, TI-66 Programmable, TI-74 Basicalc, TI-74S, TI-95 Procalc
" Les machines un jour pourront résoudre tous les problèmes, mais jamais aucune d'entre elles ne pourra en poser un !" Albert Einstein
Andromede
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 157
Enregistré le : 09 oct. 2021 15:15

Re: TI-62 Galaxy

Message par Andromede »

Il y a un article intéressant "Le jeu de NIM à une rangée" dans le supplément à science & vie n° 763
https://www.abandonware-magazines.org/a ... &album=oui
Pages 43, 44, 45 et 46
Casio FX-850P, FX-880P, FX-7000G, FX-7000GA, FX-3900P
Canon X-07
Sharp E500, EL-9000, PC 1500
Texas Instruments TI-57 II, TI-62 Galaxy, TI-66 Programmable, TI-74 Basicalc, TI-74S, TI-95 Procalc
" Les machines un jour pourront résoudre tous les problèmes, mais jamais aucune d'entre elles ne pourra en poser un !" Albert Einstein
Répondre

Retourner vers « Tous les Pockets »