Étant donné un entier non négatif sortez le numéro Euler ( OEIS A122045 ).
Tous les nombres d'Euler à index impair sontLes nombres d'Euler à index pair peuvent être calculés avec la formule suivante ( fait référence à l'unité imaginaire):
Règles
- sera un entier non négatif tel que le nombre d'Euler se situe dans la plage représentable des entiers pour votre langue.
Cas de test
0 -> 1
1 -> 0
2 -> -1
3 -> 0
6 -> -61
10 -> -50521
20 -> 370371188237525
-i/2
, qui cèdent-i
lorsqu'ils sont ajoutés. Multipliez cela par l'i
extérieur de la sommation, et vous obtenez1
.Réponses:
Mathematica, 6 octets
-la toux-
la source
GoatImageQ
est sous-estiméJ , 10 octets
Essayez-le en ligne!
Utilise la définition de la fonction de génération exponentielle sech (x).
la source
t.
out:
où sont gf et egf Une note curieuse est que tan (x) n'est pas pris en charge mais sin (x) / cos (x) l'est.Pari / GP , 32 octets
Essayez-le en ligne!
la source
Érable, 5 octets
Vive les builtins?
la source
Maxima , 5 octets / 42 octets
Maxima a intégré:
Essayez-le en ligne!
La solution suivante ne nécessite pas l'intégration depuis le dessus et utilise la formule qui définissait à l'origine les nombres euler.
Nous recherchons essentiellement le n-ième coefficient de l'expansion en série de
1/cosh(t) = sech(t)
(jusqu'aun!
)Essayez-le en ligne!
la source
Mathematica, sans intégré, 18 octets
En utilisant la formule de @ rahnema1 :
21 octets:
la source
Python 2.7, 46 octets
En utilisant scipy.
la source
Perl 6 , 78 octets
Utilise la formule itérative d'ici :
Comment ça marche
La structure générale est un lambda dans lequel une séquence infinie est générée, par une expression qui est appelée à plusieurs reprises et obtient toutes les valeurs précédentes de la séquence dans la variable
@E
, puis cette séquence est indexée avec l'argument lambda:L'expression appelée pour chaque étape de la séquence est:
la source
Maxima, 29 octets
Essayez-le en ligne!
Partie imaginaire deux fois de la fonction polylogarithme d'ordre
-n
avec argumenti
[1]la source
JavaScript (Node.js) ,
4645 octetsEssayez-le en ligne!
JavaScript (Node.js) ,
7046 octetsEssayez-le en ligne!
Surpris de ne pas trouver de réponse JavaScript pour le moment, je vais donc essayer.
Explication
SincedTdt=S2 and dSdt=−TS , we can deduce that
Letb=i+1 and a=n−i , we can rewrite the relation above as
That is,F(n,i) contributes to both F(n+1,i+2) and F(n+1,i) . As a result, we can write F(n,i) in terms of F(n−1,i−2) and F(n−1,i) :
with initial conditionF(0,0)=1 and F(0,i)=0 where i≠0 .
The related part of the code
a?-F(--a,b)*++b+F(a,b-=3)*(a-b):+!b
is exactly calculating using the above recurrence formula. Here's the breakdown:SinceT(0)=0 and S(0)=1 , En equals the coefficient of Sn+1 in the expansion of dnSdtn , which is F(n,n) .
For branches thatF(0,0) can never be reached, the recurrences always end at 0, so F(n,i)=0 where i<0 or i is odd. The latter one, particularly, implies that En=0 for all odd n s. For even i s strictly larger than n , the recurrence may eventually allow 0≤i≤n to happen at some point, but before that step it must reach a point where i=n+1 , and the recurrence formula shows that the value must be 0 at that point (since the first term is multiplied by n−i+1=n−(n+1)+1=0 , and the second term is farther from the "triangle" of 0≤i≤n ). As a result, F(n,i)=0 where i>n . This completes the proof of the validity of the algorithm.
Extensions
The code can be modified to calculate three more related sequences:
Tangent Numbers (46 bytes)
Secant Numbers (45 bytes)
Euler Zigzag Numbers (48 bytes)
la source
Befunge, 115 octets
Cela ne prend en charge qu'un ensemble codé en dur des 16 premiers nombres d'Euler (c'est-à-dire E 0 à E 15 ). Quoi que ce soit au-delà de cela ne rentrerait pas dans une valeur Befunge 32 bits de toute façon.
Essayez-le en ligne!
J'ai également fait une implémentation complète de la formule fournie dans le défi, mais c'est presque le double de la taille, et elle est toujours limitée aux 16 premières valeurs sur TIO, même s'il s'agit d'un interpréteur 64 bits.
Essayez-le en ligne!
Le problème avec cet algorithme est que les valeurs intermédiaires de la série débordent beaucoup plus tôt que le total. Sur un interpréteur 32 bits, il ne peut gérer que les 10 premières valeurs (c'est-à-dire E 0 à E 9 ). Les interprètes qui utilisent des bignums devraient cependant faire beaucoup mieux - PyFunge et Befungee pourraient tous deux gérer au moins jusqu'à E 30 .
la source
Python2, (sympy rational), 153 octets
Ceci est très sous-optimal mais essaie d'utiliser des fonctions sympy de base et d'éviter la virgule flottante. Merci @Mego de m'avoir mis directement sur la formule originale listée ci-dessus. J'ai essayé d'utiliser quelque chose comme @ xnor "combine deux boucles" de Tips for golfing in Python
la source
import*
(remove the space in between) to save a byte. Also, you need to take the number as an input somehow (snippets which assume the input to be in a variable are not allowed).CJam (34 bytes)
Online demo which prints E(0) to E(19). This is an anonymous block (function).
The implementation borrows Shieru Akasoto's recurrence and rewrites it in a more CJam friendly style, manipulating entire rows at a time.
Dissection
la source
Wolfram Language (Mathematica) ,
4746 octetsSans utiliser de fonctions spéciales:
Essayez-le en ligne!
la source
Axiom, 5 bytes
for OEIS A122045; this is 57 bytes
test code and results
la source
APL(NARS), 42 chars, 84 bytes
Follow the formula showed from "smls", test:
the last case return one big rational as result because i enter 20x (the big rational 20/1) and not 20 as i think 20.0 float 64 bit...
It would be more fast if one return 0 soon but would be a little more long (50 chars):
it would be more fast if it is used the definition on question (and would be a little more long 75 chars):
The result above it is one complex number that has only the real part.
la source