Приблизительная константа Франсена-Робинсона


9

Учитывая данные n, выведите значение константы Франсена-Робинсона с nцифрами после десятичного знака с округлением.

правила

  • Вы можете предположить, что все входные данные являются целыми числами от 1 до 60.
  • Вы не можете хранить какие-либо связанные значения - константа должна быть вычислена, а не вызвана.
  • Округление должно выполняться по следующим критериям:
    • Если цифра, следующая за последней цифрой, меньше пяти, последняя цифра должна оставаться неизменной.
    • Если цифра, следующая за последней цифрой, больше или равна пяти, последняя цифра должна быть увеличена на единицу.
  • Вы должны вывести только первые n+1цифры.
  • Применяются стандартные лазейки.

Тестовые случаи

>>> f(0)
3

>>> f(1)
2.8

>>> f(11)
2.80777024203

>>> f(50)
2.80777024202851936522150118655777293230808592093020

>>> f(59)
2.80777024202851936522150118655777293230808592093019829122005

>>> f(60)
2.807770242028519365221501186557772932308085920930198291220055

Что если у вас нет поддержки произвольных значений точности?
flawr

1
@flawr Я полагаю, что язык должен был бы использовать некоторую форму конкатенации строк или аналогичную. В противном случае, это может быть не язык для этого вызова.
Эддисон Крамп

Жаль, что это в основном оставляет нас с жестким кодированием чисел. PS: почему бы вам не добавить f(60)к тестам? Таким образом, участникам не придется извлекать его извне =)
flawr

@flawr Жесткое кодирование запрещено по правилу 2.
Аддисон Крамп

Конечные нули в порядке?
Мего

Ответы:


7

Mathematica, 44 39 36 25 UTF-8 байтов

  • -5 байт благодаря Sp3000
  • -3 байта благодаря kennytm
  • -11 байт благодаря сенегрому

Вычеркнуто 44 все еще регулярно 44!

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

Пример:

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

Выходы 2.81.

объяснение

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

Первый шаг занимает Nчисло остальных, с #(первый параметр) + 1 точность. !(факториал) делает то, что вы ожидаете. {x, -1, Infinity}устанавливает границы для (странно отформатированного) интеграла.


Я не могу проверить это, поэтому я предполагаю, что это раунды правильно?
Эддисон Крамп

1
@VTCAKAVSMoACE Я проверил n = 60, он округляется правильно. ( 61St цифра является 8). Вы можете посмотреть на документы Вольфрама для N.
NoOneIsHere

Coolio. Просто проверяю.
Эддисон Крамп

Вы, вероятно, можете использовать литерал вместо Infinity. Я бы предложил разделить на 0, если бы ComplexInfinityвместо этого не получилось ...
Sp3000

1
попробуйте N[∫1/x!{x,-1,∞},#+1]&где Unicode-F74C; отображается как 𝕕в Mathematica. (обратите внимание, что пробел &также не нужен ...)
Сенегром
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.