只用lambda演算实现FizzBuzz游戏(Python版)
最近看到《计算的本质:深入剖析程序和计算机》这本书的第6章,介绍了只用Ruby的lambda演算来实现著名的FizzBuzz问题:
写一个程序输出数字 1 到 100。但如果数字是 3 的倍数,就不输出数字而是输出“Fizz”,如果是 5 的倍数就输出“Buzz”。对于那些 3 和5 的公倍数,就输出“FizzBuzz”。
用Python解决FizzBuzz问题其实很简单,我之前写过,只需两行就搞定:
for i in range(1,101):
print('FizzBuzz' if i%15==0 else 'Fizz' if i%3==0 else 'Buzz' if i%5==0 else i)
我尝试只用lambda函数解决FizzBuzz问题,但是因为CPython解释器在括号嵌套层数太多时会报错,最大嵌套层数貌似为92层(我也不知道为什么是92层,这是我试出来的)。所以我只能写了个数字0到50内的FizzBuzz的解。整个程序同样的壮观,最重要的是它能在Python 3.4上正确的运行:
solution = ((lambda k: lambda f: ((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda l: lambda x: lambda g: (lambda b: b)((lambda p: p(lambda x: lambda y: x))(l))(x)(lambda y: g(f((lambda l: (lambda p: p(lambda x: lambda y: y))((lambda p: p(lambda x: lambda y: y))(l)))(l))(x)(g))((lambda l: (lambda p: p(lambda x: lambda y: x))((lambda p: p(lambda x: lambda y: y))(l)))(l))(y))))(k)(((lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: x))((lambda x: lambda y: x))))(lambda l: lambda x: (lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))(l)(f(x))))(((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda m: lambda n: (lambda b: b)((lambda m: lambda n: (lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n)))(m)(n))( lambda x: (lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))(f((lambda n: lambda p: lambda x: p(n(p)(x)))(m))(n))(m)(x))( (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: x))((lambda x: lambda y: x)) )))((lambda p: lambda x: p(x)))((lambda p: lambda x: p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(x)))))))))))))))))))))))))))))))))))))))))))))))))))))(lambda n: (lambda b: b)((lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda m: lambda n: (lambda b: b)((lambda m: lambda n: (lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n)))(n)(m))(lambda x: f((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n))(n)(x))(m))(n)((lambda p: lambda x: p(p(p(p(p(p(p(p(p(p(p(p(p(p(p(x)))))))))))))))))))(((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))(((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))(((lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: x))((lambda x: lambda y: x))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x)))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x)))))))))))))((lambda b: b)((lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda m: lambda n: (lambda b: b)((lambda m: lambda n: (lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n)))(n)(m))(lambda x: f((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n))(n)(x))(m))(n)((lambda p: lambda x: p(p(p(x)))))))(((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))(((lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: x))((lambda x: lambda y: x))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x)))))))))))))((lambda b: b)((lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda m: lambda n: (lambda b: b)((lambda m: lambda n: (lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n)))(n)(m))(lambda x: f((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n))(n)(x))(m))(n)((lambda p: lambda x: p(p(p(p(p(x)))))))))(((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))(((lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: x))((lambda x: lambda y: x))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda n: lambda p: lambda x: p(n(p)(x)))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))))))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x)))))))))))(((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda n: (lambda l: lambda x: ((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda l: lambda x: lambda g: (lambda b: b)((lambda p: p(lambda x: lambda y: x))(l))(x)(lambda y: g(f((lambda l: (lambda p: p(lambda x: lambda y: y))((lambda p: p(lambda x: lambda y: y))(l)))(l))(x)(g))((lambda l: (lambda p: p(lambda x: lambda y: x))((lambda p: p(lambda x: lambda y: y))(l)))(l))(y))))(l)((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))(((lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: x))((lambda x: lambda y: x))))(x))((lambda l: lambda x: (lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: y))((lambda x: lambda y: lambda f: f(x)(y))(x)(l)))))((lambda b: b)((lambda m: lambda n: (lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n)))(n)((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x)))))(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x)))))))))))(((lambda x: lambda y: lambda f: f(x)(y))((lambda x: lambda y: x))((lambda x: lambda y: x))))(lambda x: f(((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda m: lambda n: (lambda b: b)((lambda m: lambda n: (lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n)))(n)(m))(lambda x: (lambda n: lambda p: lambda x: p(n(p)(x)))(f((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n))(n))(x))((lambda p: lambda x: x))))(n)(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))(x)))((lambda f: (lambda x: f(lambda y: x(x)(y)))(lambda x: f(lambda y: x(x)(y))))(lambda f: lambda m: lambda n: (lambda b: b)((lambda m: lambda n: (lambda n: n(lambda x: (lambda x: lambda y: y))(lambda x: lambda y: x))((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n)))(n)(m))(lambda x: f((lambda m: lambda n: n((lambda n :(lambda p: p(lambda x: lambda y: x))(n(lambda p: (lambda x: lambda y: lambda f: f(x)(y))((lambda p: p(lambda x: lambda y: y))(p))((lambda n: lambda p: lambda x: p(n(p)(x)))((lambda p: p(lambda x: lambda y: y))(p))))((lambda x: lambda y: lambda f: f(x)(y))((lambda p: lambda x: x))((lambda p: lambda x: x))))))(m))(m)(n))(n)(x))(m))(n)(((lambda m: lambda n: n((lambda m: lambda n: n((lambda n: lambda p: lambda x: p(n(p)(x))))(m))(m))((lambda p: lambda x: x)))((lambda p: lambda x: p(p(x))))((lambda p: lambda x: p(p(p(p(p(x))))))))))))(n))))))
def to_integer(proc):
return proc(lambda n: n + 1)(0)
def to_boolean(proc):
return (lambda b: b)(proc)(True)(False)
def to_array(proc):
array = []
while True:
array.append((lambda l: (lambda p: p(lambda x: lambda y: x))((lambda p: p(lambda x: lambda y: y))(l)))(proc))
proc = (lambda l: (lambda p: p(lambda x: lambda y: y))((lambda p: p(lambda x: lambda y: y))(l)))(proc)
if to_boolean((lambda p: p(lambda x: lambda y: x))(proc)):
break
return array
def to_char(c):
return '0123456789BFiuz'[to_integer(c)]
def to_string(s):
return ''.join([to_char(c) for c in to_array(s)])
## 测试
import unittest
class TestLambda(unittest.TestCase):
def test_FizzBuzz(self):
for p in to_array(solution):
print(to_string(p))
if __name__ == '__main__':
unittest.main()
运行结果如下:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31
32
Fizz
34
Buzz
Fizz
37
38
Fizz
Buzz
41
Fizz
43
44
FizzBuzz
46
47
Fizz
49
Buzz
2015-02-12
上一篇: Eclipse集成开发环境使用 下一篇: 深入学习JavaScript