MPO n°113 - Nombre d'abonnés

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
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 845
Enregistré le : 06 oct. 2012 14:37

Re: MPO n°113 - Nombre d'abonnés

Message par tyann »

Bonjour

Voici une version pour TI 95 en 105 pas, quelques difficultés :
En FIX n la machine arrondi l'affichage ainsi 999 999 qui devient 999.999 par le biais des /1000
s'affiche non pas 999 mais 1000, d'où la nécessité de faire un INT en FIX 0.
Sinon j'ai divisé par 1000 jusque n soit <1000 avec la levée des flags 0(K) et 1(M).
J'utilise LOG pour calculer le FIX .

Code : Tout sélectionner

000 FIX 9 CFG STO A 0 STO B 1000
012 LBL 00 IF> A GTL 01 SF IND B INC B ST/ A GTL 00
030 LBL 01 TF 00 GTL 02 0 GTL AF
042 LBL 02 2- RCL A INT LOG INT =
053 LBL AF STO C FIX IND C 0 IF< C GTL Af RCL A INT STO A
072 LBL Af CE COL 04 MRG A 0 IF= C SBL SP OLD COL 05 TF 00 'K' COL 05 TF 01 'M' HLT
098 LBL SP OLD COL 04 DEL RTN
106
Le LBL SP supprime le . à l'affichage en fix 0.
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
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 845
Enregistré le : 06 oct. 2012 14:37

Re: MPO n°113 - Nombre d'abonnés

Message par tyann »

Bonjour,
Nouvelle version dans laquelle j'ai remplacé 1000 par 3 INV LOG
(1 pas de gagné), j'ai oté un INT inutile et j'ai économisé un LBL en inversant un test
et enfin remplacé un SBL par un SBR( 1 lbl de gagné).
Résultat : 95 pas soit 10 pas de gagné.

Code : Tout sélectionner

000 FIX 9 CFG STO A 0 STO B 3 INV LOG
011 LBL 00 IF> A GTL 01 SF IND B INC B ST/ A GTL 00
029 LBL 01 CLR INV TF 00 GTL AF
039 2- RCL A LOG INT =
046 LBL AF STO C FIX IND C 0 IF< C GTL Af RCL A INT STO A
065 LBL Af CE COL 04 MRG A 0 IF= C SBR 0091 OLD COL 05 TF 00 'K' COL 05 TF 01 'M' HLT
091 OLD COL 04 DEL RTN
096
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
Avatar du membre
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 463
Enregistré le : 27 janv. 2013 00:26
Localisation : Strasbourg
Contact :

Re: MPO n°113 - Nombre d'abonnés

Message par dprtl »

Si j'avais reçu ma calculette Pyra neuve et déjà rétro, j'aurais pu taper une ligne de commande shell du style :

$ numfmt --to=si --round=down --format="%.2f" 1 123 1200 1234 12345 123456 1200000 1234567 12345678 123456789 | sed 's/,00//g' | sed -r 's/^([1-9])([0-9],|[0-9])([0-9]).*(K|M)$/\1\2\3\4/g'
1
123
1,20K
1,23K
12,3K
123K
1,20M
1,23M
12,3M
123M

La sortie est bricolée à grands coups de 'sed' pour coller précisément à l'énoncé :oops:
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°113 - Nombre d'abonnés

Message par FLISZT »

dprtl a écrit : 03 oct. 2022 13:17 La sortie est bricolée à grands coups de 'sed' pour coller précisément à l'énoncé :oops:
… au contraire :

« SED c'est bien ! » ……… :oops: aussi……… :arrow: fissa :arrow:

:D
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
antoine
Fonctionne à 75 bauds
Fonctionne à 75 bauds
Messages : 14
Enregistré le : 04 août 2022 10:18

Re: MPO n°113 - Nombre d'abonnés

Message par antoine »

Bonjour,

J'étoffe la version que je vous avais précédemment proposée à 124 pas de calcul :

Code : Tout sélectionner

1 VAC:B$="K":C$="M":K$="0";INPUT N:H=INT(LOG(N)):P=INT(H/3):F=10^(2-3*FRAC(H/3)):M=INT(N/(10^(3*P))*F)/F
2 PRINT M;K$(100*M-10*INT(10*M)+LOG(M));A$(P)
les 35 pas supplémentaires servent à afficher le zéro de droite.
Lorsqu'on rentrait comme nombre 1204, mon précédent code affichait 1.2k
Celui-ci affiche 1.20k en conformité avec l'énoncé.
Ce zéro coûte donc 35 pas supplémentaires.

