RosettaCodeData/Task/Zeckendorf-number-representation/BBC-BASIC/zeckendorf-number-representation.basic
2023-07-01 13:44:08 -04:00

27 lines
683 B
Text

FOR n% = 0 TO 20
PRINT n% RIGHT$(" " + FNzeckendorf(n%), 8)
NEXT
PRINT '"Checking numbers up to 10000..."
FOR n% = 21 TO 10000
IF INSTR(FNzeckendorf(n%), "11") STOP
NEXT
PRINT "No Zeckendorf numbers contain consecutive 1's"
END
DEF FNzeckendorf(n%)
LOCAL i%, o$, fib%() : DIM fib%(45)
fib%(0) = 1 : fib%(1) = 1 : i% = 1
REPEAT
i% += 1
fib%(i%) = fib%(i%-1) + fib%(i%-2)
UNTIL fib%(i%) > n%
REPEAT
i% -= 1
IF n% >= fib%(i%) THEN
o$ += "1"
n% -= fib%(i%)
ELSE
o$ += "0"
ENDIF
UNTIL i% = 1
= o$