Bei einer nicht negativen ganzen Zahl Ausgabe der Eulersche Zahl ( OEIS A122045 ).
Alle ungeradzahligen Euler-Zahlen sindDie geraden Euler-Zahlen können mit der folgenden Formel berechnet werden ( bezieht sich auf die imaginäre Einheit):
Regeln
- ist eine nicht negative Ganzzahl, sodass die Euler-Zahl innerhalb des für Ihre Sprache darstellbaren Bereichs von Ganzzahlen liegt.
Testfälle
0 -> 1
1 -> 0
2 -> -1
3 -> 0
6 -> -61
10 -> -50521
20 -> 370371188237525
-i/2
, die sich ergeben,-i
wenn sie hinzugefügt werden. Multiplizieren Sie das mit demi
Äußeren der Summe, und Sie erhalten1
.Antworten:
Mathematica, 6 Bytes
-Husten-
quelle
GoatImageQ
wird unterschätztJ 10 Bytes
Probieren Sie es online!
Verwendet die Definition für die Exponentialfunktion sech (x).
quelle
t.
odert:
wo gf und egf sind. Eine merkwürdige Anmerkung ist, dass tan (x) nicht unterstützt wird, sin (x) / cos (x) jedoch.Pari / GP , 32 Bytes
Probieren Sie es online!
quelle
Ahorn, 5 Bytes
Hurra für Builtins?
quelle
Maxima , 5 Bytes / 42 Bytes
Maxima hat eingebaut:
Probieren Sie es online!
Die folgende Lösung erfordert nicht das von oben eingebaute und verwendet die Formel, die ursprünglich die Eulernummern definiert hat.
Wir suchen grundsätzlich den n-ten Koeffizienten der Reihenexpansion von
1/cosh(t) = sech(t)
(bis zumn!
)Probieren Sie es online!
quelle
Mathematica, ohne eingebautes, 18 Bytes
Mit der Formel von @ rahnema1 :
21 Bytes:
quelle
Python 2.7, 46 Bytes
Mit scipy.
quelle
Perl 6 , 78 Bytes
Verwendet die iterative Formel von hier :
Wie es funktioniert
Die allgemeine Struktur ist ein Lambda, in dem eine unendliche Folge durch einen Ausdruck generiert wird, der wiederholt aufgerufen wird und alle vorherigen Werte der Folge in der Variablen
@E
abruft. Diese Folge wird dann mit dem Lambda-Argument indiziert:Der für jeden Schritt der Sequenz aufgerufene Ausdruck lautet:
quelle
Maxima, 29 Bytes
Probieren Sie es online!
Zweifacher Imaginärteil der Polylogarithmusfunktion der Ordnung
-n
mit Argumenti
[1]quelle
JavaScript (Node.js) ,
46-45ByteProbieren Sie es online!
JavaScript (Node.js) ,
7046 BytesProbieren Sie es online!
Überrascht, dass ich noch keine JavaScript-Antwort gefunden habe, also werde ich es versuchen.
Erläuterung
Schon seitdTdt= S2 und dSdt= - TS können wir das ableiten
Lassenb = i + 1 und a = n - i Wir können die obige Beziehung umschreiben als
Das ist,F( n , i ) trägt zu beidem bei F( n + 1 , i + 2 ) und F( n + 1 , i ) . Infolgedessen können wir schreibenF( n , i ) bezüglich F( n - 1 , i - 2 ) und F( n - 1 , i ) :
mit anfänglichem ZustandF( 0 , 0 ) = 1 und F( 0 , i ) = 0 woher i ≠ 0 .
Der zugehörige Teil des Codes
a?-F(--a,b)*++b+F(a,b-=3)*(a-b):+!b
berechnet exakt mit der obigen Wiederholungsformel. Hier ist die Aufteilung:Schon seitT( 0 ) = 0 und S( 0 ) = 1 , En gleich dem Koeffizienten von Sn + 1 in der Expansion von dnSdtn , welches ist F( n , n ) .
Für Zweige, dieF( 0 , 0 ) kann nie erreicht werden, die Wiederholungen enden immer bei 0, also F( n , i ) = 0 woher i < 0 oder ich ist ungerade. Insbesondere letzteres impliziert diesEn= 0 für alle ungeraden n s. Für geradeich ist streng größer als n kann die Wiederholung schließlich ermöglichen 0 ≤ i ≤ n irgendwann passieren, aber vor diesem Schritt muss es einen Punkt erreichen, wo i = n + 1 , und die Wiederholungsformel zeigt, dass der Wert an diesem Punkt 0 sein muss (da der erste Term mit multipliziert wird n - i + 1 = n - ( n + 1 ) + 1 = 0 , und der zweite Term ist weiter vom "Dreieck" von 0 ≤ i ≤ n ). Als Ergebnis,F( n , i ) = 0 woher i > n . Damit ist der Nachweis der Gültigkeit des Algorithmus abgeschlossen.
Erweiterungen
Der Code kann geändert werden, um drei weitere verwandte Sequenzen zu berechnen:
Tangentenzahlen (46 Bytes)
Sekantenzahlen (45 Bytes)
Euler-Zick-Zack-Zahlen (48 Bytes)
quelle
Befunge, 115 Bytes
Dies unterstützt nur einen fest codierten Satz der ersten 16 Euler-Zahlen (dh E 0 bis E 15 ). Alles darüber hinaus würde sowieso nicht in einen 32-Bit-Befunge-Wert passen.
Probieren Sie es online!
Ich habe die in der Challenge bereitgestellte Formel auch vollständig implementiert, aber sie ist fast doppelt so groß und immer noch auf die ersten 16 Werte in TIO beschränkt, obwohl es sich um einen 64-Bit-Interpreter handelt.
Probieren Sie es online!
Das Problem bei diesem Algorithmus ist, dass die Zwischenwerte in der Reihe viel früher überlaufen als die Summe. Auf einem 32-Bit-Interpreter können nur die ersten 10 Werte (dh E 0 bis E 9 ) verarbeitet werden. Dolmetscher, die Bignums verwenden, sollten jedoch viel besser abschneiden - PyFunge und Befungee könnten beide mindestens bis zu E 30 bewältigen .
quelle
Python2 (sympy rational), 153 Byte
Dies ist sehr suboptimal, aber es wird versucht, grundlegende Sympy-Funktionen zu verwenden und Gleitkommazahlen zu vermeiden. Vielen Dank an @Mego, dass ich mich direkt an die oben aufgeführte Originalformel gewandt habe. Ich habe versucht, so etwas wie @ xnors "Combine Two Loops" von Tips for Golfing in Python zu verwenden
quelle
import*
(das Leerzeichen dazwischen entfernen), um ein Byte zu speichern. Außerdem müssen Sie die Zahl irgendwie als Eingabe verwenden (Ausschnitte, die davon ausgehen, dass sich die Eingabe in einer Variablen befindet, sind nicht zulässig).CJam (34 Bytes)
Online-Demo, die E (0) bis E (19) druckt. Dies ist ein anonymer Block (Funktion).
Die Implementierung übernimmt die Wiederholung von Shieru Akasoto und schreibt sie in einem CJam-freundlicheren Stil neu, wobei ganze Zeilen gleichzeitig bearbeitet werden.
Präparation
quelle
Wolfram Language (Mathematica) ,
4746 BytesOhne irgendwelche speziellen Funktionen zu benutzen:
Probieren Sie es online!
quelle
Axiom, 5 Bytes
für OEIS A122045; das sind 57 bytes
Testcode und Ergebnisse
quelle
APL (NARS), 42 Zeichen, 84 Byte
Befolgen Sie die Formel aus "smls", Test:
Der letzte Fall liefert einen großen rationalen Wert als Ergebnis, da ich 20x (den großen rationalen 20/1) eingebe und nicht 20, da ich denke, dass 20.0 64-Bit float ...
Es wäre schneller, wenn man bald 0 zurückgeben würde, aber etwas länger (50 Zeichen):
Es wäre schneller, wenn die Definition in Frage kommt (und wäre etwas länger als 75 Zeichen):
Das Ergebnis darüber ist eine komplexe Zahl, die nur den Realteil enthält.
quelle