Approssimazione della costante di Fransén-Robinson


9

Dato un input n, emette il valore della costante di Fransén-Robinson con ncifre dopo il decimale, con arrotondamento.

Regole

  • Si può presumere che tutti gli input siano numeri interi compresi tra 1 e 60.
  • Non è possibile memorizzare alcun valore correlato: la costante deve essere calcolata, non richiamata.
  • L'arrotondamento deve essere eseguito con i seguenti criteri:
    • Se la cifra che segue la cifra finale è inferiore a cinque, la cifra finale deve rimanere la stessa.
    • Se la cifra che segue la cifra finale è maggiore o uguale a cinque, la cifra finale deve essere incrementata di una.
  • È necessario emettere solo le prime n+1cifre.
  • Si applicano scappatoie standard.

Casi test

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

Cosa succede se non si dispone di supporto per galleggianti di precisione arbitrari?
flawr,

1
@flawr Suppongo che il linguaggio dovrebbe usare una qualche forma di concatenazione di stringhe o simile. Altrimenti, potrebbe non essere la lingua per questa sfida.
Addison Crump,

Peccato, questo in pratica ci lascia solo a scrivere i numeri. PS: Perché non aggiungi f(60)ai casi di test? In questo modo i partecipanti non avrebbero dovuto prenderlo esternamente =)
flawr

@flawr Hardcoding non è consentito dalla regola 2.
Addison Crump,

Gli zero finali sono ok?
Mego,

Risposte:


7

Mathematica, 44 39 36 25 UTF-8 byte

  • -5 byte grazie a Sp3000
  • -3 byte grazie a kennytm
  • -11 byte grazie a senegrom

Cancellato 44 è ancora regolare 44 !!

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

Esempio:

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

Uscite 2.81.

Spiegazione

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

Il primo passo prende l' Numerica del resto, con #(primo parametro) + 1 precisione. !(fattoriale) fa quello che ti aspetteresti. {x, -1, Infinity}imposta i limiti per l'integrale (formattato in modo strano).


Non posso provarlo, quindi presumo che questo round sia corretto?
Addison Crump,

1
@VTCAKAVSMoACE Ho controllato n = 60, si arrotonda correttamente. (La 61cifra è una 8). Puoi consultare i documenti di Wolfram per N.
NoOneIsHere

Coolio. Solo controllando.
Addison Crump,

Probabilmente puoi usare un valore letterale al posto di Infinity. Suggerirei di dividere per 0, se invece non producesse ComplexInfinity...
Sp3000,

1
prova N[∫1/x!{x,-1,∞},#+1]&dov'è Unicode-F74C; viene visualizzato come 𝕕in Mathematica. (nota che anche lo spazio precedente &non è necessario ...)
senegrom,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.