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.