まじめに縮めてみる
上のアプローチで縮めてみた。
require 'compile.rb' compile do let.idt = abs x do end let.pr = abs a, b, c, d do out(d(c(b(a(idt))),ch119)) end # f0 f = f+f let.f0 = abs f, x do f(f(x)) end # f1 f = f+f+1 let.f1 = abs f, x do succ(f0(f,x)) end let.f00 = abs f do f0(f0(f)) end let.f11 = abs f do f1(f1(f)) end let.f10 = abs f do f0(f1(f)) end let.f01 = abs f do f1(f0(f)) end let.tail = abs pr111011, pr111101, pr111110 do let.pr10 = pr(f10) pr10(f11,f01,f01) #, let.pr101010 = pr10(f10,f10) pr101010(f01) # SP out(ch119) # w pr111110(f00) # o pr111110(f11) # r pr111101(f01) # l pr111011(f01) pr101010(f10) end let.pr11 = pr(f11) pr11(f01,f00,f01) # H let.pr111011 = pr11(f10,f11) let.tail2 = tail pr111011 pr111011(f10) # e let.pr1111 = pr11(f11) let.pr111101 = pr1111(f01) let.tail3 = tail2 pr111101 pr111101(f01) # l pr111101(f01) # l let.pr111110 = pr1111(f10) pr111110(f00) # o tail3 pr111110 end
wvwwwwWWWWwwwwwWWWWwWWWWwWWWWwWwwwwwwwwwwwwWWWWWWWWWWWwvwwWWwWWWwv wwWWWwwWwwWWWWWWWWWwvwWWWwWWWWwvwWWWwWWWWwvwWWWWwWWWWWWwvwWWWWWWwW WWWWWwvwwwWWWWWWWWWWwwwwwWwwwwwwwWwwwwwwWwwwwwwwWWWWwwwwwwwwwWwwww wwwwwwWwwwwwwwwwwWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwWWWWWWWWW wwwwwwwwwwwwwwwWWWWWWWWWWwwwwwwwwwwwwwwwWWWWWWWWWWWWwwwwwwwwwwwwww WWWWWWWWWWWWWWwwwwwwwwwwwwwwwWWWWWWWwwwwwwwwwwwwwwwwwvWWWWWWWWwwww WwwwWwwwwwwwWwwwwwWWWWwwwwwwwWwwwwwwwwwWWWWWWWwWWwwwwwwwwwwWWWWWWW WwwwwwwwwwwwwWwwwwwwwwwwwWWWWwWWwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwWWWW WwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWWWWww
pr(f10,f11,f01,f00) みたいに呼び出すと 'w'+0x10110100 が表示される。で適当にpr(...)の頭の部分を共通化して 572 バイト。
よそのコードがほとんど入ってない割には縮んだ気がする。