File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #
2+ # FizzBuzz program using only lambda calculus
3+ #
4+ # This program is quoted from
5+ # "Understanding Computation" by Tom Stuart
6+ # http://computationbook.com/
7+ #
8+ # You can understand why this program works fine by reading this book.
9+ #
10+
11+ solution = -> k { -> f { -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> l { -> x { -> g { -> b { b } [ -> p { p [ -> x { -> y { x } } ] } [ l ] ] [ x ] [ -> y { g [ f [ -> l { -> p { p [ -> x { -> y { y } } ] } [ -> p { p [ -> x { -> y { y } } ] } [ l ] ] } [ l ] ] [ x ] [ g ] ] [ -> l { -> p { p [ -> x { -> y { x } } ] } [ -> p { p [ -> x { -> y { y } } ] } [ l ] ] } [ l ] ] [ y ] } ] } } } } ] [ k ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { x } } ] [ -> x { -> y { x } } ] ] [ -> l { -> x { -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ l ] [ f [ x ] ] } } ] } } [ -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> m { -> n { -> b { b } [ -> m { -> n { -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] } } [ m ] [ n ] ] [ -> x { -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ f [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ m ] ] [ n ] ] [ m ] [ x ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { x } } ] [ -> x { -> y { x } } ] ] } } } ] [ -> p { -> x { p [ x ] } } ] [ -> p { -> 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 [ 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 ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] } } ] ] [ -> n { -> b { b } [ -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> m { -> n { -> b { b } [ -> m { -> n { -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] } } [ n ] [ m ] ] [ -> x { f [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] [ n ] [ x ] } ] [ m ] } } } ] [ n ] [ -> p { -> x { p [ p [ p [ p [ p [ p [ p [ p [ p [ p [ p [ p [ p [ p [ p [ x ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] } } ] ] ] [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { x } } ] [ -> x { -> y { x } } ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] [ -> b { b } [ -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> m { -> n { -> b { b } [ -> m { -> n { -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] } } [ n ] [ m ] ] [ -> x { f [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] [ n ] [ x ] } ] [ m ] } } } ] [ n ] [ -> p { -> x { p [ p [ p [ x ] ] ] } } ] ] ] [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { x } } ] [ -> x { -> y { x } } ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] [ -> b { b } [ -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> m { -> n { -> b { b } [ -> m { -> n { -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] } } [ n ] [ m ] ] [ -> x { f [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] [ n ] [ x ] } ] [ m ] } } } ] [ n ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { x } } ] [ -> x { -> y { x } } ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] ] ] [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] [ -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> n { -> l { -> x { -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> l { -> x { -> g { -> b { b } [ -> p { p [ -> x { -> y { x } } ] } [ l ] ] [ x ] [ -> y { g [ f [ -> l { -> p { p [ -> x { -> y { y } } ] } [ -> p { p [ -> x { -> y { y } } ] } [ l ] ] } [ l ] ] [ x ] [ g ] ] [ -> l { -> p { p [ -> x { -> y { x } } ] } [ -> p { p [ -> x { -> y { y } } ] } [ l ] ] } [ l ] ] [ y ] } ] } } } } ] [ l ] [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { x } } ] [ -> x { -> y { x } } ] ] [ x ] ] [ -> l { -> x { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { y } } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ x ] [ l ] ] } } ] } } [ -> b { b } [ -> m { -> n { -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] } } [ n ] [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> x { -> y { x } } ] [ -> x { -> y { x } } ] ] [ -> x { f [ -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> m { -> n { -> b { b } [ -> m { -> n { -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] } } [ n ] [ m ] ] [ -> x { -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ f [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] [ n ] ] [ x ] } ] [ -> p { -> x { x } } ] } } } ] [ n ] [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] [ x ] } ] ] [ -> f { -> x { f [ -> y { x [ x ] [ y ] } ] } [ -> x { f [ -> y { x [ x ] [ y ] } ] } ] } [ -> f { -> m { -> n { -> b { b } [ -> m { -> n { -> n { n [ -> x { -> x { -> y { y } } } ] [ -> x { -> y { x } } ] } [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] } } [ n ] [ m ] ] [ -> x { f [ -> m { -> n { n [ -> n { -> p { p [ -> x { -> y { x } } ] } [ n [ -> p { -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } [ -> p { p [ -> x { -> y { y } } ] } [ p ] ] ] } ] [ -> x { -> y { -> f { f [ x ] [ y ] } } } [ -> p { -> x { x } } ] [ -> p { -> x { x } } ] ] ] } ] [ m ] } } [ m ] [ n ] ] [ n ] [ x ] } ] [ m ] } } } ] [ n ] [ -> m { -> n { n [ -> m { -> n { n [ -> n { -> p { -> x { p [ n [ p ] [ x ] ] } } } ] [ m ] } } [ m ] ] [ -> p { -> x { x } } ] } } [ -> p { -> x { p [ p [ x ] ] } } ] [ -> p { -> x { p [ p [ p [ p [ p [ x ] ] ] ] ] } } ] ] ] } } ] [ n ] ] ] ] } ]
12+
13+ FIRST = -> l { LEFT [ RIGHT [ l ] ] }
14+ IF = -> b { b }
15+ LEFT = -> p { p [ -> x { -> y { x } } ] }
16+ RIGHT = -> p { p [ -> x { -> y { y } } ] }
17+ IS_EMPTY = LEFT
18+ REST = -> l { RIGHT [ RIGHT [ l ] ] }
19+
20+ def to_integer ( proc )
21+ proc [ -> n { n + 1 } ] [ 0 ]
22+ end
23+
24+ def to_boolean ( proc )
25+ IF [ proc ] [ true ] [ false ]
26+ end
27+
28+ def to_array ( proc )
29+ array = [ ]
30+
31+ until to_boolean ( IS_EMPTY [ proc ] )
32+ array . push ( FIRST [ proc ] )
33+ proc = REST [ proc ]
34+ end
35+
36+ array
37+ end
38+
39+ def to_char ( c )
40+ '0123456789BFiuz' . slice ( to_integer ( c ) )
41+ end
42+
43+ def to_string ( s )
44+ to_array ( s ) . map { |c | to_char ( c ) } . join
45+ end
46+
47+ answer = to_array ( solution ) . map do |p |
48+ to_string ( p )
49+ end
50+
51+ answer_str = answer . to_a
52+ # puts answer_str
You can’t perform that action at this time.
0 commit comments