Desafío
Dado un número entero, , como entrada donde s ≥ 1 genera el valor de ζ ( s ) (donde ζ ( x ) representa la función Riemann Zeta ).
Más información
se define como:
Debería enviar su respuesta a 5 decimales (ni más ni menos). Si la respuesta resulta ser infinita, debe generar o equivalente en su idioma.
Las incorporaciones de Riemann Zeta están permitidas, pero es menos divertido hacerlo de esa manera;)
Ejemplos
Las salidas deben ser exactamente como se muestran a continuación
Input -> Output
1 -> ∞ or inf etc.
2 -> 1.64493
3 -> 1.20206
4 -> 1.08232
8 -> 1.00408
19 -> 1.00000
Generosidad
Como consuelo para permitir incorporaciones, ofreceré una recompensa de 100 repeticiones a la respuesta más breve que no use las funciones integradas de zeta. (La marca de verificación verde seguirá yendo a la solución más corta en general)
Victorioso
El código más corto en bytes gana.
19
realmente el texto1.00000
? ¿No sería1
o1.0
sería válido? Parece que lo has convertido en un desafío de camaleón.Respuestas:
Mathematica,
9711 bytesExplicación:
Sin incorporado:
Mathematica, 23 bytes UTF-8
Gracias a Kelly Lowder
fuente
N@*Zeta
Guarda dos bytes.@*
es el operador de composición (izquierda):f@*g
denota una función cuyo valor en el argumentox
esf[g[x]]
.1
que salgaComplexInfinity
, y se redondea a5
lugares. (por ejemplo1.64493
)*
trabajo?N~5
pero su explicación usa6
.Javascript,
81706665 bytesEjemplos ejecutables:
fuente
Array(1e6).fill()
con[...Array(1e6)]
, y reemplazar el primero(s)
cons
APL (Dyalog) ,
2221 bytesMira ma, no hay complementos! -1 gracias a ngn.
Dado que Dyalog APL no tiene infinitos, uso la notación propuesta por Iverson .
Pruébalo en línea!
{
función anónima:1=⍵:
si el argumento es uno, entonces:'¯'
devolver un macron⋄
más!9
factorial de nueve (362880)⍳
en primer lugar que muchos enteros i ntegers⍵*⍨
elevarlos al poder del argumento÷
valores recíprocos+/
suma5⍕
formato con cinco decimales}
[fin de la función anónima]fuente
1E6
->!9
C,
747069 bytesCompilar con
-fwrapv
. Tomará algún tiempo producir una salida.Véalo funcionar aquí . La parte
++n>0
se reemplaza con++n<999999
, por lo que no tiene que esperar. Esto mantiene idéntica funcionalidad y salida.fuente
float
?TI-Basic, 16 bytes (sin incluir)
fuente
99
porE9
donde E es la E científica, es decir, que representa 10 ^ 9. (O, obviamente, algo más pequeño como E5). Comprender que E99 se usa generalmente para infinito positivo también permite esta funcionalidad teóricamente, si el límite superior de la suma fueE99
. Los emuladores pueden proporcionar esto mucho más rápido que una calculadora física. Gracias por sus pensamientos :)C (gcc) ,
1121019484 bytesGracias por los consejos de golf de ceilingcat.
Pruébalo en línea!
fuente
f(1)
no parece correcto.Julia , 36 bytes
fuente
MATL , 21 bytes
Pruébalo en línea!
Explicación
Input
1
is special-cased to outputinf
, which is how MATL displays infinity.For inputs other than
1
, summing the first2e5
terms suffices to achieve a precision of 5 decimal places. The reason is that, from direct computation, this number of terms suffices for input2
, and for greater exponents the tail of the series is smaller.fuente
R, 54 bytes
Encuentra la suma directamente y formatea según lo deseado, emite
Inf
si a es 1. Sumar9^6
parece ser suficiente para obtener una precisión de cinco lugares sin dejar de ser comprobable;9^9
obtendría una mayor precisión en la misma longitud de código. Podría acortar esto si R tuviera un operador ternario adecuado.fuente
function(a)round("if"(a-1,sum((1:9^6)^-a)),5)
is a few bytes shorter.function(a)round("if"(a-1,sum((1:9^6)^-a),Inf),5)
works and is still shorter than my original solution.Inf
, that's what I get for typing code into the comment box directly...C,
129 130128 bytesit uses the following formula
test and results
fuente
Σ(1/(n^s))
? Parece mucho más complicado ...oo
está bien, no necesita especificarlo como positivoPython 3: 67 bytes (sin elementos integrados)
Nada lujoso, solo usa python 3 debido a la codificación implícita utf-8.
Pruébelo en línea con casos de prueba.
fuente
Perl 6 , 50 bytes
fuente
PARI / GP,
2726 bytesfuente
Jalea , 23 bytes
Pruébalo en línea!
¿Cómo?
0
cuándoabs(input)<=1
cederinf
(en lugar de14.392726722864989
) para1
abs(result)<=1
formatea el1.0
as1.00000
fuente
Python 3 + SciPy, 52 bytes
Pruébalo en línea!
fuente
∞
para entrada1
?inf
que está permitido.zetac(n)
lugar dezeta(n,1)
?Jalea , 26 bytes
¡No lo intentes en línea con este enlace! (Dado que esto usa 16! ~ 20 trillones de términos, la ejecución en TIO produce un error de memoria)
Pruébalo en línea con este enlace en su lugar. (Utiliza 1 millón de términos en su lugar. Mucho más manejable pero toma un byte más)
Devoluciones
inf
para la entrada 1.Explicación
De los 26 bytes, 7 se usan para el cálculo, 12 son para formatear y 7 son para producir
inf
en cero. Tiene que haber un mejor golf para esto.fuente
ȷ6
es un literal numérico de un millón, eliminando la solución factorial.MathGolf , 14 bytes (sin incluir)
Tenga en cuenta que en el enlace TIO, he sustituido106 6 en lugar de 107 7 . Esto se debe a que la versión presentada aquí expira para todos los casos de prueba. Esto da como resultado que las respuestas para 3 y 8 estén apagadas en 1 decimal. Sin embargo, hay muchos literales numéricos de 1 byte más grandes en MathGolf, lo que permite una precisión decimal arbitraria.
◄
por►
, que empujóPruébalo en línea!
Explicación
fuente
JavaScript (Node.js) , 64 bytes
Pruébalo en línea!
Señalado en Frxstrem's
fuente