37 lines
1.8 KiB
Text
37 lines
1.8 KiB
Text
BEGIN
|
|
INTEGER N, F0, F1, F2, D;
|
|
N := 20;
|
|
COMMENT CALCULATE D FROM ANY GIVEN N ;
|
|
F1 := 1; F2 := 2; F0 := F1 + F2; D := 2;
|
|
WHILE F0 < N DO BEGIN
|
|
F1 := F2; F2 := F0; F0 := F1 + F2; D := D + 1;
|
|
END;
|
|
BEGIN
|
|
COMMENT Sinclair ZX81 BASIC Solution ;
|
|
TEXT Z1, S1;
|
|
INTEGER I, J, Z;
|
|
INTEGER ARRAY F(1:D); ! 10 dim f(6) ;
|
|
F(1) := 1; ! 20 let f(1)=1 ;
|
|
F(2) := 2; ! 30 let f(2)=2 ;
|
|
FOR I := 3 STEP 1 UNTIL D DO BEGIN ! 40 for i=3 to 6 ;
|
|
F(I) := F(I-2) + F(I-1); ! 50 let f(i)=f(i-2)+f(i-1) ;
|
|
END; ! 60 next i ;
|
|
FOR I := 0 STEP 1 UNTIL N DO BEGIN ! 70 for i=0 to 20 ;
|
|
Z1 :- ""; ! 80 let z$="" ;
|
|
S1 :- " "; ! 90 let s$=" " ;
|
|
Z := I; ! 100 let z=i ;
|
|
FOR J := D STEP -1 UNTIL 1 DO BEGIN ! 110 for j=6 to 1 step -1 ;
|
|
IF J=1 THEN S1 :- "0"; ! 120 if j=1 then let s$="0" ;
|
|
IF NOT (Z<F(J)) THEN BEGIN ! 130 if z<f(j) then goto 180 ;
|
|
Z1 :- Z1 & "1"; ! 140 let z$=z$+"1" ;
|
|
Z := Z-F(J); ! 150 let z=z-f(j) ;
|
|
S1 :- "0"; ! 160 let s$="0" ;
|
|
END ELSE ! 170 goto 190 ;
|
|
Z1 :- Z1 & S1; ! 180 let z$=z$+s$ ;
|
|
END; ! 190 next j ;
|
|
OUTINT(I, 0); OUTCHAR(' '); ! 200 print i ; !" "; !;
|
|
IF I<10 THEN OUTCHAR(' '); ! 210 if i<10 then print " "; !;
|
|
OUTTEXT(Z1); OUTIMAGE; ! 220 print z$ ;
|
|
END; ! 230 next i ;
|
|
END;
|
|
END
|