C’est le LMS (langage machine spécialisé) de la TI 57. C’est cette machine (enfin pas celle ci précisément) qui a fait que je suis devenu informaticien !
Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier (racine digitale)
Modérateur : Politburo
- badaze
- Fonctionne à 14400 bauds

- Messages : 7462
- Inscription : 12 févr. 2007 19:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
- gege
- Fonctionne à 14400 bauds

- Messages : 7180
- Inscription : 31 janv. 2008 15:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Bonjour,
Très belle TI57 !
C'est vraiment rare dans cet état.
G.E.
Très belle TI57 !
C'est vraiment rare dans cet état.
G.E.
- C.Ret
- Fonctionne à 9600 bauds

- Messages : 2483
- Inscription : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Ah! Oui elle est belle et fonctionnelle.
En se moment, il y a trois calculettes branchées sur le secteur sur mon bureau. Des heures et des heures de plaisir en perspective.
Et Danny sera déçu, là aussi c'est pas de la simulation ou de l'émulation.
Que du vrai digital, (pas du numérique ) c'est à dire du vrai tapé avec les doigts !!
En se moment, il y a trois calculettes branchées sur le secteur sur mon bureau. Des heures et des heures de plaisir en perspective.
Et Danny sera déçu, là aussi c'est pas de la simulation ou de l'émulation.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803 + SD2iec. | TI-57 LCD | HP-28S + HP82240A | TI-74 BasiCalc | HP-41C + (2 memory + stat + IR) | HP-15C | HP Prime Color Touchscreen Graphing Calculator| TI-92 II | CASIO fx-602p + FA-1 | HP-71B 64K+JPC-ROM+HPIL+card reader . Sommaire des M.P.O..
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
'gnifique la TI 57 ! 
Casio fx-702P, 750P, 880p, 3900p, 7000G, 6000G, 6500G, 6800G, 8500G, 4500P, 9900GC, 9950GB +, Graph 100+ USB, Graph 90+E, fx-CP400
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
- C.Ret
- Fonctionne à 9600 bauds

- Messages : 2483
- Inscription : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
A
D'avoir vu en fonctionnement la magnifique TI-57 ancestrale de Badaze, j'ai eut envi d'essayer ma (relativement) récente TI-57 LCD
Bon, les piles (installées en 1995) n'ont pas coulées et ne sont pas encore usées (c'est dire comme je l'ai peu utilisée !).
Et pour cause, son clavier était inutilisable à cause de répétitions à tire-larigot. Mais cette foi, rien. Aucune touche ne fonctionnait et ne semblait avoir d'effet. Sauf, les touche ON et OFF et de temps en temps une fonction qui affichait soit CALC soit ERROR.
Je me suis donc décider à l'ouvrir pour changer , je l'avait déjà fait il y a quelques décennies, la feuille de plastique sous les touches.
J'ai trouvé un vieux bout de transparent cellulose de marque HP que j'utilisais dans les année 90's pour des présentations imprimées sur HP-DeskJet.
J'en ai profité pour bien nettoyer l'intérieur des bulbes métalliques de contact avec un nettoyant 'contact' SVITOL spécialisé.
J'ai aussi trouvé un rouleau de large sotch transparent, armaturé et repositionnable pour bien recoller le film adhésif qui porte les dits bulbes.
J'ai découpé et ajusté le transparent de marque HP (ça me fait rigoler de réparer ma TI avec du matos Hewlett Packard ... pourvu que ça explose pas !!!)
J'ai ajouté une couche d'adhésif pour bien coincer la plaque plastique support clavier. Ca referme bien. J'ai réussi à ne rien casser.
Et , à ma grande surprise le clavier refonctionne parfaitement. C'est même agréable de pouvoir à nouveau tapoter sur cette TI-57 LCD. Pourvu que cela dure un peu.
En tout cas, j'ai trouvé un code plus court que celui de Badaze en utilisant le registre R1 pour y mettre la valeur constante 10 et en jonglant avec le registre de test t.
L'algorithme que j'utilise est un peu diffèrent du sien.
Sur la TI-57 LCD, on ne peut pas modifier le registre de test t à l'aide du registre R7. D'ailleurs, sur cette pauvre machine qui n'a de 57 que son nom, on ne peut pas grand chose ! Avoir 40 pas de programme nécessite de devoir se limiter aux deux registres R0 et R1. Quelle misère.
Pour utiliser mon code, mettre sa TI-57 LCD en partition n°2 ou 3 car il faut 26 pas de programme et les deux premiers registres R0 et R1.
Mettre la valeur constante 10 dans le registre R1 puis saisir le code de la photo. Pour calculer de façon itérative la somme des chiffres d'un nombre saisir celui-ci et presser sur RST et R/S pour lancer le calcul.
Ouf, le RST est à la fin, il s'agit bien d'une méthode par récurrence de queue...
C'est un plaisir de pouvoir à nouveau utiliser cette machine: j'ai pu obtenir les valeurs de test; Je ne me souvenais plus que les calculs programmés apparaissaient furtivement à l'affichage. Cela permet de patienter.
BON, je n'ai aucune personnalité, faut toujours que je copie... mais je n'ai pas pû brancher ma TI à quoi que ce soit
et le 5 de l'écran LCD n'a pas le clinquant rouge vif des LED

