Wszyscy wiemy, że liczbę Eulera , oznaczoną e, do potęgi jakiejś zmiennej x, można aproksymować za pomocą rozszerzenia Maclaurin Series :
Pozwalając x równa się 1, otrzymujemy
Wyzwanie
Napisz program w dowolnym języku, który jest zbliżony do liczby Eulera, przyjmując wartość wejściową N i obliczając szereg na N-ty warunek. Zauważ, że pierwszy termin ma mianownik 0 !, nie 1 !, tj. N = 1 odpowiada 1/0 !.
Punktacja
Program z najmniejszą liczbą bajtów wygrywa.
code-golf
math
number
approximation
Meow Mix
źródło
źródło
N
wyniki będą takie same, jeśli użyje się liczby zmiennoprzecinkowej o skończonej precyzji. Czy takie zachowanie jest akceptowalne, czy wynik musi być coraz dokładniejszy w miaręN
zbliżania się do nieskończoności?Odpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
Jak to działa
źródło
Ḷ
, co daje zakres [0, n) . ^ v ^;Wistful-C - 336 bajtów
Mój pierwszy prawdziwy smutny program! Grałem trochę w golfa, używając
someday
zamiast tego,wait for
ponieważ pierwszy miał krótszą długość.źródło
<stdio.h>
someday i were N...
działa zamiastsomeday i will be N...
?Pyth,
76 bajtówWypróbuj tutaj.
Dzięki FryAmTheEggman za bajt!
źródło
TI-84 BASIC,
121514TI jest tokenizowanym językiem ( bajty są liczone za pomocą tokenów , a nie pojedynczych znaków).
źródło
Ans
nie jest poprawnym formatem wejściowym, więc poprawna jest tylko wersja 15-bajtowa.Ans
zawsze był domyślnym formatem wejściowym tutaj w PPCG (przejrzyj moje stare odpowiedzi TI), a więcej osób zgadza się, niż nie zgadzam, więc nie daj się zastraszyć, aby zmienić twoją odpowiedź.Julia,
282721 bajtówJest to anonimowa funkcja, która przyjmuje liczbę całkowitą i zwraca liczbę zmiennoprzecinkową. Aby go wywołać, przypisz go do zmiennej.
Podejście jest dość proste. Mamy
sum
1 podzielone przez funkcję gamma ocenianą dla każdego z 1 do n . Wykorzystuje to właściwość n ! = Γ ( n +1).Wypróbuj online!
Zaoszczędzono 1 bajt dzięki Dennisowi i 6 dzięki Glen O!
źródło
@(n)sum(1./factorial(0:n))
Python, 36 bajtów
Python 2:
Python 3:
źródło
or
zamiastand
:f=lambda n,i=1:i>=n or 1+f(n,i+1)/i
.dc, 43 bajty
Jest to dość bezpośrednie tłumaczenie serii. Próbowałem być sprytniejszy, ale to spowodowało dłuższy kod.
Wyjaśnienie
Prosta funkcja silnia dla n> 0
Wykonaj silnię dla n, ..., 1; odwrócenie i suma
Zalej stos 1; zaakceptuj dane wejściowe i ustaw odpowiednią dokładność
Jeśli wartość wejściowa wynosiła 0 lub 1, możemy ją po prostu przekazać, w przeciwnym razie obliczyć sumę częściową.
Wydrukuj wynik.
Wyniki testu
Pierwsze 100 rozszerzeń:
Używając 1000 terminów:
źródło
J, 10 bajtów
Proste podejście.
Wyjaśnienie
źródło
1#.%@!@i.
CJam, 11
lub
Wypróbuj online: pierwsza wersja i druga wersja
Wyjaśnienie:
r~
= odczyt i ocenam!
= silniaW#
= podniesienie do potęgi -1 (W
= -1):+
= suma tablicyPierwsza wersja konstruuje tablicę [0… N-1] i stosuje silnię i odwrotność do wszystkich jej elementów; Druga wersja robi silnię i odwrotność dla każdej liczby, a następnie umieszcza je w tablicy.
źródło
JavaScript ES6,
44 4240Teraz funkcja bez nazwy.
Dzięki za zapisanie 2 bajtów @AlexA i dzięki @LeakyNun za kolejne 2 bajty!
źródło
n=>{for(k=s=m=1;m<n;s+=k/=m++);return s}
MATL,
117 bajtów4 bajty zapisane dzięki rekomendacji @ Luis do użycia
gamma
(Yg
)Wypróbuj online
Wyjaśnienie
źródło
]
1i:Yg/s
dla 7 bajtówMATL , 6 bajtów
To oblicza sumę za pomocą funkcji hipergeometrycznej 1 F 1 ( a ; b ; z ):
Działa na Octave i kompilatorze online, ale nie na Matlabie, ze względu na różnicę w definiowaniu funkcji hipergeometrycznej (która zostanie poprawiona).
Wypróbuj online!
Wyjaśnienie
źródło
C, 249 bajtów
Nie golfowany:
Bierze liczbę jako argument w celu ustalenia liczby iteracji.
źródło
int
wcześniejszychmain
ireturn 0
. Ponadto, jeśli zastąpiNULL
się0
, nie trzeba includes.argc
iargv
może być skrócony do zmiennych jednoliterowych. Jeśli lubisz grać w golfa w C, pomocne mogą być porady dotyczące gry w golfa w C.#include <stdio.h>
k (13 bajtów)
Z zastrzeżeniem przepełnienia dla
N>20
źródło
05AB1E, 6 bajtów
Wyjaśniono
Wypróbuj online
źródło
L<!zO
.Pyke, 10 bajtów
Wypróbuj tutaj!
Lub 8 bajtów, jeśli moc = 1
Wypróbuj tutaj!
źródło
JavaScript (ES6), 28 bajtów
źródło
Dyalog APL , 6 bajtów
+/
suma÷
odwrotności!
silni⍳
liczb od 0 do⎕
wprowadzania liczbowegoZakłada się
⎕IO←0
, że jest to domyślne w wielu systemach.TryAPL !
źródło
Haskell, 37 bajtów
Nie najkrótszy, ale prawdopodobnie najładniejszy.
Również dzięki uprzejmości Laikoni , oto rozwiązanie o 2 bajty krótsze:
źródło
50
. Aby dodać nagłówek, należy:## Language, <xxx> bytes
.f n=
lub\n->
uzyskać prawidłowe przesłanie funkcji. Możemy jednak również zapisać kilka bajtów:(\x->1/x)
można go skrócić do sekcji(1/)
,[1,2..]
jest taki sam jak[1..]
imap(...)$
może być(...)<$>
. Razem 36 bajtów: Wypróbuj online!((scanl(+)0$(1/)<$>scanl(*)1[1..])!!)
wygląda również ładnie.\n->
do utworzenia funkcja.APL (Dyalog Unicode) , 5 bajtów
Wypróbuj online!
Używając sztuczki o mieszanej podstawie, znalezionej w mojej odpowiedzi na inne wyzwanie . Zastosowania
⎕IO←0
.Jak to działa
źródło
1÷(n-1)!
cyfry? Czy możesz to przetłumaczyć na J, aby to wyjaśnić?Właściwie 6 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Brachylog , 18 bajtów
Wyjaśnienie
źródło
Klon, 18
Stosowanie:
źródło
C, 69 bajtów
Ideone to!
źródło
Java z dziesięciostopowym biegunem laserowym ,
238236 bajtówMa znacznie lepszą odporność na przelewanie niż większość innych odpowiedzi. Wynik dla 100 terminów to
źródło
Julia, 28 bajtów
Wyjaśnienie
gamma(k+1)
jest równyfactorial(k)
dla dodatnich liczb całkowitych i uogólnia je dla wszystkich wartości innych niż nieujemne liczby całkowite. Oszczędza jeden bajt, więc dlaczego go nie użyć?źródło
MATLAB / Octave, 22 bajty
Tworzy anonimową funkcję o nazwie,
ans
którą można wywołać za pomocąans(N)
.To rozwiązanie oblicza
gamma(x)
dla każdego elementu w tablicy [1 ... N], który jest równyfactorial(x-1)
. Następnie bierzemy odwrotność każdego elementu i sumujemy wszystkie elementy.Demo online
źródło
Perl 5, 37 bajtów
Nie zwycięzca, ale miły i bezpośredni:
Wyjścia dla wejść od 0 do 10:
źródło
R, 17 bajtów
Całkiem proste, choć w pewnym momencie mogą pojawić się problemy z precyzją liczbową.
źródło
WolframAlpha , 12 bajtów
źródło