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.