Beberapa dari Anda mungkin akrab dengan BigNum Bakeoff , yang berakhir dengan cukup menarik. Tujuannya kurang lebih dapat diringkas sebagai menulis program C yang outputnya akan menjadi yang terbesar, di bawah beberapa kendala dan kondisi teoritis misalnya komputer yang dapat menjalankan program.
Dengan semangat yang sama, saya mengajukan tantangan serupa yang terbuka untuk semua bahasa. Syaratnya adalah:
Maksimum 512 byte .
Hasil akhir harus dicetak ke STDOUT. Ini skor kamu. Jika beberapa bilangan bulat dicetak, mereka akan digabungkan.
Output harus berupa bilangan bulat. (Catatan: Infinity bukan bilangan bulat .)
Tidak ada konstanta bawaan yang lebih besar dari 10, tetapi angka / digit baik-baik saja (mis. Konstanta Avogadro (sebagai konstanta bawaan) tidak valid, tetapi 10.000 tidak.)
Program harus diakhiri ketika sumber daya yang disediakan cukup untuk dijalankan.
Hasil cetak harus deterministik ketika disediakan sumber daya yang cukup untuk dijalankan.
Anda diberikan bilangan bulat atau bigint yang cukup besar untuk dijalankan oleh program Anda. Misalnya, jika program Anda mengharuskan penerapan operasi dasar ke angka yang lebih kecil dari 10 1.000.000 , maka Anda dapat menganggap komputer yang menjalankan ini dapat menangani angka setidaknya hingga 10 1.000.000 . (Catatan: Program Anda juga dapat dijalankan pada komputer yang menangani angka hingga 10 2.000.000 , jadi hanya memanggil bilangan bulat maksimum yang dapat ditangani komputer tidak akan menghasilkan hasil yang deterministik.)
Anda diberikan daya komputasi yang cukup untuk program Anda untuk menyelesaikan eksekusi dalam waktu kurang dari 5 detik. (Jadi jangan khawatir jika program Anda telah berjalan selama satu jam di komputer Anda dan tidak akan selesai dalam waktu dekat.)
Tidak ada sumber daya eksternal, jadi jangan berpikir untuk mengimpor fungsi Ackermann kecuali itu built-in.
Semua benda ajaib dipinjam sementara dari dewa yang murah hati.
Sangat besar dengan batas yang tidak diketahui
- Steven H , Pyth f 3 + B³F + ω² (256 26 )
di mana B³F adalah ordinal Gereja-Kleene dengan urutan mendasar
B³F[n] = B³F(n), the Busy Beaver BrainF*** variant
B³F[x] = x, ω ≤ x < B³F
Papan peringkat:
Seni Cukup Cantik , Ruby f ψ 0 (X (Ω M + X (Ω M + 1 Ω M + 1 ) ))) + 29 (9 9 9 )
Steven H , Pyth f ψ (Ω Ω ) + ω² + 183 (256 27! )
Leaky Nun , Python 3 f ε 0 (9 9 9 )
fejfo , Python 3 f ω ω 6 (f ω ω 5 (9e999))
Steven H , Python 3 f ω ω + ω² (9 9 9 99 )
Simply Beautiful Art , Ruby f ω + 35 (9 9 99 )
i .. , Python 2 , f 3 (f 3 (141))
Beberapa catatan:
Jika kami tidak dapat memverifikasi skor Anda, kami tidak dapat meletakkannya di papan peringkat. Jadi, Anda mungkin ingin sedikit menjelaskan program Anda.
Demikian juga, jika Anda tidak mengerti seberapa besar angka Anda, jelaskan program Anda dan kami akan mencoba menyelesaikannya.
Jika Anda menggunakan jenis program Loader , saya akan menempatkan Anda dalam kategori terpisah yang disebut "Sangat besar dengan batas tidak diketahui" , karena nomor Loader tidak memiliki batas atas non-sepele dalam hal hierarki yang tumbuh cepat untuk ' urutan dasar standar '.
Angka akan diberi peringkat melalui hierarki yang tumbuh cepat .
Bagi mereka yang ingin belajar bagaimana menggunakan hierarki yang tumbuh cepat untuk memperkirakan jumlah yang sangat besar, saya hosting server Discord hanya untuk itu. Ada juga ruang obrolan: Ordinality .
Tantangan serupa:
Nomor Terbesar yang Dapat Dicetak
Golf angka lebih besar dari TREE (3)
Program terminasi terpendek yang ukuran outputnya melebihi angka Graham
Bagi mereka yang ingin melihat beberapa program sederhana yang menghasilkan hierarki yang tumbuh cepat untuk nilai-nilai kecil, inilah mereka:
Ruby: hierarki yang tumbuh cepat
#f_0:
f=->n{n+=1}
#f_1:
f=->n{n.times{n+=1};n}
#f_2:
f=->n{n.times{n.times{n+=1}};n}
#f_3:
f=->n{n.times{n.times{n.times{n+=1}}};n}
#f_ω:
f=->n{eval("n.times{"*n+"n+=1"+"}"*n);n}
#f_(ω+1):
f=->n{n.times{eval("n.times{"*n+"n+=1"+"}"*n)};n}
#f_(ω+2):
f=->n{n.times{n.times{eval("n.times{"*n+"n+=1"+"}"*n)}};n}
#f_(ω+3):
f=->n{n.times{n.times{n.times{eval("n.times{"*n+"n+=1"+"}"*n)}}};n}
#f_(ω∙2) = f_(ω+ω):
f=->n{eval("n.times{"*n+"eval(\"n.times{\"*n+\"n+=1\"+\"}\"*n)"+"}"*n);n}
dll.
Untuk beralih dari f_x
ke f_(x+1)
, kami menambahkan satu loop dari n.times{...}
.
Kalau tidak, kita mendiagonalisasi terhadap semua contoh sebelumnya
f_ω(1) = f_1(1)
f_ω(2) = f_2(2)
f_ω(3) = f_3(3)
f_(ω+ω)(1) = f_(ω+1)(1)
f_(ω+ω)(2) = f_(ω+2)(2)
f_(ω+ω)(3) = f_(ω+3)(3)
dll.
sumber
Jawaban:
Ruby, f ψ 0 (X (Ω M + X (Ω M + 1 Ω M + 1 ) ))) + 29 (9 9 9 )
di mana M adalah 'ordinal' Mahlo pertama, X adalah fungsi chi (fungsi Mahlo runtuh), dan ψ adalah fungsi runtuh ordinal.
Cobalah online!
Rincian Kode:
Rincian Matematika:
f
mengurangia
berdasarkann,b,q
.Ide dasarnya adalah membuat sarang yang sangat bersarang
a
dan menguranginya berulang kali hingga berkurang menjadia=0
. Untuk kesederhanaan, biarkanUntuk saat ini, mari kita khawatirkan saja
n
.Untuk bilangan bulat apa pun
k
, kami dapatf[k,n]=k-1
, sehingga kami dapat melihatnyaKami kemudian memiliki, untuk setiap
d
,f[[0,d],n]=n
sehingga kita dapat melihat bahwaKami kemudian memiliki, untuk setiap
c,d,e
,f[[c,0,e],n]=f[[c,d,0],n]=c
. Sebagai contoh,Kami kemudian memiliki, untuk apa pun
c,d,e
yang tidak termasuk dalam kasus sebelumnyaf[[c,d,e],n]=[[c,d,f[e,n]],f[d,n],e]
,. Di sinilah mulai rumit. Beberapa contoh:Dengan cepat landai dari sana. Beberapa tempat menarik:
Akhirnya memperkenalkan lebih banyak argumen
f
fungsi serta lebih banyak kasus untuk array memungkinkan kita untuk melampaui sebagian besar notasi yang dapat dihitung. Beberapa yang sangat dikenal:sumber
Pyth, f ψ (Ω Ω ) + ω 2 +183 (~ 256 27! )
Membutuhkan input yang tidak kosong, tetapi nilainya tidak digunakan.
Penjelasan (untuk versi baru dan benar-benar skor ):
Sangat sulit bagi saya untuk menghitung ukuran ini, terutama karena
ini sudah sore dan saya tidak terlalu akrab dengan hierarki yang tumbuh cepat atau bagaimana saya akan mencoba mencari tahu berapa kali Q melewatiSementara saya sekarang tahu lebih banyak tentang tata cara, saya masih tidak tahu bagaimana menghitung nilai tata cara yang diwakili oleh definisi rekursif dalam program saya. Saya akan bergabung dengan server Discord, tapi itu dengan nama samaran saya lebih suka tidak dihubungkan dengan nama asli saya.y()
alat pemeras.Sayangnya, karena saya tahu sedikit tentang kata hierarki yang tumbuh cepat, saya mungkin sudah kehilangan jawaban Ruby. Sulit bagi saya untuk mengatakannya.Saya mungkin telah mengalahkan jawaban Ruby, tetapi saya tidak 100% yakin.¯ \ _ (ツ) _ / ¯sumber
27^^^27^^27^^4
, atauf<sub>4</sub>(27^^27^^4)) ≈ f<sub>4</sub>(f<sub>3</sub>(f<sub>3</sub>(19)))
.y
operasi untuk diulangy(Q-1)
alih-alih beroperasi hanya padaQ
. Bagaimana hal ini memengaruhi skor?y(Q) = L(y(Q-1))
, per se?Pyth, f 3 + σ -1 + ω 2 (256 26 )
Di mana σ m [n] adalah fungsi Sibuk Berang Σ dari urutan yang
m
dipanggiln
: σ m [n] = Σ m (n). Perintahnya-1
adalah untuk menunjukkan bahwa Berang-berang Sibuk di sini tidak dipanggil pada Mesin Turing yang sebenarnya, melainkan perkiraan dengan pita pembungkusQ
elemen yang terbatas . Ini memungkinkan masalah penghentian untuk dipecahkan untuk program-program ini.TL; DR adalah bahwa ini menciptakan semua kemungkinan program BrainF ** k panjang Q, menjalankannya dalam lingkungan di mana nilai maksimum bilangan bulat adalah Q dan panjang pita adalah Q, dan mengkompilasi semua status dari operasi ini bersama-sama untuk tambahkan (itu adalah
3+
) ke Q, ulangi di atas pada skala f ω 2 .Saya masih memiliki ~ setengah karakter untuk dikerjakan jika saya ingin melakukan sesuatu yang lebih, tetapi sampai kita mengetahui di mana ini saya akan membiarkannya apa adanya.
sumber
python, f 3 (f 3 (141)), 512 byte
Ini sebenarnya bukan jawaban yang valid, tetapi saya tetap ingin mempostingnya. Ikhtisar cepat:
Lagi pula, saya tidak tahu apakah jawaban ini secara teknis sah, tetapi menyenangkan untuk menulis. Jangan ragu untuk mengedit kesalahan yang Anda temukan dalam kode.
sumber
for j in range(f(x)): for j in range(f(x)): x = f(x)
sekalipun. Bergabunglah bersama kami dalam obrolan untuk membahas alasannya!Ruby, mungkin ~ f ω + 35 (9 9 99 )
Cobalah online!
Perkiraan Penjelasan Matematika:
Di bawah ini kira-kira sama dengan program di atas, tetapi disederhanakan sehingga lebih mudah dimengerti.
G(0,k) = k
adalah fungsi dasar kami.Untuk mengevaluasi
G(n,k)
, kami mengambilk
dan menuliskannya sebagaiG(n-1,1) + ... + G(n-2,1) + ... + G(0,1)
.Kemudian ubah semua
G(x,1)
menjadiG(x,2)
dan kurangi1
dari seluruh hasil.Tulis ulang dalam bentuk di atas menggunakan
G(x,2)
, di manax<n
, dan biarkan sisanya di akhir. Ulangi, ubahG(x,2)
keG(x,3)
, dll.Ketika hasilnya mencapai
-1
, kembalikan pangkalan (b
yang akan masukG(x,b)
.)Contoh:
G (1,1):
G (1,2):
G (1,3):
G (2,5):
Melakukan matematika, saya menemukan itu
Dan di luar itu cenderung menjadi sedikit berbulu.
Secara umum, kita punya
sumber
Python 3, f ω ω + ω * ω (9 9 9 99 )
Saya akan segera mendapatkan penjelasan.
sumber
Python 3 , ~ f ε 0 (9 9 9 )
Cobalah online!
sumber
Python 3, 323 byte, g 9e9 (9)
Cobalah online!
Penjelasan
Python 3 adalah bahasa yang benar-benar rekursif, ini berarti bahwa tidak hanya fungsi dapat memanggil dirinya sendiri, suatu fungsi juga dapat mengambil fungsi lain sebagai fungsi input atau output. Menggunakan fungsi untuk membuat diri mereka lebih baik adalah dasar dari program saya.
f = lambda x, a: [a (x), e (x) ((x, a)) [1]]
Definisi
Definisi dijelaskan
a(x)=9^x
a adalah fungsi dasar, saya memilih fungsi ini karena x> 0 => a (x)> x` yang menghindari titik tetap.b(x,f)=a(x), f^x
b adalah fungsi peningkatan umum, dibutuhkan dalam fungsi apa pun dan mengeluarkan versi yang lebih baik. b bahkan dapat diterapkan pada dirinya sendiri:b(x,b)[1]=b^x
b(x,b^x)[1]=b^(x*x)
tetapi untuk sepenuhnya menggunakan kekuatan
b
untuk meningkatkanb
Anda perlu mengambil output dari b dan menggunakannya sebagai b baru, inilah yang dilakukan c0:c0(…,f)=f(…,f)
c0(x,b^x)=b^x(x,b^x)[1]>b^(9↑↑x)
fungsi c (n) yang lebih umum mengambil n argumen terakhir (mulai dari 0) jadi
c(1)(…,f,a)=f(…,f,a)
danc(2)(…,f,a,b)=f(…,f,a,b)
.*l
berarti l adalah array danl[~n]
mengambil argumen terakhird(x,b,c,*l)=a(x), c0(x,b), b(x,c0), b(x,f) for f in l
d menggunakan c0 untuk memutakhirkan b dan b untuk memutakhirkan semua fungsi input lainnya (yang jumlahnya bisa berapa saja karena daftar)d(x,b,c,d)>9^x,b^x,c^x,d^x
dand²(x,b,c,d)>a²(x), b^(9↑↑x), c^(9↑↑x), d^(9↑↑x)
tetapi d menjadi lebih baik jika Anda menggabungkannya dengan c:
c0²(x,b,c0,d)=d^x(9^x,b^x,c0^x,d^x)=…
c0(x,b,c0,d,c1)=c1(x,b,c0,d,c1)=d(x,b,c0,d,c1)=9^x,b^x,c0^x,d^x,c1^x
c0²(x,b,c0,d,c1)=c0(9^x,b^x,c0^x,d^x,c1^x)=c1^x(9^x,b^x,c0^x,d^x,c1^x)=…
semakin banyak c (x) yang Anda tambahkan di akhir semakin kuat jadinya. C0 pertama selalu tetap d:
c0(x,b,c0,d,c4,c3,c2,c1)=c1(…)=c2(…)=c3(…)=c4(…)=d(x,b,c0,d,cX,cX-1,…,c3,c2,c1)=…
Tetapi yang kedua meninggalkan versi berulang di belakang:
Ketika
d^x
akhirnya dihitungc4
akan mengambil versi yang lebih banyak diulang darid
waktu berikutnya. Ketikac4^x
akhirnya dihitungc3
akan mengambil versi iterasi yang lebih banyakc4
, ...Ini menciptakan versi iterasi yang sangat kuat karena
d
:b
penggunaanc0
c0
penggunaanb
b
Semakin meningkatkan diri, ini berarti d menjadi lebih kuat ketika iterasi lebih banyak.Menciptakan rantai panjang c ini adalah apa yang
e(x)=c0^x(x,b,c0,d,c(a(x)),c(a(x)-1),c(a(x)-2),…,c(3),c(2),c(1))[1]
dilakukannya.Ini digunakan
c0^x
untuk memotong yangc0
hanya akan memberid
.The
[1]
berarti bahwa pada akhirnya akan kembali output keduad^…
. Begitub^…
.Pada titik ini saya tidak bisa memikirkan apa pun yang berkaitan dengan e (x) untuk secara signifikan meningkatkan outputnya kecuali meningkatkan input.
Jadi
f(x,a)=a(x),e(a(x))(x,a)[1](x)
gunakan yangb^…
dihasilkan olehe(x)
untuk menghasilkan fungsi basis yang lebih baik dan menggunakan fungsi basis itu untuk memanggile(x)
dengan input yang lebih besar.g(x)=e(x)(x,f)[1](x,a)[1](x)
menggunakan finale(x)
ke sarangf
dan menghasilkan fungsi yang sangat kuat.Perkiraan Fgh
Saya perlu bantuan perkiraan angka ini dengan segala macam fgh.
Versi lama : f ω ω 6 (f ω ω 5 (9e999)), Coba online! Revisi riwayat penjelasan
sumber
f_1(x) = x+x
tetapi dalam jangka panjang, ini tidak terlalu menjadi masalah.x*x
.a2(f_n)~=f_{n+1}
Ruby, f ε 0 2 (5), 271 byte
Cobalah online!
Ini didasarkan pada peta m (n) .
Penjelasan:
m[0][f0][k] = f0[f0[...f0[k]...]]
dengank
iterasi darif0
.m[1][f0][f1][k] = f0[f0[...f0[f1]...]][k]
dengank
iterasi darif0
.m[2][f0][f1][f2][k] = f0[f0[...f0[f1]...]][f2][k]
dengank
iterasi darif0
.Secara umum,
m[n]
mengambiln+2
argumen, iterates argumen pertamaf0
,k
kali ke argumen kedua, dan kemudian menerapkan fungsi yang dihasilkan ke argumen ketiga (jika ada), lalu menerapkan fungsi yang dihasilkan ke argumen keempat (jika ada), dll.Contohnya
m[0][n↦n+1][3] = (((3+1)+1)+1 = 6
Secara umum
m[0][n↦n+1] = n↦2n
,.m[0][m[0][n↦n+1]][3] = m[0][n↦2n][3] = 2(2(2(3))) = 24
Secara umum
m[0][m[0][n↦n+1]] = n↦n*2^n
,.Secara umum,
m[1][m[0]][n↦n+1] = f_ω
dalam hierarki yang tumbuh cepat.dan hasil akhirnya adalah
sumber