Défi
Étant donné un entier, , comme entrée où s ≥ 1 sort la valeur de ζ ( s ) (où ζ ( x ) représente la fonction Riemann Zeta ).
Plus d'informations
est défini comme:
Vous devez afficher votre réponse à 5 décimales (ni plus, ni moins). Si la réponse s'avère être l'infini, vous devez sortir ou équivalent dans votre langue.
Les modules intégrés Riemann Zeta sont autorisés, mais c'est moins amusant de le faire de cette façon;)
Exemples
Les sorties doivent être exactement comme indiqué ci-dessous
Input -> Output
1 -> ∞ or inf etc.
2 -> 1.64493
3 -> 1.20206
4 -> 1.08232
8 -> 1.00408
19 -> 1.00000
Prime
En guise de consolation pour autoriser les intégrés, j'offrirai une prime de 100 rep à la réponse la plus courte qui n'utilise pas les fonctions zêta intégrées. (La coche verte ira toujours à la solution la plus courte dans l'ensemble)
Gagnant
Le code le plus court en octets gagne.
19
vraiment sortir le texte1.00000
? Ne serait-ce pas1
ou1.0
serait-il valide? Il semble que vous en ayez fait un défi de caméléon.Réponses:
Mathematica,
9711 octetsExplication:
Sans intégré:
Mathematica, 23 octets UTF-8
Merci à Kelly Lowder
la source
N@*Zeta
enregistre deux octets.@*
est l'opérateur de composition (gauche):f@*g
désigne une fonction dont la valeur à l'argumentx
estf[g[x]]
.1
il sortComplexInfinity
, et il arrondit aux5
endroits. (ex.1.64493
)*
marche?N~5
mais votre explication utilise6
.Javascript,
81706665 octetsExemples exécutables:
la source
Array(1e6).fill()
par[...Array(1e6)]
et remplacer le premier(s)
pars
APL (Dyalog) ,
2221 octetsRegardez ma, pas intégré! -1 grâce à ngn.
Étant donné que Dyalog APL n'a pas d'infinis, j'utilise la notation proposée par Iverson .
Essayez-le en ligne!
{
fonction anonyme:1=⍵:
si l'argument est un, alors:'¯'
retourner un macron⋄
autre!9
factorielle de neuf (362880)⍳
d'abord que de nombreux entiers i ntegers⍵*⍨
les élever à la puissance de l'argument÷
valeurs réciproques+/
somme5⍕
format avec cinq décimales}
[fin de la fonction anonyme]la source
1E6
->!9
C,
747069 octetsCompilez avec
-fwrapv
. Il faudra un certain temps pour produire une sortie.Voyez-le fonctionner ici . La pièce
++n>0
est remplacée par++n<999999
, vous n'avez donc pas à attendre. Cela conserve une fonctionnalité et une sortie identiques.la source
float
marche?TI-Basic, 16 octets (pas de fonction intégrée)
la source
99
parE9
où E est le scientifique E, c'est-à-dire représentant 10 ^ 9. (Ou évidemment quelque chose de plus petit comme E5). Comprendre que E99 est généralement utilisé pour l'infini positif permet également cette fonctionnalité théoriquement, si la limite supérieure de la somme étaitE99
. Les émulateurs peuvent fournir cela beaucoup plus rapidement qu'une calculatrice physique. Merci pour vos pensées :)C (gcc) ,
1121019484 octetsMerci pour les conseils de golf de plafondcat.
Essayez-le en ligne!
la source
f(1)
ne semble pas correct.Julia , 36 octets
la source
MATL , 21 octets
Essayez-le en ligne!
Explication
L'entrée
1
est dotée d'un boîtier spécial pour la sortieinf
, c'est ainsi que MATL affiche l'infini.Pour les entrées autres que
1
, la somme des premiers2e5
termes suffit pour obtenir une précision de 5 décimales. La raison en est que, à partir du calcul direct, ce nombre de termes suffit pour l'entrée2
, et pour les exposants supérieurs, la queue de la série est plus petite.la source
R, 54 octets
Trouve la somme directement et formate comme souhaité, sort
Inf
si a est 1. La somme de9^6
semble être suffisante pour obtenir une précision à cinq positions tout en étant testable;9^9
obtiendrait une meilleure précision dans la même longueur de code. Je pourrais raccourcir cela si R avait un opérateur ternaire approprié.la source
function(a)round("if"(a-1,sum((1:9^6)^-a)),5)
est de quelques octets plus court.function(a)round("if"(a-1,sum((1:9^6)^-a),Inf),5)
fonctionne et est toujours plus court que ma solution d'origine.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
la source
Σ(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.
la source
Perl 6, 50 bytes
la source
PARI/GP,
2726 bytesla source
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
la source
Python 3 + SciPy, 52 bytes
Try it online!
la source
∞
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.la source
ȷ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
la source
JavaScript (Node.js), 64 bytes
Try it online!
Pointed in Frxstrem's
la source