Skip to content

Instantly share code, notes, and snippets.

@youz
Last active December 27, 2019 07:22
Show Gist options
  • Save youz/81b1f934cf7fa708db2941123d7f938a to your computer and use it in GitHub Desktop.
Save youz/81b1f934cf7fa708db2941123d7f938a to your computer and use it in GitHub Desktop.
lazy-nk
require "io/wait"
if $*.length < 1
puts "usage: ruby lazynk.rb sourcefile"
exit(1)
end
NHK = ->(x){->(y){->(z){x[z][y[z]]}}}
国民 = car = ->(x){->(y){x}}
cdr = ->(x){->(y){y}}
cons = ->(x){->(y){->(b){b[x][y]}}}
succ = ->(n){->(f){->(x){f[n[f][x]]}}}
cnums = [->(f){->(x){x}}]
i2c = ->(i){cnums[i] || (cnums[i] = succ[i2c[i-1]])}
c2i = ->(c){c[->(n){n + 1}][0]}
eoi = ->(b){ b[i2c[256]][eoi] }
input = ($stdin.ready? ? $stdin.read.encode(Encoding::UTF_8) : "").bytes.reverse.inject(eoi){|a,i| cons[i2c[i]][a]}
prog = File.open($*[0], "r:utf-8"){|f| f.read }.gsub(/から/,'[').gsub(/を守る党/,']')
output = eval(prog)[input]
buf = []
while true
i = c2i[output[car]]
if !i.is_a?(Integer)
$stderr.puts "ERROR: #{output[car]} is not a Church numeral"
break
end
break if i >= 256
buf << i
output = output[cdr]
end
puts buf.pack("C*").force_encoding(Encoding::UTF_8)
s/NHK/S/g
s/から/(/g
s/国民/K/g
s/を守る党/)/g
:loop
s/\(\w*\)(\(\w*\))/o\1_\2c/
t loop
y/o_c/( )/
s/((S K) K)/I/g
s/NHK/s/g
s/から/(/g
s/国民/k/g
s/を守る党/)/g
:loop
s/\([`sk]*\)(\([`sk]*\))/`\1\2/
t loop
s/``sk[sk]/i/g
NHKからNHKを守る党からNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKを守る党を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党からNHKから国民からNHKを守る党を守る党から国民を守る党を守る党からNHKからNHKから国民からNHKを守る党を守る党からNHKから国民から国民を守る党を守る党からNHKから国民からNHKを守る党を守る党から国民を守る党を守る党を守る党を守る党から国民からNHKから国民からNHKからNHKから国民からNHKを守る党を守る党からNHKから国民からNHKからNHKから国民を守る党から国民を守る党を守る党を守る党を守る党からNHKから国民から国民を守る党を守る党からNHKからNHKから国民からNHKからNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党から国民を守る党を守る党からNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党を守る党からNHKを守る党を守る党を守る党を守る党からNHKからNHKから国民を守る党から国民を守る党を守る党から国民からNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKを守る党を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党から国民を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党を守る党を守る党を守る党から国民からNHKから国民からNHKを守る党を守る党から国民を守る党を守る党を守る党を守る党を守る党を守る党を守る党を守る党を守る党からNHKから国民から国民を守る党を守る党から国民を守る党を守る党を守る党を守る党を守る党から国民を守る党から国民を守る党から国民からNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党から国民を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党を守る党から国民からNHKからNHKからNHKを守る党からNHKを守る党を守る党からNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党を守る党からNHKから国民を守る党から国民を守る党を守る党からNHKからNHKからNHKからNHKからNHKを守る党からNHKを守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党からNHKを守る党を守る党を守る党からNHKからNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党からNHKを守る党を守る党を守る党からNHKからNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKからNHKを守る党からNHKを守る党からNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党を守る党からNHKを守る党を守る党を守る党から国民からNHKからNHKを守る党からNHKから国民を守る党から国民を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党から国民からNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党から国民を守る党を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党からNHKからNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党からNHKを守る党を守る党を守る党からNHKから国民を守る党から国民を守る党を守る党からNHKから国民を守る党から国民を守る党を守る党から国民からNHKからNHKを守る党からNHKからNHKからNHKを守る党からNHKを守る党を守る党からNHKからNHKからNHKを守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党を守る党を守る党から国民からNHKからNHKを守る党からNHKからNHKを守る党からNHKからNHKからNHKを守る党からNHKを守る党を守る党からNHKからNHKからNHKを守る党からNHKを守る党を守る党からNHKからNHKを守る党からNHKから国民を守る党を守る党を守る党を守る党を守る党を守る党を守る党を守る党
@youz
Copy link
Author

youz commented Dec 26, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment