Skip to content

Instantly share code, notes, and snippets.

@hirokiky
Forked from podhmo/fizzbuzz.py
Last active December 25, 2015 01:39

Revisions

  1. hirokiky revised this gist Oct 9, 2013. 1 changed file with 38 additions and 26 deletions.
    64 changes: 38 additions & 26 deletions fizzbuzz.py
    Original file line number Diff line number Diff line change
    @@ -2,33 +2,45 @@
    from __future__ import print_function

    (lambda zero, one, succ, is_zero, pred, AND, IF, Y, undefined:
    (lambda add, mul, sub:
    (lambda add, mul, sub:
    (lambda GT, EQ:
    (lambda rem, REP:
    (lambda three, five,num_from_church:
    (lambda three, five, num_from_church:
    (lambda fifteen, one_hundred:
    (lambda fizzbuzz:
    fizzbuzz(lambda _: print("fizzbuzz"))(lambda _: print("fizz"))(lambda _: print("buzz"))(lambda n: print(num_from_church(n)))(one)(one_hundred)
    )((lambda on_fizzbuzz: (lambda on_fizz: (lambda on_buzz: (lambda on_default: (lambda start: (lambda end: REP(lambda n: IF(is_zero(rem(n)(fifteen)))(lambda : on_fizzbuzz(n))(lambda : IF(is_zero(rem(n)(three)))(lambda : on_fizz(n))(lambda : IF(is_zero(rem(n)(five)))(lambda : on_buzz(n))(lambda : on_default(n)))))(undefined)(start)(end)))))))))(
    mul(three)(five),
    mul(mul(five)(five))(add(one)(three)),
    ))(
    succ(succ(one)),
    succ(succ(succ(succ(one)))),
    (lambda n: n(lambda x: x+1)(0)),
    ))(Y (lambda rec: (lambda m: (lambda n: (lambda m_: IF(is_zero(m_))(lambda : (EQ(m)(n)(zero)(m)))(lambda : rec(m_)(n)))(sub(m)(n))))),
    Y (lambda rec: (lambda f: (lambda _: (lambda i: (lambda j: IF(GT(i)(j))(lambda : rec(f)(f(i))(succ(i))(j))(lambda : undefined)))))),
    ))((lambda m: (lambda n: is_zero(sub(m)(n)))),
    (lambda m: (lambda n: AND(is_zero(sub(n)(m)))(is_zero(sub(n)(m)))))
    ))((lambda m: (lambda n: n(succ)(m))),
    (lambda m: (lambda n: (lambda f: (lambda x: n(m(f))(x))))),
    (lambda m: (lambda n: n(pred)(m))),
    ))(
    (lambda f: (lambda x: x)),
    (lambda f: (lambda x: f(x))),
    (lambda n: (lambda f: (lambda x: f(n(f)(x))))),
    (lambda n: (lambda x: (lambda y: n(lambda z: y)(x)))),
    (lambda n: (lambda f: (lambda x: n((lambda g : lambda h: h(g(f))))(lambda u: x)(lambda u: u)))),
    (lambda x: (lambda y: x(y)(x))),
    (lambda p: (lambda x: (lambda y: p(x)(y)()))),
    (lambda g: (lambda x: (lambda m: g(x(x))(m)))(lambda x: (lambda m: g(x(x))(m)))), 0)
    fizzbuzz(lambda _: print("fizzbuzz"))(lambda _: print("fizz"))(lambda _: print("buzz"))(lambda n: print(num_from_church(n)))(one)(one_hundred)
    )(
    (lambda on_fizzbuzz: (lambda on_fizz: (lambda on_buzz: (lambda on_default: (lambda start: (lambda end: REP(lambda n: IF(is_zero(rem(n)(fifteen)))(lambda : on_fizzbuzz(n))(lambda : IF(is_zero(rem(n)(three)))(lambda : on_fizz(n))(lambda : IF(is_zero(rem(n)(five)))(lambda : on_buzz(n))(lambda : on_default(n)))))(undefined)(start)(end))))))) # fizzbuzz
    )
    )(
    mul(three)(five), # fifteen
    mul(mul(five)(five))(add(one)(three)), # one_fundred
    )
    )(
    succ(succ(one)), # three
    succ(succ(succ(succ(one)))), # five
    (lambda n: n(lambda x: x+1)(0)), # num_from_church
    )
    )(Y (lambda rec: (lambda m: (lambda n: (lambda m_: IF(is_zero(m_))(lambda : (EQ(m)(n)(zero)(m)))(lambda : rec(m_)(n)))(sub(m)(n))))), # rem
    Y (lambda rec: (lambda f: (lambda _: (lambda i: (lambda j: IF(GT(i)(j))(lambda : rec(f)(f(i))(succ(i))(j))(lambda : undefined)))))), # REP
    )
    )(
    (lambda m: (lambda n: is_zero(sub(m)(n)))), # GT
    (lambda m: (lambda n: AND(is_zero(sub(n)(m)))(is_zero(sub(n)(m))))) #EQ
    )
    )(
    (lambda m: (lambda n: n(succ)(m))), # add
    (lambda m: (lambda n: (lambda f: (lambda x: n(m(f))(x))))), # mul
    (lambda m: (lambda n: n(pred)(m))), # sub
    )
    )(
    (lambda f: (lambda x: x)), # zero
    (lambda f: (lambda x: f(x))), # one
    (lambda n: (lambda f: (lambda x: f(n(f)(x))))), # succ
    (lambda n: (lambda x: (lambda y: n(lambda z: y)(x)))), # is_zero
    (lambda n: (lambda f: (lambda x: n((lambda g : lambda h: h(g(f))))(lambda u: x)(lambda u: u)))), # pred
    (lambda x: (lambda y: x(y)(x))), # AND
    (lambda p: (lambda x: (lambda y: p(x)(y)()))), # IF
    (lambda g: (lambda x: (lambda m: g(x(x))(m)))(lambda x: (lambda m: g(x(x))(m)))), # Y
    0 # undefined
    )
  2. @podhmo podhmo created this gist Aug 30, 2013.
    34 changes: 34 additions & 0 deletions fizzbuzz.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,34 @@
    # -*- coding:utf-8 -*-
    from __future__ import print_function

    (lambda zero, one, succ, is_zero, pred, AND, IF, Y, undefined:
    (lambda add, mul, sub:
    (lambda GT, EQ:
    (lambda rem, REP:
    (lambda three, five,num_from_church:
    (lambda fifteen, one_hundred:
    (lambda fizzbuzz:
    fizzbuzz(lambda _: print("fizzbuzz"))(lambda _: print("fizz"))(lambda _: print("buzz"))(lambda n: print(num_from_church(n)))(one)(one_hundred)
    )((lambda on_fizzbuzz: (lambda on_fizz: (lambda on_buzz: (lambda on_default: (lambda start: (lambda end: REP(lambda n: IF(is_zero(rem(n)(fifteen)))(lambda : on_fizzbuzz(n))(lambda : IF(is_zero(rem(n)(three)))(lambda : on_fizz(n))(lambda : IF(is_zero(rem(n)(five)))(lambda : on_buzz(n))(lambda : on_default(n)))))(undefined)(start)(end)))))))))(
    mul(three)(five),
    mul(mul(five)(five))(add(one)(three)),
    ))(
    succ(succ(one)),
    succ(succ(succ(succ(one)))),
    (lambda n: n(lambda x: x+1)(0)),
    ))(Y (lambda rec: (lambda m: (lambda n: (lambda m_: IF(is_zero(m_))(lambda : (EQ(m)(n)(zero)(m)))(lambda : rec(m_)(n)))(sub(m)(n))))),
    Y (lambda rec: (lambda f: (lambda _: (lambda i: (lambda j: IF(GT(i)(j))(lambda : rec(f)(f(i))(succ(i))(j))(lambda : undefined)))))),
    ))((lambda m: (lambda n: is_zero(sub(m)(n)))),
    (lambda m: (lambda n: AND(is_zero(sub(n)(m)))(is_zero(sub(n)(m)))))
    ))((lambda m: (lambda n: n(succ)(m))),
    (lambda m: (lambda n: (lambda f: (lambda x: n(m(f))(x))))),
    (lambda m: (lambda n: n(pred)(m))),
    ))(
    (lambda f: (lambda x: x)),
    (lambda f: (lambda x: f(x))),
    (lambda n: (lambda f: (lambda x: f(n(f)(x))))),
    (lambda n: (lambda x: (lambda y: n(lambda z: y)(x)))),
    (lambda n: (lambda f: (lambda x: n((lambda g : lambda h: h(g(f))))(lambda u: x)(lambda u: u)))),
    (lambda x: (lambda y: x(y)(x))),
    (lambda p: (lambda x: (lambda y: p(x)(y)()))),
    (lambda g: (lambda x: (lambda m: g(x(x))(m)))(lambda x: (lambda m: g(x(x))(m)))), 0)