Ini adalah tugas yang agak berbeda. Hitung 1024 digit heksadesimal π, dimulai dari tempat heksadesimal 1024.
Secara formal: Program Anda harus selesai dalam waktu kurang dari 1 menit dan menghasilkan output berikut:
25d479d8f6e8def7e3fe501ab6794c3b976ce0bd04c006bac1a94fb6409f60c45e5c9ec2196a246368fb6faf3e6c53b51339b2eb3b52ec6f6dfc511f9b30952ccc814544af5ebd09bee3d004de334afd660f2807192e4bb3c0cba85745c8740fd20b5f39b9d3fbdb5579c0bd1a60320ad6a100c6402c7279679f25fefb1fa3cc8ea5e9f8db3222f83c7516dffd616b152f501ec8ad0552ab323db5fafd23876053317b483e00df829e5c57bbca6f8ca01a87562edf1769dbd542a8f6287effc3ac6732c68c4f5573695b27b0bbca58c8e1ffa35db8f011a010fa3d98fd2183b84afcb56c2dd1d35b9a53e479b6f84565d28e49bc4bfb9790e1ddf2daa4cb7e3362fb1341cee4c6e8ef20cada36774c01d07e9efe2bf11fb495dbda4dae909198eaad8e716b93d5a0d08ed1d0afc725e08e3c5b2f8e7594b78ff6e2fbf2122b648888b812900df01c4fad5ea0688fc31cd1cff191b3a8c1ad2f2f2218be0e1777ea752dfe8b021fa1e5a0cc0fb56f74e818acf3d6ce89e299b4a84fe0fd13e0b77cc43b81d2ada8d9165fa2668095770593cc7314211a1477e6ad206577b5fa86c75442f5fb9d35cfebcdaf0c7b3e89a0d6411bd3ae1e7e4900250e2d2071b35e226800bb57b8e0af2464369bf009b91e5563911d59dfa6aa78c14389d95a537f207d5ba202e5b9c5832603766295bob
Program dengan kemenangan terpendek terpendek. Anda harus menghitung semua digit saat runtime. Anda tidak harus mengimplementasikan algoritma yang menghitung π; jika bahasa Anda sudah menyediakan fungsionalitas itu, Anda dapat menggunakannya.
sumber
Jawaban:
Sage, 29 char
Ini tidak curang secara teknis, karena angka dihitung pada saat runtime. Yang mengatakan, itu masih murah sekali.
sumber
Shell Utilities: 48
curl -sL ow.ly/5u3hc|grep -Eom 1 '[a-f0-9]{1024}'
sumber
curl -sL ow.ly/shKGY|grep -Po \\w{99,}
(37). Bekerja di Dash. Bash akan membutuhkan byte tambahan.J,
156, 140, 137127Menggunakan formula BBP.
Apakah tidak berjalan di bawah satu menit (tapi kami memiliki jawaban J: p)
Contoh untuk 104 digit pertama π (ini berjalan cepat):
sumber
#:
tidak akan menampilkan digit hex.(... 16 #:) Pi
? Saya pikir kita tidak memiliki angka yang cukup sehingga kita harus menghasilkannya.hfd
untuk mengubah angka menjadi heksadesimal.JavaScript, 536
(Linebreak dan indentasi hanya untuk keterbacaan)
Dibutuhkan sekitar 25 detik, di Google Chrome 14 pada putaran atas saya menggunakan Intel i5 core. Bisakah orang lain menggunakan kode ini? Saya tidak bisa bermain golf dengan baik .. :(
Di bawah ini bukan golf. Saya hanya menghapus semua komentar dan berubah untuk loop ke golf.
Jangan menyebutkan tentang
for(;s>=b;s-=b);s*=16;
. Saya mengubahnya menjadis=(s%b)*16
. : PEDIT: Dihapus fungsi yang sama sekali tidak digunakan. (Kenapa saya menyimpannya?: /)
PS. 100 digit pertama PI
243f6a8885a308d313198a2e03707344a4093822299f31d0082efa98ec4e6c89452821e638d01377be5466cf34e90c6cc0ab
sumber
d='0123456789abcdef',l=3e3,p=Array(l+1).join(2),o='',c=0,e='length';d+=d;function _(a,b,s){for(i=(a[e]>b[e]?a[e]:b[e])-1,r='',c=0;i+1;r=d[Z=F(b,i,1)+c,k=F(a,i,1)+(s?Z:16-Z),c=s?k>15:k<16,k]+r,i--);return r}function F(a,b,f){if(f)f=a[e]>b?d.indexOf(a[b]):0;else{for(i=0,f='',s=16;i++<l;f+=d[~~(s/b)],s=(s%b)*16);while(a--)f=_(f,f,1)}return f}for(j=0;++j<l;p=_(p,(o+='0')+_(_(_(F(2,z=8*j+1),F(1,z+3)),F(0,z+4)),F(0,z+5)),1));console.log(p.slice(1024,2048))
_
mendukung,
operator. Yang paling sulit adalah penggabungan$
dang
ke dalam satu fungsi, dengan argumen opsional untuk memilih di antara mereka.function
danreturn
keduanya cukup mahal, jadiif(f)...else
dan beberapa,1
adalah tradeoff yang masuk akal.PHP
116114 byteSolusi ini menghitung semua pi hingga 2048 digit hex, empat digit hex sekaligus, dan menampilkan setengahnya. Waktu eksekusi kurang dari 5 detik. Rumus yang digunakan untuk perhitungan adalah sebagai berikut:
Presisi diperoleh dengan menyimpan sisanya dalam array, dan melanjutkan setiap divisi 2 ^ 14 secara bertahap.
Python 64 byte
Metode yang sama seperti di atas. Berjalan sekitar 0,2 detik.
Atau sebagai one-liner dalam 73 byte :
sumber
PARI / GP-2.4, 141
Menggunakan rumus Bailey – Borwein – Plouffe (tentu saja).
Berjalan dengan baik di bawah satu menit.
sumber
Kode C:
runtime = 8,06 detik pada intel Quad core
sumber
printf("%X",(int)gA)
daftar panjang itu.PARI / GP - 40 byte
Versi ini 'menipu' dengan menggunakan
\x
untuk menampilkan digit heksadesimal dari hasil.Versi ini membutuhkan 87 byte untuk dikonversi menjadi heksadesimal dengan cara biasa.
Kedua versi berjalan dalam sepersekian detik.
sumber
Perl - 59
Kurang dari 0,1.
sumber
Shell 68
alat: bc -l, tr, cut
Shell 64, alat: bc-l, tr, tail, berbeda dalam pembulatan tempat terakhir
Mungkin dianggap curang, karena pengetahuan bagaimana menghitung PI ada pada 4 * a (1), dan bahwa saya harus menggunakan skala = 2466 diselidiki secara iteratif.
Terima kasih kepada kotak roti untuk ide menggunakan cut.
sumber
dd
perintah dengantail -c1024
untuk menyimpan beberapa karakter.dd
dengancut -c1027-2051
. (Shell memiliki banyak alat untuk memanipulasi aliran teks.)