Aproximada da constante de Fransén-Robinson


9

Dada uma entrada n, imprima o valor da constante de Fransén-Robinson com ndígitos após a casa decimal, com arredondamento.

Regras

  • Você pode assumir que todas as entradas são números inteiros entre 1 e 60.
  • Você não pode armazenar nenhum valor relacionado - a constante deve ser calculada, não recuperada.
  • O arredondamento deve ser realizado com os seguintes critérios:
    • Se o dígito após o dígito final for menor que cinco, o dígito final deverá permanecer o mesmo.
    • Se o dígito que segue o dígito final for maior ou igual a cinco, o dígito final deverá ser incrementado em um.
  • Você só deve produzir os primeiros n+1dígitos.
  • Aplicam-se brechas padrão.

Casos de teste

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

E se você não tiver suporte para flutuadores de precisão arbitrários?
Flawr 27/05

11
@ flawr Suponho que o idioma precisaria usar alguma forma de concatenação de strings ou similar. Caso contrário, pode não ser o idioma para esse desafio.
Addison Crump

Pena que, basicamente, só nos deixa codificar os números. PS: Por que você não adiciona f(60)aos casos de teste? Dessa forma, os participantes não teria que buscá-la externamente =)
flawr

@flawr hardcoding não é permitido pela regra 2.
Addison Crump

Os zeros à direita estão corretos?
Mego 27/05

Respostas:


7

Mathematica, 44 39 36 25 bytes UTF-8

  • -5 bytes graças ao Sp3000
  • -3 bytes graças a kennytm
  • -11 bytes graças ao senegrom

Riscado 44 ainda é regular 44 !!

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

Exemplo:

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

Saídas 2.81.

Explicação

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

O primeiro passo leva Numérico do resto, com #(primeiro parâmetro) + 1 precisão. !(fatorial) faz o que você esperaria. {x, -1, Infinity}define os limites do Integral (estranhamente formatado).


Eu não posso testar isso, então eu assumo isso rodadas corretamente?
Addison Crump

11
@VTCAKAVSMoACE Eu verifiquei n = 60, ele arredonda corretamente. (O 61st dígito é um 8). Você pode consultar os documentos de Wolfram N.
NoOneIsHere

Coolio. Apenas checando.
Addison Crump

Você provavelmente pode usar um literal no lugar de Infinity. Eu sugeriria dividir por 0, se isso não produzisse ComplexInfinity...
Sp3000

11
tente N[∫1/x!{x,-1,∞},#+1]&onde está Unicode-F74C; é exibido como 𝕕no Mathematica. (note que o espaço antes &também não é necessário ...)
senegrom
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.