September Morn Update

This commit is contained in:
Ingy döt Net 2019-09-12 10:33:56 -07:00
parent 4e2d22a71d
commit aac6731f2c
6856 changed files with 141342 additions and 21127 deletions

View file

@ -1,8 +1,10 @@
from math import factorial
import functools
def memoize(func):
cache = {}
def memoized(key):
# Returned, new, memoized version of decorated function
if key not in cache:
@ -15,30 +17,33 @@ def memoize(func):
def fact(n):
return factorial(n)
def cat_direct(n):
return fact(2*n) // fact(n + 1) // fact(n)
return fact(2 * n) // fact(n + 1) // fact(n)
@memoize
def catR1(n):
return ( 1 if n == 0
else sum( catR1(i) * catR1(n - 1 - i)
for i in range(n) ) )
return 1 if n == 0 else (
sum(catR1(i) * catR1(n - 1 - i) for i in range(n))
)
@memoize
def catR2(n):
return ( 1 if n == 0
else ( ( 4 * n - 2 ) * catR2( n - 1) ) // ( n + 1 ) )
return 1 if n == 0 else (
((4 * n - 2) * catR2(n - 1)) // (n + 1)
)
if __name__ == '__main__':
def pr(results):
fmt = '%-10s %-10s %-10s'
print ((fmt % tuple(c.__name__ for c in defs)).upper())
print (fmt % (('='*10,)*3))
print((fmt % tuple(c.__name__ for c in defs)).upper())
print(fmt % (('=' * 10,) * 3))
for r in zip(*results):
print (fmt % r)
print(fmt % r)
defs = (cat_direct, catR1, catR2)
results = [ tuple(c(i) for i in range(15)) for c in defs ]
results = [tuple(c(i) for i in range(15)) for c in defs]
pr(results)