Excellent!! Ca marche sur émulateur TI 57 (voir ICI). Par contre l'affichage est un peu déroutant car il affiche la somme des ni/N pour finir par la moyenne, les résultats intermédiaires ne veulent pas dire grand chose...Gilles59 a écrit :çà devrait marcher sur 57/58 ?? - Pas testé :
Code : Tout sélectionner
00 STO 0 01 STO 1 02 Lbl 0 03 R/S 04 / 05 RCL1 06 + 07 Dsz 08 Gto 0 09 R/S
Misez P'tit, Optimisez - N°30 (Moyenne)
Modérateur : Politburo
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2935
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
- 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°30 (Moyenne)
Cette apparente compacité provient du fait que le RPN utilise les même fonctions/instruction pour traiter des objets parfois diffèrents.Hobiecat a écrit :[...]Sinon, je suis toujours impressionné par la compacité des programmes RPL ( et leur illisibilité ), sans oublier bien sûr la remarquable qualité des Interventions :
Ainsi CNRM est une commande qui fait partie de l'arsenal des matrices (extrait une certaine norme obtenue par colone - il existe une instruction homologue qui extrait la même norme mais obtenue par ligne - je ne sais pas au juste à quoi sert cette norme - mais il doit y avoir une raison pour que cette fonction/instruction figure dans l'arsenal natif des RPL).
Ce que je sais par contre c'est que lorsque l'on applique cette fonction à un vecteur (ligne) ne contenant que des nombe positif, on obtient leur somme et l'homologue donne le nombre max (en valeur absolue).
Donc l'apparente simplicité du code provient d'un effet de bord (effet de bord d'une norme calculée sur une matrice particulière constitiuée d'une seule ligne d'élément positifs ou nuls).
Donc, CNRM est le ΣLIST du pauvre HP-28S. MAis en toute rigueur, cela ne marche pas (il suffit d'un nombre négatif).
La réelle compacité vient du fait qu'un seul mot traite une matrice. Il n'y a donc pas dans le programme en RPL de compteur, de boucle, etc. C'est la structure de donnée (une liste pour l'excellent exemple de Gilles59 ou mon vecteur ) qui suffit à "structurer" le programme.
LE RPN a l'inconvénient de devoir explicitement coder la boucle de calcul, comme sur les TI ou CASIO FX. Le BASIC fait de même, le code est basé sur une boucle FOR/TO/STEP/NEXT
Le RPL a aussi de telles structures de programmation (START/NEXT , FOR/NEXT/STEP, DO/UNTIL, etc) mais il peut être plus simple d'utiliser une bonne structure de données et des commande qui s'applique à de tels objets pour s'en passer efficacement.
C'est ce que fait de façon très spectaculaire Gilles dans la majorité de ses codes.
Si l'on devait transcrire mot à mot le code de ce MPO, le RPL "explicite" serait quelque chose comme :
Code : Tout sélectionner
« -> s
« 0
1 ROT START
HALT
+
NEXT
s /
»
»
'MOY' STO
A la fin la moyenne s'affiche.
Ce code ressemble bien plus aux codes des autres pockets, mais n'est pas adapté à un MPO !
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.
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5269
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
Petite correction à apporter au code de C.Ret : l'utilisation de -> s enleve le nombre de la pile, il n'est donc plus là pour le ROT. Il faudrait remplacer le ROT par s
Le même code qui n'utilise pas de variable locale serait :
Le même code qui n'utilise pas de variable locale serait :
Code : Tout sélectionner
«
DUP 0 1 ROT
START
HALT
+
NEXT
SWAP /
»
'MOY' STO
HP, Casio, Sharp, Psion, quelques TI et divers autres
- 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°30 (Moyenne)
Oui, très juste m'a emmélé dans les coller-copier !
Désolé !
Code : Tout sélectionner
« -> s
« 0
1 s START
HALT
+
NEXT
s /
»
»
'MOY' STO
Désolé !
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°30 (Moyenne)
C'est comme la version 602P. Il n'y a pas d'erreur ni besoin d'initialisation mais effectivement les affichages intermédiaires sont déroutantszpalm a écrit :Excellent!! Ca marche sur émulateur TI 57 (voir ICI). Par contre l'affichage est un peu déroutant car il affiche la somme des ni/N pour finir par la moyenne, les résultats intermédiaires ne veulent pas dire grand chose...Gilles59 a écrit :çà devrait marcher sur 57/58 ?? - Pas testé :
Code : Tout sélectionner
00 STO 0 01 STO 1 02 Lbl 0 03 R/S 04 / 05 RCL1 06 + 07 Dsz 08 Gto 0 09 R/S
La 602 est plus proche de la TI57 que des 58/59 par certains aspects
Merci pour le lien émulateur... Il y a un excellent émulateur TI57 sur HP48/49/50. Je l'ai utilisé quelques fois et ca marche nickel par contre je ne l'utilise pas assez pour me repérer dans les touches. Je n'ai pas lien sous la main mais cette émulateur utilise la ROM de la TI57. La ROM a été décryptée via microscope ou un truc de fou du même genre :O
http://www.hpmuseum.org/cgi-sys/cgiwrap ... read=85688
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
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
Hummm c'est discutable car ΣLIST n'est pas concue comme une fonction statistique et n'utilise aucune mémoire stat. Elle fait simplement la somme des éléments d'une liste.C.Ret a écrit :
Sinon, le code pour HP-50g est irrecevable car il utilise un des fonctions statitstique de la HP-50G à savoir la fonction ΣLIST.
C'est bien marqué dans l'énoncé de ce MPO: sans utiliser les fonctions Σ !!
Par exemple
Code : Tout sélectionner
{ "B" "O" "N" "J" "O" "U" "R"} ΣLIST
-> "BONJOUR"
{ 1 2 3 } ΣLIST
-> 6
{'a' 'b' 'c'} ΣLIST
-> 'a+b+c'
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°30 (Moyenne)
Oui, oui en fait ta solution est excellente. Et effectivement ΣLIST est tout à fait possible, ce n'est pas une fonction statistique.
C'est même une des fonctions qui manquent cruellement sur le RPL primitif des HP-28C/S.
C'est fou, c'est en relisant les derniers post, que je viens de me rendre compte que j'interprétais mal le code pour Fx-602P.
Effectivemetn, il n'y a pas besoin d'initialiser l'addition des termes puisque l'opérateur (+) est après la sasie du nombre.
On ne fait pas 0+x+...+x, mais bel est bien x+x+...+x+. Et on s'arrête là, la calculette affiche la somme à la fin du programme !
C'est même une des fonctions qui manquent cruellement sur le RPL primitif des HP-28C/S.
C'est fou, c'est en relisant les derniers post, que je viens de me rendre compte que j'interprétais mal le code pour Fx-602P.
Effectivemetn, il n'y a pas besoin d'initialiser l'addition des termes puisque l'opérateur (+) est après la sasie du nombre.
On ne fait pas 0+x+...+x, mais bel est bien x+x+...+x+. Et on s'arrête là, la calculette affiche la somme à la fin du programme !
Code : Tout sélectionner
Display: R00: R01:
P0: > N
Min00 N N N
Min01 N
LBL0 moy n N
HLT > x(i)
/ x(i)/
MR01 x(i)/N
+ moy
DSZ n-1 N
GOTO0
moy 0 N
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°30 (Moyenne)
C'est une bonne idée de faire la division au fur et à mesure, mais il faudrait tout de même un = avant le R/S final car en l'état, le programme laisse un opérateur + en l'air, prêt à surprendre l'utilisateur.zpalm a écrit :Excellent!! Ca marche sur émulateur TI 57 (voir ICI). Par contre l'affichage est un peu déroutant car il affiche la somme des ni/N pour finir par la moyenne, les résultats intermédiaires ne veulent pas dire grand chose...Gilles59 a écrit :çà devrait marcher sur 57/58 ?? - Pas testé :
Code : Tout sélectionner
00 STO 0 01 STO 1 02 Lbl 0 03 R/S 04 / 05 RCL1 06 + 07 Dsz 08 Gto 0 09 R/S
HP : 67 25 34C 15C 41CX 48S* 48SX 48GX 35S* WP34S* 39gII*
TI : SR52 57 58C* 59 Programmer 66 74S 65
Sharp : PC 1245 1251* 1262 G-850S G-850V
Canon : X-07* F-800P*
Casio : CG-8 SF5300E*
*: persos d'époque
TI : SR52 57 58C* 59 Programmer 66 74S 65
Sharp : PC 1245 1251* 1262 G-850S G-850V
Canon : X-07* F-800P*
Casio : CG-8 SF5300E*
*: persos d'époque
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
C'est encore pire, les MPO ne riment à rien sur une TI57 car je n'ai jamais vu personne stocker plus d'un seul programme, donc à partir du moment où "çà tient", on n'a plus beaucoup d'intérêt à dépenser davantage de temps pour réduire le nombre de registres utilisés ou de pas consommés.Hobiecat a écrit :+1, d'autant que l'origine des MPO était l'optimisation de la "pénurie" d'octets, donc plus à réserver aux TI57/58/59, Casio FX-602P et autres HP-41C ni V ni X.C.Ret a écrit :Concernant les versions TI57/58/59, je suis bien heureux d'en voir de plus en plus illustrer les possibilité de ces modèles dans nos MPO
Sinon, je suis toujours impressionné par la compacité des programmes RPL ( et leur illisibilité ), sans oublier bien sûr la remarquable qualité des Interventions : il y aurait sûrement des leçons à donner aux programmeurs des grandes sociétés de software qui ont besoin de Mo, voir de Go pour faire tourner des programmes somme toute assez basiques...
Ce qui me surprend un peu c'est l'absence de version HP25 ou 33, parce que ce sont quasiment les mêmes contraintes que la TI57, avec les avantages du RPN mais quelques inconvénients sur le plan programmatique.
Quant à la surenchère actuelle de consommation d'octets et de cycles CPU, je préfère ne pas y penser, çà m'énerve déjà trop dans mon boulot. Je préfère me dire qu'on a de bien belles choses sur ces petites machines quand les programmeurs bossent pour le plaisir et non leur salaire.
HP : 67 25 34C 15C 41CX 48S* 48SX 48GX 35S* WP34S* 39gII*
TI : SR52 57 58C* 59 Programmer 66 74S 65
Sharp : PC 1245 1251* 1262 G-850S G-850V
Canon : X-07* F-800P*
Casio : CG-8 SF5300E*
*: persos d'époque
TI : SR52 57 58C* 59 Programmer 66 74S 65
Sharp : PC 1245 1251* 1262 G-850S G-850V
Canon : X-07* F-800P*
Casio : CG-8 SF5300E*
*: persos d'époque
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
Bah,et l'amour du sport alors ? ca ne parait pas moins inutile que de courrir le 100m en 9"62 plutôt qu'en 9"63 (et même en 17",le principal est d'arriver non?) . Bon mais la TI57 c'est un peu moins médiatique:Dbkg2018 a écrit :
C'est encore pire, les MPO ne riment à rien sur une TI57 car je n'ai jamais vu personne stocker plus d'un seul programme, donc à partir du moment où "çà tient", on n'a plus beaucoup d'intérêt à dépenser davantage de temps pour réduire le nombre de registres utilisés ou de pas consommés.
Ce que j'aime bien dans les vieilles machines et les calculatrices en particulier qui en plus tiennent dans la poche, c'est qu'il est possible de _tout_ connaitre... La WP34S est exemplaire la dessus. Concue par quelques passionnés avec un réflexion poussée sur l'optimisation....
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
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3644
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
Les MPO étaient il est vrai plutôt destinés aux machines à mémoire constante, où l'optimisation des pas présentait de l'intérêt, pour mettre un maximum de programmes en mémoire.bkg2018 a écrit :C'est encore pire, les MPO ne riment à rien sur une TI57 car je n'ai jamais vu personne stocker plus d'un seul programme, donc à partir du moment où "çà tient", on n'a plus beaucoup d'intérêt à dépenser davantage de temps pour réduire le nombre de registres utilisés ou de pas consommés.
Cela s'explique je pense par la faible diffusion de ces machines en France : il me semble que la majorité des participants aux MPO le font sur la machine qu'ils connaissent le plus, qui est bien souvent leur machine "d'étudiant". Les finances d'étudiant étant ce qu'elles sont, les TI étaient plus répandues que les HP (et c'est toujours vrai de nos jours, même si HP a fait des efforts de ce côté)bkg2018 a écrit :Ce qui me surprend un peu c'est l'absence de version HP25 ou 33, parce que ce sont quasiment les mêmes contraintes que la TI57, avec les avantages du RPN mais quelques inconvénients sur le plan programmatique.
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
En effet c'est mon cas, je fais les MPO essentiellement sur TI57 et 58 parce que je les connais bien (c'est même surprenant à quel point je m'en souviens !). Pour le Canon X-07 et le PC-1251, c'est rarement un défi, même si on peut jouer au "moins d'octets possibles" car les BASIC laissent pas mal de marge dans ce domaine.Hobiecat a écrit :...Cela s'explique je pense par la faible diffusion de ces machines en France : il me semble que la majorité des participants aux MPO le font sur la machine qu'ils connaissent le plus, qui est bien souvent leur machine "d'étudiant". Les finances d'étudiant étant ce qu'elles sont, les TI étaient plus répandues que les HP (et c'est toujours vrai de nos jours, même si HP a fait des efforts de ce côté)bkg2018 a écrit :Ce qui me surprend un peu c'est l'absence de version HP25 ou 33, parce que ce sont quasiment les mêmes contraintes que la TI57, avec les avantages du RPN mais quelques inconvénients sur le plan programmatique.
Pour les HP25 et 33, leur prix élevé et l'existence de concurrents féroces a freiné leur diffusion en france, mais je pensais qu'on trouverait quand même quelques anciens possesseurs de ces machines parmi les membres du forum ...
HP : 67 25 34C 15C 41CX 48S* 48SX 48GX 35S* WP34S* 39gII*
TI : SR52 57 58C* 59 Programmer 66 74S 65
Sharp : PC 1245 1251* 1262 G-850S G-850V
Canon : X-07* F-800P*
Casio : CG-8 SF5300E*
*: persos d'époque
TI : SR52 57 58C* 59 Programmer 66 74S 65
Sharp : PC 1245 1251* 1262 G-850S G-850V
Canon : X-07* F-800P*
Casio : CG-8 SF5300E*
*: persos d'époque
- 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°30 (Moyenne)
[ 1 ][ + ]
C'est vrai, comme la majorité d'entre-nous, je commence les MPO avec les machines qui sont sur l'étagère à coté de mon bureau. J'hésite toujours à poster un code sur une machine que je n'ai pas (cf. le code que j'ai tenté pour la fx-602p).
Ne pas pouvoir vérifier son code sur un pocket (ou à défaut un émulateur/simulateur correct) est assez risqué.
J'ai depuis peu une tablette Androïde, je vais y installer un simulateur(/émulateur ?) pour HP25C, HP-67 !
Donc, 12 pas et un registre (R0). C'est evidemment perfectible, mais pas mal au vu des fonctions disponibles sur cette superbe machine (pas de R_up_ ! )
C'est vrai, comme la majorité d'entre-nous, je commence les MPO avec les machines qui sont sur l'étagère à coté de mon bureau. J'hésite toujours à poster un code sur une machine que je n'ai pas (cf. le code que j'ai tenté pour la fx-602p).
Ne pas pouvoir vérifier son code sur un pocket (ou à défaut un émulateur/simulateur correct) est assez risqué.
J'ai depuis peu une tablette Androïde, je vais y installer un simulateur(/émulateur ?) pour HP25C, HP-67 !
Code : Tout sélectionner
HP-25(C)
Program: t: z: y: x: R0:
00 N
01 00 0 N 0 0
02 23 00 STO 0 N 0
03 01 1 N n-1 1
04 51 + N n
05 74 R/S N n x
06 23 51 00 STO + 0 sum
07 22 Rdn N n
08 14 61 x=/=y ?
09 13 03 GTO 03
10 24 00 RCL 0 N N sum
11 21 x<>y N sum N
12 11 ÷ sum/N
moy
Utilisation : ┌────────────┐
4 │ 4 │ Sasir nombre de nombres
[ f ][ PRGM ] │ 4.0000 │
[R/S] │ 1.0000 │ Saisir premier nombre
741 │ 741 │
[R/S] │ 2.0000 │ Saisir second nombre
852 │ 852 │
[R/S] │ 3.0000 │ Saisir troisième nombre
258 │ 258 │
[R/S] │ 4.0000 │ Sasir quatrième nombre
963 │ 963 │
[R/S] │ 703.5000 │ Affiche la moyenne
└────────────┘
Modifié en dernier par C.Ret le 08 janv. 2013 10:31, 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.
- zpalm
- Fonctionne à 9600 bauds
- Messages : 2935
- Enregistré le : 03 mai 2008 15:33
- Localisation : Grenoble
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
Exact! Pour moi c'est la HP 41C! (achetée lors de mon entrée en école d'ingé)Hobiecat a écrit :Cela s'explique je pense par la faible diffusion de ces machines en France : il me semble que la majorité des participants aux MPO le font sur la machine qu'ils connaissent le plus, qui est bien souvent leur machine "d'étudiant".
- Marge
- Fonctionne à 14400 bauds
- Messages : 6189
- Enregistré le : 01 oct. 2008 14:39
- Localisation : En bas, tout au fond à gauche.
Re: Misez P'tit, Optimisez - N°30 (Moyenne)
J'en suis. Cependant mes piètres performances de programmeur n'avantageraient pas vraiment ces machines, d'où mon abstention chronique. Mais je vous suis parfois.bkg2018 a écrit :Pour les HP25 et 33, leur prix élevé et l'existence de concurrents féroces a freiné leur diffusion en france, mais je pensais qu'on trouverait quand même quelques anciens possesseurs de ces machines parmi les membres du forum ...