Dado um número inteiro não negativo saída do número de Euler ( OEIS A122045 ).
Todos os números de Euler com índice ímpar sãoOs números de Euler indexados pares podem ser calculados com a seguinte fórmula ( refere-se à unidade imaginária):
Regras
- será um número inteiro não negativo, de modo que o número de Euler esteja dentro do intervalo representável de números inteiros para o seu idioma.
Casos de teste
0 -> 1
1 -> 0
2 -> -1
3 -> 0
6 -> -61
10 -> -50521
20 -> 370371188237525
-i/2
, que produzem-i
quando adicionados. Multiplique isso peloi
exterior do somatório e você obtém1
.Respostas:
Mathematica, 6 bytes
-tosse-
fonte
GoatImageQ
é subestimadoJ , 10 bytes
Experimente online!
Usa a definição para a função geradora exponencial sech (x).
fonte
t.
out:
onde estão gf e egf Uma observação curiosa é que tan (x) não é suportado, mas sen (x) / cos (x) é.Pari / GP , 32 bytes
Experimente online!
fonte
Maple, 5 bytes
Hurray for builtins?
fonte
Maxima, 5 bytes / 42 bytes
Maxima has a built in:
Try it online!
The following solution does not require the built in from above, and uses the formula that originally defined the euler numbers.
We are basically looking for the n-th coefficient of the series expansion of
1/cosh(t) = sech(t)
(up to then!
)Try it online!
fonte
Mathematica, without built-in, 18 bytes
Using @rahnema1's formula:
21 bytes:
fonte
Python 2.7, 46 bytes
Using scipy.
fonte
Perl 6 , 78 bytes
Usa a fórmula iterativa daqui :
Como funciona
A estrutura geral é uma lambda na qual uma sequência infinita é gerada, por uma expressão que é chamada repetidamente e obtém todos os valores anteriores da sequência na variável
@E
e, em seguida, essa sequência é indexada com o argumento lambda:A expressão chamada para cada etapa da sequência é:
fonte
Maxima, 29 bytes
Try It Online!
Two times imaginary part of polylogarithm function of order
-n
with argumenti
[1]fonte
JavaScript (Node.js) ,
4645 bytesExperimente online!
Válido para todosEn valores (conforme necessário), mas não para F( n , i ) geralmente (saídas - F( n , i ) para estranho n s.) O código é modificado para reduzir um byte, alterando a saída para F′( n , i ) = ( - 1 )nF( n , i ) Onde F é definido como abaixo. Especificamente, a fórmula de recorrência paraF′ é F′( n , i ) = ( i - n - 1 ) F′( n - 1 , i - 2 ) + ( i + 1 ) F′( n - 1 , i )
JavaScript (Node.js) ,
7046 bytesExperimente online!
Surpreso por não encontrar resposta em JavaScript ainda, então tentarei.
O código consiste apenas em matemática básica, mas a matemática por trás do código requer cálculo. A fórmula de recursão deriva da expansão dos derivativos des e c h (x) de ordens diferentes.
Explicação
Aqui vou usar alguma notação conveniente. DeixeiTn: = t a n hn( T ) e Sn: = s e c hn( T ) . Então nós temos
Desde adTdt= S2 e dSdt= - TS , podemos deduzir que
Deixeib = i + 1 e a = n - i , podemos reescrever a relação acima como
Isso é,F( n , i ) contribui para ambos F( n + 1 , i + 2 ) e F( n + 1 , i ) . Como resultado, podemos escreverF( n , i ) em termos de F( n - 1 , i - 2 ) e F( n - 1 , i ) :
com condição inicialF( 0 , 0 ) = 1 e F( 0 , i ) = 0 Onde i ≠ 0 .
A parte relacionada do código
a?-F(--a,b)*++b+F(a,b-=3)*(a-b):+!b
é exatamente calculada usando a fórmula de recorrência acima. Aqui está o detalhamento:Desde aT( 0 ) = 0 e S( 0 ) = 1 , En é igual ao coeficiente de Sn + 1 na expansão de dnSdtn , qual é F( n , n ) .
Para galhos queF( 0 , 0 ) nunca pode ser alcançado, as recorrências sempre terminam em 0, então F( n , i ) = 0 Onde i < 0 ou Eu é estranho. Este último, particularmente, implica queEn= 0 para todos ímpares n s. Por atéEu s estritamente maior que n , a recorrência pode eventualmente permitir 0 ≤ i ≤ n acontecer em algum momento, mas antes desse passo ele deve chegar a um ponto em que i = n + 1 , e a fórmula de recorrência mostra que o valor deve ser 0 nesse ponto (já que o primeiro termo é multiplicado por n - i + 1 = n - ( n + 1 ) + 1 = 0 e o segundo termo está mais distante do "triângulo" de 0 ≤ i ≤ n ) Como um resultado,F( n , i ) = 0 Onde i > n . Isso completa a prova da validade do algoritmo.
Extensões
O código pode ser modificado para calcular mais três seqüências relacionadas:
Números tangentes (46 bytes)
Números secantes (45 bytes)
Números em ziguezague de Euler (48 bytes)
fonte
Befunge, 115 bytes
This just supports a hardcoded set of the first 16 Euler numbers (i.e. E0 to E15). Anything beyond that wouldn't fit in a 32-bit Befunge value anyway.
Try it online!
I've also done a full implementation of the formula provided in the challenge, but it's nearly twice the size, and it's still limited to the first 16 values on TIO, even though that's a 64-bit interpreter.
Try it online!
The problem with this algorithm is that the intermediate values in the series overflow much sooner than the total does. On a 32-bit interpreter it can only handle the first 10 values (i.e. E0 to E9). Interpreters that use bignums should do much better though - PyFunge and Befungee could both handle at least up to E30.
fonte
Python2, (sympy rational), 153 bytes
This is very suboptimal but it's trying to use basic sympy functions and avoid floating point. Thanks @Mego for setting me straight on the original formula listed above. I tried to use something like @xnor's "combine two loops" from Tips for golfing in Python
fonte
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
fonte
Wolfram Language (Mathematica),
4746 bytesWithout using any special functions:
Try it online!
fonte
Axiom, 5 bytes
for OEIS A122045; this is 57 bytes
test code and results
fonte
APL (NARS), 42 caracteres, 84 bytes
Siga a fórmula mostrada em "smls", teste:
o último caso retorna um grande racional como resultado, porque eu insiro 20x (o grande racional 20/1) e não 20, como penso 20,0 flutuam 64 bits ...
Seria mais rápido se um retornasse 0 em breve, mas seria um pouco mais longo (50 caracteres):
seria mais rápido se fosse usada a definição em questão (e seriam 75 caracteres um pouco mais longos):
O resultado acima é um número complexo que possui apenas a parte real.
fonte