pengantar
Saya menemukan pertanyaan ini ditutup karena tidak jelas, namun itu ide yang bagus. Saya akan melakukan yang terbaik untuk menjadikan ini tantangan yang jelas.
Fungsi Riemann Zeta adalah fungsi khusus yang didefinisikan sebagai kelanjutan analitik dari
ke pesawat kompleks. Ada banyak rumus setara untuk itu yang membuatnya menarik untuk golf kode.
Tantangan
Tulis sebuah program yang mengambil 2 float sebagai input (bagian nyata dan imajiner dari bilangan kompleks) dan mengevaluasi fungsi Riemann Zeta pada saat itu.
Aturan
- Input dan output melalui konsol ATAU fungsi input dan nilai balik
- Dibangun dalam bilangan kompleks tidak diizinkan, gunakan pelampung (angka, ganda, ...)
- Tidak ada fungsi matematika kecuali
+ - * / pow log
dan fungsi trigonometri bernilai nyata (jika Anda ingin mengintegrasikan, gunakan fungsi gamma, ... Anda harus memasukkan definisi fungsi ini dalam kode) - Input: 2 mengapung
- Output: 2 mengapung
- Kode Anda harus mengandung nilai yang memberikan presisi arbitrer secara teoritis ketika dibuat arbitrer besar / kecil
- Perilaku pada input 1 tidak penting (ini adalah satu-satunya kutub fungsi ini)
Kode terpendek dalam byte menang!
Contoh Input dan Output
Memasukkan:
2, 0
Keluaran:
1.6449340668482266, 0
Memasukkan:
1, 1
Keluaran:
0,5821580597520037, -0.9268485643308071
Memasukkan:
-1, 0
Keluaran:
-0.08333333333333559, 0
code-golf
math
complex-numbers
calculus
Jens Render
sumber
sumber
eps
dan masukanx
adaN
yang diperhitungkan dizeta(x)
dalamnyaeps
; atau harus adaN
yang hanya bergantung padaeps
dan menjamin bahwa untuk setiapx
(atau mungkin untukx
lebih dari fungsi tertentueps
dari kutub) itu mencapai batas; atau mungkinN
bergantung padax
, tetapi jawaban harus menjelaskan bagaimana cara menghitungN
diberikanx
daneps
? (Teori bilangan analitis saya tidak banyak, tetapi saya menduga bahwa opsi 2 dan 3 akan melampaui semua kecuali satu atau dua poster reguler).x
dan untuk apa puneps
harus adaP
sedemikian rupa sehingga untuk semuaN>P
output lebih dekat daripadaeps
nilai yang tepat. Apakah ini jelas? Apakah saya perlu mengklarifikasi untuk kasus dengan N yang cukup kecil?Jawaban:
Python - 385
Ini adalah implementasi langsung dari Equation 21 dari http://mathworld.wolfram.com/RiemannZetaFunction.html Ini menggunakan konvensi Python untuk argumen opsional; jika Anda ingin menentukan presisi, Anda bisa meneruskan argumen ketiga ke fungsi, jika tidak maka gunakan 1e-24 secara default.
sumber
z(2,0)
memberikan nilai yang salah, harus pi ^ 2/6.Python 3 ,
303297 byteJawaban ini didasarkan pada jawaban Python RT dengan beberapa modifikasi:
Binomial(n, k)
didefinisikan sebagaip = p * (n-k) / (k+1)
yang berubahBinomial(n,k)
menjadiBinomial(n,k+1)
setiap lulus dari untuk loop.(-1)**k * Binomial(n,k)
menjadip = p * (k-n) / (k+1)
yang membalik tanda di setiap langkah loop for.while
loop telah diubah untuk segera memeriksa apakaha*a + b*b < E
.~
digunakan di beberapa tempat di mana mereka akan membantu dalam golf, menggunakan identitas seperti-n-1 == ~n
,n+1 == -~n
, dann-1 == ~-n
.Beberapa modifikasi kecil lainnya dibuat untuk bermain golf yang lebih baik, seperti meletakkan
for
loop pada satu baris dan panggilan keprint
pada satu baris dengan kode sebelumnya.Saran bermain golf diterima. Cobalah online!
Edit: -6 byte dari sejumlah perubahan kecil.
sumber
Aksioma,
413 315292 byteIni juga akan menerapkan persamaan 21 dari http://mathworld.wolfram.com/RiemannZetaFunction.html Di atas harus menjadi fungsi Axiom yang ditafsirkan z (a, b) di sini 16x lebih lambat dari ini di bawah fungsi Zeta (a, b) [ yang seharusnya menjadi yang dikompilasi] semua tidak berkhianat dan berkomentar [1 detik untuk Zeta () terhadap 16 detik untuk z () untuk satu nilai 20 digit di atas titik apung]. Untuk pertanyaan digit, seseorang akan memilih presisi dengan memanggil digit (); fungsi, misalnya digit (10); z (1,1) harus mencetak 10 digit setelah titik, tetapi digit (50); z (1,1) harus mencetak 50 digit setelah titik.
sumber