Misez p'tit Optimisez n°88 : Suite Joyeuse de Fin d'Année
Modérateur : Politburo
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3422
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Misez p'tit Optimisez n°88 : Suite Joyeuse de Fin d'Année
L'année arrive à sa fin et il sera très bientôt temps de vous souhaiter de Bonnes et Heureuses Fêtes de fin d'année.
Les journées raccourcissent, les nuits sont longues et bien fraîches malgré le réchauffement général climatique. Le monde est fou et s'agite à la préparation des festivités de cette fin 2018.
Certains s'énervent, d'autres s'épuisent, tous nous courront pour achever cette année qui je l'espère aura été pour vous une suite heureuse d'événements et d'aventures. Et, je vous adresserai bien cordialement tous mes vœux de bonheur et de réussite pour vos aventures et tribulations à venir dès 2019.
Mais...
Mais je suis fort inquiet, j'ai trouvé que les mathématiques permettaient de déterminer, par le calcul, si une suite joyeuse est heureuse ou au contraire malheureuse. Et je ne sais pas si c'est le fait de mes calculatrices ou de mes pockets, mais les résultats sont bien moins encourageant pour l'année prochaine que pour cette année. Alors tachons de profiter un maximum de notre chance et célébrons tout cela dignement.
Ce qui est sûr est que Noël prochain s'annonce fort bien, 24122018 est un nombre heureux, ce qui ne sera pas le cas l'année prochaine.
En effet, Noël 2019 génère la suite joyeuse suivante :
24122019 , 111 , 3 , 9 , 81 , 65 , 61 , 37 , 58 , 89 , 145 , 42 , 20 , 4 , 16 , 37 , ...
Suite malheureuse car à partir de 37, elle boucle indéfiniment sans jamais trouver de stabilité ou de repos; Quel malheur !
Alors que cette année, tout se passera bien car l'agitation de la suite joyeuse finit pas trouver un très saint et très serein dénouement en se stabilisant sur l'unité salvatrice :
24122018 , 94 , 97 , 130 , 10 , 1...
Quel bonheur !
Je sais que comme moi vous êtes très bien organisés, que vous trouverez à vous réfugier le soir au coin d'un bon feu de cheminé, après une journée de travail effréné, aux aléas mouvementés par les préparations et des achats de noël en tous genres. Ainsi à l'abri de l'agitation générale, du tumulte des centres commerciaux et des transports en communs bondés et bruyants, qu'une fois installé bien au chaud et au calme, vous trouverez le temps de vérifier à l'aide de vos pockets et calculatrices préférés mes calculs.
Selon les capacités de vos assistants de poches, il vous sera possible, non seulement de vérifier si un nombre est heureux ou non, mais aussi, à l'aide de ceux muni d'une imprimante ou d'un affichage suffisamment confortable, de répertorier les suites joyeuses de cette fin d'année 2018.
Je me permets de vous rappeler la définition suivante :
Suite joyeuse. – Suite d'entiers naturels dont le premier terme est choisi arbitrairement ; le terme qui le suit est la somme des carrés de ses chiffres et ainsi de suite.
Par exemple, si le premier terme est 36, le deuxième sera 45, car 3² + 6² = 9 + 36 = 45. À moins que ce procédé ne conduise à l'unité, il conduit à un cycle qui se reproduit indéfiniment. Ainsi, les nombres 5, 25, 29, 85, 89, 145, 42, 20, 4, 16, 37, 58, 89, ... forment une suite joyeuse initiée par 5 dont le cycle commence à 89 et finit à 58. Lorsque la suite se termine par 1, les nombres de cette suite sont dits heureux.
Malgré le chaos qui nous entoure, trouvons un peu de stabilité et convergeons vers l'unité...
Les journées raccourcissent, les nuits sont longues et bien fraîches malgré le réchauffement général climatique. Le monde est fou et s'agite à la préparation des festivités de cette fin 2018.
Certains s'énervent, d'autres s'épuisent, tous nous courront pour achever cette année qui je l'espère aura été pour vous une suite heureuse d'événements et d'aventures. Et, je vous adresserai bien cordialement tous mes vœux de bonheur et de réussite pour vos aventures et tribulations à venir dès 2019.
Mais...
Mais je suis fort inquiet, j'ai trouvé que les mathématiques permettaient de déterminer, par le calcul, si une suite joyeuse est heureuse ou au contraire malheureuse. Et je ne sais pas si c'est le fait de mes calculatrices ou de mes pockets, mais les résultats sont bien moins encourageant pour l'année prochaine que pour cette année. Alors tachons de profiter un maximum de notre chance et célébrons tout cela dignement.
Ce qui est sûr est que Noël prochain s'annonce fort bien, 24122018 est un nombre heureux, ce qui ne sera pas le cas l'année prochaine.
En effet, Noël 2019 génère la suite joyeuse suivante :
24122019 , 111 , 3 , 9 , 81 , 65 , 61 , 37 , 58 , 89 , 145 , 42 , 20 , 4 , 16 , 37 , ...
Suite malheureuse car à partir de 37, elle boucle indéfiniment sans jamais trouver de stabilité ou de repos; Quel malheur !
Alors que cette année, tout se passera bien car l'agitation de la suite joyeuse finit pas trouver un très saint et très serein dénouement en se stabilisant sur l'unité salvatrice :
24122018 , 94 , 97 , 130 , 10 , 1...
Quel bonheur !
Je sais que comme moi vous êtes très bien organisés, que vous trouverez à vous réfugier le soir au coin d'un bon feu de cheminé, après une journée de travail effréné, aux aléas mouvementés par les préparations et des achats de noël en tous genres. Ainsi à l'abri de l'agitation générale, du tumulte des centres commerciaux et des transports en communs bondés et bruyants, qu'une fois installé bien au chaud et au calme, vous trouverez le temps de vérifier à l'aide de vos pockets et calculatrices préférés mes calculs.
Selon les capacités de vos assistants de poches, il vous sera possible, non seulement de vérifier si un nombre est heureux ou non, mais aussi, à l'aide de ceux muni d'une imprimante ou d'un affichage suffisamment confortable, de répertorier les suites joyeuses de cette fin d'année 2018.
Je me permets de vous rappeler la définition suivante :
Suite joyeuse. – Suite d'entiers naturels dont le premier terme est choisi arbitrairement ; le terme qui le suit est la somme des carrés de ses chiffres et ainsi de suite.
Par exemple, si le premier terme est 36, le deuxième sera 45, car 3² + 6² = 9 + 36 = 45. À moins que ce procédé ne conduise à l'unité, il conduit à un cycle qui se reproduit indéfiniment. Ainsi, les nombres 5, 25, 29, 85, 89, 145, 42, 20, 4, 16, 37, 58, 89, ... forment une suite joyeuse initiée par 5 dont le cycle commence à 89 et finit à 58. Lorsque la suite se termine par 1, les nombres de cette suite sont dits heureux.
Malgré le chaos qui nous entoure, trouvons un peu de stabilité et convergeons vers l'unité...
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.
Re: Misez p'tit Optimisez n°88 : Suite Joyeuse de Fin d'Année
Salut
Pour l'année 2018, il n'y a pas beaucoup de jours "heureux". J'en au compté 49.
Pour les jours "joyeux", dès qu'on tombe dans une série commençant par "4, 16, 20, 37, 39, 42, 58, 89, 145", on commence à boucler.
C'est très "statistique" tout ça.
Voici le premier jet d'un programme sur C-128. Il affiche et imprime les jours joyeux pour une année (ici 2018, variable A1) et donne la séquence pour le jours heureux. Bon, je vous épargne le listing produit
PS: est-ce que je suis encore dans le Misez p'tit?
Pour l'année 2018, il n'y a pas beaucoup de jours "heureux". J'en au compté 49.
Pour les jours "joyeux", dès qu'on tombe dans une série commençant par "4, 16, 20, 37, 39, 42, 58, 89, 145", on commence à boucler.
C'est très "statistique" tout ça.
Voici le premier jet d'un programme sur C-128. Il affiche et imprime les jours joyeux pour une année (ici 2018, variable A1) et donne la séquence pour le jours heureux. Bon, je vous épargne le listing produit
Code : Tout sélectionner
1 FAST
5 OPEN4,4
10 DIM J(12):J(1)=31:J(2)=28:J(3)=31:J(4)=30:J(5)=31:J(6)=30:J(7)=31:J(8)=
31:J(9)=30:J(10)=31:J(11)=30:J(12)=31:J1=0:M1=0:A1=2018
20 DIM R(100):SCNCLR:H=0
30 J1=J1+1:IF J1>J(M1) THEN J1=1:M1=M1+1
35 REM IF M1>12 THEN M1=1:A1=A1+1
40 IF M1>12 THEN 210
50 N=J1*1000000+M1*10000+A1
60 PRINT "JOUR=";N;:PRINT#4,N;
70 I=0
80 C=0
90 D=INT(N/10):B=N-D*10:N=INT(N/10)
100 C=C+B*B
110 IF N>0 THEN 90
120 IF I=0 THEN 150
130 FOR O=1 TO I:IF R(O)=C THEN GOTO 160
140 NEXT O
150 I=I+1:R(I)=C:N=C:GOTO 80
160 IF S=0 THEN S=C:GOTO 180
170 IF C=S THEN S=0:PRINT "JOYEUX":PRINT#4,"JOYEUX":GOTO 30
180 PRINT C;:PRINT#4,C;
190 IF C<>1 THEN N=C:GOTO 80
200 IF C=1 THEN S=0:H=H+1:PRINT "HEUREUX":PRINT#4,"HEUREUX":GOTO 30
210 PRINT "NBR JOURS HEUREUX=";H
215 PRINT#4,"NBR JOURS HEUREUX=";H
220 CLOSE 4
-
- Fonctionne à 2400 bauds
- Messages : 2143
- Enregistré le : 30 août 2011 12:23
- Localisation : Vous êtes ici -> .
Re: Misez p'tit Optimisez n°88 : Suite Joyeuse de Fin d'Année
Sur PC1500/1600 (ou autre SHARP), le programme n'est pas optimise.
On saisit le nombre, puis DEF N. Chaque nombre est affiche. Appuyer sur ENTER pour passer au suivant. Le programme s'arrete si la suite est heureuse...
PS: "CGH", ie, 677172 est heureux -> 188 129 86 100 1
PS2: Excellent cet MPO ! Merci C.Ret
On saisit le nombre, puis DEF N. Chaque nombre est affiche. Appuyer sur ENTER pour passer au suivant. Le programme s'arrete si la suite est heureuse...
Code : Tout sélectionner
10 AREAD A:N=0:N=0:CLS:WAIT
20 A=INT A:A=A/10:P=(A-INT A)*10:N=N+P*P:IF A>0THEN 20
30 PRINT N:IF M<>NLET M=N:A=N:N=0:GOTO 20
PS2: Excellent cet MPO ! Merci C.Ret
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
- C.Ret
- 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°88 : Suite Joyeuse de Fin d'Année
Un Commodore C128 ne fait (à moins d'être étendu par des bancs mémoire supplémentaires, prévus mais très très rarement installés) que 128 kio
A une époque où même les téléphones font quelque dizaine de Gio, alors oui DE FACTO, le simple fait de vouloir programmer un tel engin c'est du "Misé Petit et Optimisé "
En effet, je trouve aussi 49 jours heureux en 2018. Je ne m'étais pas rendu compte que 2019 sera globalement un peu plus heureuse avec 54 jours (dont pas moins de 11 dimanches heureux) Mais rien ne vaut l'année 1968; on a 66 jours heureux
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.
- C.Ret
- 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°88 : Suite Joyeuse de Fin d'Année
J'oubliais de poster le listing:
Code : Tout sélectionner
10 data janv,31,fevr,28,mars,31,avri,30,mai,31,juin,30,juil,31,aout,31,sept,30,octo,31,nove,30,dece,31
20 j$="[MIN]Lu[MIN]Ma[MIN]Me[MIN]Je[MIN]Ve[MIN]Sa[UND ON]Di":s$=" "
100 graphic 0,1:slow:input "année ";a%:aa%=a%-100*int(a%/100):b%=365:if aa%=4*int(aa%/4) then b%=366
110 d%=a%-1968+int((a%-1964.999)/4):d%=d%-7*int(d%/7)
120 graphic 5,1:print chr$(27)"m[RVS ON][HOME]"left$(s$,37)str$(a%)left$(s$,38)
130 for m=1 to 12
140 : j%=1:read m$,m%:if m=2 and b%>365 then m%=29
150 : y%=y%+1:print tab(x%)"[DRK CYN][RVS ON][MAJ]"left$(m$+" ",4)
160 : do
170 : : if y%>23 then x%=x%+5:y%=0:print "[HOME]"
180 : : n=j%+100*m+1e4*a%:gosub 900:color 5,11:if n=1 then color 5,14:h%=h%+1
190 : : if j%=13 and d%=4 then color 5,3:if n=1 then color 5,6
200 : : print tab(x%)"[MIN][UND OFF]"mid$(j$,1+3*d%,3)right$(str$(j%),2)
210 : : y%=y%+1:j%=j%+1:d%=d%+1:if d%=7 then d%=0
220 : loop until j%>m%
230 next m
240 print tab(x%)"[LT RED][DWN]"str$(b%-h%):print tab(x%)"[LT GRN]"str$(h%)
250 graphic 0 : end
900 graphic 0:l$="":do:n$=str$(n):if instr(l$+" ",n$+" ") then exit
910 : l$=l$+n$:n=0:for i=2 to len(n$) : n%=asc(mid$(n$,i,1))-48:n=n+n%*n% : next i
920 loop :print "[WHT]"l$:graphic 5:return
Modifié en dernier par C.Ret le 18 déc. 2018 17:12, modifié 1 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.
- dprtl
- Fonctionne à 1200 bauds
- Messages : 463
- Enregistré le : 27 janv. 2013 00:26
- Localisation : Strasbourg
- Contact :
Re: Misez p'tit Optimisez n°88 : Suite Joyeuse de Fin d'Année
Voici ma contribution pour Casio PB1000. Elle est optimisée par rapport au temps de calcul. Pour avoir des réponses quasi instantanées sur ce CPU à 910 KHz sans faire appel à l'assembleur, mon idée était d'utiliser un pré-calcul pour accélérer autant que possible le test des nombres heureux jusqu'à 99999999. La somme des chiffres au carré de 99999999 fait 648. Dans le programme ci-dessous, je me contente donc de calculer une fois la somme des carrés, puis de "matcher" dans mes 6 chaînes pré-calculées (6 x 108 caractères = 648) si le nombre est heureux, ou pas.
Exemples d'usage :
Code : Tout sélectionner
10 DIM H$(5)
20 H$(0)="100000100100100000100010000100110000000000010000100000000000000000010100000000100100010000100100100100100000"
30 H$(1)="100000000000000000001100100000100000000000000000000000000010000000010000000000010101100000000010000100000000"
40 H$(2)="001000000100010000010010000000000000000000000110000000000000000100000000001010000000110000000100100000110000"
50 H$(3)="010010100000010000000000000000010000010010110000000100100010010000110000100000010000100000000000000000000000"
60 H$(4)="000000010000010000000000000000010000100000000100000000100100000100000000000000000000000000000000000000010000"
70 H$(5)="000000000000000100000010110000000000000000000000000000000000000000010000000010000110000000010010110000010000"
80 INPUT"N";N$:S=-1:FOR I=1 TO LEN(N$):S=S+(ASC(MID$(N$,I,1))-48)^2:NEXT
90 R=INT(S/108):IF MID$(H$(R),S-R*108+1,1)="1" THEN PRINT "Heureux" ELSE PRINT "Malheureux"
100 GOTO 80
Code : Tout sélectionner
N?1
Heureux
N?677172
Heureux
N?24122018
Heureux
N?24122019
Malheureux
N?99999999
Malheureux
- C.Ret
- 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°88 : Suite Joyeuse de Fin d'Année
Pour les SHARP ne gérant pas complètement les chaines de caractère, j'en étais arrivé à la solution de cgh avec un même mode opératoire:cgh a écrit : ↑17 déc. 2018 21:03 Sur PC1500/1600 (ou autre SHARP), le programme n'est pas optimise.
On saisit le nombre, puis DEF N. Chaque nombre est affiche. Appuyer sur ENTER pour passer au suivant. Le programme s'arrete si la suite est heureuse...Code : Tout sélectionner
10 AREAD A:N=0:N=0:CLS:WAIT 20 A=INT A:A=A/10:P=(A-INT A)*10:N=N+P*P:IF A>0THEN 20 30 PRINT N:IF M<>NLET M=N:A=N:N=0:GOTO 20
Code : Tout sélectionner
1:"N" AREAD Y
2:Z=Y,X=0
3:X=X+(Z-INT .1Z)^2,Z=INT .1Z:IF ZGOTO 3
4:PRINT Y,X:Y=X:IF X>1GOTO 2
Avec les SHARP ayant une gestion convenable des chaines de caractère, j'ai trouvé un one liner :
Code : Tout sélectionner
1:"N" AREAD N:NN$= STR$ N,N=0: FOR I=1 TO LEN NN$:N=N+ VAL MID$ (NN$,I,1)^2: NEXT I: PRINT N;: GOTO 1
Par contre, la détermination des séries joyeuses reste un peu fastidieuse même si une version automatique existait, elle n'est pas très optimisée :
Code : Tout sélectionner
1:"S" INPUT "Start ";N: S$= CHR$ 126: WAIT 0
2:NN$= STR$ N: PRINT NN$; S$;: IF S$<"A" END
3: FOR I=1 TO LEN NN$:N=N+ VAL MID$ (NN$,I,1)^2: NEXT I
4:IF N=1 OR N=4 OR N=16 OR N=20 OR N=37 OR N=42 OR N=58 OR N=89 OR N=145 LET S$="..."
5:GOTO 2
Je n'avais pas de solution pour une automatisation efficace sur mon SHARP PC1211, avant de voir l'idée génial de dprtl :
Qui me donne une solution pour mon heureux PC-1211 ( eh oui 1211 est un nombre heureux):dprtl a écrit : ↑18 déc. 2018 23:01Code : Tout sélectionner
10 DIM H$(5) 20 H$(0)="100000100100100000100010000100110000000000010000100000000000000000010100000000100100010000100100100100100000" 30 H$(1)="100000000000000000001100100000100000000000000000000000000010000000010000000000010101100000000010000100000000" 40 H$(2)="001000000100010000010010000000000000000000000110000000000000000100000000001010000000110000000100100000110000" 50 H$(3)="010010100000010000000000000000010000010010110000000100100010010000110000100000010000100000000000000000000000" 60 H$(4)="000000010000010000000000000000010000100000000100000000100100000100000000000000000000000000000000000000010000" 70 H$(5)="000000000000000100000010110000000000000000000000000000000000000000010000000010000110000000010010110000010000" 80 INPUT"N";N$:S=-1:FOR I=1 TO LEN(N$):S=S+(ASC(MID$(N$,I,1))-48)^2:NEXT 90 R=INT(S/108):IF MID$(H$(R),S-R*108+1,1)="1" THEN PRINT "Heureux" ELSE PRINT "Malheureux" 100 GOTO 80
Code : Tout sélectionner
1:A=6719808642,B=33792,C=4907616261,D=2550136962,E=8+2^31,F=8603828288
2:G=4366303248,H=50331650,I=1613234432,J=4337983632,K=440467456,L=1082528292
3:M=2+2^32,N=138412048,O=1067012,P=2^26,Q=6819840,R=2^30,S=4405070880
4:T=168298120,U=537935881,V=37748740,W=40961
5:INPUT X:Z=X<816,Y=ZX,Z=X-Y
6:IF ZLET Y=Y+INT (Z-10INT .1Z)^2,Z=INT .1Z:GOTO 6
7:Z=Y,Y=INT (Y/34 ,Z=INT (A(1+Y)/2^(Z-34Y ,Z=Z-2*INT .5Z:PRINT X,Z:GOTO 5
- optimise la détermination des suites joyeuses tous les nombres jusqu'à 10 chiffres (capacité maximale du pocket) soit jusqu'à 9'999'999'999.
- mémorise 816 résultats précalculés. Ces résultats sont notés dans les registres A à W (inclus) sous forme binaire (0=malheureuse 1=heureuse), chaque registre couvre une étendue de 34 nombres,
- calcule au plus une seule fois a somme des carrés des chiffres. Ce calcul est évité pour tous les arguments inférieurs à 816 (resp. 850 sur la version PC-1360)
- affiche le résultat de façon laconique en rappelant le terme initial de la suite et s'il s'agit d'une suite joyeuse malheureuse (0.) ou heureuse (1.)
Code : Tout sélectionner
1:DATA 6719808642,33792,4907616261,2550136962,2147483656,8603828288
2:DATA 4366303248,50331650,1613234432,4337983632,440467456,1082528292
3:DATA 4294967298,138412048,1067012,67108864,6819840,1073741824
4:DATA 4405070880,168298120,537935881,37748740,40961,17828100
5:"S" INPUT X: RESTORE :Y=X*(X<850),NN$= STR$ X
6:IF Y=0 FOR I=1 TO LEN NN$:Y=Y+VAL MID$(NN$,I,1)^2: NEXT I:NN$=NN$+ CHR$ 44+ STR$ Y
7:Z=Y MOD 34: FOR I=0 TO Y/34: READ A: NEXT I: PRINT NN$+",...", INT (A/2^Z) MOD 2: GOTO 5
Modifié en dernier par C.Ret le 23 déc. 2018 10:16, modifié 1 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.
- C.Ret
- 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°88 : Suite Joyeuse de Fin d'Année
Code : Tout sélectionner
9: 8: 7: 6: 5: 4: 3: 2: 1: 0:
--- --- --- --- --- --- --- --- --- ------------------------------------
44→ 32→ 13→ 10→ 1.
19→ 82→ 68→100→ 1.
6→ 36→ 45→ 41→ 17→ 50→ 25→ 29→ 85→ 89→145→ 42→ 20→ 4→ 16→ 37→ 58→_89_
88→128→ 69→117→ 51→ 26→ 40→ 16→ 37→ 58→ 89→145→ 42→ 20→ 4→_16_
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.
Re: Misez p'tit Optimisez n°88 : Suite Joyeuse de Fin d'Année
Après un période compliquée, je suis heureux (au contraire de ma date de naissance ;D ) d'être de retour ici et retrouver les excellents MPO de C.Ret.
Celui-ci est l'occasion de ressortir mon hP50g et utiliser l'indispensable bibliothèque de traitement de listes ListExt de David Mutter. Remarquablement bien faite, rapide et légère, Voir : https://www.hpcalc.org/details/7971. A télécharger absolument sur votre 49/50g
Calculer le nombre suivant de liste est aussi simple que :
Comment ça marche ? Supposons 24122019 sur la pile :
En utilisant l'astuce de Dprtl, le programme devient :
Il suffit de taper la date initiale puis lancer le programme qui retourne "1" pour une suite 'heureuse' et "0" pour une suite 'malheureuse'
Tous les jours heureux de 2018, sous forme d'une liste (avec le drapeau 42 ON pour un format date en français) :
donne :
Mon année de naissance n'a que 45 jours heureux. Je vous la laisse deviner ... ;D
Celui-ci est l'occasion de ressortir mon hP50g et utiliser l'indispensable bibliothèque de traitement de listes ListExt de David Mutter. Remarquablement bien faite, rapide et légère, Voir : https://www.hpcalc.org/details/7971. A télécharger absolument sur votre 49/50g
Calculer le nombre suivant de liste est aussi simple que :
Code : Tout sélectionner
« I➔NL SQ LSUM »
Code : Tout sélectionner
24122019 I➔NL retourne { 2 4 1 2 2 0 1 9 } // I➔NL Integer to Number List
SQ retourne { 4 16 1 4 4 0 1 81 } // Met tous les nombres au carré
LSUM retourne 111 // Somme de tous les éléments d'un liste
Code : Tout sélectionner
«
"100000100100100000100010000100110000000000010000100000000000000000010100000000100100010000100100100100100000100000000000000000001100100000100000000000000000000000000010000000010000000000010101100000000010000100000000001000000100010000010010000000000000000000000110000000000000000100000000001010000000110000000100100000110000010010100000010000000000000000010000010010110000000100100010010000110000100000010000100000000000000000000000000000010000010000000000000000010000100000000100000000100100000100000000000000000000000000000000000000010000000000000000000100000010110000000000000000000000000000000000000000010000000010000110000000010010110000010000"
SWAP I➔NL SQ LSUM DUP SUB
»
'Heureux?' STO
Tous les jours heureux de 2018, sous forme d'une liste (avec le drapeau 42 ON pour un format date en français) :
Code : Tout sélectionner
«
{} 'JoursHeureux' STO
31.122017
DO
1 DATE+
IF DUP 1E6 * Heureux? STR➔ THEN 'JoursHeureux' OVER 1 TSTR 1 12 SUB STO+ END
UNTIL DUP 31.122018 == END
JoursHeureux
»
Code : Tout sélectionner
{ "WED 03.01.18" "THU 04.01.18" "TUE 30.01.18" "SAT 03.02.18" "TUE 06.02.18" "FRI 23.02.18" "THU 01.03.18" "FRI 02.03.18" "SUN 04.03.18" "MON 05.03.18" "SAT 10.03.18" "TUE 20.03.18" "THU 22.03.18" "FRI 23.03.18" "SUN 01.04.18" "TUE 03.04.18" "TUE 10.04.18" "THU 19.04.18" "MON 30.04.18" "THU 03.05.18" "SUN 06.05.18" "SAT 19.05.18" "WED 30.05.18" "SAT 02.06.18" "TUE 05.06.18" "WED 20.06.18" "FRI 29.06.18" "SAT 07.07.18" "SUN 29.07.18" "FRI 14.09.18" "SAT 15.09.18" "WED 26.09.18" "THU 27.09.18" "WED 03.10.18" "THU 04.10.18" "TUE 30.10.18" "THU 15.11.18" "THU 22.11.18" "SAT 24.11.18" "SUN 25.11.18" "WED 28.11.18" "WED 12.12.18" "FRI 14.12.18" "SAT 15.12.18" "TUE 18.12.18" "FRI 21.12.18" "SAT 22.12.18" "MON 24.12.18" "TUE 25.12.18" }
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
- C.Ret
- 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°88 : Suite Joyeuse de Fin d'Année
Ah! Oui ! j'aime bien ça :
Trois instructions qui font tout le boulot , c'est du vrai, fort et bien MPO'iser !
Bien heureux de te retrouver sur le forum, et j'espère en grande forme…
Il va falloir que je m'applique à nouveau avant de publier n'importe quoi par ici
Code : Tout sélectionner
« I➔NL SQ LSUM »
Bien heureux de te retrouver sur le forum, et j'espère en grande forme…
Il va falloir que je m'applique à nouveau avant de publier n'importe quoi par ici
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.