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.