ルビー、ψ 0(ψ X(ψ M + 1(Ω M + 1 Ω M + 1))(0))+ 999663ポイント
私はきちんと私のプログラムを理解すると仮定すると、私のスコアはψさ0(ψ X(ψ M + 1(Ω M + 1 Ω M + 1))(0))+ 999663ポイントψは序崩壊関数であり、Xはカイです関数(Mahlo崩壊関数)。Mは最初のMahloの「序数」です。
このプログラムは、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(I 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(ψ I(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
これは、スコア0で何も印刷しないプログラムです。したがって、
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]