Perkiraan konstanta Fransén-Robinson


9

Diberikan input n, output nilai konstanta Fransén-Robinson dengan ndigit setelah desimal, dengan pembulatan.

Aturan

  • Anda dapat mengasumsikan bahwa semua input adalah bilangan bulat antara 1 dan 60.
  • Anda tidak boleh menyimpan nilai terkait apa pun - konstanta harus dihitung, tidak ditarik kembali.
  • Pembulatan harus dilakukan dengan kriteria sebagai berikut:
    • Jika digit yang mengikuti digit terakhir kurang dari lima, digit akhir harus tetap sama.
    • Jika digit yang mengikuti digit terakhir lebih besar dari atau sama dengan lima, digit akhir harus ditambah satu.
  • Anda hanya harus menampilkan n+1digit pertama .
  • Celah standar berlaku.

Uji Kasus

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

Bagaimana jika Anda tidak memiliki dukungan untuk pelampung presisi yang sewenang-wenang?
flawr

1
@ flawr Saya kira bahasa harus menggunakan beberapa bentuk rangkaian string atau sejenisnya. Kalau tidak, itu mungkin bukan bahasa untuk tantangan ini.
Addison Crump

Sayang sekali, itu pada dasarnya hanya membuat kita dengan hardcoding angka. PS: Mengapa kamu tidak menambah f(60)test case? Dengan begitu peserta tidak perlu mengambilnya secara eksternal =)
flawr

@ flawr Hardcoding tidak diizinkan oleh aturan 2.
Addison Crump

Apakah membuntuti nol tidak masalah?
Mego

Jawaban:


7

Mathematica, 44 39 36 25 UTF-8 byte

  • -5 byte berkat Sp3000
  • -3 byte terima kasih kepada kennytm
  • -11 byte terima kasih kepada senegrom

Dicoret 44 masih teratur 44 !!

N[∫1/x!{x,-1,∞},#+1]&

Contoh:

f=N[∫1/x!{x,-1,∞},#+1]&
f[2]

Keluaran 2.81.

Penjelasan

N[               , # + 1] 
  ∫1/x!{x,-1,∞}

Langkah pertama membutuhkan Numeric sisanya, dengan #(parameter pertama) + 1 presisi. !(faktorial) melakukan apa yang Anda harapkan. {x, -1, Infinity}menetapkan batas untuk Integral (diformat aneh).


Saya tidak bisa menguji ini, jadi saya menganggap putaran ini dengan benar?
Addison Crump

1
@ VTCAKAVSMoACE Saya sudah memeriksa n = 60, itu bulat dengan benar. ( 61Digit st adalah 8). Anda dapat melihat dokumen Wolfram untuk N.
NoOneIsHere

Coolio. Hanya mengecek.
Addison Crump

Anda mungkin dapat menggunakan literal sebagai pengganti Infinity. Saya sarankan membagi dengan 0, jika itu tidak menghasilkan ComplexInfinitysebagai gantinya ...
Sp3000

1
coba di N[∫1/x!{x,-1,∞},#+1]&mana Unicode-F74C; ditampilkan seperti 𝕕dalam Mathematica. (perhatikan bahwa ruang sebelumnya &juga tidak diperlukan ...)
senegrom
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.