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.