[Challenge mono-ligne] Traitement chaine
Modérateur : Politburo
- charognard
- Fonctionne à 9600 bauds

- Messages : 4411
- Inscription : 06 juin 2007 19:28
- Localisation : Indre et loire
- Contact :
[Challenge mono-ligne] Traitement chaine
Pour ce 2eme challenge
En entrée on fournira une séquence Alpha de A à Z
chaque lettre de cette chaine sera évaluée de la sorte
A=1
B=2
..
Z=26
Le résultat est la multiplication de la valeur de chaque terme
Exemple pour
ABCDEFGH
ça donnera
1x2x3x4x5x6x7x8=40320
Le challenge sera de 3 sorte
1) le code le plus concis possible (en octets)
2) Execution la plus rapide entre le moment de la validation saisie de la chaine (Touche ENTER] et l'affichage du résultat.
3) La prise en charge jusqu'à 10 caractères serait un + (Même si le résultat fourni un exposant).
Le programme sera à faire sur un OP des années 80.
Le fonctionnement demandé :
RUN[ENTER]
saisie de la chaine[ENTER]
chronométrage
Affichage du résultat
Bon challenge
En entrée on fournira une séquence Alpha de A à Z
chaque lettre de cette chaine sera évaluée de la sorte
A=1
B=2
..
Z=26
Le résultat est la multiplication de la valeur de chaque terme
Exemple pour
ABCDEFGH
ça donnera
1x2x3x4x5x6x7x8=40320
Le challenge sera de 3 sorte
1) le code le plus concis possible (en octets)
2) Execution la plus rapide entre le moment de la validation saisie de la chaine (Touche ENTER] et l'affichage du résultat.
3) La prise en charge jusqu'à 10 caractères serait un + (Même si le résultat fourni un exposant).
Le programme sera à faire sur un OP des années 80.
Le fonctionnement demandé :
RUN[ENTER]
saisie de la chaine[ENTER]
chronométrage
Affichage du résultat
Bon challenge
-
remy
- Fonctionne à 2400 bauds

- Messages : 2086
- Inscription : 13 mars 2006 16:39
- Localisation : Issy
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
Code : Tout sélectionner
10 FOR I = 1 TO 26: A(I)=I: NEXT ISur un PC-1211 of course.
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
- gege
- Fonctionne à 14400 bauds

- Messages : 7180
- Inscription : 31 janv. 2008 15:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
Bonjour,
Magnifique !
Sur HP71B :46 octets, difficile à chronométrer car presque instantané...
G.E.
Magnifique !
Sur HP71B :
Code : Tout sélectionner
10 INPUT A$ @ P=1 @ FOR I=1 TO LEN(A$) @ P=P*(NUM(A$[I])-64) @ NEXT I @ PRINT PG.E.
Dernière édition par gege le 15 févr. 2015 21:26, édité 1 fois.
- bernouilli92
- Fonctionne à 14400 bauds

- Messages : 4847
- Inscription : 21 nov. 2012 14:03
- Localisation : Ile de France
Re: [Challenge mono-ligne] Traitement chaine
@remy: Excellent, en plus vu la méthode d'évaluation proposée, le temps de calcul ne peut que être minimal.
HP, Casio, Sharp, Psion, quelques TI et divers autres
- charognard
- Fonctionne à 9600 bauds

- Messages : 4411
- Inscription : 06 juin 2007 19:28
- Localisation : Indre et loire
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
Essai intéressantremy a écrit :ensuite en mode run il suffit de taper ABCDEFGH Entrée pour avoir le résultat.Code : Tout sélectionner
10 FOR I = 1 TO 26: A(I)=I: NEXT I
Sur un PC-1211 of course.
SEULEMENT TON CODE NE FONCTIONNE PAS CORRECTEMENT !!!
car il sort de la boucle prématurément
essai avec la chaine IJKLMNOP pour voir
Tu me déçois Rémy sur ce coup là
FOR A(27)=1 TO 26:A(A(27))=A(27):NEXT A(27)
Dernière édition par charognard le 15 févr. 2015 21:46, édité 1 fois.
-
remy
- Fonctionne à 2400 bauds

- Messages : 2086
- Inscription : 13 mars 2006 16:39
- Localisation : Issy
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
tu as raison, je suis allé un peu vite.
Code : Tout sélectionner
10 FOR A = 2 TO 26: A(A)=A: NEXT A:A=1PockEmul, 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
- charognard
- Fonctionne à 9600 bauds

