Inverse Hamming distance with only Procs

Run Settings
LanguageRuby
Language Version
Run Command
def λ $. += 1 proc.curry end # Convert a Ruby integer to a Church numeral. def church n n.times.reduce(λ { |_, x| x }) { |n| λ { |n, f, x| f[n[f][x]] }[n] } end # Undo the above for printing/verifying that this madness wasn't all for naught. def unchurch p p[-> n { n + 1 }][0] end Common = λ{|f|λ{|x|f[λ{|_|x[x][_]}]}[λ{|x|f[λ{|_|x[x][_]}]}]}[λ{|f,a,b,c,i|λ{|n| n[λ{|x|λ{|a,b|b}}][λ{|a,b|a}]}[i][c][λ{|_|λ{|m,n|n[λ{|n,f,x|f[n[f][x]]}][m]}[λ{| f|λ{|x|f[λ{|_|x[x][_]}]}[λ{|x|f[λ{|_|x[x][_]}]}]}[λ{|f,n|λ{|n|n[λ{|x|λ{|a,b|b}}][ λ{|a,b|a}]}[n][λ{|a,b|a}][λ{|_|λ{|n|n[λ{|x|λ{|a,b|b}}][λ{|a,b|a}]}[λ{|n,f,x|n[λ{ |g,h|h[g[f]]}][λ{|_|x}][λ{|u|u}]}[n]][λ{|a,b|b}][f[λ{|n,f,x|n[λ{|g,h|h[g[f]]}][λ{ |_|x}][λ{|u|u}]}[λ{|n,f,x|n[λ{|g,h|h[g[f]]}][λ{|_|x}][λ{|u|u}]}[n]]]][_]}]}][λ{| m,n|n[λ{|n,f,x|f[n[f][x]]}][m]}[a][b]][λ{|f,x|f[x]}][λ{|f,x|x}]][f[λ{|f|λ{|x|f[λ{ |_|x[x][_]}]}[λ{|x|f[λ{|_|x[x][_]}]}]}[λ{|f,n,m|λ{|n|n[λ{|x|λ{|a,b|b}}][λ{|a,b|a }]}[λ{|m,n|n[λ{|n,f,x|n[λ{|g,h|h[g[f]]}][λ{|_|x}][λ{|u|u}]}][m]}[n][m]][n][λ{|_| f[λ{|n,f,x|n[λ{|g,h|h[g[f]]}][λ{|_|x}][λ{|u|u}]}[n]][λ{|n,f,x|f[n[f][x]]}[m]][_] }]}][a][λ{|f,x|x}]][λ{|f|λ{|x|f[λ{|_|x[x][_]}]}[λ{|x|f[λ{|_|x[x][_]}]}]}[λ{|f,n, m|λ{|n|n[λ{|x|λ{|a,b|b}}][λ{|a,b|a}]}[λ{|m,n|n[λ{|n,f,x|n[λ{|g,h|h[g[f]]}][λ{|_| x}][λ{|u|u}]}][m]}[n][m]][n][λ{|_|f[λ{|n,f,x|n[λ{|g,h|h[g[f]]}][λ{|_|x}][λ{|u|u} ]}[n]][λ{|n,f,x|f[n[f][x]]}[m]][_]}]}][b][λ{|f,x|x}]][c][λ{|n,f,x|n[λ{|g,h|h[g[f ]]}][λ{|_|x}][λ{|u|u}]}[i]]][_]}]}] a = church 10 b = church 17 c = church 8 # bit width of calculations puts "Common bits: #{unchurch Common[a, b, λ { |_, x| x }, c]}" puts "Created #$. lambdas!" # ^ Church zero
Editor Settings
Theme
Key bindings
Full width
Lines