Yang ini cukup sederhana.
Tuliskan program terpendek yang Anda bisa, sambil menghasilkan output terbanyak.
Untuk membuatnya menyenangkan, program yang menghasilkan keluaran tak terbatas akan didiskualifikasi.
Pemenangnya adalah program dengan rasio ukuran / ukuran kode keluaran terbesar.
Hasilnya didasarkan pada apa yang berfungsi di komputer saya , yaitu Mac yang menjalankan Mac OS X 10.7.5 dengan Intel Core i5 dan memori 8GB.
\n
Jawaban:
Python: 8 kode karakter, 387420489 output karakter - Rasio: 48427561.125: 1
Kita dapat memiliki rasio cenderung hingga tak terbatas dengan menambahkan lebih banyak
**9
s:Sebagai contoh:
yang memiliki rasio ~ 10 10 10 10 10 8.568 (jumlah yang tak terbayangkan besar).
sumber
**9
, bukankah akhirnya menjadiInfinity
?**9
s yang dapat Anda masukkan sebelum hasilnyaInfinity
.Jadi, ini semua adalah program bagus yang menghasilkan banyak output dengan kode yang sangat sedikit, tetapi tidak satupun yang benar - benar singkat ...
brainfuck, 5 karakter, 255 byte output
Saya pikir ini adalah satu-satunya kasus penggunaan di mana brainfuck benar-benar unggul. Saya tahu ini tidak akan menang, tapi saya tidak berpikir kita bisa melakukan lebih baik daripada contoh Python. Bukan hanya itu, tapi ...
brainfuck, 4 karakter, output tanpa batas
Saya menduga bahwa ini adalah program keluaran tak terbatas terpendek di luar sana.
Sebenarnya, tunggu sebentar, teman saya baru saja membuat yang benar-benar bagus.
Python, 80 byte, jumlah output yang tidak diketahui
Program ini pasti akan berhenti pada akhirnya, tetapi hanya akan melakukannya setelah sekitar 8.000 tahun. Jumlah pasti karakter yang dihasilkan tergantung pada kecepatan komputer Anda dapat menghasilkan karakter.
sumber
.
menghasilkan aliran tanpa batas 0 karakter.Perl - 19 byte, 187200000000000000 byte keluaran (9852631578947368.42: 1)
166 petabyes dengan satu pernyataan cetak, menggunakan tidak lebih dari 1,7GB memori.
Ada beberapa hal yang membuat tantangan ini lebih menarik yang saya pikir akan terjadi. Perl tampaknya menolak untuk mengalokasikan lebih dari 1GB memori ke daftar tunggal mana pun. Oleh karena itu, referensi skalar 4-byte ke string dalam hanya dapat diulang 26e7 ≈ 2 28 kali.
$]
adalah nomor 'versi lama perl' yang, sebagai string, panjangnya 8 byte, menyerupai5.016002
.Dengan lebih banyak memori sistem, itu harus bisa lebih tinggi. Dengan asumsi 8GB penuh sebenarnya tersedia, Anda seharusnya dapat menggunakan
$]x9e8
untuk string bagian dalam, yang akan menghasilkan 1,62 exabytes.sumber
Ruby dan Python, 13 karakter, output char 599994, ~ rasio 46153: 1
Cukup menaikkan angka yang sangat besar ke kekuatan angka yang sangat besar lainnya. Butuh sekitar 20 detik untuk berjalan. Saya tidak dapat menambah angka karena itu akan membuat angka menjadi tak terhingga.
(Saya melakukan ini sebelumnya , saya saat ini sedang bekerja membuat loop untuk hasil yang lebih lama)
Sunting: Saya berhasil!
Ruby, 28 karakter, 6e599999 output char, ~ rasio 6e599998 (saya pikir)
Belum diuji (untuk alasan yang jelas), tapi saya cukup yakin angka pertama adalah sekitar 1e599994, yang dikalikan dengan 599994 adalah sekitar 6e599999. Secara teoritis itu akan berhasil, tapi saya tidak yakin apakah itu akan merusak komputer Anda, jadi penafian: Saya tidak bertanggung jawab jika itu membahayakan komputer Anda dengan cara apa pun: P
Tentu saja, Anda dapat terus berjalan:
Ruby, 37 karakter, 6e359992800041 output char, ~ rasio 6e359992800040
Dan seterusnya, tapi saya ragu komputer mana pun bisa mengatasinya: P
sumber
Jika input tak terbatas diizinkan,
Karena tidak,
(25128 output: 20 input = 1256,4: 1)
Saya tidak di kotak Linux, tapi saya kira Anda bisa melakukan sesuatu seperti
dan dapatkan output yang sangat besar. (via respons GigaWatt)
sumber
timeout 99d
. Yap, runtime 99 hari. Juga, saya tidak yakin tentang ini, tetapi pada akhirnya Anda akan mengosongkan kolam entropi/dev/random
dan itu akan memblokir, jadi/dev/urandom
mungkin lebih tepat. (Saya berhasil mendapatkan 40 MB / s denganurandom
dan hanya 128 KB / s denganrandom
)HQ9 +, 11471
Hitungan karakter aktual bervariasi tergantung pada penerjemah, tetapi mungkin sekitar 10.000 akan benar?
sumber
C #: 108 karakter. Rasio: 742123445489230793057592: 1
Itu hanya mengunduh dan mencetak Daftar panitera wikipedia Mahkamah Agung Amerika Serikat (4344904 karakter) 18446744073709551615 kali.
sumber
for(ulong i=0;i<ulong.MaxValue;i++){Console.Write(new string('a',int.MaxValue));}
2147483647 karakter * 18446744073709551615 kali = 39614081238685424720914939905/81 => Rasio: 489062731341795366924875801~ - ~! - Rasio: (64 4 4 4 64 ) / 154 ~ = 10 10 10 10 10 1.583328920493678
Cara kerjanya: Pertama, set
'
ke 4 ^ 3, atau 64. Kemudian, ia membuat''
fungsi yang set'
ke'
^ 4 * kali (di mana * adalah inputnya).'''
kemudian dibuat fungsi yang memanggil''
dengan input sebagai'
^ 4. Kemudian,''''
dibuat fungsi yang memanggil'''
dengan'
^ 4 sebagai inputnya.''''
kemudian dipanggil dengan input 64. Akhirnya,''
diubah menjadi fungsi yang mencetak spasi * kali; ini kemudian disebut dengan input dari'
.Ternyata, pada akhirnya,
'
adalah 64 4 4 4 64 , dan panjang program saya adalah 154 ; meninju itu ke Wolfram | Alpha dan meludahkan 10 10 10 10 10 1,583328920493678 , yang bahkan tidak repot untuk menghitung. Saya bahkan tidak tahu berapa banyak digit yang dikandungnya , tetapi 64 4 4 berisi 463. Cukup bagus untuk bahasa yang hanya mendukung angka eksplisit unary dan tidak memiliki fungsi eksponen; 3Aku bisa membuat ini jauh lebih besar, tapi, berlebihan.
sumber
Javascript: 27 karakter; 260.431.976 char output; 9,645.628,74 rasio
Kode ini secara rekodekan mengkodekan input
61
ke Base64 61 kali. Pengkodean setiap input panjangn
ke Base64 menghasilkan output panjangn * 8/6
, dibulatkan menjadi kelipatan 4.Ini harus dijalankan dari lingkungan konsol JavaScript yang secara asli mendukung fungsi encoding Base64
btoa
. (Peramban modern apa pun, tetapi bukan Node.js.) Catatan Chrome tidak dapat berjalan lebih tinggi darii=61
, sementara Firefox hanya dapat menjangkaui=60
. Perhatikan juga bahwa konsol Chrome tidak dapat benar-benar menampilkan output karena terlalu besar, tetapi Anda dapat memverifikasi ukuran hasilnya dengan menjalankanJika program ini dibiarkan berjalan maksimal
i=99
, itu akan menghasilkan output hipotetis ukuran 14.566.872.071.840 (14,5 triliun, 14.5e12) karakter, untuk rasio hipotetis sekitar 540 miliar (5.39e11).sumber
Ruby, 23 karakter - ~ 500000000000000 (5e14) Output
Ti-Basic 84, 13 karakter - ~ 3000 Output
Beri nama program
prgmA
sumber
ruby,
2839644 karakterTidak terlalu pendek, tetapi mengimbanginya dalam output, yang sangat banyak saya belum bisa mengukurnya.
sumber
1e127
keluaran karakter. Lagi pula, menugaskan ke variabel akan memotong ukuran kode menjadi setengah. juga,1e99
adalah jumlah yang lebih besar yang membutuhkan lebih sedikit ruang. juga, gunakanmap
alih-aliheach
, gunakanputs
alih-alihprint
, hapus spasi kosong antaraprint
dan"ier...
. Anda juga bisa mengganti string besar itu dengan'a'*999
(atau bahkan?a*999
) yang merupakan string lebih panjang yang membutuhkan lebih sedikit ruang. Ringkasan: ini sama sekali bukan golf(0..1e99).map
ke variabel? sepertia=(0...1e99).map;a{a{a{a{a{puts'a'*99}}}}}
a=(0...1e99).map
. Anda mungkin ingin sedikit membalas nada itu.0..1e9
akan menggunakan sekitar 4GB.Rasio Mathematica 9 chars: ~ 4564112: 1
Berikut ini adalah gambar input Mathematica. Saya belum tahu cara membuatnya di SE.
Berikut screenshot yang menunjukkan jumlah digit dalam output.
IntegerDigits
mengonversi output ke daftar digit.Length
menghitung jumlah digit.Keystrokes untuk masuk: 9, ctrl6, 9, ctrl6, 9, ctrl6, 9, ctrl6, 9....
sumber
Befunge-93: 48 karakter, sekitar ((2 ^ 32) ^ 2) * 10 karakter output
Tumpukan Befunge secara teoritis tidak terbatas, tetapi angka-angka yang disimpan tumpukan terbatas pada ukuran integer panjang yang tidak ditandatangani (di sini diasumsikan 32 bit). Jadi, bagi juru bahasa Befunge, (x + 1)> x salah untuk nilai x yang benar. Kami menggunakan fakta ini untuk pertama-tama mendorong semua nilai dari nol ke maksimum (dua kali, dengan satu setiap setiap angka ketiga), dan kemudian untuk setiap nilai pada tumpukan, kami mengeluarkan dan menurunkannya, lalu membuangnya ketika mencapai nol. Akhirnya tumpukan kosong dan program berakhir. Saya mungkin sedikit kurang pada ukuran output, tetapi harus di suatu tempat di stadion baseball itu.
sumber
C: 48 karakter, kira-kira. (2 ^ 32 - 1) * 65090 byte keluaran
Perhatikan bahwa 65090 tidak tepat, dan tergantung pada ukuran tumpukan. Program akhirnya akan berhenti ketika crash. Juga, saya hanya bisa meletakkan string yang lebih panjang dan lebih lama di put () untuk membuat jatah mendekati tak terhingga, tapi itu sepertinya agak curang.
sumber
java (131): tidak diketahui tetapi jumlah terbatas
Menggunakan kemungkinan rendah Math.random () untuk mendapatkan 0 dalam satu lingkaran dan kemudian pergi 2 ^ 64-1 loop melalui pendahuluan dengan output 1234567890;
sumber
Python 3, 115 byte, berjalan selama 7983 tahun (# karakter tidak diketahui)
EDIT: ymbirtt mengalahkan saya untuk itu ._
Saya tahu, ini tidak terlalu pendek, dan saya tahu bahwa jawaban Python yang lain jauh lebih lama, tapi saya memutuskan untuk mencobanya.
Program ini berjalan sekitar 8000 tahun, yang, seperti Anda ketahui, adalah waktu yang cukup lama.
Apa yang dilakukannya adalah terus mendapatkan waktu saat ini menggunakan
datetime.datetime.now()
fungsi, dan membandingkannya dengan9999-12-31 24:59:59.999999
, yang sejauh yang saya tahu tanggal maksimum dalam Python.Jika ini adalah sama, program berhenti. Jika tidak, itu terus-menerus menghasilkan
a
.sumber