# Y combinator revisited
Y = lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y)))
R = lambda f: lambda n: n if n <= 1 else f(n-1) + f(n-2)
S = lambda f: lambda n: 1 if n == 0 else n * f(n-1)
fiby = Y(R)
facty = Y(S)
print("Fibonacci sequence:")
for i in range(21):
print(f"f({i})={fiby(i)}")
print("Factorial:")
for i in range(17):
print(f"{i}!={facty(i)}")
IyBZIGNvbWJpbmF0b3IgcmV2aXNpdGVkCiAKWSA9IGxhbWJkYSBmOiAobGFtYmRhIHg6IGYobGFtYmRhIHk6IHgoeCkoeSkpKShsYW1iZGEgeDogZihsYW1iZGEgeTogeCh4KSh5KSkpClIgPSBsYW1iZGEgZjogbGFtYmRhIG46IG4gaWYgbiA8PSAxIGVsc2UgZihuLTEpICsgZihuLTIpClMgPSBsYW1iZGEgZjogbGFtYmRhIG46IDEgaWYgbiA9PSAwIGVsc2UgbiAqIGYobi0xKQoKZmlieSA9IFkoUikKZmFjdHkgPSBZKFMpCgpwcmludCgiRmlib25hY2NpIHNlcXVlbmNlOiIpCmZvciBpIGluIHJhbmdlKDIxKToKCXByaW50KGYiZih7aX0pPXtmaWJ5KGkpfSIpCgpwcmludCgiRmFjdG9yaWFsOiIpCmZvciBpIGluIHJhbmdlKDE3KToKCXByaW50KGYie2l9IT17ZmFjdHkoaSl9Iik=