Kita semua tahu bahwa angka Euler , dilambangkan dengan e, dengan kekuatan beberapa variabel x, dapat diperkirakan dengan menggunakan ekspansi Seri Maclaurin :
Dengan membiarkan x sama dengan 1, kita memperoleh
Tantangan
Tulis program dalam bahasa apa pun yang mendekati angka Euler dengan mengambil input N dan menghitung deret ke suku N-th. Perhatikan bahwa suku pertama memiliki penyebut 0 !, bukan 1 !, yaitu N = 1 sesuai dengan 1/0 !.
Mencetak gol
Program dengan jumlah byte terkecil menang.
code-golf
math
number
approximation
Meow Mix
sumber
sumber
N
hasilnya akan sama jika menggunakan angka floating point presisi terbatas. Apakah perilaku itu dapat diterima atau apakah hasilnya harus semakin akurat saatN
mendekati tak terbatas?Jawaban:
Jelly , 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Ḷ
, yang membuat kisaran [0, n) . ^ v ^;Wistful-C - 336 bytes
Program sayu-nyata pertama saya! Sebenarnya ada sedikit golf yang saya lakukan, dengan menggunakan
someday
bukanwait for
karena yang pertama memiliki panjang lebih pendek.sumber
<stdio.h>
someday i were N...
berfungsisomeday i will be N...
?Pyth,
76 byteCoba di sini.
Terima kasih kepada FryAmTheEggman untuk satu byte!
sumber
TI-84 BASIC,
121514TI adalah bahasa tokenized ( byte dihitung melalui token , bukan karakter individu).
sumber
Ans
bukan format input yang valid, jadi hanya versi 15-byte yang valid.Ans
selalu menjadi format input default di sini di PPCG (lihat jawaban TI lama saya), dan lebih banyak orang setuju daripada tidak setuju dengan itu, jadi jangan diganggu untuk mengubah jawaban Anda.Julia,
282721 byteIni adalah fungsi anonim yang menerima integer dan mengembalikan float. Untuk menyebutnya, tetapkan ke variabel.
Pendekatannya cukup mudah. Kami
sum
1 dibagi dengan fungsi gamma yang dievaluasi pada masing-masing 1 hingga n . Ini mengambil keuntungan dari properti n ! = Γ ( n +1).Cobalah online!
Disimpan 1 byte berkat Dennis dan 6 berkat Glen O!
sumber
@(n)sum(1./factorial(0:n))
Python, 36 byte
Python 2:
Python 3:
sumber
or
bukannyaand
:f=lambda n,i=1:i>=n or 1+f(n,i+1)/i
.dc, 43 byte
Ini adalah terjemahan seri yang cukup langsung. Saya mencoba menjadi lebih pintar, tetapi itu menghasilkan kode yang lebih panjang.
Penjelasan
Fungsi faktorial sederhana, untuk n> 0
Jalankan faktorial untuk n, ..., 1; membalikkan dan menjumlahkan
Perdana tumpukan dengan 1; menerima input dan mengatur presisi yang sesuai
Jika input 0 atau 1, kita bisa meneruskannya, jika tidak hitung jumlah parsial.
Cetak hasilnya.
Hasil tes
100 ekspansi pertama:
Menggunakan 1000 istilah:
sumber
J, 10 byte
Pendekatan lurus ke depan.
Penjelasan
sumber
1#.%@!@i.
CJam, 11
atau
Cobalah online: versi pertama dan versi kedua
Penjelasan:
r~
= membaca dan mengevaluasim!
= faktorialW#
= naikkan ke daya -1 (W
= -1):+
= jumlah arrayVersi pertama membangun array [0 ... N-1] dan menerapkan faktorial dan terbalik untuk semua elemennya; Versi ke-2 melakukan faktorial dan terbalik untuk setiap angka kemudian menempatkannya dalam sebuah array.
sumber
JavaScript ES6,
44 4240Fungsi yang tidak disebutkan namanya sekarang.
Terima kasih telah menyimpan 2 byte @AlexA dan terima kasih kepada @LeakyNun untuk 2 byte lainnya!
sumber
n=>{for(k=s=m=1;m<n;s+=k/=m++);return s}
MATL,
117 byte4 byte disimpan berkat rekomendasi @ Luis untuk menggunakan
gamma
(Yg
)Cobalah secara Online
Penjelasan
sumber
]
1i:Yg/s
selama 7 byteMATL , 6 byte
Ini menghitung jumlah menggunakan fungsi hypergeometric 1 F 1 ( a ; b ; z ):
Bekerja pada oktaf dan pada kompiler online, tetapi tidak pada Matlab, karena perbedaan dalam bagaimana fungsi hypergeometric didefinisikan (yang akan diperbaiki).
Cobalah online!
Penjelasan
sumber
C, 249 byte
Tidak Disatukan:
Mengambil nomor sebagai argumen untuk menentukan jumlah iterasi.
sumber
int
sebelummain
danreturn 0
. Juga, jika Anda menggantiNULL
dengan0
, Anda tidak perlu menyertakan.argc
danargv
dapat disingkat menjadi variabel huruf tunggal. Jika Anda menikmati bermain golf di C, Anda mungkin menemukan Tips untuk bermain golf di C bermanfaat.#include <stdio.h>
k (13 byte)
Tunduk pada luapan untuk
N>20
sumber
05AB1E, 6 byte
Dijelaskan
Cobalah online
sumber
L<!zO
.Pyke, 10 byte
Coba di sini!
Atau 8 byte jika daya = 1
Coba di sini!
sumber
JavaScript (ES6), 28 byte
sumber
Dyalog APL , 6 byte
+/
jumlah÷
kebalikan dari!
faktorial⍳
angka dari 0 hingga⎕
input numerikAsumsikan
⎕IO←0
, yang merupakan default pada banyak sistem.TryAPL !
sumber
Haskell, 37 byte
Bukan yang terpendek, tapi bisa dibilang yang tercantik.
Juga atas izin Laikoni , berikut adalah solusi yang lebih pendek 2 byte :
sumber
50
. Untuk menambahkan header, gunakan:## Language, <xxx> bytes
.f n=
atau\n->
mendapatkan pengajuan fungsi yang valid. Namun, kita juga dapat menyimpan beberapa byte:(\x->1/x)
bisa disingkat menjadi bagian(1/)
,[1,2..]
sama dengan[1..]
danmap(...)$
bisa(...)<$>
. Bersama 36 byte: Cobalah online!((scanl(+)0$(1/)<$>scanl(*)1[1..])!!)
terlihat bagus juga.\n->
untuk membuat sebuah fungsi.APL (Dyalog Unicode) , 5 byte
Cobalah online!
Menggunakan trik basis campuran yang ditemukan dalam jawaban saya untuk tantangan lain . Penggunaan
⎕IO←0
.Bagaimana itu bekerja
sumber
1÷(n-1)!
digit? Bisakah Anda menerjemahkannya ke J untuk menjelaskan?Sebenarnya, 6 byte
Cobalah online!
Penjelasan:
sumber
Brachylog , 18 byte
Penjelasan
sumber
Maple, 18
Pemakaian:
sumber
C, 69 byte
Ide itu!
sumber
Java dengan Tiang Laser Kaki Sepuluh ,
238236 byteMemiliki ketahanan overflow yang jauh lebih baik daripada sebagian besar jawaban lainnya. Untuk 100 syarat, hasilnya adalah
sumber
Julia, 28 byte
Penjelasan
gamma(k+1)
sama denganfactorial(k)
untuk input integer positif, dan menggeneralisasikannya untuk semua nilai selain dari integer nonnegatif. Menghemat satu byte, jadi mengapa tidak menggunakannya?sumber
MATLAB / Oktaf, 22 byte
Menciptakan fungsi anonim bernama
ans
yang dapat dipanggil menggunakanans(N)
.Solusi ini menghitung
gamma(x)
untuk setiap elemen dalam array [1 ... N] yang sama denganfactorial(x-1)
. Kami kemudian mengambil kebalikan dari setiap elemen dan menjumlahkan semua elemen.Demo online
sumber
Perl 5, 37 byte
Bukan pemenang, tetapi baik dan langsung:
Output untuk input dari 0 hingga 10:
sumber
R, 17 byte
Cukup mudah, meskipun masalah presisi numerik pasti akan muncul di beberapa titik waktu.
sumber
WolframAlpha , 12 byte
sumber