红宝石,ψ 0(ψ X(ψ M + 1(Ω M + 1 Ω M + 1))(0))+ 999663个
假设我明白我的程序适当地,我的分数是ψ 0(ψ X(ψ M + 1(Ω M + 1 Ω M + 1))(0))+ 999663个,其中ψ是一个序折叠功能,X是智功能(Mahlo折叠功能),而M是第一个Mahlo'ordinal'。
该程序是我在Golf上编写的程序的扩展,其数量比TREE(3)大,并且在此之前完全胜过所有其他解决方案。
z=->x,k{f=->a,n,b=a,q=n{c,d,e=a;!c ?q:a==c ?a-1:e==0||e&&d==0?c:e ?[[c,d,f[e,n,b,q]],f[d,n,b,q],c]:n<1?9:!d ?[f[b,n-1],c]:c==0?n:[t=[f[c,n],d],n,d==0?n:[f[d,n,b,t]]]};x==0??p:(w="\\"*k+"\"";y="";(0..1.0/0).map{|g|y+="x=#{f[x,g]};puts x==0??p:"+w+"#{z[f[x,g],k*2+1]}"+w+";"};y)};h=-1;(0..1.0/0).map{|i|puts "puts \"#{z[[i,h=[h,h,h]],1]}\""}
在线尝试!
红宝石,ψ 0(ψ 我(I 我))+ 999674个
z=->x,k{f=->a,n,b=a{c,d,e,q=a;a==c ?a-1:e==0||d==0?(q ?[c]:c):e ?[[c,d,f[e,n,b],q],f[d,n,b],c,q]:[n<1?9:d&&c==0?[d]:d ?[f[c,n],d]:[f[b,n-1],f[c,n,b]],n,n]};x==0??p:(w="\\"*k+"\"";y="";(0..1.0/0).map{|g|y+="x=#{f[x,g]};puts(x==0??p:"+w+"#{z[f[x,g],k*2+1]}"+w+");"};y)};h=0;(0..1.0/0).map{|i|puts("puts(\"#{z[h=[h,h,h,0],1]}\")")}
在线尝试!(警告:它不会做太多,因为显然(0..1.0/0).map{...}
无法终止。这也是我打印无限多个程序的方式。)
红宝石,ψ 0(ψ 我(0))+ 999697个
z=->x,k{f=->a,n,b=a{c,d,e=a;a==c ?a-1:e==0||d==0?c:e ?[[c,d,f[e,n,b]],d-1,c]:[n<1?9:d&&c==0?[d]:d ?[f[c,n-1],d]:[f[b,n-=1],f[c,n,b]],n,n]};x==0??p:(w="\\"*k+"\"";y="";(0..1.0/0).map{|g|y+="x=#{f[x,g]};puts(x==0??p:"+w+"#{z[f[x,g],k*2+1]}"+w+");"};y)};h=0;(0..1.0/0).map{|i|h=[h];puts|i|puts("puts(\"#{z[hz[h=[h],1]}\")")}
在线尝试!
(0..5).map{...}
而是实施一个更合理的测试程序:
z=->x,k{f=->a,n,b=a{c,d,e=a;a==c ?a-1:e==0||d==0?c:e ?[[c,d,f[e,n,b]],d-1,c]:[n<1?9:d&&c==0?[d]:d ?[f[c,n-1],d]:[f[b,n-=1],f[c,n,b]],n,n]};x==0??p:(w="\\"*k+"\"";y="";(0..5).map{|g|y+="x=#{f[x,g]};puts(x==0??p:"+w+"#{z[f[x,g],k*2+1]}"+w+");"};y)};h=0;(0..5).map{|i|h=[h];puts("puts(\"#{z[h,1]}\")")}
在线尝试!
不幸的是,即使有(1..1).map{...}
,你会发现这个程序是非常占用大量内存。我的意思是,输出的长度超过了SCG(13)之类的东西。
通过使用更简单的程序,我们可以考虑一些值:
a = value you want to enter in.
z=->x,k{f=->a,n,b=a{c,d,e=a;a==c ?a-1:e==0||d==0?c:e ?[[c,d,f[e,n,b]],d-1,c]:[n<1?9:d&&c==0?[d]:d ?[f[c,n-1],d]:[f[b,n-=1],f[c,n,b]],n,n]};x==0??p:(w="\\"*k+"\"";y="x=#{f[x,k]};puts(x==0??p:"+w+"#{z[f[x,k],k*2+1]}"+w+");";y)};puts("puts(\"#{z[a,1]}\")")
在线尝试!
它基本上以以下格式重复打印同一程序:
x=...;puts(x==0??p:"...");
初始化x
记录的位置与程序相关的序号,并且减少了"..."
保留程序的位置x
。如果为x==0
,则打印
p
这是一个不打印任何零分数的程序,因此
x=0;puts(x==0??p:"p");
得分为1,并且
x=1;puts(x==0??p:"x=0;puts(x==0??p:\"p\");");
得分为2,并且
x=2;puts(x==0??p:"x=1;puts(x==0??p:\"x=0;puts(x==0??p:\\\"p\\\");\");");
得分为3等,并且我的原始程序以以下格式打印这些程序
puts("...")
...
上面列出的程序在哪里。
我的实际程序实际上以以下格式打印这些程序
x=0;puts(x==0??p:"p;p;p;p;p;...");
无限次,对于,如ω
,它的作用类似于
x=ω;puts(x==0??p:"(x=0 program); (x=1 program); (x=2 program); ...")
因此,该程序的分数
x=(some_ordinal);puts(x==0??p:"...")
是1+some_ordinal
,得分为
puts("x=(some_ordinal);puts(x==0??p:\"...\")")
是1+some_ordinal+1
,得分为
z=->x,k{f=->a,n,b=a{c,d,e=a;a==c ?a-1:e==0||d==0?c:e ?[[c,d,f[e,n,b]],d-1,c]:[n<1?9:d&&c==0?[d]:d ?[f[c,n-1],d]:[f[b,n-=1],f[c,n,b]],n,n]};x==0??p:(w="\\"*k+"\"";y="";(0..1.0/0).map{|g|y+="x=#{f[x,g]};puts(x==0??p:"+w+"#{z[f[x,g],k*2+1]}"+w+");"};y)};puts("puts(\"#{z[some_ordinal,1]}\")")
是1+some_ordinal+2
。
平凡的解释:
f[a,n,b]
减少序数a
。
每个自然数都减少到其下的自然数。
f[k,n,b] = k-1
[c,0,e]
是的继任者c
,一直减少到c
。
f[[c,0,e],n,b] = c
[c,d,e]
是向后关联的超操作,减少如下:
f[[c,d,0],n,b] = c
f[[c,d,e],n,b] = [[c,d,f[e,n,b]],f[d,n,b],c]
[0]
是第一个无穷序数(等于ω),并按如下方式减少:
f[[0],0,b] = [9,0,0]
f[[0],n,b] = [n,n,n]
[c]
是cth欧米茄序号,并减少如下:
f[[c],0,b] = [9,0,0]
f[[c],n,b] = [[f[b,n-1,b],f[c,n,b]],n,n]
Note the two-argument array here.
[c,d]
是ψ d(c)和减少如下:
f[[c,d],0,b] = [9,0,0]
f[[0,d],n,b] = [[d],n,n]
f[[c,d],n,b] = [[f[c,n,c],d],n,n]
[c,d,e,0]
与基本上相同[c,d,e]
,不同之处在于它枚举操作[c]
而不是后继操作。
f[[c,0,e,0],n,b] = [c]
f[[c,d,0,0],n,b] = [c]
f[[c,d,e,0],n,b] = [[c,d,f[e,n,b],0],f[d,n,b],c,0]