Code : Tout sélectionner
10 DEFDBLX:X=1:J=0
20 X=X*2:IFX=X+1THENPRINTJ,J*LOG(2):END
30 J=J+1:GOTO20
Modérateur : Politburo
Code : Tout sélectionner
10 DEFDBLX:X=1:J=0
20 X=X*2:IFX=X+1THENPRINTJ,J*LOG(2):END
30 J=J+1:GOTO20
Cool le TP5.5. De mémoire il a les surcouches objet etc! Il a combien de ram le 500lx?
Il va falloir chercher encore un peu, j'ai une première version en 21 pas:
Code : Tout sélectionner
P0 (491)
MAC 1 002
LBL0 M+F MRF + 1 = x=F? GOTO9 010
MRF ISZ GOTO0 013
LBL9 MR00 HLT * 2 log = 020
Code : Tout sélectionner
P0 (491)
MAC 2 002
LBL0 M+F MRF + 1 = x=F? GOTO9 010
MRF ISZ GOTO0 013
LBL9 MR00 HLT * 2 log = 020
Code : Tout sélectionner
IF (X+1) <> X THEN GOTO 2
GOTO 3
LBL 2
Code : Tout sélectionner
IF (X+1) = X THEN GOTO 3
Code : Tout sélectionner
23
11 LBL A
21
83
08 DSP .8
01 1
33 01 STO 1
00 0
33 02 STO 2
23
01 LBL 1
34 01 RCL 1
02 2
71 x
33 01 STO 1
34 01 RCL 1
41 ENTER
01 1
61 +
35 23 X=Y?
22
03 GTO 3
34 02 RCL 2
01 1
61 +
33 02 STO 2
22
01 GTO 1
23
03 LBL 3
34 02 RCL 2
34 02 RCL 2
02 2
31
08 LOG
71 x
24 RTN
Je suis complètement novice en pascal, mais en effet la 5.5 gère la double-précision (voir mon deuxième programme, ou plutôt ma dernière tambouille).
Code : Tout sélectionner
1:CLEAR :X=1 ( 8)
2:X=2X:IF X<>X+1 LET J=J+1:GOTO 2 (23)
3:PRINT J,J*LOG 2 (10)
41 octets
Code : Tout sélectionner
list
1 x=2:do:j=j+1:x=2*x:loop while x+1<>x:print j,j*log(2)/log(10)
ready.
run
32 9.63295986
ready.
REM Program size 47 bytes Variables and run cost 14 bytes
Code : Tout sélectionner
:mpo() Code: 84 bytes
:Prgm
:Local x,j
:1▸x
:-1▸j
:While x+1>x
: x+x▸x
: 1+j▸j
:EndWhile
:Disp j,approx(j*log(2))
:EndPrgm
Code : Tout sélectionner
10 X=1
20 X=2*X: IF X+1<>X THEN J=J+1: GOTO 20
30 PRINT J;J*LOG(10): PAUSE
FRE(1) donne 84 bytes
Code : Tout sélectionner
MAC 1
LBL0
XD 1 MinF MR08 M+F x=f GOTO9
ISZ GOTO0
LBL9
MR00 HLT x 2 log =
Un 8 bits qui calcule sur 9 doigts ! C’est effectivement bien
Tu peux compiler en .com ou .exe et voir la taille sur disque. Mais pas d’illusion ce sera un bonne dizaine de ko minimum puisque le programme doit embarquer les bibliothèques de calcul et autres (pas de rom).Marge a écrit : ↑17 oct. 2020 15:19Je suis complètement novice en pascal, mais en effet la 5.5 gère la double-précision (voir mon deuxième programme, ou plutôt ma dernière tambouille).
En revanche je ne sais pas mesurer le code 8086 compilé en mémoire vive, si tu as une idée...
Le 200LX possède 2 méga-octets de mémoire vive.
Dans un style très semblable, sur HP-28S en utilisant la rémanence de la pile de taille infinie afin de gagner quelques octets :bernouilli92 a écrit : ↑17 oct. 2020 08:22 Hp48 :Taille : 62,5 octetsCode : Tout sélectionner
« -1 1 DO 2 * SWAP 1 + SWAP UNTIL DUP DUP 1 + == END DROP DUP 2 LOG * »
Résultat : 39 - 11,74017
Code : Tout sélectionner
« CLEAR 1
WHILE DUP + DUP 1 + OVER ≠
REPEAT DUP END
DROP DEPTH 2 LOG OVER * »
Code : Tout sélectionner
LBL PREC
0
STO 00
1
LBL 00
2
*
ENTER
ENTER
1
+
X=Y?
GTO 01
1
ST+ 00
RDN
RDN
GTO 00
LBL 01
RCL 00
2
LOG
*
RCL 00
RTN
Code : Tout sélectionner
000 1 STO X +/- STOJ
006 LBL 00 INC J 2 ST* X RCL X +1= IF> X GTL 00
024 COL 03 MRG J 2 LOG ST* J OLD COL 15 MRG J HLT
038