Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,34 @@
|
|||
def fib():
|
||||
memo = [1, 2]
|
||||
while True:
|
||||
memo.append(sum(memo))
|
||||
yield memo.pop(0)
|
||||
|
||||
def sequence_down_from_n(n, seq_generator):
|
||||
seq = []
|
||||
for s in seq_generator():
|
||||
seq.append(s)
|
||||
if s >= n: break
|
||||
return seq[::-1]
|
||||
|
||||
def zeckendorf(n):
|
||||
if n == 0: return [0]
|
||||
seq = sequence_down_from_n(n, fib)
|
||||
digits, nleft = [], n
|
||||
for s in seq:
|
||||
if s <= nleft:
|
||||
digits.append(1)
|
||||
nleft -= s
|
||||
else:
|
||||
digits.append(0)
|
||||
assert nleft == 0, 'Check all of n is accounted for'
|
||||
assert sum(x*y for x,y in zip(digits, seq)) == n, 'Assert digits are correct'
|
||||
while digits[0] == 0:
|
||||
# Remove any zeroes padding L.H.S.
|
||||
digits.pop(0)
|
||||
return digits
|
||||
|
||||
n = 20
|
||||
print('Fibonacci digit multipliers: %r' % sequence_down_from_n(n, fib))
|
||||
for i in range(n + 1):
|
||||
print('%3i: %8s' % (i, ''.join(str(d) for d in zeckendorf(i))))
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
n = 20
|
||||
def z(n):
|
||||
if n == 0 : return [0]
|
||||
fib = [2,1]
|
||||
while fib[0] < n: fib[0:0] = [sum(fib[:2])]
|
||||
dig = []
|
||||
for f in fib:
|
||||
if f <= n:
|
||||
dig, n = dig + [1], n - f
|
||||
else:
|
||||
dig += [0]
|
||||
return dig if dig[0] else dig[1:]
|
||||
|
||||
for i in range(n + 1):
|
||||
print('%3i: %8s' % (i, ''.join(str(d) for d in z(i))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue