Rebol3 Code Examplex
Zeckendorf number representation
Generate and show a table of the Zeckendorf number representations of the decimal numbers zero to twenty, in order.
Rebol [
title: "Rosetta code: Zeckendorf number representation"
file: %Zeckendorf_number_representation.r3
url: https://rosettacode.org/wiki/Zeckendorf_number_representation
]
zeckendorf: function [
"Returns Zeckendorf representation of a non-negative integer"
n [integer!]
][
if n = 0 [ return #"0" ]
fibs: copy [2 1] ;; build Fibonacci list down to 1
while [n > fibs/1] [
insert fibs fibs/1 + fibs/2 ;; prepend next Fibonacci number
]
result: copy ""
foreach f fibs [
append result either f <= n [n: n - f #"1"][#"0"] ;; greedy fit
]
if result/1 = #"0" [ remove result ] ;; drop leading zero
result
]
for i 0 20 1 [
print [pad i -3 "|" zeckendorf i]
]Output:
0 | 0
1 | 1
2 | 10
3 | 100
4 | 101
5 | 1000
6 | 1001
7 | 1010
8 | 10000
9 | 10001
10 | 10010
11 | 10100
12 | 10101
13 | 100000
14 | 100001
15 | 100010
16 | 100100
17 | 100101
18 | 101000
19 | 101001
20 | 101010