- Messages : 4411
- Inscription : 06 juin 2007 19:28
- Localisation : Indre et loire
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
Avec Z ça peut le faire alorsremy a écrit :tu as raison, je suis allé un peu vite.
Mais je ne suis pas pour autant daccord avec ta solution. Il vaut mieux utiliser A dans la boucle et ajouter a=1 à la fin. Ça consomme moins d'octets
Dernière édition par charognard le 15 févr. 2015 21:56, édité 2 fois.
-
remy
- Fonctionne à 2400 bauds

- Messages : 2086
- Inscription : 13 mars 2006 16:39
- Localisation : Issy
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
J'ai pas essayé mais avec le premier code I vaut 26 au lieu de 9.
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
- charognard
- Fonctionne à 9600 bauds

- Messages : 4411
- Inscription : 06 juin 2007 19:28
- Localisation : Indre et loire
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
Code : Tout sélectionner
10 FOR Z = 1 TO 26: A(Z)=Z: NEXT ZZ sort à 26 et non pas à 27 comme sur certain pockets
Dernière édition par charognard le 15 févr. 2015 23:38, édité 1 fois.
-
remy
- Fonctionne à 2400 bauds

- Messages : 2086
- Inscription : 13 mars 2006 16:39
- Localisation : Issy
- Contact :
Re: [Challenge mono-ligne] Traitement chaine
perfect... mais en partant de 1 ... on y arrive
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: [Challenge mono-ligne] Traitement chaine
Une alternative est d'utiliser une autre variable:
Mais l'astuce de Charo est le mieux, surtout si Z reste à 26 en sortant de la boucle.
Code : Tout sélectionner
10:FOR A(27)=1 TO 26:A(A(27))=A(27):NEXT A(27)
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..
- zpalm
- Fonctionne à 9600 bauds

- Messages : 2498
- Inscription : 03 mai 2008 15:33
- Localisation : Grenoble
Re: [Challenge mono-ligne] Traitement chaine
Sur HP Prime:
Prod("ABCDEFGH") donne bien 40320, TEVAL(Prod("ABCDEGH")) retourne 0.002_s
Code : Tout sélectionner
EXPORT Prod(Str)
BEGIN
RETURN ΠLIST(EXECON("&1-64",ASC(Str)));
END;Re: [Challenge mono-ligne] Traitement chaine
Ou plus simplement (mais on n'est pas sur un pocket des années 80)zpalm a écrit :Sur HP Prime:Prod("ABCDEFGH") donne bien 40320, TEVAL(Prod("ABCDEGH")) retourne 0.002_sCode : Tout sélectionner
EXPORT Prod(Str) BEGIN RETURN ΠLIST(EXECON("&1-64",ASC(Str))); END;
Code : Tout sélectionner
EXPORT Prod(Str) BEGIN ΠLIST(ASC(Str)-64); END;Code : Tout sélectionner
« Chars NUM 64 - Product »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+
- babaorhum
- Fonctionne à 1200 bauds

- Messages : 452
- Inscription : 13 janv. 2013 20:44
- Localisation : Marseille-est
Re: [Challenge mono-ligne] Traitement chaine
un petit essai timide en 12 pas sur HP42S (ou 41C) :
Code : Tout sélectionner
01 LBL"PROD"
02 1
03 AON
04 PROMPT
05 LBL 00
06 ATOX
07 X=0?
08 RTN
09 64
10 -
11 x
12 GTO 00
Pas de chrono mais ca va assez vite sur 42s !
BaBaoRhum
HP J728,200LX,1000CX,75C,71B, 48GX,42s,41CX,35s,32E,32Sii,28S,22s,21,16C,11C,12Cp
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74&92 ; Canon X-07 ; Panasonic HHC RL-H1400 ; TANDY EC-4026
HP J728,200LX,1000CX,75C,71B, 48GX,42s,41CX,35s,32E,32Sii,28S,22s,21,16C,11C,12Cp
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74&92 ; Canon X-07 ; Panasonic HHC RL-H1400 ; TANDY EC-4026
- zpalm
- Fonctionne à 9600 bauds

- Messages : 2498
- Inscription : 03 mai 2008 15:33
- Localisation : Grenoble
Re: [Challenge mono-ligne] Traitement chaine
C'est effectivement beaucoup plus simple ...Gilles59 a écrit :Ou plus simplement (mais on n'est pas sur un pocket des années 80)Code : Tout sélectionner
EXPORT Prod(Str) BEGIN ΠLIST(ASC(Str)-64); END;




