Aproximar la constante Fransén-Robinson


9

Dada una entrada n, genera el valor de la constante de Fransén-Robinson con ndígitos después del decimal, con redondeo.

Reglas

  • Puede suponer que todas las entradas son enteros entre 1 y 60.
  • No puede almacenar ningún valor relacionado: la constante debe calcularse, no recuperarse.
  • El redondeo debe hacerse con los siguientes criterios:
    • Si el dígito que sigue al dígito final es menor que cinco, el último dígito debe permanecer igual.
    • Si el dígito que sigue al dígito final es mayor o igual a cinco, el dígito final debe incrementarse en uno.
  • Solo debe generar los primeros n+1dígitos.
  • Se aplican lagunas estándar.

Casos de prueba

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

¿Qué pasa si no tiene soporte para flotadores de precisión arbitraria?
flawr

1
@flawr Supongo que el lenguaje tendría que usar alguna forma de concatenación de cadenas o similar. De lo contrario, puede que no sea el idioma para este desafío.
Addison Crump

Lástima, eso básicamente solo nos deja con codificar los números. PD: ¿Por qué no agregas f(60)a los casos de prueba? De esa forma, los participantes no tendrían que buscarlo externamente =)
error

@flawr Hardcoding no está permitido por la regla 2.
Addison Crump

¿Los ceros finales están bien?
Mego

Respuestas:


7

Mathematica, 44 39 36 25 UTF-8 bytes

  • -5 bytes gracias a Sp3000
  • -3 bytes gracias a kennytm
  • -11 bytes gracias a senegrom

Tachado 44 sigue siendo regular 44 !!

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

Ejemplo:

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

Salidas 2.81.

Explicación

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

El primer paso toma la Nnumérica del resto, con #(primer parámetro) + 1 precisión. !(factorial) hace lo que esperarías. {x, -1, Infinity}establece los límites para la integral (extrañamente formateada).


No puedo probar esto, ¿así que supongo que se redondea correctamente?
Addison Crump

1
@VTCAKAVSMoACE Lo busqué n = 60, se redondea correctamente. (El 61dígito st es un 8). Puedes consultar los documentos de Wolfram N.
NoOneIsHere

Coolio Solo revisando.
Addison Crump

Probablemente pueda usar un literal en lugar de Infinity. Sugeriría dividir por 0, si eso no produce en su ComplexInfinitylugar ...
Sp3000

1
pruebe N[∫1/x!{x,-1,∞},#+1]&donde está Unicode-F74C; se muestra como 𝕕en Mathematica. (tenga en cuenta que el espacio anterior &tampoco es necesario ...)
senegrom
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.