Bon, les piles (installées en 1995) n'ont pas coulées et ne sont pas encore usées (c'est dire comme je l'ai peu utilisée !).
Et pour cause, son clavier était inutilisable à cause de répétitions à tire-larigot. Mais cette foi, rien. Aucune touche ne fonctionnait et ne semblait avoir d'effet. Sauf, les touche ON et OFF et de temps en temps une fonction qui affichait soit CALC soit ERROR.
Je me suis donc décider à l'ouvrir pour changer , je l'avait déjà fait il y a quelques décennies, la feuille de plastique sous les touches.
J'ai trouvé un vieux bout de transparent cellulose de marque HP que j'utilisais dans les année 90's pour des présentations imprimées sur HP-DeskJet.
J'en ai profité pour bien nettoyer l'intérieur des bulbes métalliques de contact avec un nettoyant 'contact' SVITOL spécialisé.
J'ai aussi trouvé un rouleau de large sotch transparent, armaturé et repositionnable pour bien recoller le film adhésif qui porte les dits bulbes.
J'ai découpé et ajusté le transparent de marque HP (ça me fait rigoler de réparer ma TI avec du matos Hewlett Packard ... pourvu que ça explose pas !!!)
J'ai ajouté une couche d'adhésif pour bien coincer la plaque plastique support clavier. Ca referme bien. J'ai réussi à ne rien casser.
Et , à ma grande surprise le clavier refonctionne parfaitement. C'est même agréable de pouvoir à nouveau tapoter sur cette TI-57 LCD. Pourvu que cela dure un peu.
En tout cas, j'ai trouvé un code plus court que celui de Badaze en utilisant le registre R1 pour y mettre la valeur constante 10 et en jonglant avec le registre de test t.
L'algorithme que j'utilise est un peu diffèrent du sien.
Sur la TI-57 LCD, on ne peut pas modifier le registre de test t à l'aide du registre R7. D'ailleurs, sur cette pauvre machine qui n'a de 57 que son nom, on ne peut pas grand chose ! Avoir 40 pas de programme nécessite de devoir se limiter aux deux registres R0 et R1. Quelle misère.
Pour utiliser mon code, mettre sa TI-57 LCD en partition n°2 ou 3 car il faut 26 pas de programme et les deux premiers registres R0 et R1.
Mettre la valeur constante 10 dans le registre R1 puis saisir le code de la photo. Pour calculer de façon itérative la somme des chiffres d'un nombre saisir celui-ci et presser sur RST et R/S pour lancer le calcul.
Code : Tout sélectionner
ON
2nd Part 4
40.2 10 STO 1
10 LRN
2nd CP
-- St
56 00 2nd C.t // Met à zéro le registre de test t
51 01 2nd x:t // sauvegarde temporairement le nombre N dans t
61.00 02 STO 0 // Met à zéro accululateur R0
71.01 03 RCL 1 // Rappel constante R1=10
51 04 x:t // Met à 10 le registre de test et restore le nombre N
-27 05 2nd INV x<t?
13 06 R/S // Si nombre inférieur à 10 alors résultat atteint
56 07 2nd C.t // Remet à zéro registre de test t
23.01 08 LBL 1 // Boucle calcul somme chiffre du nombre N
61.85.00 09 STO+0 // Ajoute N=/abcde/ à l'accumulateur
55 10 ÷
71.01 11 RCL 1 // Rappel constante R1=10
95 12 =
58 13 2nd Intg // Arrondi
65 14 x
53 15 (
51 16 x:t // Sauvegarde temporairement résidu N/10^x dans registre t
85 17 +
71.01 18 RCL 1 // Rappel constante R1=10
95 19 =
61.75.00 20 STO-0 // Retire N=/abcd0/ de l'accumulateur
00 21 0
51 22 x:t // Remet à zéro registre t et restaure résidu N/10^x
-26 23 2nd INV x≠t?
22.01 24 GTO 1 // Boucle tant que le résidu n'est pas nul
71.00 25 RCL 0 // Rappel somme des chiffres
21 26 RST // et relance la procédure
LRNC'est un plaisir de pouvoir à nouveau utiliser cette machine: j'ai pu obtenir les valeurs de test; Je ne me souvenais plus que les calculs programmés apparaissaient furtivement à l'affichage. Cela permet de patienter.
Code : Tout sélectionner
1337 RST R/S
5 123456 RST R/S
3 1234567 RST R/S
1 999999 RST R/S
9 _
BON, je n'ai aucune personnalité, faut toujours que je copie... mais je n'ai pas pû brancher ma TI à quoi que ce soit
Dernière édition par C.Ret le 14 juin 2020 18:05, édité 2 fois.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803 + SD2iec. | TI-57 LCD | HP-28S + HP82240A | TI-74 BasiCalc | HP-41C + (2 memory + stat + IR) | HP-15C | HP Prime Color Touchscreen Graphing Calculator| TI-92 II | CASIO fx-602p + FA-1 | HP-71B 64K+JPC-ROM+HPIL+card reader . Sommaire des M.P.O..
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Ça fait plaisir de voir qu’un simple MPO permette de ressortir nos anciennes et s’amuser avec comme ça 
Casio fx-702P, 750P, 880p, 3900p, 7000G, 6000G, 6500G, 6800G, 8500G, 4500P, 9900GC, 9950GB +, Graph 100+ USB, Graph 90+E, fx-CP400
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
- gege
- Fonctionne à 14400 bauds

- Messages : 7180
- Inscription : 31 janv. 2008 15:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Bonjour,
Voici une proposition récursive sur Prime :
Je me demande quelle est la super astuce dont tu parles !!
A+
G.E.
Voici une proposition récursive sur Prime :
Code : Tout sélectionner
EXPORT persist(n)
BEGIN
IF 9<n THEN persit(n-9*IP(N/10))->n; END
RETURN n;
END;
A+
G.E.
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Pas mal la fonction récursive
Pour optimiser, regardez les nombres qui donnent les mêmes chiffres au final et essayez de leur trouver un point commun
Mon programme le + court fait... 5 pas ! (pour HP-41 ou 42)
Pour optimiser, regardez les nombres qui donnent les mêmes chiffres au final et essayez de leur trouver un point commun
Mon programme le + court fait... 5 pas ! (pour HP-41 ou 42)
Casio fx-702P, 750P, 880p, 3900p, 7000G, 6000G, 6500G, 6800G, 8500G, 4500P, 9900GC, 9950GB +, Graph 100+ USB, Graph 90+E, fx-CP400
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
- gege
- Fonctionne à 14400 bauds

- Messages : 7180
- Inscription : 31 janv. 2008 15:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Bonjour,
Ah ah !!
Comme disait Martin Gardner.
Très amusant.
En effet le programme est très très court !!
G.E.
Ah ah !!
Comme disait Martin Gardner.
Très amusant.
En effet le programme est très très court !!
G.E.
-
remy
- Fonctionne à 2400 bauds

- Messages : 2086
- Inscription : 13 mars 2006 16:39
- Localisation : Issy
- Contact :
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Moi aussi, et je commençais à me dire qu'il fallait que j'implémente ça dans PockEmul
C'est beau.
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
- C.Ret
- Fonctionne à 9600 bauds

- Messages : 2483
- Inscription : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Pas de souci, je fais une macro dans Excel et j'autorise Remy à utiliser le design dans ses productions !
Le vert et directement inspiré de celui du Forum.
Les fontes sont celles que l'on trouve facilement sur le Net. (Là Remy devra peut-être s'acquitter de régler les droits)
Quand au contenu, il suffit sur PockEmul de brancher une imprimante au cul d'une HP-41 et taper XEQ [alpha]TRACE[alpha].
Après, évidemment si dans deux ou trois ans Remy a vendu 3 millions d'émulateurs avec ce design dans le ventre, je l'accompagnerai en premier classe SVP faire des conférences en VIP aux quatre coins de la planète.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803 + SD2iec. | TI-57 LCD | HP-28S + HP82240A | TI-74 BasiCalc | HP-41C + (2 memory + stat + IR) | HP-15C | HP Prime Color Touchscreen Graphing Calculator| TI-92 II | CASIO fx-602p + FA-1 | HP-71B 64K+JPC-ROM+HPIL+card reader . Sommaire des M.P.O..
- C.Ret
- Fonctionne à 9600 bauds

