Biorąc nieujemną liczbę całkowitą wyjście Numer Eulera ( OEIS A122045 ).
Wszystkie liczby Eulera o indeksie nieparzystym wynosząLiczby Eulera o indeksie parzystym można obliczyć za pomocą następującego wzoru ( odnosi się do jednostki urojonej):
Zasady
- będzie nieujemną liczbą całkowitą, tak że liczba Eulera będzie w reprezentatywnym zakresie liczb całkowitych dla twojego języka.
Przypadki testowe
0 -> 1
1 -> 0
2 -> -1
3 -> 0
6 -> -61
10 -> -50521
20 -> 370371188237525
-i/2
, które ustępują-i
po dodaniu. Pomnóż to przezi
zewnętrzną sumę, a otrzymasz1
.Odpowiedzi:
Mathematica, 6 bajtów
-kaszel-
źródło
GoatImageQ
jest niedocenianyJ , 10 bajtów
Wypróbuj online!
Wykorzystuje definicję wykładniczej funkcji generowania sech (x).
źródło
t.
lubt:
gdzie są gf i egf Ciekawe jest to, że tan (x) nie jest obsługiwany, ale sin (x) / cos (x) jest.Pari / GP , 32 bajty
Wypróbuj online!
źródło
Klon, 5 bajtów
Hurra dla wbudowanych?
źródło
Maxima , 5 bajtów / 42 bajty
Maxima ma wbudowane:
Wypróbuj online!
Poniższe rozwiązanie nie wymaga wbudowania z góry i wykorzystuje wzór, który pierwotnie zdefiniował liczby euler.
Zasadniczo szukamy n-tego współczynnika rozszerzenia szeregu
1/cosh(t) = sech(t)
(aż don!
)Wypróbuj online!
źródło
Mathematica, bez wbudowanego, 18 bajtów
Korzystanie ze wzoru @ rahnema1 :
21 bajtów:
źródło
Python 2.7, 46 bajtów
Korzystanie z Scipy.
źródło
Perl 6 , 78 bajtów
Wykorzystuje iteracyjny wzór stąd :
Jak to działa
Ogólna struktura to lambda, w której generowana jest nieskończona sekwencja, poprzez wyrażenie, które jest wywoływane wielokrotnie i pobiera wszystkie poprzednie wartości sekwencji w zmiennej
@E
, a następnie sekwencja ta jest indeksowana argumentem lambda:Wyrażenie wywoływane dla każdego kroku sekwencji to:
źródło
Maxima, 29 bajtów
Wypróbuj online!
Dwukrotnie urojona część funkcji polilogarytmu porządku
-n
z argumentemi
[1]źródło
JavaScript (Node.js) ,
4645 bajtówWypróbuj online!
JavaScript (Node.js) ,
7046 bajtówWypróbuj online!
Zaskoczony, że nie znalazłem jeszcze odpowiedzi na JavaScript, więc spróbuję.
Wyjaśnienie
Powiązana część kodu
a?-F(--a,b)*++b+F(a,b-=3)*(a-b):+!b
jest dokładnie obliczana przy użyciu powyższej formuły rekurencyjnej. Oto podział:Rozszerzenia
Kod można zmodyfikować, aby obliczyć trzy kolejne powiązane sekwencje:
Liczby styczne (46 bajtów)
Secant Numbers (45 bytes)
Euler Zigzag Numbers (48 bytes)
źródło
Befunge, 115 bajtów
To po prostu obsługuje zakodowany zestaw pierwszych 16 liczb Eulera (tj. E 0 do E 15 ). Cokolwiek poza tym i tak nie zmieściłoby się w 32-bitowej wartości Befunge.
Wypróbuj online!
Zrobiłem również pełną implementację formuły podanej w wyzwaniu, ale jest ona prawie dwa razy większa i nadal jest ograniczona do pierwszych 16 wartości w TIO, nawet jeśli jest to 64-bitowy interpreter.
Wypróbuj online!
Problem z tym algorytmem polega na tym, że wartości pośrednie w serii przepełniają się znacznie wcześniej niż suma całkowita. W 32-bitowym interpretatorze może obsłużyć tylko pierwsze 10 wartości (tj. E 0 do E 9 ). Tłumacze używający bignum powinni jednak działać znacznie lepiej - PyFunge i Befungee mogą obsłużyć co najmniej do E 30 .
źródło
Python2, (sympy rational), 153 bajty
Jest to bardzo nieoptymalne, ale próbuje użyć podstawowych funkcji sympy i uniknąć zmiennoprzecinkowego. Dzięki @Mego za postawienie mnie na oryginalnej formule wymienionej powyżej. Próbowałem użyć czegoś takiego jak „Połącz dwie pętle” @ xnor z Porad do gry w golfa w Pythonie
źródło
import*
(usunąć spację między nimi), aby zapisać bajt. Ponadto musisz jakoś wziąć liczbę jako dane wejściowe (fragmenty, które zakładają, że dane wejściowe są zmienne, nie są dozwolone).CJam (34 bajty)
Demo online, które drukuje litery E (0) do E (19). To anonimowy blok (funkcja).
Implementacja pożycza rekurencję Shieru Akasoto i przepisuje ją w bardziej przyjaznym dla CJam stylu, manipulując jednocześnie całymi wierszami.
Sekcja
źródło
Wolfram Language (Mathematica) ,
4746 bajtówBez użycia specjalnych funkcji:
Wypróbuj online!
źródło
Aksjomat, 5 bajtów
dla OEIS A122045; to jest 57 bajtów
kod testowy i wyniki
źródło
APL (NARS), 42 znaki, 84 bajty
Postępuj zgodnie ze wzorem pokazanym w „smls”, test:
ostatni przypadek zwraca jeden duży wymierny wynik, ponieważ wprowadzam 20x (duży wymierny 20/1), a nie 20, jak myślę 20.0 zmiennoprzecinkowy 64-bitowy ...
Byłoby to szybsze, gdyby jedno szybko zwróciło 0, ale byłoby trochę dłuższe (50 znaków):
byłby szybszy, gdyby użył definicji, o której mowa (i miałby nieco więcej 75 znaków):
Wynik powyżej to jedna liczba zespolona, która ma tylko rzeczywistą część.
źródło