Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

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

Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6192
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par Marge »

Bonsoir, Alain,
J'ai bien raté une marche : je ne connaissais pas la formule, et du coup j'ai découvert (après bien du monde) que 2^64-1 équivaut à la somme de toutes les puissances précédentes de deux.

Du coup mon programme est faux (modifier 64 en 63), je vais en porter le carcan pendant toute une semaine, cela me permettra de méditer cette leçon de modestie. Merci ! :D

(mais je ne m'avoue pas vaincu pour le MPO 64 !)

Edition : ça sent les études de binaire tout ça...
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2936
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par zpalm »

Marge, dans ton programme je ne vois pas où tu initialises Z pour ton STO + . Z, il manque peut être un CLST au début.

Dans le même style en 11 pas et 15 octets (sans compter le LBL de début):

Code : Tout sélectionner

01 LBL S
02 63        en partant de la première case il faut ajouter le contenu des 63 cases suivantes
03 1         valeur de la première case
04 x²        initialise LAST x  à 1 pour la somme des cases (on gagne 1 octet par rapport à STO L)
05 LBL 00
06 STO+ X    double x (sans modifier LASTx)
07 STO+ L    ajoute à la somme des cases précédente   
08 DSE Y     passe à la case suivante
09 GTO 00    boucle si on n'a pas fini  
10 LASTx     rappelle la somme des cases
11 RTN
sinon toujours pour les blancs (on n'est pas à une unité près):

Code : Tout sélectionner

01 LBL S
02 2
03 64
04 y^x
05 RTN
alain1261
Fonctionne à 75 bauds
Fonctionne à 75 bauds
Messages : 21
Enregistré le : 11 juil. 2015 00:28

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par alain1261 »

Marge a écrit :Bonsoir, Alain,
J'ai bien raté une marche : je ne connaissais pas la formule, et du coup j'ai découvert (après bien du monde) que 2^64-1 équivaut à la somme de toutes les puissances précédentes de deux.

Du coup mon programme est faux (modifier 64 en 63), je vais en porter le carcan pendant toute une semaine, cela me permettra de méditer cette leçon de modestie. Merci ! :D

(mais je ne m'avoue pas vaincu pour le MPO 64 !)

Edition : ça sent les études de binaire tout ça...
Bonjour,

je dois avouer que lors de mes premiers essais, j'avais fait la somme de 2^x pour x de 1 à 64 :( (au lieu de 0 à 63)

merci pour ce défi, qui m'a permis d'apprendre (ou réapprendre) à utiliser les suites et ∑ sur ti92 (et classpad, c'est exactement la même syntaxe).

je vais essayer de réfléchir au MPO64 sur une machine plus intéressante que les TI92 ou classpad, qui travaillent nativement sur les entiers jusqu'a environ 600 chiffres...
Mon parcours : TI30 -> F-73 -> PC1261 -> PC1475 -> TI92 -> Voyage 200
Tipoucet
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3813
Enregistré le : 10 janv. 2009 13:47

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par Tipoucet »

En même temps, se servir d'une formule, c'est moins sportif. J'aime bien l'idée (laborieuse mais puisque c'est la machine qui calcule ...) de cascades de multiplications s'ajoutant les unes aux autres jusqu'à la limite fixée (pas de formule, pas de puissances). Par exemple le programme demande dans un premier temps le nombre de cases (on ne se limite pas à l'échiquier), le nom de notre céréale favorite (pas forcément du riz) et hop c'est parti pour les multiplications en boucles. J'ai une grosse flemme mais j'aurais bien sorti la TI-57.
Bonne journée
Dominique
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3422
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par C.Ret »

Bon, je me lance c'est enfin les vacances.

Mon SHARP PC-1211 joue les noirs :

Code : Tout sélectionner

1:A=0,B=0,C=1,E=€7,D=1/E,F=2,K=64
2:FOR I=1 TO K:C=FC,R=INT CD,C=C-RE,B=R+FB,R=INT BD,B=B-RE,A=R+FA:NEXT I
3:C=C-1:USING "########":PRINT A;B;C: END
et affiche après environ 1min17s le résultat suivant :

Code : Tout sélectionner

┌────────────────────────┐
│  184467 4407370 9551615│
└────────────────────────┘
il faut lire 18 446 744 073 709 551 615.
Mais mettre un espace tous les 3 chiffres nécessite un affichage de plus de 24 caractères, ce que ne permet pas mon équipement.

Les paramètres sont :
- nombre de cases de l'échiquier K = 64
- facteur multiplicatif entre chaque case F=2
- nombre de grains de riz sur la première case C=1

Le résulat est formé par la juxtaposition des trois registres A, B et C
Le registre E contient 10^7 et D l'inverse de E afin de profiter au maximum des multiplications implicites de ce SHARP.
Le registre R est utilisé pour les retenues. En réalité il ne prend que les valeurs 0 ou 1.
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
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7148
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par gege »

Bonjour,
Un peu sur le même principe sur PC1500 :

Code : Tout sélectionner

100 A=1:B=0:FOR I=1 TO 64
110 IF A<5000000000 LET A=A+A:B=B+B:GOTO 130
120 A=A-5000000000:A=A+A:B=B+B+1
130 NEXT I:PRINT A;B-1
Ca affiche1844674407 3709551615 en 4 secondes (9 sur le PB-700).
G.E.
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2936
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par zpalm »

Sur HP-16C, pour connaitre la somme des grains jusqu'à une case donnée:

Code : Tout sélectionner

001-43.22. A   g LBL A
002-  42  44   f WSIZE
003-  42   3   f UNSIGN
004-  43  35   g CLx
005-  42  30   f NOT
006-  43  21   g RTN
Utilisation: appuyer sur DEC puis entrer le numéro de la case suivi de GSB A.

Par exemple: 4 GSB A donne 15, et 64 GSB A donne 18446744073709551615 en 1 seconde ... le tout en 6 octets, pas trop mal pour une machine de 1982.

Ça marche aussi sur WP-34S en remplaçant WSIZE par WSIZE->X. La touche DEC de la 16C (base 10) est remplacée par f 10 (touche EEX), l'affichage des digits masqués à gauche ou à droite se fait avec f / g x<>y, la sortie du mode entier par f H.d (touche RCL).
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2936
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par zpalm »

gege a écrit :Bonjour,
Un peu sur le même principe sur PC1500 :

Code : Tout sélectionner

100 A=1:B=0:FOR I=1 TO 64
110 IF A<5000000000 LET A=A+A:B=B+B:GOTO 130
120 A=A-5000000000:A=A+A:B=B+B+1
130 NEXT I:PRINT A;B-1
Ca affiche1844674407 3709551615 en 4 secondes (9 sur le PB-700).
G.E.
Testé sur PC-1262: le PRINT final est erroné, il faut à la place PRINT B;A-1

La même chose en 28 pas sur HP-29C:

Code : Tout sélectionner

01 LBL 0
02 STO 0
03 1
04 STO 1
05 0
06 STO 2
07 LBL 1
08 RCL 2
09 STO + 2
10 RCL 1
11 5
12 EEX
13 9
14 x>y
15 GTO 2
16 STO - 1
17 1
18 STO + 2
19 LBL 2
20 RCL 1
21 STO + 1
22 DSZ
23 GTO 1
24 1
25 STO - 1
26 RCL 2
27 RCL 1
28 RTN
On entre le nombre de cases puis GSB 0. Le programme retourne les 10 chiffres de poids faible dans le registre X et les 10 chiffres de poids fort dans le registre Y, accessibles par x<>y.

64 GSB 0 donne 1844674407 3709551615 en 32 secondes.
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par babaorhum »

Bonjour,

C.Ret, toujours aussi incroyables tes solutions avec le PC-1211 - Gege, algorithme étonnant, simple et efficace bravo ! - Zpalm, je découvre les fonctions WSISE et UNSIGN sur ma 16C ...

De mon côté, j'étais parti avec mon 75C pour essayer de me rapprocher des années 80 de l'énoncé initial ... et j'ai écris un code bizarre, pas terrible pour un MPO mais qui fonctionne :

Code : Tout sélectionner

1 REM SISSA POUR HP75C
10 R$="1" @ FOR K=1 TO 64 @ C=0 @ FOR I=LEN(R$) TO 1 STEP -1 @ S=VAL(R$[I,I])*2
20 IF S>=10 THEN S=S+C-10 @ C=1 ELSE S=S+C @ C=0
30 R$[I,I] = STR$(S) @ NEXT I @ IF C=1 THEN R$="1" & R$ 
40 NEXT K @ I = LEN(R$)
50 S = VAL(R$[I,I])-1 @ IF S<0 THEN R$[I,I]="9" @ I=I-1 @ GOTO 50
60 R$[I,I]=STR$(S) @ DISP R$
J'obtiens bien 18446744073709551615 à l'affichage en un peu moins de 30 secondes ...

Tout ca n'est pas dans l'esprit du MPO mais je crois que je peux calculer jusqu'à 99 cases avec ce code ! (qui trouve pourquoi ?)

J'avais une question complémentaire ... combien pèsent 18446744073709551615 grains de riz ??? (c'est pour me rendre compte)

Merci marge pour ce MPO
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par babaorhum »

En fait j'ai trouvé que 1000 grains de riz pèsent environ 30 g .... (merveilleux internet quand même)
donc donc donc:

Code : Tout sélectionner

18446744073709551615
----------------------------------- = poids en tonnes
         30000000

et ca fait ... 614891469123.6517 tonnes de riz sauf erreur

la production mondiale est de 480 000 000 tonnes par an (toujours internet ...)

ce qui nous fait environ 1280 ans de production mondiale ...

Dingue cet échiquier de Sissa ...
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5270
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par bernouilli92 »

babaorhum a écrit : J'avais une question complémentaire ... combien pèsent 18446744073709551615 grains de riz ??? (c'est pour me rendre compte)

Merci marge pour ce MPO
Si on compte 25 à 50 grains par gramme, on arrive à environ 370-740 milliard de tonnes, soit environ 500 à 1000 fois la production annuelle mondiale de riz.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par babaorhum »

yes bernouilli, ca colle bien, merci ! :wink:
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5270
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par bernouilli92 »

En tout cas, cela fait plus que beaucoup. Je pense même que Sissa n'avait pas tout à fait idée de combien cela faisait. Car sinon il n'aurait pas fait une récompense impossible à satisfaire.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par tyann »

Bonjour

Je vous propose une extension: sachant que dans 2 litres
d'eau on peut cuire 500g de riz, combien faudra-t-il à Sissa
Non je rigole :D :arrow:
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: Misez p'tit, Optimisez ! n°63-64 : L'échiquier de Sissa

Message par Gilles59 »

Pour l'anecdote, en utilisant la même formule que donnée au dessus pour la TI92 ( ∑ ...), on obtient (mode exact) sur la HP49 :

e^(64*LN(2))-1
EXP2POW donne alors 2^64-1
EVAL donne alors tous les chiffres du nombre

Le CAS retarde l'évaluation numérique et il à mon avis raison car par exemple 2^64-1 est plus pratique à manipuler qu'un nombre exact de 20 chiffres
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Répondre

Retourner vers « Tous les Pockets »