# Fish number 3
class Proc
def <<(other)
-> (*args) { self[other[*args]] }
end
def ^(n)
return -> x { x } if n == 0
return self << (self ^ (n - 1))
end
end
s =
-> n { -> f {
if n == 1
-> x { (f ^ x)[x] }
else
-> x { (s[n - 1] ^ x)[f][x] }
end
} }
ss =
-> n { -> f {
if n == 1
-> x { s[x][f][x] }
else
-> x { (ss[n - 1] ^ x)[f][x] }
end
} }
f = -> x { x + 1 }
F3_F = (ss[2] ^ 63)[f]
F3 = (F3_F ^ 63)[3]
puts F3
IyBGaXNoIG51bWJlciAzCmNsYXNzIFByb2MKICBkZWYgPDwob3RoZXIpCiAgICAtPiAoKmFyZ3MpIHsgc2VsZltvdGhlclsqYXJnc11dIH0KICBlbmQKCiAgZGVmIF4obikKICAgIHJldHVybiAtPiB4IHsgeCB9IGlmIG4gPT0gMAogICAgcmV0dXJuIHNlbGYgPDwgKHNlbGYgXiAobiAtIDEpKQogIGVuZAplbmQKCnMgPQogIC0+IG4geyAtPiBmIHsKICAgIGlmIG4gPT0gMQogICAgICAtPiB4IHsgKGYgXiB4KVt4XSB9CiAgICBlbHNlCiAgICAgIC0+IHggeyAoc1tuIC0gMV0gXiB4KVtmXVt4XSB9CiAgICBlbmQKICB9IH0KCnNzID0KICAtPiBuIHsgLT4gZiB7CiAgICBpZiBuID09IDEKICAgICAgLT4geCB7IHNbeF1bZl1beF0gfQogICAgZWxzZQogICAgICAtPiB4IHsgKHNzW24gLSAxXSBeIHgpW2ZdW3hdIH0KICAgIGVuZAogIH0gfQoKZiA9IC0+IHggeyB4ICsgMSB9CgpGM19GID0gKHNzWzJdIF4gNjMpW2ZdCgpGMyA9IChGM19GIF4gNjMpWzNdCnB1dHMgRjM=