Herausforderung
Wenn eine ganze Zahl angegeben wird, gibt als Eingabe, bei der s ≥ 1 ist, den Wert von ζ ( s ) aus (wobei ζ ( x ) die Riemannsche Zetafunktion darstellt ).
Weitere Informationen
ist definiert als:
Sie sollten Ihre Antwort auf 5 Dezimalstellen ausgeben (nicht mehr und nicht weniger). Wenn die Antwort unendlich ist, sollten Sie oder ein gleichwertiges Ergebnis in Ihrer Sprache ausgeben .
Riemann Zeta-Einbauten sind erlaubt, aber es macht weniger Spaß, es so zu machen;)
Beispiele
Die Ausgänge müssen genau wie unten gezeigt sein
Input -> Output
1 -> ∞ or inf etc.
2 -> 1.64493
3 -> 1.20206
4 -> 1.08232
8 -> 1.00408
19 -> 1.00000
Kopfgeld
Als Trost für das Zulassen von eingebauten Funktionen werde ich eine 100-Wiederholungs-Prämie für die kürzeste Antwort anbieten, die keine eingebauten Zeta-Funktionen verwendet. (Das grüne Häkchen zeigt immer noch die kürzeste Lösung an.)
Gewinnen
Der kürzeste Code in Bytes gewinnt.
19
wirklich den Text ausgeben1.00000
? Wäre1
oder wäre1.0
nicht gültig? Sie haben es anscheinend zu einer Chamäleon-Herausforderung gemacht.Antworten:
Mathematica,
9711 BytesErläuterung:
Ohne eingebaut:
Mathematica, 23 UTF-8 Bytes
Vielen Dank an Kelly Lowder
quelle
N@*Zeta
spart zwei Bytes.@*
ist der (linke) Kompositionsoperator:f@*g
bezeichnet eine Funktion, deren Wert am Argumentx
istf[g[x]]
.1
dafür ausComplexInfinity
und rundet auf5
Stellen. (zB1.64493
)*
?N~5
aber Ihre Erklärung verwendet6
.Javascript,
81706665 BytesLauffähige Beispiele:
quelle
Array(1e6).fill()
durch[...Array(1e6)]
und ersetzen Sie die erste(s)
durchs
APL (Dyalog) ,
2221 BytesSchau ma, keine eingebauten! -1 danke an ngn.
Da Dyalog APL nicht unendlich ist, verwende ich Iversons vorgeschlagene Notation .
Probieren Sie es online!
{
anonyme Funktion:1=⍵:
Wenn das Argument eins ist, dann:'¯'
Gib einen Macron zurück⋄
sonst!9
Fakultät von neun (362880)⍳
zuerst , dass viele Zahlen i ntegers⍵*⍨
erheben sie die Macht des Arguments÷
gegenseitige Werte+/
Summe5⍕
Format mit fünf Dezimalstellen}
[Ende der anonymen Funktion]quelle
1E6
->!9
C
747069 BytesKompilieren mit
-fwrapv
. Es wird einige Zeit dauern, um eine Ausgabe zu erstellen.Sehen Sie , wie es hier funktioniert . Das Teil
++n>0
wird durch ersetzt++n<999999
, sodass Sie nicht warten müssen. Dadurch bleiben Funktionalität und Ausgabe identisch.quelle
float
Arbeit?TI-Basic, 16 Bytes (keine eingebauten)
quelle
99
mitE9
dem E die wissenschaftliche E, also 10 ^ 9 darstellt. (Oder offensichtlich etwas kleineres wie E5). Das Verständnis, dass E99 im Allgemeinen für positive Unendlichkeit verwendet wird, ermöglicht diese Funktionalität theoretisch auch dann, wenn die obere Grenze der Summation warE99
. Emulatoren können dies viel schneller als ein physikalischer Rechner bereitstellen. Vielen Dank für Ihre Gedanken :)C (GCC) ,
1121019484 BytesVielen Dank für die Golftipps von ceilingcat.
Probieren Sie es online!
quelle
f(1)
scheint nicht korrekt zu sein.Julia , 36 Bytes
quelle
MATL , 21 Bytes
Probieren Sie es online!
Erläuterung
Der Eingang
1
ist speziell für den Ausgang ausgelegtinf
. Auf diese Weise zeigt MATL Unendlich an.Für andere Eingaben als das
1
Summieren der ersten2e5
Terme reicht es aus, um eine Genauigkeit von 5 Dezimalstellen zu erzielen. Der Grund dafür ist, dass bei direkter Berechnung diese Anzahl von Begriffen für die Eingabe ausreicht2
und bei größeren Exponenten der Endpunkt der Reihe kleiner ist.quelle
R, 54 Bytes
Findet die Summe direkt und formatiert sie wie gewünscht und gibt sie aus,
Inf
wenn a gleich 1 ist. Eine Summierung auf9^6
scheint ausreichend zu sein, um eine Genauigkeit von fünf Stellen zu erhalten, während sie noch testbar ist.9^9
würde eine bessere Genauigkeit bei gleicher Codelänge erzielen. Ich könnte das kürzer machen, wenn R einen richtigen ternären Operator hätte.quelle
function(a)round("if"(a-1,sum((1:9^6)^-a)),5)
ist ein paar Bytes kürzer.function(a)round("if"(a-1,sum((1:9^6)^-a),Inf),5)
funktioniert und immer noch kürzer als meine ursprüngliche Lösung ist.Inf
bekomme ich, wenn ich Code direkt in das Kommentarfeld eingebe ...C
129 130128 BytesEs wird die folgende Formel verwendet
Test und Ergebnisse
quelle
Σ(1/(n^s))
? Es scheint viel komplizierter zu sein ...oo
Ihrer Information, es ist einfach in Ordnung, Sie müssen es nicht als positiv angebenPython 3: 67 Bytes (keine eingebauten)
Nichts Besonderes, verwendet nur Python aufgrund der impliziten utf-8-Codierung 3 .
Probieren Sie es online mit Testfällen.
quelle
Perl 6 , 50 Bytes
quelle
PARI / GP,
2726 Bytesquelle
Jelly , 23 Bytes
Probieren Sie es online!
Wie?
0
wennabs(input)<=1
zu erhalteninf
(statt14.392726722864989
) für1
abs(result)<=1
der1.0
as formatiert werden soll1.00000
quelle
Python 3 + SciPy, 52 Bytes
Probieren Sie es online!
quelle
∞
für die Eingabe1
?inf
was erlaubt ist.zetac(n)
stattzeta(n,1)
?Gelee , 26 Bytes
Versuchen Sie es nicht online mit diesem Link! (Da hier 16! ~ 20 Billionen Terme verwendet werden, führt die Ausführung auf TIO zu einem MemoryError.)
Probieren Sie es online aus stattdessen mit diesem Link. (Verwendet stattdessen 1 Million Begriffe. Viel besser zu handhaben, benötigt aber ein weiteres Byte.)
Gibt
inf
für Eingabe 1 zurück.Erläuterung
Von den 26 Bytes werden 7 zur Berechnung verwendet, 12 zur Formatierung und 7 zur Erzeugung
inf
von Null. Dafür muss es ein besseres Golf geben.quelle
ȷ6
ist ein Zahlenwörtchen von einer Million, das die Problemumgehung um die Fakultät beseitigt.MathGolf , 14 Bytes (keine eingebauten)
Beachten Sie, dass in dem TIO Link habe ich ersetzt106 Anstatt von 107 . Dies liegt daran, dass die hier eingereichte Version für alle Testfälle Zeitüberschreitungen aufweist. Dies führt dazu, dass die Antworten für 3 und 8 um 1 Dezimalstelle abweichen. In MathGolf gibt es jedoch viel größere numerische 1-Byte-Literale, die eine beliebige Dezimalgenauigkeit zulassen.
◄
für►
, die geschobenProbieren Sie es online!
Erläuterung
quelle
JavaScript (Node.js) , 64 Byte
Probieren Sie es online!
In Frxstrem's gezeigt
quelle