Antoine
Modifié en dernier par antoine le 04 oct. 2022 20:07, modifié 2 fois.
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: MPO n°113 - Nombre d'abonnés

Message par C.Ret »

FLISZT a écrit : 01 oct. 2022 20:44Schraf n'est pas encore intervenu, C.Ret à peine… ils nous mijotent des trucs, c'est sûr !
Oui, pour Schraf, je ne sais pas, mais C.Ret, il a surtout passé un bon Weekend en grande partie à l'usine. Mais c'est sûr cela ne les empêchera pas de nous préparer un mauvais coup... lol
zpalm a écrit : 02 oct. 2022 15:43Sur 48SX et 48GX on obtient "5ABC".
Sur 28S on a un message d’erreur: Bad Argument Type.
Je suis en train d'hésiter entre trois versions, la première est multi-lignes /2: 1.20/ /1: 'K'/, la seconde textuelle "1.20 K" et la dernière très RPL { 1.20 K }. Cette dernière utilise un raccourci du genre 1.20 { K } +

Sinon, j'étudie avec attention ta version HP Prime, je me suis rendu compte que je ne savais pas comment modifier les modes d'affichage et de calcul depuis un programme HPL.

FLISZT a écrit : 02 oct. 2022 16:44 Sur hp-28, l'utilisation des unités se fait sur deux lignes.
Ex. :
1.05
'k'

… mais au moins, on n'a peut-être pas le problème précité avec les zéros. Je n'ai pas essayé.
Tu devrai essayer avec deux lignes c'est quatre fois plus de plaisir...

tyann a écrit : 02 oct. 2022 18:11 Voici une version pour TI 95 en 105 pas, quelques difficultés :
En FIX n la machine arrondi l'affichage ainsi 999 999 qui devient 999.999 par le biais des /1000
s'affiche non pas 999 mais 1000, d'où la nécessité de faire un INT en FIX 0.
Sinon j'ai divisé par 1000 jusque n soit <1000 avec la levée des flags 0(K) et 1(M).
J'utilise LOG pour calculer le FIX .
J'aime bien ta version. Je suis toujours surpris par la Ti-95 et ses tests direct avec les registres. Ma version pour Ti-58c est donc très différente, mais tu me donne une idée avec ton utilisation astucieuse des drapeaux 0 et 1. On doit pouvoir se passer du compteur indirect B. héhé

Concernant les 'quelques difficultés' ces histoires d'arrondis sont comme les points des formats, ça casse les pieds.
Je sens que je vais me limiter aux exemple du premier post et pas m'en soucier. C'est comme le point décimal; je crois que je vais faire semblent de ne pas le voir.

dprtl a écrit : 03 oct. 2022 13:17 Si j'avais reçu ma calculette Pyra neuve et déjà rétro, j'aurais pu taper une ligne de commande shell du style :

$ numfmt --to=si --round=down --format="%.2f" 1 123 1200 1234 12345 123456 1200000 1234567 12345678 123456789 | sed 's/,00//g' | sed -r 's/^([1-9])([0-9],|[0-9])([0-9]).*(K|M)$/\1\2\3\4/g'

La sortie est bricolée à grands coups de 'sed' pour coller précisément à l'énoncé :oops:


J'y comprends rien, j'ai moi aussi fait un petit programme qui affiche la série des nombres pour tester, on gagne du temps.
Non, je ne programme pas en donnant des coups à Sebastien.
FLISZT a écrit : 03 oct. 2022 18:42« SED c'est bien ! »


