只用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
原始碼在這裡:
https://github.com/cforth/toys/blob/master/LambdaCalculus/
相關文章
- lambda實現遞迴遞迴
- [分享會]只用CSS實現輪播圖CSS
- 用Lambda實現模板模式模式
- 利用python實現簡易版的貪吃蛇遊戲(面向python小白)Python遊戲
- FM演算法python實現演算法Python
- python實現冒泡演算法Python演算法
- python實現FM演算法Python演算法
- PYTHON實現DFS演算法Python演算法
- python實現Floyd演算法Python演算法
- Python實現KNN演算法PythonKNN演算法
- <七>lambda表示式實現原理
- Python實現24點遊戲Python遊戲
- PaddlePaddle版Flappy-Bird—使用DQN演算法實現遊戲智慧APP演算法遊戲
- 使用DQN演算法實現遊戲智慧演算法遊戲
- Python技巧-只用一行程式碼輕鬆實現圖片文字識別Python行程
- Python學習(13)--Lambda表示式和switch語句的實現Python
- 只用CSS實現容器內圖片上下左右居中CSS
- python實現希爾排序演算法Python排序演算法
- RSA演算法與Python實現演算法Python
- python演算法 - python實現氣泡排序Python演算法排序
- 盲盒是現實版的“開箱遊戲”遊戲
- 不用ChatGPT,只用CodeGeeX with Chat!一樣實現智慧問答ChatGPT
- 面試問題 - 只用位操作在ABAP裡實現a+b面試
- 常見排序演算法-Python實現排序演算法Python
- 基本排序演算法的Python實現排序演算法Python
- “猴子選大王” 演算法 python實現演算法Python
- python排序演算法的實現-冒泡Python排序演算法
- python排序演算法的實現-插入Python排序演算法
- FP-Growth演算法python實現演算法Python
- PageRank演算法概述與Python實現演算法Python
- Blowfish 加密演算法 Java 版簡單實現加密演算法Java
- JAVA 實現《超級瑪麗升級版》遊戲Java遊戲
- 容斥定理 AtCoder——FizzBuzz Sum Hard
- 採用α-β演算法實現井字棋遊戲演算法遊戲
- 你只用do-while來實現迴圈?太浪費了!While
- Python - lambda 表示式Python
- python map和lambdaPython
- python-lambda用法Python