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.