Sistem bilangan ordinal adalah sistem dengan bilangan tak terbatas. Banyak sekali angka tak terbatas. Begitu banyak angka tak terbatas sehingga secara harfiah tidak memiliki tak terhingga untuk mewakili ketidakterbatasannya sendiri. Gambar di atas memberikan sedikit gambaran tentang cara kerjanya. Nomor urut ( konstruksi Von Neumann ) adalah seperangkat tata cara sebelumnya. Misalnya, 0 adalah himpunan kosong, 1 adalah himpunan {0}, 2 adalah himpunan {0, 1} dan lain-lain. Lalu kita sampai ke ω, yaitu {0, 1, 2, 3 ...}. ω + 1 adalah {0, 1, 2, 3 ... ω}, ω dua kali adalah {0, 1, 2 ... ω, ω + 1, ω + 2 ...} dan Anda terus seperti bahwa.
Program Anda akan menampilkan seperangkat tata cara, seperti {0, 1, 4}. Skor Anda kemudian akan menjadi yang paling ordinal daripada semua ordinal dalam set Anda. Untuk {0, 1, 4} skornya adalah 5. Untuk {0, 1, 2 ...}, skornya adalah ω.
Bagaimana Anda menghasilkan tata cara yang Anda minta. Kode tentu saja. Yaitu, program Anda akan menampilkan daftar program lain yang berpotensi tak terbatas, dalam tanda kutip, satu di setiap baris (gunakan string literal "\ n" untuk mewakili baris baru). Suatu program sesuai dengan nilainya seperti yang ditunjukkan di atas. Misalnya, jika Anda output
"A"
"B"
"C"
di mana A, B, dan C sendiri merupakan jawaban yang valid dan memiliki skor {0, 1, 4}, skor program Anda adalah 5. Perhatikan bahwa A, B, dan C, harus berupa program penuh, bukan fragmen.
Berdasarkan aturan di atas, sebuah program yang menghasilkan tidak ada yang memiliki skor 0 (paling ordinal lebih besar dari semua {} adalah 0). Juga, ingat satu set tidak dapat mengandung dirinya sendiri, melalui aksioma dasar . Yaitu, setiap set (dan karenanya ordinal) memiliki jalur ke nol. Ini berarti quine penuh akan tidak valid karena bukan set.
Juga, tidak ada program yang diizinkan untuk mengakses sumber daya luar (file sendiri, internet dll ...). Juga, ketika Anda membuat daftar skor Anda, masukkan bentuk normal skor penyanyi di samping itu jika sudah tidak dalam bentuk normal penyanyi, jika Anda bisa (jika tidak, orang lain bisa).
Setelah memperhitungkan semua hal di atas, jawaban aktual yang Anda poskan harus di bawah 1.000.000 byte (tidak termasuk komentar). (Batas atas ini kemungkinan hanya akan berperan untuk kode yang dibuat secara otomatis). Juga, Anda dapat menambah skor Anda untuk setiap byte yang tidak Anda gunakan (karena kami berhadapan dengan infinities, ini mungkin hanya akan diperhitungkan ketika ordinals sangat dekat atau sama). Sekali lagi, paragraf ini hanya berlaku untuk jawaban yang diposting, bukan yang dihasilkan, atau yang dihasilkan, dan seterusnya.
Ini memiliki tag quine, karena mungkin berguna untuk menghasilkan setidaknya sebagian dari kode sumber sendiri, untuk digunakan dalam membuat tata cara besar. Ini sama sekali tidak diperlukan (misalnya, pengiriman dengan skor 5 mungkin tidak memerlukan kode sumbernya sendiri).
Untuk contoh yang dikerjakan dan dijelaskan, lihat di sini .
sumber
Jawaban:
Haskell: ψ (Ω Ω ω ) + 999672 poin
329 byte kode dengan ordinal ψ (Ω Ω ω ) + 1. Menggunakan representasi tata cara berbasis pohon yang ditemukan oleh Jervell (2005) . Pohon dengan anak-anak α , β ,…, γ dilambangkan
α :@ (β :@ (… :@ (γ :@ Z)…))
. Perintah dari kiri ke kanan ini setuju dengan Jervell, meskipun perhatikan bahwa Madore membalikkannya dari kanan ke kiri.Haskell: Γ 0 + 999777 poin
224 byte kode dengan ordinal Γ 0 + 1. Ini didasarkan pada generalisasi Cacing Beklemishev untuk elemen bernilai ordinal, yang dengan sendirinya diwakili oleh cacing.
Haskell: ε 0 + 999853 poin
148 byte kode dengan ordinal ε 0 + 1. Ini didasarkan pada Cacing Beklemishev . Daftar
mewakili ordinal (ω gamma + ⋯ + ω ß + ω a ) - 1. Jadi output tingkat kedua
[0]
,[1]
,[2]
,[3]
, ... mewakili 1, ω, ω ω , ω ω ω , ..., output-tingkat pertama merupakan ε 0 , dan program awal mewakili ε 0 +1.Haskell: ε 0 + 999807 poin
194 byte kode dengan ordinal ε 0 +1.
Z
mewakili 0, dan kita dapat membuktikan dengan induksi transfinite pada α , kemudian pada β , bahwaα :@ β
≥ ω α + β . Jadi ada output tingkat kedua setidaknya sebesar menara ω ω ⋰ ω , yang berarti output tingkat pertama setidaknya ε 0 dan program awal setidaknya ε 0 + 1.sumber
Ruby, ψ 0 (ψ X (ψ M + 1 (Ω M + 1 Ω M + 1 )) (0)) + 999663 poin
Dengan asumsi saya memahami program saya dengan baik, skor saya adalah ψ 0 (ψ X (ψ M + 1 (Ω M + 1 Ω M + 1 )) (0)) + 999663 poin di mana ψ adalah fungsi runtuh ordinal, X adalah chi fungsi (fungsi Mahlo runtuh), dan M adalah Mahlo 'ordinal' pertama.
Program ini merupakan perpanjangan dari yang saya tulis di Golf nomor lebih besar dari TREE (3) dan benar - benar mengalahkan semua solusi lain di sini untuk saat ini.
Cobalah online!
Ruby, ψ 0 (ψ I (I I )) + 999674 poin
Cobalah online! (peringatan: tidak akan berbuat banyak, karena jelas
(0..1.0/0).map{...}
tidak dapat berakhir. Begitulah cara saya mencetak banyak program juga.)Ruby, ψ 0 (ψ I (0)) + 999697 poin
Cobalah online!
Program pengujian yang lebih masuk akal yang mengimplementasikan
(0..5).map{...}
:Cobalah online!
Sayangnya, walaupun dengan
(1..1).map{...}
, Anda akan menemukan program ini menjadi sangat intensif memori. Maksud saya, panjang output melebihi hal-hal seperti SCG (13).Dengan menggunakan program yang lebih sederhana, kami dapat mempertimbangkan beberapa nilai:
Cobalah online!
Ini pada dasarnya mencetak program yang sama berulang kali, dalam format:
di mana inisialisasi
x
mencatat ordinal program terkait, dan"..."
memegang program setelahx
dikurangi. Jikax==0
, maka ia mencetakyang merupakan program yang tidak mencetak apa pun dengan skor nol, karenanya
memiliki skor 1, dan
memiliki skor 2, dan
memiliki skor 3, dll, dan program asli saya mencetak program-program ini dalam format
di mana
...
program-program yang tercantum di atas.Program saya yang sebenarnya mencetak program-program ini dalam format
Berkali-kali, dan untuk nilai-nilai seperti
ω
itu, ia melakukan sesuatu yang serupaDan dengan demikian, skor program
adalah
1+some_ordinal
, dan skoradalah
1+some_ordinal+1
, dan skoradalah
1+some_ordinal+2
.Penjelasan tata cara:
f[a,n,b]
mengurangi ordinala
.Setiap bilangan alami berkurang menjadi bilangan alami di bawahnya.
[c,0,e]
adalah penerusc
, dan selalu berkurang hinggac
.[c,d,e]
adalah hyperoperation asosiatif mundur, dikurangi sebagai berikut:[0]
adalah ordinal tak terbatas pertama (setara dengan ω) dan mengurangi sebagai berikut:[c]
adalah come omega ordinal dan mengurangi sebagai berikut:[c,d]
adalah ψ d (c) dan mengurangi sebagai berikut:[c,d,e,0]
pada dasarnya sama dengan[c,d,e]
, kecuali ia menyebutkan operasi[c]
bukan operasi penerus.sumber
I
adalah ordinal yang berhubungan dengan kardinal pertama yang tidak dapat diakses, sama seperti ω yang berhubungan dengan aleph null.Java + Brainf ***, ω + 999180 poin
Sebuah program java yang menghasilkan banyak program Brainf ***, yang masing-masing menghasilkan yang terakhir sebagai keluaran.
Mengapa? Karena aku bisa.
Setiap perbaikan pada bagian generasi Brainf *** pasti disambut.
sumber
*
sebagai karakter wildcard, jadi ketikkan sajabrainf***
, ataubrainf
. Semua variasi itu muncul dalam hasil pencarian. codegolf.stackexchange.com/help/searchingLiterate Haskell (GHC 7.10): ω² + 999686 poin.
Ini akan berfungsi sebagai contoh jawaban. Karena ini adalah contoh, itu hanya masuk akal untuk menggunakan pemrograman melek . Itu tidak akan mencetak gol dengan baik. Birdie akan mengurangi nilaiku, tapi oh well. Pertama, mari kita buat fungsi pembantu. Jika x adalah ordinal, sx = x + 1, tetapi kami menemukan penggunaan s yang tidak terduga.
Fungsi pertunjukan untungnya melakukan semua sanitasi string untuk kita. Nilainya juga bernilai 0. Nol bukanlah penerus dari apa pun, tetapi s "" akan sama "main = putStrLn" "", yang sama dengan 0.
Sekarang kita akan membuat fungsi yang mengambil n, dan mengembalikan ω * n.
Ia bekerja dengan membuat ω * n oleh {ω * (n-1), ω * (n-1) +1, ω * (n-1) +2, ...}. Apa q ini? Mengapa, itu alasan kami memiliki tag quine . q adalah fungsi pembantu di atas sejauh ini.
Perhatikan bahwa hanya pada kebutuhan q, bukan penerusnya (s (o (n)), s (o (n))))), karena mereka tidak memerlukan fungsi pembantu (kecuali secara tidak langsung dari o.) Sekarang kita hanya perlu menampilkan semua ω * n untuk hingga n.
Itu dia. ω ^ 2 Setelah hanya menggunakan 314 karakter kode, saya mengklaim bonus final 999686, memberi saya skor akhir ω ^ 2 + 999686, yang sudah dalam bentuk normal cantor.
Empat baris output pertama (0, ω, ω * 2, ω * 3):
sumber
GolfScript, ε₀ + 1 + 999537 poin
Mungkin bisa lebih baik, tetapi saya menjadi terlalu malas untuk men-debug dan membuktikan tata cara yang lebih besar.
Tata cara yang lebih kecil
sumber
Javascript (Nashorn), ω2 + 999807 poin
Nashorn adalah mesin Javascript yang dibangun di Jawa. Ini juga bisa bekerja di Badak, tapi saya belum mengujinya.
sumber