Tujuan Anda adalah mencetak (ke output standar) sebanyak mungkin, menggunakan hanya sepuluh karakter kode.
- Anda dapat menggunakan fitur apa pun dari bahasa Anda, kecuali fungsi eksponensial bawaan.
- Demikian pula, Anda tidak boleh menggunakan notasi ilmiah untuk memasukkan nomor. (Jadi, tidak
9e+99
.)
- Demikian pula, Anda tidak boleh menggunakan notasi ilmiah untuk memasukkan nomor. (Jadi, tidak
- Program harus mencetak nomor tanpa masukan dari pengguna. Demikian pula, tidak ada bacaan dari file lain, atau dari Web, dan sebagainya.
- Program Anda harus menghitung satu nomor dan mencetaknya. Anda tidak dapat mencetak string, atau mencetak digit yang sama ribuan kali.
- Anda dapat mengecualikan dari batas 10 karakter kode apa pun yang diperlukan untuk mencetak apa pun. Misalnya, dalam Python 2 yang menggunakan
print x
sintaks, Anda dapat menggunakan hingga 16 karakter untuk program Anda. - Program harus benar-benar berhasil dalam output. Jika perlu waktu lebih dari satu jam untuk berjalan di komputer tercepat di dunia, itu tidak valid.
- Output mungkin dalam format apapun (sehingga Anda dapat mencetak
999
,5e+100
dll) - Infinity adalah konsep abstrak , bukan angka. Jadi ini bukan output yang valid.
code-challenge
number
busy-beaver
Ypnypn
sumber
sumber
If it takes longer than an hour to run on any computer in the world, it's invalid.
tidak objektif. Saya bisa (secara teoritis) membuat komputer yang membutuhkan waktu satu jam untuk mengubah satu negara-T* 2^x
?Jawaban:
Bahasa Wolfram
ack (9!, 9!) =
Output dalam Notasi Panah.
sumber
ack(99!,9)
jauh, jauh lebih besar.Perl,> 1.96835797883262e + 18
Mungkin bukan jawaban terbesar ... hari ini! Tapi tunggu cukup ribuan tahun dan itu akan terjadi!
Sunting:
Untuk menjawab beberapa komentar, dengan "millenia yang cukup," sebenarnya saya maksud dengan n 100s tahun.
Agar adil, jika kematian besar pembekuan / panas alam semesta adalah bagaimana alam semesta akan berakhir (diperkirakan terjadi ~ 10 100 tahun), nilai "final" adalah ~ 10 214 , yang tentu saja jauh lebih sedikit daripada beberapa tanggapan lain (meskipun, "fluktuasi kuantum acak atau penerowongan kuantum dapat menghasilkan Ledakan Besar lainnya di 10 10 56) tahun"). Jika kita mengambil pendekatan yang lebih optimis (misalnya model siklik atau multiverse), maka waktu akan berlangsung tanpa batas, dan suatu hari nanti di beberapa alam semesta, pada beberapa arsitektur bit tinggi, jawabannya akan melebihi beberapa yang lain.
Di sisi lain, seperti yang ditunjukkan,
time
memang dibatasi oleh ukuran bilangan bulat / panjang, sehingga dalam kenyataannya sesuatu seperti~0
selalu akan menghasilkan jumlah yang lebih besar daripadatime
(yaitu maks yangtime
didukung oleh arsitektur).Ini bukan jawaban yang paling serius, tapi saya harap kalian menikmatinya!
sumber
time
membungkus dan mengembalikan sejumlah kecil di beberapa titik? Tergantung pada apakah itu perl 32-bit atau 64-bit kurasaWolfram ≅ 2.003529930 × 10 19728
Ya, itu bahasa! Ini mendorong back-end situs Wolfram Alpha yang populer. Ini satu-satunya bahasa yang saya temukan di mana fungsi Ackermann terintegrasi dan disingkat menjadi kurang dari 6 karakter.
Dalam delapan karakter:
Atau ≅ 2.003529930 × 10 19728
ack(4,3)
,ack(5,2)
dll. jauh lebih besar, tetapi terlalu besar.ack(4,2)
mungkin nomor Ackermann terbesar daripada yang dapat sepenuhnya dihitung dalam waktu kurang dari satu jam.Angka yang lebih besar diberikan dalam bentuk simbolis, misalnya:
Aturan mengatakan format output apa pun diizinkan, jadi ini mungkin valid. Ini lebih besar dari 10 10 19727 , yang lebih besar dari salah satu entri lain di sini kecuali untuk faktorial yang diulang.
Namun,
lebih besar dari faktorial berulang. Jumlah terbesar yang bisa saya dapatkan dalam sepuluh karakter adalah:
Ini luar biasa besar, Semesta tidak cukup besar untuk mewakili porsi signifikan dari digit-digitnya, bahkan jika Anda mengambil log berulang-ulang dari angka tersebut.
sumber
ack(4,2)+1
solusi saya .ack(4,2)
adalah input yang tidak valid. Input bahasa alami W | A bahkan tidak boleh dianggap sebagai bahasa pemrograman. Ini bukan Turing yang lengkap, dan Anda tidak bisa menulis bahkan program dasar di dalamnya seperti algoritma Euclid. Karena alasan ini, saya rasa ini bukan jawaban yang valid, tidak seperti kueri Google.Shell Python2, 3.010.301 digit
Menghitung panjang: Python akan menambahkan "L" ke angka-angka panjang ini, sehingga ia melaporkan 1 karakter lebih dari hasil yang memiliki digit.
20 digit pertama dan terakhir:
sumber
9 * 2**9999999
, jadi orang bisa berargumen itu menggunakan eksponensial.***built-in*** exponentiation functions
tidak diizinkan jadi ini mungkin tergelincir di bawah aturan. +1floor(log10(9 * 2**9999999))+1
CJam, 2 × 10 268.435.457
Ini menghitung b , didefinisikan sebagai berikut:
a 0 = 10
a n = a n - 1 2
b = 20 × a 28
Latar Belakang
Ini mengikuti ide yang sama dengan jawaban Claudiu , tetapi tidak berdasarkan itu. Saya punya ide serupa yang saya posting hanya beberapa menit setelah dia mempostingnya , tetapi saya membuangnya karena tidak mendekati batas waktu.
Namun, saran aditsu untuk meng-upgrade ke Java 8 dan ide saya untuk menggunakan kekuatan 10 memungkinkan CJam untuk menghitung angka di luar jangkauan GolfScript, yang tampaknya disebabkan oleh beberapa bug / batasan Bignum Ruby.
Bagaimana itu bekerja
CJam, ≈ 8,1 × 10 1,826,751
Butuh waktu kurang dari lima menit pada mesin saya, jadi masih ada ruang untuk perbaikan.
Ini menghitung 20 , didefinisikan sebagai berikut:
a 0 = 20
a n = (n × a n - 1 ) 2
Bagaimana itu bekerja
sumber
Python 3, 9 * 2 ^ (7 * 2 ^ 33)> 10 ^ 18.100.795.813
9 * 2 ^ (2 ^ 35)> 10 ^ 10.343.311.894Sunting: Jawaban baru saya adalah:
Jawaban lama, untuk anak cucu:
Tepatnya sepuluh karakter.
Saya mencetak nomor dalam hex, dan
Karena itu, kode saya yang sebenarnya adalah:
Bukti bahwa itu berjalan dalam waktu yang ditentukan dan menghasilkan sejumlah ukuran yang ditentukan:
Nomor saya> 10 ^ (15032385538 * log (16))> 10 ^ 18100795813
3 digit hex kurang dari cetakan wc di atas karena inisial
0x9
.Python 3 diperlukan karena dalam python 2,
7<<33
akan menjadi panjang, dan<<
tidak butuh waktu lama sebagai input.Saya tidak dapat menggunakan 9 << (1 << 36) sebagai gantinya karena:
Dengan demikian, ini adalah jumlah formulir yang paling besar
a<<(b<<cd)
dapat dicetak di komputer saya.Dalam semua kemungkinan, mesin tercepat di dunia memiliki lebih banyak memori daripada saya, jadi jawaban alternatif saya adalah:
9 * 2 ^ (9 * 2 ^ 99)> 10 ^ (1.7172038461 * 10 ^ 30)
Namun, jawaban saya saat ini adalah yang terbesar yang dikirimkan siapa pun, jadi mungkin cukup baik. Juga, ini semua dengan asumsi bit-shifting diperbolehkan. Tampaknya, dari jawaban lain yang menggunakannya.
sumber
Bahasa apa pun dengan nama konstan yang cukup pendek, kira-kira 18 digit.
Saya akan memposting ini sebagai jawaban PHP tapi sayangnya
M_PI
membuat ini terlalu lama! Tetapi PHP menghasilkan 8.0839634798317E + 17 untuk ini. Pada dasarnya, itu menyalahgunakan kurangnya presisi absolut dalam PI: psumber
(/ 99(sin pi))
(14 karakter). Kesalahan dalam TI-83:99/sin(π
(8 karakter) menyebabkan pembagian dengan nol. Bekerja di LibreOffice Calc :=99/SIN(PI(
(10 karakter, tidak menghitung=
) menghitung 808423047055000000. LibreOffice auto-menyisipkan dua terakhir))
di=99/SIN(PI())
.99/sin(π
lima byte atau delapan? Saya tahu TI-BASIC menyimpan banyak perintah sebagai byte tunggal; apakahsin(
salah satunya?Haskell
Tanpa trik:
Dapat diperdebatkan tanpa menghitung apa pun:
Mengadaptasi jawaban Niet :
sumber
floor(infinity)
itu nomor terbatas? Apa-apaan Haskell?isInfinite $ 1 / 0 -- True
. Sejauh yang saya tahu, IEEE 754 mendefinisikan1 / 0
infinity.1 / 0 == Infinity
,.Powershell - 1.12947668480335E + 42
Gandakan 99 Pebibytes kali 9.000.000.000.000 Pebibytes.
sumber
J (
((((((((9)!)!)!)!)!)!)!)!
)Ya, itu banyak.
10^(10^(10^(10^(10^(10^(10^(10^6.269498812196425)))))))
menjadi tidak terlalu tepat.sumber
!!9x
belum mencetak apa pun ke layar. Saya sungguh meragukan bahwa itu!!!!!!!!9x
akan pernah dihitung.!!9x
akhirnya dicetak ke layar. Saya terkesan bahwa itu benar-benar menghitung nilainya, tetapi masih sepenuhnya gagal peluru 5.K / Kona :
8.977649e2611.774896e308!170
membuat vektor angka dari 0 hingga 1691.6+
menambahkan satu ke setiap elemen vektor & mengonversi ke real (kisaran 1,6 hingga 170,6)*/
mengalikan setiap elemen array menjadi satuJika Kona mendukung presisi quad, saya bisa melakukan
*/9.+!999
dan berkeliling 1e2584. Sayangnya, itu tidak dan saya dibatasi hingga presisi ganda.metode lama
!99
membuat vektor angka dari 0 hingga 989+
menambahkan 9 ke setiap elemen vektor (sekarang berkisar 9 hingga 107)9.*
mengalikan setiap elemen dengan 9.0 (secara implisit mengkonversi ke real, jadi 81.0 hingga 963.0)*/
mengalikan setiap elemen vektor bersama-samasumber
HTML, 9999999999
.. berhasil.
sumber
9^9999
cetakan9^9999
. Hanya bilang :)PHP_INT_MAX
is 11Python - Bervariasi, hingga 13916486568675240 (sejauh ini)
Tidak sepenuhnya serius tapi saya pikir itu akan menyenangkan.
Dari semua yang saya coba,
len
paling konsisten membuat saya id besar.Menghasilkan 13916486568675240 (17 digit) di komputer saya dan 13842722750490216 (juga 17 digit) di situs ini . Saya kira ini mungkin untuk memberi Anda serendah 0, tetapi bisa juga lebih tinggi.
sumber
calculate
apa - apa.*99
bagian itu meminta perhitungan.id(id)
atauid(0j)
, Anda dapat mengalikan dengan999
vars
secara konsisten memberikan nilai tertinggi (tetapi 4 karakter) diikuti olehsum
. Gunakanprint(sorted([(id(x),x)for x in[id,len,max,min,str,int,ord,chr,sum,map,abs,all,any,bin,bool,eval,oct,vars,iter,list,set,repr,round,zip,type,pow,dict,dir,hex]])[::-1])
untuk memeriksa.Golfscript, 1e + 33.554.432
Menghitung
10 ^ (2 ^ 25)
, tanpa menggunakan eksponen, berjalan dalam 96 detik:Ia dapat menghitung hingga
9 ^ (2 ^ 9999)
, jika hanya diberikan waktu yang cukup, tetapi menambahkan eksponen dalam dengan satu membuatnya membutuhkan ~ tiga kali lipat waktu, sehingga batas satu jam akan segera tercapai.Penjelasan :
Menggunakan versi sebelumnya dengan ide yang sama:
Hancurkan:
Tumpukan di awal setiap blok terdiri dari satu nomor, nomor saat ini. Ini dimulai sebagai
8
. Kemudian:Jadi tumpukan, langkah demi langkah, terlihat seperti ini:
... dll. Ditulis dalam notasi matematika progresnya adalah:
sumber
wc
. Saya akan mengedit untuk membuatnya lebih jelaswc -c
untuk membuat output lebih jelas10{.*}25
menghasilkan 33.554.434 digit dan selesai dalam 90 detik pada mesin saya. Saya tidak tahu mengapa, tetapi10{.*}26*
tidak mencetak apa pun.wxMaxima ~ 3x10 49.948 (atau 10 8.565.705.514 )
Output adalah
Tidak yakin apakah itu cukup sesuai dengan spesifikasi (terutama format output satu), tapi saya dapat menekan lebih besar:
Output adalah
Itu kira-kira 10 8.565.705.514 yang secara signifikan lebih besar dari sebagian besar jawaban teratas dan dihitung dalam waktu sekitar 2 detik. The
bfloat
Fungsi memberikan presisi sewenang-wenang .sumber
Haskell, 4950
Aww man, itu tidak banyak! 10 karakter dimulai setelah tanda dolar.
sumber
print
? Juga,9/0.000001
lebih besar darisum[1..99]
.Mathematica, 2.174188391646043 * 10 ^ 20686623745
Tepatnya sepuluh karakter.
sumber
Shell python,
649539999890001Beats Haskell, bukan jawaban yang serius.
sumber
calculate
jawabannya.9**9**9**9
juga benar, karena itu operator aritmatika (bukan fungsi bawaan).Wolfram Alpha (apakah situs web dianggap sebagai bahasa)?
output
terima kasih kepada Cory untuk tip bahwa ruang bekerja dan juga parens.
sumber
((99!)!)! > 4
tidak pernah kembali.Befunge-93 (1.853.020.188.851.841)
Senang belum ada yang melakukan Befunge (ini ceruk saya), tapi sial saya tidak bisa menemukan trik pintar untuk menambah jumlahnya.
Jadi 9 ^ 16.
Pada dasarnya mengalikan nilai di bagian atas tumpukan dengan dirinya sendiri. Jadi, nilai di atas tumpukan berlaku:
dan
Menghasilkan nilai akhir. Saya akan tertarik untuk melihat apakah ada yang punya ide yang lebih baik.
sumber
Saya lebih suka memposting ini sebagai komentar di atas, tetapi ternyata saya tidak bisa karena saya seorang noob.
Python:
9<<(2<<29)
Saya akan menggunakan bit shift yang lebih besar, tetapi Python tampaknya menginginkan operan yang tepat dari pergeseran menjadi bilangan bulat yang tidak panjang. Saya pikir ini semakin mendekati teori max:
9<<(7<<27)
Satu-satunya masalah dengan ini adalah bahwa mereka mungkin tidak memenuhi aturan 5.
sumber
Matlab (1.7977e + 308)
Matlab menyimpan nilai angka floating-point terbesar (presisi ganda) dalam variabel yang disebut
realmax
. Memintanya di jendela perintah (atau di baris perintah) mencetak nilainya:sumber
realmax+1
. Saya mencobanya untuk bersenang-senang dan mengejutkan itu mengembalikan jumlah yang persis sama dengan yang Anda miliki (kemudian saya tertawa ketika saya menyadari ...eps(realmax)=1.99584030953472e+292
)Python, ca. 1.26e1388
Memberi:
sumber
Setidaknya Python 3.5.0 (64-bit), lebih dari 10 ^ 242944768872896860
Di dunia yang ideal, ini akan terjadi
9<<(1<<63)-1
, tetapi tidak ada cukup byte untuk itu. Jumlah ini sangat besar sehingga membutuhkan hampir 1 EiB memori untuk menampungnya, yang sedikit lebih banyak daripada yang saya miliki di komputer saya. Untungnya, Anda hanya perlu menggunakan sekitar 0,2% dari ruang penyimpanan dunia sebagai swap untuk menahannya. Nilai dalam biner adalah1001
diikuti oleh 8070450532247928832 nol.Jika Python keluar untuk mesin 128-bit, maksimumnya adalah
9<<(9<<99)
, yang membutuhkan memori kurang dari 1 MiYiB. Ini bagus, karena Anda akan memiliki ruang alamat yang cukup untuk menyimpan interpreter Python dan sistem operasi.sumber
Cubix , 9.670457478596419e + 147 (tidak bersaing)
Non-bersaing karena Cubix lebih baru dari tantangan ini. Anda dapat mengujinya secara online di sini , tetapi perhatikan bahwa itu tidak benar-benar mencetak nomornya; Anda harus menjeda program setelah dua yang terakhir
*
dijalankan untuk melihat nilai pada stack.Bagaimana itu bekerja
Cubix adalah esolang 2 dimensi di mana kode tersebut dililitkan di sekitar kubus. Kode ini persis sama dengan jaring kubus berikut, di mana
.
adalah no-op:Kemudian kode dijalankan, dengan penunjuk instruksi (IP) dimulai di sudut kiri atas wajah paling kiri, menghadap ke kanan.
"
Mengaktifkan mode string, di mana semua karakter ditemui hingga berikutnya"
mendorong kode karakter mereka ke stack. IP membungkus semua jalan di sekitar kode, mendorong tiga/
s (47), dua*
s (42), dan dua.
s (46) ke stack, sebelum keluar dari mode string lagi.Di sinilah mulai menarik. Cermin pertama
/
memantulkan IP sehingga menghadap ke atas; kemudian berputar di sekitar kubus, memukul karakter ini:Tiga
*
s mengalikan dua item teratas di tumpukan. Sekarang, tidak seperti kebanyakan bahasa berbasis stack di mana operator aritmatika mengeluarkan argumen mereka, Cubix meninggalkan nilai sebelumnya pada stack. Jadi itu berarti ini menghitung46*46 = 2116, 46*2116 = 97336, 2116*97336 = 205962976
.Ketika IP mencapai
/
lagi, itu berbelok ke kanan. Kemudian menyentuh cermin berikutnya dan mengikuti jalan ini:Dua tanda bintang melipat dua item teratas sekali lagi. Kemudian mirror mengarahkan IP lagi, dan mirror ketiga mengulangi proses sekali lagi:
Akhirnya, IP meninggalkan bagian cermin menuju ke timur. Dua tanda bintang akhirnya berlipat ganda dua kali, meninggalkan hasil 9,670457478596419e + 147 pada tumpukan. Ini bisa dicetak dengan
O
, tetapi tidak ada cara mudah untuk melakukannya karena praktis setiap tempat di kubus sudah digunakan.sumber
Scala, 2 63 -1
Miskin, miskin Scala. Membutuhkan setidaknya 8 karakter untuk mendapatkan a
BigInt
nilai, yang tidak meninggalkan cukup ruang untuk benar-benar menjadi besar.Tetapi dengan hanya 7 karakter kode (dihitung), kami dapat mencetak positif semaksimal mungkin
Long
:sumber
Brainf ** k 256 - 2147483647
Jika Anda mengabaikan fakta bahwa sebagian besar kompiler & penerjemah mengeluarkan data sebagai ascii yang setara (lebih ramping, ini adalah apa adanya;)) , ini akan mengembalikan nilai maksimum dari datatype juru / kompiler.
Pada beberapa sistem ini hanya 256, meskipun pada beberapa (misalnya tambang), ini adalah nilai maksimum integer 32 bit, yaitu 2 147 483 647.
Sunting:
Akan mencetak hal yang sama dalam banyak karakter lebih sedikit
sumber
-1
pada penerjemah yang menggunakan nilai-nilai yang ditandatangani untuk rekamanPerl, tidak bersaing
Saya menggunakan ini untuk menyoroti sudut sedikit tahu perl.
Perl tidak dapat benar-benar bersaing dalam hal ini karena tidak memiliki builtin bignum (tentu saja Anda dapat memuat perpustakaan bignum).
Tapi apa yang diketahui semua orang tidak sepenuhnya benar. Satu fungsi inti sebenarnya bisa menangani angka besar.
The
pack
Formatw
benar-benar dapat mengkonversi ukuran nomor alam antara basis10
dan basis128
. Namun, integer basis 128 direpresentasikan sebagai byte string. Bitstring ituxxxxxxxyyyyyyyzzzzzzz
menjadi byte:1xxxxxxx 1yyyyyyy 0zzzzzzz
(setiap byte dimulai dengan 1 kecuali yang terakhir). Dan Anda dapat mengonversi string seperti itu ke basis 10 dengan membongkar. Jadi Anda bisa menulis kode seperti:pemberian yang mana:
Anda dapat mengganti
4**4
dengan nilai yang lebih besar hingga Anda merasa itu terlalu lama atau menggunakan terlalu banyak memori.Sayangnya ini terlalu panjang untuk batas dari tantangan ini, dan Anda dapat berargumen bahwa hasil basis 10 dikonversi ke string sebelum menjadi hasilnya sehingga ekspresi tidak benar-benar menghasilkan angka. Tetapi secara internal perl benar-benar melakukan aritmatika yang diperlukan untuk mengubah input ke basis 10 yang saya selalu anggap agak rapi.
sumber
TI-36 (bukan 84, 36), 10 byte, kira-kira. 9.999985426E99
Kalkulator yang lebih tua juga dapat diprogram sampai batas tertentu;)
69!58.4376
Ini sangat dekat dengan rentang maksimum yang dapat ditampilkan oleh kalkulator TI:
-1E100<x<1E100
sumber
Perl 6 , 456.574 digit
Tidak ada TIO karena butuh 2 menit untuk berjalan.
sumber