- Messages : 2483
- Inscription : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
BON, pour illustrer cet excellent MPO avec un code pour pocket SHARP (que certains adapteront d'urgence pour CASIO) je propose d'utiliser les quatre lignes d'écran de mon SHARP PC-1360 afin d'indiquer la récurrence :
[DEF][SPC] 1 3 3 7 [ENTER] affiche:
[DEF][SPC] 9 8 7 9 8 7 [ENTER] affiche:
[DEF][SPC] 5 2 3 6 9 8 4 1 0 7 8 9 5 2 [ENTER] affiche:
Notons que je n'ai pu vérifier ces derniers résultats ni sur mon HP-41C , ni sur ma TI-57 LCD 
Code : Tout sélectionner
1:" " WAIT 0: INPUT NN$: CLS
2:IF VAL NN$>9 PRINT NN$:S=0: FOR I=1 TO LEN NN$:S=S+ VAL MID$ (NN$,I,1): NEXT I:NN$= STR$ S: GOTO 2
3:WAIT : PRINT NN$: ENDSHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803 + SD2iec. | TI-57 LCD | HP-28S + HP82240A | TI-74 BasiCalc | HP-41C + (2 memory + stat + IR) | HP-15C | HP Prime Color Touchscreen Graphing Calculator| TI-92 II | CASIO fx-602p + FA-1 | HP-71B 64K+JPC-ROM+HPIL+card reader . Sommaire des M.P.O..
- bernouilli92
- Fonctionne à 14400 bauds

- Messages : 4847
- Inscription : 21 nov. 2012 14:03
- Localisation : Ile de France
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Je connaissais l'astuce. Le programme pour hp48 fait 15 octets, mais beaucoup moins sur hp41 ou hp42.
Par contre, ce n'est pas récursif.
Par contre, ce n'est pas récursif.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Eh oui vous êtes plusieurs à avoir trouvé l’optimisation ultime pour calculer ce qu’on appelle la racine digitale, bravo
Un peu de lecture pour les curieux : https://www.geeksforgeeks.org/finding-s ... gle-digit/
Et encore plus intéressant, sur les séquences de racines digitales : https://www.sjsu.edu/faculty/watkins/Digitsum0.htm
Un peu de lecture pour les curieux : https://www.geeksforgeeks.org/finding-s ... gle-digit/
Et encore plus intéressant, sur les séquences de racines digitales : https://www.sjsu.edu/faculty/watkins/Digitsum0.htm
Casio fx-702P, 750P, 880p, 3900p, 7000G, 6000G, 6500G, 6800G, 8500G, 4500P, 9900GC, 9950GB +, Graph 100+ USB, Graph 90+E, fx-CP400
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
HP 35, 45, 65, 21, 25, 67, 33E, 41C, 41CV, 41CX, 15C, 20S, 42S, 28S, 32S, 32SII, 48SX, 48S, 48G, 48GX, 48G+, 50g, 35s, 39gII, Prime
Sharp PC-1245, 1500A, 1430, 1350, 1360, 1403, 1403H, 1262, EL-9000, PC-E500S | Psion Organiser II XP, Organiser II LZ 64 | Tandy PC-7
- badaze
- Fonctionne à 14400 bauds

- Messages : 7462
- Inscription : 12 févr. 2007 19:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Misez p'tit Optimisez n°93 : somme récursive des chiffres d'un entier
Si on veut faire du vrai récursif il faut utiliser des langages qui le permettent type Pascal ou C. Sur nos pockets basic on sera vite limités par le nombre de niveaux d’appels de sous-routines. Par chance, le Casio FX 850P a une pile d’appels de 99 niveaux.
Exemple avec le calcul de factorielles. Bon il n’y a pas de variables locales mais on peut s’en passer.
10 INPUT "A=",A
20 B = 1
30 GOSUB 1000
40 PRINT "......";B;
50 END
999 REM *** FACTORIELLE
1000 IF A = 0 THEN RETURN
1010 B = B * A
1020 A = A - 1
1030 GOSUB 1000
1040 RETURN
Exemple avec le calcul de factorielles. Bon il n’y a pas de variables locales mais on peut s’en passer.
10 INPUT "A=",A
20 B = 1
30 GOSUB 1000
40 PRINT "......";B;
50 END
999 REM *** FACTORIELLE
1000 IF A = 0 THEN RETURN
1010 B = B * A
1020 A = A - 1
1030 GOSUB 1000
1040 RETURN
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.



