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.