Tantangan
Diberikan bilangan bulat, , sebagai input di mana s ≥ 1 menghasilkan nilai ζ ( s ) (Di mana ζ ( x ) mewakili Fungsi Riemann Zeta ).
Informasi lebih lanjut
didefinisikan sebagai:
Anda harus menampilkan jawaban Anda ke 5 tempat desimal (tidak lebih, tidak kurang). Jika jawabannya tidak terbatas, Anda harus mengeluarkan atau setara dalam bahasa Anda.
Riemann Zeta built-in diizinkan, tetapi kurang menyenangkan melakukannya dengan cara seperti itu;)
Contohnya
Keluaran harus persis seperti yang ditunjukkan di bawah ini
Input -> Output
1 -> ∞ or inf etc.
2 -> 1.64493
3 -> 1.20206
4 -> 1.08232
8 -> 1.00408
19 -> 1.00000
Karunia
Sebagai penghiburan untuk memungkinkan built-in, saya akan menawarkan hadiah 100-rep untuk jawaban terpendek yang tidak menggunakan fungsi zeta built-in. (Tanda centang hijau masih akan menuju ke solusi terpendek secara keseluruhan)
Kemenangan
Kode terpendek dalam byte menang.
19
benar - benar menampilkan teks1.00000
? Tidak akan1
atau1.0
valid? Tampaknya Anda telah membuatnya menjadi tantangan bunglon.Jawaban:
Mathematica,
9711 bytePenjelasan:
Tanpa builtin:
Mathematica, 23 UTF-8 byte
Terima kasih kepada Kelly Lowder
sumber
N@*Zeta
menghemat dua byte.@*
adalah (kiri) operator komposisi:f@*g
menunjukkan fungsi yang nilainya di argumenx
adalahf[g[x]]
.1
itu keluaranComplexInfinity
, dan itu bulat ke5
tempat. (mis.1.64493
)*
kerjanya?N~5
tetapi penjelasan Anda menggunakan6
.Javascript,
81706665 byteContoh yang bisa dijalankan:
sumber
Array(1e6).fill()
dengan[...Array(1e6)]
, dan ganti yang pertama(s)
dengans
APL (Dyalog) ,
2221 byteLihat bu, tidak ada built-in! -1 terima kasih kepada ngn.
Karena Dyalog APL tidak memiliki infinitas, saya menggunakan notasi yang diusulkan Iverson .
Cobalah online!
{
fungsi anonim:1=⍵:
jika argumennya satu, maka:'¯'
kembalikan macron⋄
lain!9
faktorial dari sembilan (362880)⍳
pertama yang banyak integer saya ntegers⍵*⍨
angkat mereka ke kekuatan argumen÷
nilai timbal balik+/
jumlah5⍕
format dengan lima desimal}
[akhir dari fungsi anonim]sumber
1E6
->!9
C,
747069 byteKompilasi dengan
-fwrapv
. Butuh waktu untuk menghasilkan output.Lihat berhasil di sini . Bagian
++n>0
diganti dengan++n<999999
, jadi Anda tidak perlu menunggu. Ini menjaga fungsionalitas dan output yang identik.sumber
float
bekerja?TI-Basic, 16 byte (tanpa builtin)
sumber
99
dengan diE9
mana E adalah E ilmiah, yaitu mewakili 10 ^ 9. (Atau jelas sesuatu yang lebih kecil seperti E5). Memahami bahwa E99 umumnya digunakan untuk infinity positif juga memungkinkan fungsi ini secara teoritis, jika batas atas penjumlahan ituE99
. Emulator dapat memberikan ini lebih cepat daripada kalkulator fisik. Terima kasih atas pemikiran Anda :)C (gcc) ,
1121019484 byteTerima kasih atas tip golf dari ceilingcat.
Cobalah online!
sumber
f(1)
sepertinya tidak benar.Julia , 36 byte
sumber
MATL , 21 byte
Cobalah online!
Penjelasan
Input
1
khusus untuk outputinf
dikhususkan , yang merupakan cara MATL menampilkan infinity.Untuk input selain
1
, menjumlahkan2e5
syarat pertama sudah cukup untuk mencapai ketelitian 5 tempat desimal. Alasannya adalah bahwa, dari perhitungan langsung, jumlah istilah ini cukup untuk input2
, dan untuk eksponen yang lebih besar, buntut seri lebih kecil.sumber
R, 54 byte
Menemukan jumlah secara langsung dan memformat seperti yang diinginkan, menghasilkan
Inf
jika a adalah 1. Menjumlahkan9^6
tampaknya cukup untuk mendapatkan akurasi lima tempat sambil masih dapat diuji;9^9
akan mendapatkan akurasi yang lebih baik dalam panjang kode yang sama. Saya bisa mendapatkan ini lebih pendek jika R memiliki operator ternary yang tepat.sumber
function(a)round("if"(a-1,sum((1:9^6)^-a)),5)
lebih pendek beberapa byte.function(a)round("if"(a-1,sum((1:9^6)^-a),Inf),5)
berfungsi dan masih lebih pendek dari solusi asli saya.Inf
, itulah yang saya dapatkan untuk mengetik kode ke dalam kotak komentar secara langsung ...C,
129 130128 bytemenggunakan rumus berikut
tes dan hasil
sumber
Σ(1/(n^s))
? Tampaknya jauh lebih rumit ...oo
baik-baik saja, Anda tidak perlu menentukannya sebagai positifPython 3: 67 byte (tanpa built-in)
Nothing fancy, only uses python 3 because of the implicit utf-8 encoding.
Try it online with test cases.
sumber
Perl 6, 50 bytes
sumber
PARI/GP,
2726 bytessumber
Jelly, 23 bytes
Try it online!
How?
0
whenabs(input)<=1
to yieldinf
(rather than14.392726722864989
) for1
abs(result)<=1
to format the1.0
as1.00000
sumber
Python 3 + SciPy, 52 bytes
Try it online!
sumber
∞
for input1
?inf
yang diizinkan.zetac(n)
sajazeta(n,1)
?Jelly , 26 byte
Jangan coba online dengan tautan ini! (Karena ini menggunakan 16! ~ 20 triliun istilah, menjalankan TIO menghasilkan MemoryError)
Cobalah secara online dengan tautan ini. (Sebagai gantinya, gunakan 1 juta istilah. Jauh lebih mudah dikelola tetapi membutuhkan satu byte lagi)
Pengembalian
inf
untuk input 1.Penjelasan
Dari 26, byte, 7 digunakan untuk perhitungan, 12 untuk format, dan 7 untuk produksi
inf
pada nol. Harus ada golf yang lebih baik untuk ini.sumber
ȷ6
adalah angka numerik dari satu juta, menghilangkan solusi faktorial.MathGolf , 14 byte (tidak ada builtin)
Perhatikan bahwa di link TIO, saya telah diganti106 dari pada 107 . Ini karena versi yang dikirimkan di sini batas waktu untuk semua kasus uji. Ini menghasilkan jawaban selama 3 dan 8 dimatikan dengan 1 desimal. Namun, ada literal numerik 1-byte yang jauh lebih besar di MathGolf, memungkinkan presisi desimal sewenang-wenang.
◄
untuk►
, yang mendorongCobalah online!
Penjelasan
sumber
JavaScript (Node.js) , 64 byte
Cobalah online!
Menunjuk Frxstrem
sumber