Wir alle wissen, dass die mit e bezeichnete Euler-Zahl zur Potenz einer Variablen x mit der Erweiterung der Maclaurin-Reihe angenähert werden kann :
Wenn wir x gleich 1 lassen, erhalten wir
Herausforderung
Schreiben Sie ein Programm in einer beliebigen Sprache, die sich der Euler-Zahl annähert, indem Sie eine Eingabe N eingeben und die Reihe mit dem N-ten Term berechnen. Beachten Sie, dass der erste Term den Nenner 0 !, nicht 1 !, hat, dh N = 1 entspricht 1/0 !.
Wertung
Programm mit der geringsten Anzahl von Bytes gewinnt.
code-golf
math
number
approximation
Meow Mix
quelle
quelle
N
die Ergebnisse bei Verwendung einer Gleitkommazahl mit endlicher Genauigkeit gleich. Ist dieses Verhalten akzeptabel oder muss das Ergebnis mit zunehmenderN
Annäherung an die Unendlichkeit immer genauer werden ?Antworten:
Gelee , 5 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Ḷ
, was einen Bereich von [0, n) ergibt. ^ v ^;Wehmütig-C - 336 Bytes
Mein erstes echtes Wehmut-Programm! Eigentlich habe ich ein bisschen Golf gespielt,
someday
anstatt zu spielen,wait for
weil der erste eine kürzere Länge hatte.quelle
<stdio.h>
someday i were N...
stattsomeday i will be N...
?Pyth,
76 BytesProbieren Sie es hier aus.
Danke an FryAmTheEggman für ein Byte!
quelle
TI-84 BASIC,
121514TI ist eine Token-Sprache ( Bytes werden über Token gezählt , nicht über einzelne Zeichen).
quelle
Ans
ist kein gültiges Eingabeformat, daher ist nur die 15-Byte-Version gültig.Ans
war schon immer das Standard-Eingabeformat bei PPCG (siehe meine alten TI-Antworten), und mehr Leute stimmen dem zu als nicht. Lassen Sie sich also nicht dazu drängen, Ihre Antwort zu ändern.Julia,
282721 BytesDies ist eine anonyme Funktion, die eine Ganzzahl akzeptiert und einen Gleitkommawert zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Der Ansatz ist recht unkompliziert. We
sum
1 dividiert durch die Gammafunktion, die bei jedem von 1 bis n ausgewertet wird . Dies nutzt die Eigenschaft n ! = Γ ( n + 1).Probieren Sie es online!
1 Byte dank Dennis und 6 dank Glen O!
quelle
@(n)sum(1./factorial(0:n))
Python, 36 Bytes
Python 2:
Python 3:
quelle
or
stattand
:f=lambda n,i=1:i>=n or 1+f(n,i+1)/i
.Gleichstrom, 43 Bytes
Dies ist eine ziemlich direkte Übersetzung der Serie. Ich habe versucht, klüger zu sein, aber das führte zu längerem Code.
Erläuterung
Eine einfache Fakultätsfunktion für n> 0
Führe die Fakultät für n, ..., 1 aus; invertieren und summieren
Füllen Sie den Stapel mit 1; Eingaben übernehmen und entsprechende Genauigkeit einstellen
Wenn die Eingabe 0 oder 1 war, können wir sie einfach weitergeben, oder die Teilsumme berechnen.
Drucken Sie das Ergebnis.
Testergebnisse
Die ersten 100 Erweiterungen:
Mit 1000 Begriffen:
quelle
J, 10 Bytes
Unkomplizierter Ansatz.
Erläuterung
quelle
1#.%@!@i.
CJam, 11
oder
Probieren Sie es online aus: erste Version und zweite Version
Erläuterung:
r~
= lesen und auswertenm!
= faktoriellW#
= zur -1-Potenz erhöhen (W
= -1):+
= Summe des Arrays Dieerste Version konstruiert das [0… N-1] -Array und wendet faktoriell und invers auf alle seine Elemente an; Die 2. Version führt faktorielle und inverse Operationen für jede Zahl durch und fügt sie dann in ein Array ein.
quelle
JavaScript ES6,
44 4240Eine unbenannte Funktion jetzt.
Vielen Dank für das Speichern von 2 Bytes @AlexA und danke an @LeakyNun für weitere 2 Bytes!
quelle
n=>{for(k=s=m=1;m<n;s+=k/=m++);return s}
MATL,
117 Bytes4 Bytes gespart dank der Empfehlung von @ Luis,
gamma
(Yg
) zu verwendenProbieren Sie es online
Erläuterung
quelle
]
1i:Yg/s
für 7 BytesMATL , 6 Bytes
Dies berechnet die Summe mit der hypergeometrischen Funktion 1 F 1 ( a ; b ; z ):
Funktioniert auf Octave und auf den Online - Compiler, aber nicht auf Matlab, aufgrund einer Differenz in , wie die hypergeometric Funktion definiert ist (die korrigiert werden).
Probieren Sie es online!
Erläuterung
quelle
C 249 Bytes
Ungolfed:
Nimmt eine Zahl als Argument, um die Anzahl der Iterationen zu bestimmen.
quelle
int
vorhermain
und das nichtreturn 0
. Auch, wenn Sie ersetzenNULL
mit0
, brauchen Sie nicht das enthält.argc
undargv
kann zu einbuchstabigen Variablen gekürzt werden. Wenn Sie gerne in C Golf spielen, finden Sie möglicherweise hilfreiche Tipps zum Golfen in C.#include <stdio.h>
k (13 Bytes)
Vorbehaltlich von Überläufen für
N>20
quelle
05AB1E, 6 Bytes
Erklärt
Probieren Sie es online aus
quelle
L<!zO
.Pyke, 10 Bytes
Probieren Sie es hier aus!
Oder 8 Bytes, wenn power = 1 ist
Probieren Sie es hier aus!
quelle
JavaScript (ES6), 28 Byte
quelle
Dyalog APL , 6 Bytes
+/
Summe÷
der Kehrwerte!
der Fakultäten⍳
der Zahlen von 0 bis zur⎕
numerischen EingabeAngenommen
⎕IO←0
, das ist auf vielen Systemen Standard.TryAPL !
quelle
Haskell, 37 Bytes
Nicht die kürzeste, aber wohl die schönste.
Ebenfalls mit freundlicher Genehmigung von Laikoni ist hier eine Lösung, die 2 Byte kürzer ist:
quelle
50
. Um einen Header hinzuzufügen, verwenden:## Language, <xxx> bytes
.f n=
oder abrufen\n->
. Wir können aber auch ein paar Bytes einsparen:(\x->1/x)
Kann auf den Abschnitt gekürzt werden(1/)
,[1,2..]
ist genauso wie[1..]
undmap(...)$
kann sein(...)<$>
. Zusammen 36 Bytes: Probieren Sie es online!((scanl(+)0$(1/)<$>scanl(*)1[1..])!!)
sieht es auch gut aus.\n->
erstellen eine Funktion.APL (Dyalog Unicode) , 5 Bytes
Probieren Sie es online!
Verwenden Sie den gemischten Basistrick, der in meiner Antwort auf eine andere Herausforderung enthalten ist . Verwendet
⎕IO←0
.Wie es funktioniert
quelle
1÷(n-1)!
einer Ziffer. Könnten Sie es zur Verdeutlichung in J übersetzen?Eigentlich 6 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Brachylog , 18 Bytes
Erläuterung
quelle
Ahorn, 18
Verwendung:
quelle
C 69 Bytes
Ideone es!
quelle
Java mit zehn Fuß Laser Pole ,
238236 BytesBesserer Überlaufwiderstand als die meisten anderen Antworten. Für 100 Terme lautet das Ergebnis
quelle
Julia, 28 Bytes
Erläuterung
gamma(k+1)
ist gleichfactorial(k)
für positive Ganzzahleingaben und verallgemeinert es für alle Werte außer den nichtnegativen Ganzzahlen. Es spart ein Byte, warum also nicht?quelle
MATLAB / Octave, 22 Bytes
Erstellt eine anonyme Funktion mit dem Namen
ans
, die mit aufgerufen werden kannans(N)
.Diese Lösung berechnet
gamma(x)
für jedes Element im Array [1 ... N], das gleich istfactorial(x-1)
. Wir nehmen dann die Umkehrung jedes Elements und summieren alle Elemente.Online Demo
quelle
Perl 5, 37 Bytes
Kein Gewinner, aber nett und unkompliziert:
Ausgänge für Eingänge von 0 bis 10:
quelle
R, 17 Bytes
Ganz einfach, auch wenn irgendwann Probleme mit der numerischen Genauigkeit auftreten werden.
quelle
WolframAlpha , 12 Bytes
quelle