C'est pas SED, c'est SEB (Société d'Emboutissage de Bourgogne); un auto-cuiseur c'est l'idéal pour concocter rapidement un MPO bien cuit et qui garde toutes ses vitamines, c'est le bon moyen pour avoir le meilleurs TELESCORE:
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
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 845
Enregistré le : 06 oct. 2012 14:37

Re: MPO n°113 - Nombre d'abonnés

Message par tyann »

Bonsoir C.Ret
J'aime bien ta version. Je suis toujours surpris par la Ti-95 et ses tests direct avec les registres. Ma version pour Ti-58c est donc très différente, mais tu me donne une idée avec ton utilisation astucieuse des drapeaux 0 et 1. On doit pouvoir se passer du compteur indirect B. héhé
J'aime bien cette TI 95 et les tests directs et indirects aussi d'ailleurs avec les registres y sont pour beaucoup.
Je me souviens que lors de la sortie de la Hp 41 cx, en lisant le banc d'essai de l'O.P j'ai cru qu'on y avait droit et
beaucoup (vraiment beaucoup) d'années plus tard lorsque j'ai eu enfin ma cx et que j'ai vu qu'en fait on avait le droit
qu'à un test entre X et le registre pointé par Y j'ai été un peu déçu.
Pour la TI 95 je regrette que l'on ne puisse pas testé x avec t comme sur les 58,59 de façon directe, on peut en utilisant l'accés au
registres internes mais ça consomme plus de pas.

Pendant que j'y suis je propose une nouvelle version dans laquelle je n'efface plus le . spécifiquement, mais je décale l'affichage
selon que l'on est en FIX 0 ou pas et j'efface soit le . soit rien puis j'affiche l'éventuelle Unité, résultat :
89 pas.

Code : Tout sélectionner

000 FIX 9 CFG STO A 0 STO B 3 INV LOG
011 LBL 00 IF> A GTL 01 SF IND B INC B ST/ A GTL 00
029 LBL 01 CLR INV TF 00 GTL AF
039 2- RCL A LOG INT =
046 LBL AF STO C FIX IND C 0 IF< C GTL Af RCL A INT STO A
065 LBL Af COL 04 0 IF= C COL 05 OLD MRG A COL 05 DEL TF 00 'K' COL 05 TF 01 'M' HLT
090
Petite précision pour ceux qui ne connaisse pas cette machine, COL xx permet de positionner le curseur dans le registre ALPHA
mais lorsque l'on Merge (MRG) ensuite un nombre c'est le dernier chiffre ou le point pour un entier qui est placé à cette position.
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
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 845
Enregistré le : 06 oct. 2012 14:37

Re: MPO n°113 - Nombre d'abonnés

Message par tyann »

Bonjour

Nouvelle version de mon programme : J'ai mis le test pour passer en FIX 0
après le calcul avec le LOG comme il n'y a qu'un CLR à faire et économise
ainsi un GTL, j'ai ensuite remplacé les GTL par des GTO pour économiser les LBL
et viré le FIX 9 en début de programme.
Résultat : 72 pas

Code : Tout sélectionner

000 CFG STO A 0 STO B 3 INV LOG
009 IF> A GTO 0024 SF IND B INC B ST/ A GTO 009
024 2- RCL A LOG INT = INV TF 00 CLR
035 STO C FIX IND C 0 IF< C GTO 0051 RCL A INT STO A
051 COL 04 0 IF= C COL 05 OLD MRG A COL 05 DEL TF 00 'K' COL 05 TF 01 'M' HLT
073
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
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: MPO n°113 - Nombre d'abonnés

Message par C.Ret »

Ah! 72 pas c'est pas mal.

J'ai eu beaucoup de mal à descendre en-dessous de 100 octets pour SHARP PC-1211:
MPO113 - SHARP PC-1211 (95 octets - 3 registres).gif
MPO113 - SHARP PC-1211 (95 octets - 3 registres).gif (2.39 Kio) Vu 2737 fois
Notez que ce code fonctionne pour tout entier entre 0 et 999'999'999 inclus ce qui me coûte 3 octets pour éviter une erreur en calculant LOG N lorsque N=0. Il n'y a pas de point décimal à la fin des valeurs entières. Les zéro terminaux des parties décimales sont affichés.

Pour imprimer sur une CE-122, il faut penser à remplacer la virgule de la troisième ligne par un point-virgule afin d'avoir le nombre et l'unité sur la même ligne.
MPO113 - SHARP PC-1211 (affichages).gif
MPO113 - SHARP PC-1211 (affichages).gif (5.22 Kio) Vu 2737 fois
Par contre, si l'on entre une valeur au-delà de 999'999'999 alors l'affichage est erroné car il n'indique pas l'unité. On peut corriger cela en ajoutant D$=" KM" à la première ligne du code et 1'234'567'890 sera affiché 1.23 KM

EDIT: j'ai changé le B de mon post initial par quelque chose de bête à cause de l'ambiguïté lié aux usages francophone et anglo-saxon du 'Billion'.
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
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: MPO n°113 - Nombre d'abonnés

Message par C.Ret »

antoine a écrit : 04 oct. 2022 11:04J'étoffe la version que je vous avais précédemment proposée à 124 pas de calcul :
[...]
Ce zéro coûte donc 35 pas supplémentaires.
Tiens, coïncidence, 35 octets c'est justmeent la taille de mon code pour HP-41C (original, sans module ou extension de quelque nature).

Code : Tout sélectionner

001 ENTER^          010 *               019 CF 29
002 X≠0?            011 10^X            020 R^
003 LOG             012 /               021 x=0?
004 3               013 ENTER^          022 ST* 04
005 /               014 X≠0?            023 FIX IND 04
006 INT             015 LOG             024 CLA
007 STO Z           016 x=0?            025 ARCL Z
008 3               017 DSE 04          026 ARCL IND X
009 STO 04          018 ST- 04          027 AVIEW
Bon, pour que cela marche, il faut initialiser les registres R00 R01 R02 et éventuellement R03 avec les chaines alpha respectives "" " K" " M" et éventuellement " KM".
Pour cela, je suggère la séquence suivante :

Code : Tout sélectionner

[ALPHA]  CLA  ASTO 00  [0]K  ASTO [∑+]  [XEQ]M  ASTO [√x]  [0]M ASTO [1/x] [ALPHA]
PS.: Vous noterez que j'ai fait l'effort de mettre un CF 29 dans le code pour être sûr que 123K ou 123 M s'affichent sans point (ou virgule) décimal(e).
On peut aussi supprimer la ligne 019 CF 29 et gagner deux octets. Les pointilleux de ce forum n'auront alors qu'à ajouter CF 29 à la séquence d'intialisation.
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: MPO n°113 - Nombre d'abonnés

Message par Schraf »

Bonjour à tous !

La bonne blague est que j'avais posté ce MPO et... complètement oublié que je l'avais fait !! 😂😂🫣

Je découvre donc avec un "léger" retard toutes vos réponses, il va falloir que j'en teste quelques unes en particulier celle en BASIC puisque je viens de recevoir un SHARP PC-1212 tout beau qui n'attend que ça 🤩

En tous cas bravo à vous 🫡

@C.Ret : Je suis passé de 10.8K le 29 sept à 11.1K aujourd'hui, oui oui ça grimpe petit à petit et tu as bien compris d'où était venue l'idée de ce petit MPO 😎
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: MPO n°113 - Nombre d'abonnés

Message par Schraf »

Vidéo du programme de @C.Ret sur SHARP PC-1212 : https://uabox.univ-angers.fr/index.php/ ... 1WRrx75Wem

Le programme
Le programme
pc1212.jpg (50.52 Kio) Vu 2396 fois
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: MPO n°113 - Nombre d'abonnés

Message par Schraf »

Vidéo du programme de @C.Ret sur HP-41CV : https://uabox.univ-angers.fr/index.php/ ... pDplSxKIg0

Programme
Programme
HP41CV.jpg (37.9 Kio) Vu 2391 fois

Par contre je n'ai pas trop compris ton :

Code : Tout sélectionner

[ALPHA]  CLA  ASTO 00  [0]K  ASTO [∑+]  [XEQ]M  ASTO [√x]  [0]M ASTO [1/x] [ALPHA]
Moi j'ai fait :

Code : Tout sélectionner

[ALPHA]  CLA  ASTO 00  [0]K  ASTO 01  [0]M ASTO 02 [ALPHA]
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: MPO n°113 - Nombre d'abonnés

Message par Schraf »

Vidéo du programme de @zpalm pour HP Prime : https://uabox.univ-angers.fr/index.php/ ... XKepSBo4EF

Programme
Programme
MPO113HPPrime.jpg (65.52 Kio) Vu 2388 fois
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: MPO n°113 - Nombre d'abonnés

Message par Schraf »

Vidéo du programme de @FLISZT, ici sur HP-50g : https://uabox.univ-angers.fr/index.php/ ... MXteOjNSqH

Programme
Programme
MPO113HP50g.jpg (66.4 Kio) Vu 2376 fois
On ne le voit pas sur la vidéo mais 1200000 donne bien "1.20 M"


Conclusion : Tous les programmes que j'ai pu tester fonctionnent 👍👍
Répondre

Retourner vers « Tous les Pockets »