E'nin ilk N basamağını hesaplayın


13

Meydan okuma

Birinci N (<10 ^ 3) basamak hesaplamak için bir program yazın e .

Programınız girdi olarak bir tamsayı N almalıdır .

Giriş:

100

Çıktı:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

Giriş:

7

Çıktı:

2.718282

Giriş:

1000

Çıktı:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

En kısa çözüm kazanır!

Yanıtlar:


8

Mathematica (12 bayt)

N[E,Input[]]

Çevrimiçi olarak deneyebilirsiniz: e-digitsyubnub.org üzerinde bir komut var, örn. Yubnub.org/parser/parse?command=e-digits+1000, wolframalpha kullanan wolframalpha.com/input/…
jfs

1
-1, çünkü hesaplamayı kendi kendinize uygulamıyorsunuz.
FUZxxl

2
@FUZxxl: Yazar bir uygulama istemedi, sadece en kısa uygulamalar tercih edildi.
Quixotic

7
@Quixotic Soru sadece çıktı değil "hesaplama" diyor. Eğer soru "hesaplama" yerine "hesapla" derseseydi aynı şeyi tartışır mıydınız?
nitro2k01

7

Python, 69

e = f = n = 1, N = girişi () + 2: ok "e + = 10 ** N / f, f * = n, n + = 1;" * = N;. print'2 '+' e` [ 1: -4]

E için standart güç serisinin N + 2 yinelemelerini hesaplar.


6

J, 20 ... ish.

Hesaplamalı, ama ... Çok verimsiz. N tanımlı (20) ile:

(0 j.<:n)":+/%!i.x:n+9

Monadik bir fonksiyon olarak (32):

ge =. 3 : '(0 j.<:y)":+/%!i.x:y+9'

Bir zımni fonksiyon olarak (33, sabit):

(0 j.<:)":(+/)&:(%&!&i.&x:&(9&+))

Bu çok hızlı bir şekilde yakınsar (100 basamak için "sadece" 70 terime ihtiyacınız vardır), böylece bırakabilirsiniz +9.
Eelvex

1000 basamak için: (0 j.<:1000)":+/%!i.x:450sadece birkaç saniye sürer.
Eelvex

Kodunuzu açıklamak ister misiniz?
aaaaaaaaaaaa

@Eelvex: Ama N = 30'a kadar ekstra terimlere ihtiyacım var. (Kompozitlerin karmaşasını azaltmaya dair herhangi bir ipucu ya da bu doğru mu?)
Jesse Millikan

Ah, haklısın, bu talihsiz. ( "Karışıklık" her şeyden daha kısadır Ben ile gelebilir - Elbette kapalı, sen i için sabit sayıda kullanmadığınız sürece gibi:. (0 j.<:n)":+/%!i.999x; Sonra zımnen: (+/%!i.999x)":~0 j.<:)
Eelvex

5

Python, 67

import decimal as d
d.getcontext().prec=input()
print d._One.exp()

3 karakter kaydedilsin mi? from decimal import*ve her ikisini de kaldırınd.
Timtech

@Timtech , önde gelen alt çizgi nedeniyle import *içe aktarılmaz _One.
jfs

Tamam, bilmiyordum, üzgünüm /
Timtech

3

05AB1E, 4 3 2 bayt

Çarpılan 4 hala normal 4; (

@Adnan'a bir bayt için teşekkürler.

žt

CP-1252 kodlamasını kullanır .

Açıklama:

žt - Push input. Pop a, push e to a places (up to 10000).

Güncelleme:

Yığında herhangi bir şey yoksa girişi alır Igibi kaldırın žt.


1
05AB1E, bu zorluğun gönderilmesinden yaklaşık 4 buçuk yıl sonra oluşturulduğundan bunu rakipsiz olarak işaretledim.
Mego

@Mego Tamam, bir dahaki sefere yapmayı hatırlayacağım.
George Gibson

1
Programlama Bulmacaları ve Kod Golf hoş geldiniz! žKarakter 1 bayt içinde CP-1252 , p: bu 3 yerine 2 bayt bir toplam puanı alır, böylece kodlama.
Adnan

@Adnan Teşekkürler! Güzel dil, btw.
George Gibson

@GeorgeGibson Teşekkürler! :)
Adnan

2

Yakut, 68

require 'bigdecimal/math';include BigMath;puts E(gets.to_i).to_s 'F'

ruby1.8 üzerinde çalışmaz. Ruby1.9
jfs

Haklısın, ama gerektiği Ruby 1.9 çalışır. E işlevinde hassasiyetle ilgili bir sorun var gibi görünüyor .
david4dev

Burada iyi görünüyor, sadece bazı kesin olmayan rakamlar ekliyor. Mayby böyle mi? 'büyük-matematik / matematik' gerektirir; BigMath :: E (a = gets.to_i) .to_s (? F) [0, a + 1]
steenslag

1

GolfScript 43 41

~10\?1:b 461,{)b*:b@+\}460*;*b/`);(;'2.'\

Düzenleme: Ben de 0 başlangıç ​​b gelen kalan 1 ile değiştirebilirsiniz, ortaya çıkan fark çıkış yapmak için çok küçük.

Eski sürümü aşağıda belgelediğim gibi bıraktım.

~10\?1:b;0 461,{)b*:b@+\}460*;*b/`);(;'2.'\

~10\?Girdiyi alın ve 10 ^ girdisini hesaplayın, sonucu yığın üzerinde bırakın.
1:b;B'de 1 depolayın.
0 461,Yığına 0, yığına [0 1 ... 459 460] dizisini koyun.
{ }460*Fonksiyonu 460 kez uygulayın.
)b*:bDizinin son öğesini alın, b ile çarpın, sonucu b olarak saklayın ve sonucu yığın üzerinde bırakın.
@+\0'ı (ilk yinelemede yalnızca sıfır olan) yığının en üstüne geçirin, kalan b değerine ekleyin ve sonucu tekrar değiştirin.
;Dizinin geri kalanını kaldırın (yalnızca [0] kaldı).
0 olarak başlatılan sayı şimdi e * 460 değerini tutar! ve b 460'yı tutun!
*10 ^ girişi e * 460 ile çarpın! (bu noktada yığınta kalan sadece 2 öğe vardır).
b/Sonucu b'ye bölün.
Yığın şimdi bir dizeye dönüştürüldüğünde noktayı değil tüm ondalıkları tutacak olan e * 10 ^ girişini tutar.
`);(;'2.'\Noktaya sığdırmak için bir dizi dize işlemi.

E * 460! 1 + 460 + 460 * 459 + 460 * 459 * 458 vb. olarak hesaplanır.



0

J, 17

(":&(x:^1)@*&0j1)

Misal:

(":&(x:^1)@*&0j1) 50
2.71828182845891281655718620537435347047040502245993

Üstel fiilde yerleşik kullanır - bu nedenle, "compute" titrek bir zemindir. Temelde:

^1 - computes e**1
x: - does extended precision
0jy ": - formats the number to y digit

*&0j1olduğunu sadecej.
FrownyFrog

0

GTB , 14

eS?`AS;_,1,A+1

açıklama

e- eSon hesaplanan değer olarak koy

S?- dönüştürme edizeye_

`A - Giriş A

S;_,1,A+1Öğesinin ilk Arakamlarını görüntülemee



0

Mathematica, 7 bayt

N[E,#]&

Cevabım bu cevabın daha da golf oynamak.

Çevrimiçi deneyin!

Bazı nedenlerden dolayı, TIO'daki çıktı komik görünüyor ama makinemde test ettim ve kod gayet iyi çalışıyor.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.