[Challenge Mono-ligne] Calcul d'indice

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
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4412
Enregistré le : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: [Challenge Mono-ligne] Calcul d'indice

Message par charognard »

remy a écrit :Je pense que le

Code : Tout sélectionner

FOR I=LEN A$TO 1STEP -1
... ASC MID$ (A$,I,1)
peut être remplacé par un

Code : Tout sélectionner

FOR I=1 TO LEN A$
... ASC RIGHT$(A$,I)
on gagne quelques octets

bien vu rémy, tu es sur la bonne voie
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: [Challenge Mono-ligne] Calcul d'indice

Message par babaorhum »

Hello,

Je bute aussi avec mon PC-1261 j'arrive à 82 octets pour l'instant , ca ne rente pas dans une ligne ...

Code : Tout sélectionner

1 CLEAR:INPUT A$:R=1:FOR I=LEN A$ TO 1 STEP -1:C=ASC MID$(A$,I,1)+R:R=C>90:S$=CHR$(C-26*R)+S$:NEXT I:S$=CHR$(32+R*33)+S$:PRINT S$
peut être qu'avec un 1211, on arrive a éviter 2 parenthèses et le faire entre dans une ligne ? (j'ai pas de 1211 ...)

Merci Charo pour ce défi, pas simple finalement !
Modifié en dernier par babaorhum le 15 févr. 2015 15:14, modifié 1 fois.
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Avatar du membre
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4412
Enregistré le : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: [Challenge Mono-ligne] Calcul d'indice

Message par charognard »

Avec l'explication de remy. Vous y etes !
Mon code

Code : Tout sélectionner

10 CLEAR :R=1:INPUT C$:FOR B=1 TO LEN C$:A=ASC RIGHT$(c$,B)+R,R=A=91,A=A-R*26:S$=CHR$ A+S$:NEXT B:PRINT CHR$(65*R)+S$
le choix de la machine : 12XX ou 140X pour le true booleen à 1 (économie de 2 octets) et le codage des instructions/Fonctions sur 1 octets.
ASC retourne le code ASCII de la première lettre d'une chaine .... donc RIGHT$
Quand à l'ajout conditionnel de A avant la chaine, c'est le CHR$(65*R) qui s'en charge

Pour la gestion des minuscules on peut modifier de la sorte

Code : Tout sélectionner

10 CLEAR :R=1:INPUT C$:FOR B=1 TO LEN C$:A=ASC RIGHT$(c$,B)+R,R=A=91 OR A=123,A=A-R*26:S$=CHR$ A+S$:NEXT B:PRINT CHR$(65*R)+S$
80 octets pile poil.
Ligne à saisir en plusieurs foir pour le codage 1 bit des instructions/fonctions
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5256
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: [Challenge Mono-ligne] Calcul d'indice

Message par bernouilli92 »

Le CLEAR du début est-il vraiment nécessaire ?
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: [Challenge Mono-ligne] Calcul d'indice

Message par babaorhum »

c'est pour avoir s="" - 3 octets de moins avec le CLEAR
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5256
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: [Challenge Mono-ligne] Calcul d'indice

Message par bernouilli92 »

babaorhum a écrit :c'est pour avoir s="" - 3 octets de moins avec le CLEAR
Ok. Je n'avais pas vu que S$ était utilisé sans initialisation.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: [Challenge Mono-ligne] Calcul d'indice

Message par babaorhum »

Et Bravo Charo !

Effectivement ca rentre bien dans une ligne. Avec ton truc de la fin " PRINT CHR$(65*R) + S$ " , on arrive même à caser le BEEP !

Code : Tout sélectionner

1 CLEAR:INPUT A$:R=1:FOR I=LEN A$ TO 1 STEP -1:C=ASC MID$(A$,I,1)+R:R=C>90:S$=CHR$(C-26*R)+S$:NEXT I:BEEP 1 :PRINT CHR$(65*R)+S$
Un effet étrange de cette ligne est que je dois mettre le BEEP avant le PRINT ; en bout de ligne, le BEEP 1 ne fonctionne pas quand on exécute le programme (sur mon 1261) ... mystère ...
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Avatar du membre
Paul Tergeist
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2417
Enregistré le : 15 oct. 2007 15:50
Localisation : 3ème planète après le soleil

Re: [Challenge Mono-ligne] Calcul d'indice

Message par Paul Tergeist »

Joyeux retour lapin sanguinolant !
Avatar du membre
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4412
Enregistré le : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: [Challenge Mono-ligne] Calcul d'indice

Message par charognard »

babaorhum a écrit :Et Bravo Charo !

Effectivement ca rentre bien dans une ligne. Avec ton truc de la fin " PRINT CHR$(65*R) + S$ " , on arrive même à caser le BEEP !

Code : Tout sélectionner

1 CLEAR:INPUT A$:R=1:FOR I=LEN A$ TO 1 STEP -1:C=ASC MID$(A$,I,1)+R:R=C>90:S$=CHR$(C-26*R)+S$:NEXT I:BEEP 1 :PRINT CHR$(65*R)+S$
Un effet étrange de cette ligne est que je dois mettre le BEEP avant le PRINT ; en bout de ligne, le BEEP 1 ne fonctionne pas quand on exécute le programme (sur mon 1261) ... mystère ...
Euh .... normal le PRINT est persistant. il faut appuyer sur RETURN
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: [Challenge Mono-ligne] Calcul d'indice

Message par babaorhum »

charognard a écrit : Euh .... normal le PRINT est persistant. il faut appuyer sur RETURN
... évident maintenant que tu le dis ... :oops: dsl
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Avatar du membre
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Enregistré le : 29 nov. 2013 16:24
Localisation : Pas très loin de Lyon
Contact :

Re: [Challenge Mono-ligne] Calcul d'indice

Message par Rom1500 »

Bon, c'était très bien ce petit challenge, merci Charognard :)
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite
Avatar du membre
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7147
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: [Challenge Mono-ligne] Calcul d'indice

Message par gege »

Bonjour,
Super !!

C'est beau... snifff... moi ému.
Marrant le coup du chr$(0) !

Allez, un autre STP... :twisted:
G.E.
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3636
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: [Challenge Mono-ligne] Calcul d'indice

Message par Hobiecat »

Sympa ce petit exercice de Charo !
Et ça mériterait de figurer dans la longue série des MPOs ! :wink:
Répondre

Retourner vers « Tous les Pockets »