Вызов
Учитывая целое число качестве входных данных, где s ≥ 1, выведите значение ζ ( s ) (где ζ ( x ) представляет дзета-функцию Римана ).
Дальнейшая информация
определяется как:
Вы должны вывести свой ответ с точностью до 5 десятичных знаков (не больше, не меньше). Если ответ оказывается бесконечным, вы должны вывести или эквивалент на вашем языке.
Встроенные модули Riemann Zeta разрешены, но это не так интересно;)
Примеры
Выходы должны быть точно такими, как показано ниже
Input -> Output
1 -> ∞ or inf etc.
2 -> 1.64493
3 -> 1.20206
4 -> 1.08232
8 -> 1.00408
19 -> 1.00000
премия
В качестве утешения за разрешение встроенных функций я предложу вознаграждение в 100 повторений за самый короткий ответ, который не использует встроенные дзета-функции. (Зеленая галочка покажет самое короткое решение в целом)
выигрыш
Самый короткий код в байтах побеждает.
19
действительно выводить текст1.00000
? Не будет1
или1.0
будет действительным? Кажется, ты превратил это в вызов хамелеона.Ответы:
Mathematica,
9711 байтОбъяснение:
Без встроенного:
Mathematica, 23 UTF-8 байтов
Благодаря Келли Лоудер
источник
N@*Zeta
сохраняет два байта.@*
является (левым) оператором композиции:f@*g
обозначает функцию, значение которой в аргументеx
равноf[g[x]]
.1
этого выводитComplexInfinity
, и он округляет до5
места. (например1.64493
)*
работает?N~5
но ваше объяснение использует6
.Javascript,
81706665 байтRunnable примеры:
источник
Array(1e6).fill()
на[...Array(1e6)]
и замените первое(s)
наs
APL (Дьялог) ,
2221 байтСмотри, мама, никаких встроенных модулей! -1 благодаря нгн.
Поскольку в Dyalog APL нет бесконечностей, я использую предложенную Иверсоном нотацию .
Попробуйте онлайн!
{
анонимная функция:1=⍵:
если аргумент один, то:'¯'
вернуть макрон⋄
еще!9
факториал девяти (362880)⍳
первое , что многие целые I ntegers⍵*⍨
поднять их до силы аргумента÷
взаимные значения+/
сумма5⍕
формат с пятью десятичными знаками}
[конец анонимной функции]источник
1E6
->!9
C
747069 байтКомпилировать с
-fwrapv
. Это займет некоторое время, чтобы произвести вывод.Посмотрите, как это работает здесь . Часть
++n>0
заменена++n<999999
, так что вам не нужно ждать. Это сохраняет идентичную функциональность и вывод.источник
float
?TI-Basic, 16 байтов (без встроенных)
источник
99
сE9
где Е является научным Е, то есть составляет 10 ^ 9. (Или, очевидно, что-то меньшее, как E5). Понимание того, что E99 обычно используется для положительной бесконечности, также допускает эту функцию теоретически, если верхняя граница суммирования былаE99
. Эмуляторы могут обеспечить это намного быстрее, чем физический калькулятор. Спасибо за ваши мысли :)C (gcc) ,
1121019484 байтаСпасибо за советы по игре в гольф от потолка.
Попробуйте онлайн!
источник
f(1)
doesn't seem correct.Julia, 36 bytes
источник
MATL, 21 bytes
Try it online!
Explanation
Input
1
is special-cased to outputinf
, which is how MATL displays infinity.Для входных данных кроме
1
суммирования первых2e5
слагаемых достаточно для достижения точности 5 десятичных знаков. Причина в том, что из прямых вычислений этого числа слагаемых достаточно для ввода2
, а для больших показателей хвост ряда меньше.источник
R, 54 байта
Непосредственно находит сумму и форматирует ее по желанию, выводит,
Inf
если a равно 1. Суммирования до9^6
, по-видимому, достаточно, чтобы получить пятизначную точность при одновременном тестировании;9^9
получит лучшую точность при той же длине кода. Я мог бы получить это короче, если бы R имел надлежащий троичный оператор.источник
function(a)round("if"(a-1,sum((1:9^6)^-a)),5)
на несколько байтов короче.function(a)round("if"(a-1,sum((1:9^6)^-a),Inf),5)
работает и все еще короче, чем мое первоначальное решение.Inf
, вот что я получаю, набирая код прямо в поле для комментариев ...C
129 130128 байтовон использует следующую формулу
тест и результаты
источник
Σ(1/(n^s))
? It seems much more complicated...oo
is fine, you don't need to specify it as positivePython 3: 67 bytes (no built-ins)
Nothing fancy, only uses python 3 because of the implicit utf-8 encoding.
Try it online with test cases.
источник
Perl 6, 50 bytes
источник
PARI/GP,
2726 bytesисточник
Jelly, 23 bytes
Try it online!
How?
0
whenabs(input)<=1
to yieldinf
(rather than14.392726722864989
) for1
abs(result)<=1
to format the1.0
as1.00000
источник
Python 3 + SciPy, 52 bytes
Try it online!
источник
∞
for input1
?inf
which is allowed.zetac(n)
instead ofzeta(n,1)
?Jelly, 26 bytes
Don't try it online with this link! (Since this uses 16!~20 trillion terms, running on TIO produces a MemoryError)
Try it online with this link instead. (Uses 1 million terms instead. Much more manageable but takes one more byte)
Returns
inf
for input 1.Explanation
Out of the 26, bytes, 7 are used for computation, 12 are for formatting, and 7 are for producing
inf
on zero. There has to be a better golf for this.источник
ȷ6
is a numeric literal of a million, removing the factorial workaround.MathGolf, 14 bytes (no builtins)
Note that in the TIO link, I have substituted106 instead of 107 . This is because the version submitted here timeouts for all test cases. This results in the answers for 3 and 8 to be off by 1 decimal place. However, there are way bigger 1-byte numerical literals in MathGolf, allowing for arbitrary decimal precision.
◄
for►
, which pushedTry it online!
Explanation
источник
JavaScript (Node.js), 64 bytes
Try it online!
Pointed in Frxstrem's
источник