Przybliż przybliżoną stałą Franséna-Robinsona


9

Biorąc pod uwagę wejście n, wyjście wartość stałej Fransen-Robinson z ncyfr po miejsca po przecinku z zaokrągleniem.

Zasady

  • Możesz założyć, że wszystkie dane wejściowe są liczbami całkowitymi od 1 do 60.
  • Nie możesz przechowywać żadnych powiązanych wartości - stała musi zostać obliczona, a nie przywołana.
  • Zaokrąglanie należy wykonać według następujących kryteriów:
    • Jeśli cyfra po ostatniej cyfrze jest mniejsza niż pięć, ostatnia cyfra musi pozostać taka sama.
    • Jeżeli cyfra po ostatniej cyfrze jest większa lub równa pięciu, ostatnia cyfra musi zostać zwiększona o jeden.
  • Musisz podać tylko pierwsze n+1cyfry.
  • Obowiązują standardowe luki.

Przypadki testowe

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

Co zrobić, jeśli nie masz obsługi dowolnych pływaków precyzji?
flawr

1
@flawr Podejrzewam, że język musiałby używać jakiejś formy łączenia łańcuchów lub podobnego. W przeciwnym razie może nie być językiem tego wyzwania.
Addison Crump

Szkoda, że ​​w zasadzie pozostawia nam to tylko zakodowanie liczb. PS: Dlaczego nie dodajesz f(60)do przypadków testowych? W ten sposób uczestnicy nie musieliby go pobierać zewnętrznie =)
flawr

@flawr Hardcoding jest zabroniony przez zasadę 2.
Addison Crump

Czy końcowe zera są w porządku?
Mego

Odpowiedzi:


7

Mathematica, 44 39 36 25 bajtów UTF-8

  • -5 bajtów dzięki Sp3000
  • -3 bajty dzięki kennytm
  • -11 bajtów dzięki senegrom

Przekreślone 44 jest nadal regularne 44 !!

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

Przykład:

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

Wyjścia 2.81.

Wyjaśnienie

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

Pierwszy krok zajmuje Nresztę, z #(pierwszym parametrem) + 1 precyzją. !(silnia) robi to, czego można oczekiwać. {x, -1, Infinity}ustawia granice dla (dziwnie sformatowanej) Całki.


Nie mogę tego przetestować, więc zakładam, że te rundy są prawidłowe?
Addison Crump

1
@VTCAKAVSMoACE Sprawdziłem n = 60, zaokrągla poprawnie. ( 61Cyfrą st jest an 8). Możesz zajrzeć do dokumentacji Wolframa N.
NoOneIsHere

Coolio. Tylko sprawdzam.
Addison Crump

Prawdopodobnie możesz użyć literału zamiast Infinity. Sugerowałbym podzielenie przez 0, jeśli to nie ComplexInfinity
dałoby rezultatu

1
spróbuj N[∫1/x!{x,-1,∞},#+1]&gdzie jest Unicode-F74C; wyświetla się jak 𝕕w Mathematica. (zwróć uwagę, że wcześniejsze miejsce &również nie jest konieczne ...)
senegrom
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.