Oblicz pierwsze N ​​cyfr e

13

Wyzwanie

Napisz program do obliczenia pierwszych N (<= 10 ^ 3) cyfr e .

Twój program powinien brać całkowitą N jako wejście.

Wejście:

100

Wynik:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

Wejście:

7

Wynik:

2.718282

Wejście:

1000

Wynik:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

Najkrótsze rozwiązanie wygrywa!

Donkiszotowski
źródło

Odpowiedzi:

8

Matematyka (12 bajtów)

N[E,Input[]]
Donkiszotowski
źródło
Możesz spróbować online: e-digitsna stronie yubnub.org znajduje się polecenie, np. Yubnub.org/parser/parse?command=e-digits+1000, które używa wolframalpha wolframalpha.com/input/…
jfs
1
-1, ponieważ nie wdrażasz obliczeń samodzielnie.
FUZxxl
2
@FUZxxl: Autor nie poprosił o implementację, preferowane są tylko najkrótsze.
Quixotic
7
@Quixotic Pytanie brzmi: „oblicz” nie tylko wyjście. Czy argumentowałbyś to samo, gdyby pytanie brzmiało „oblicz” zamiast „oblicz”?
nitro2k01
7

Python, 69

e = f = n = 1; N = input () + 2; exec "e + = 10 ** N / f; f * = n; n + = 1;" * N; print'2. '+ `e` [ 1: -4]

Oblicza iteracje N + 2 standardowej serii mocy dla e.

hallvabo
źródło
6

J, 20 ... ish.

Obliczeniowy, ale ... Bardzo nieefektywny. Przy n zdefiniowanym (20):

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

Jako funkcja monadyczna (32):

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

Jako funkcja ukryta (33, stała):

(0 j.<:)":(+/)&:(%&!&i.&x:&(9&+))
Jesse Millikan
źródło
Zbiega się to bardzo szybko (na 100 cyfr potrzebujesz „tylko” 70 terminów), abyś mógł je upuścić +9.
Eelvex
Dla 1000 cyfr to: (0 j.<:1000)":+/%!i.x:450zajmuje tylko kilka sekund.
Eelvex
Czy chciałbyś wyjaśnić swój kod?
aaaaaaaaaaaa
@Eelvex: Ale potrzebuję dodatkowych określeń do N = około 30. (Wszelkie wskazówki na temat zmniejszania bałaganu w komponowaniu, czy to w porządku?)
Jesse Millikan,
Ach, masz rację, to niefortunne. (To „bałagan” jest krótszy niż cokolwiek innego mogę wymyślić - chyba, poza oczywiście użyć określoną liczbę dla Lubię:. (0 j.<:n)":+/%!i.999x; Następnie milcząco: (+/%!i.999x)":~0 j.<:)
Eelvex
5

Python, 67

import decimal as d
d.getcontext().prec=input()
print d._One.exp()
jfs
źródło
Zapisujesz 3 znaki? from decimal import*i usuń obad.
Timtech
@Timtech import *nie zostanie zaimportowany z _Onepowodu wiodącego podkreślenia.
jfs
Okej, nie wiedziałem o tym, przepraszam /
Timtech 24.04.16
3

05AB1E, 4 3 2 bajty

Przekreślone 4 jest nadal zwykłym 4; (

Dzięki @Adnan za bajt.

žt

Wykorzystuje kodowanie CP-1252 .

Wyjaśnienie:

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

Aktualizacja:

Usuń I, ponieważ i tak žtpobiera dane wejściowe, jeśli nie ma ich na stosie.

George Gibson
źródło
1
Oznacziłem to jako niekonkurujące, ponieważ 05AB1E zostało utworzone około 4 i pół roku po opublikowaniu tego wyzwania.
Mego
@Mego OK, będę pamiętać, aby zrobić to następnym razem.
George Gibson
1
Witamy w Programowaniu zagadek i Code Golf! žPostać jest jeden bajt w CP-1252 kodowania, to ten ma całkowitą punktację 2 bajty zamiast 3 p.
Adnan
@Adnan Thanks! Fajny język, btw.
George Gibson
@GeorgeGibson Dziękujemy! :)
Adnan
2

Ruby, 68

require 'bigdecimal/math';include BigMath;puts E(gets.to_i).to_s 'F'
david4dev
źródło
nie działa na Ruby 1.8. Daje nieprawidłowe wyniki dla ruby1.9
jfs
Masz rację, ale powinno działać w Ruby 1.9. Wydaje się, że coś jest nie tak z precyzją w funkcji E.
david4dev
Wygląda tu dobrze, dodaje tylko nieprecyzyjne cyfry. Mayby to lubi? wymagają 'dużych liczb / matematyki'; stawia 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.'\

Edycja: Równie dobrze mogę zastąpić 0 resztką 1 z inicjalizacji b, wynikowa różnica jest zdecydowanie zbyt mała, aby uzyskać wynik.

Opuściłem starą wersję, ponieważ to właśnie udokumentowałem poniżej.

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

~10\?Weź dane wejściowe i oblicz 10 ^, zostaw wynik na stosie.
1:b;Przechowuj 1 w b.
0 461,Umieść 0 na stosie, umieść tablicę [0 1 ... 459 460] na stosie.
{ }460*Wykonaj funkcję 460 razy.
)b*:bWeź ostatni element tablicy, pomnóż go przez b, zapisz wynik wb i pozostaw wynik na stosie.
@+\Przełącz wartość 0 (która jest tylko zerem przy pierwszej iteracji) na górę stosu, dodaj ją do pozostałej wartości b i ponownie przełącz wynik.
;Usuń resztę tablicy (pozostało tylko [0]).
Liczba, która została zainicjowana na 0, ma teraz wartość e * 460! i b posiadają 460!
*Pomnóż 10 ^ przez e * 460! (w tym momencie są to tylko 2 elementy pozostałe na stosie).
b/Podziel wynik przez b.
Stos zawiera teraz wartość wejściową e * 10 ^, która po przekształceniu na ciąg będzie przechowywać wszystkie miejsca po przecinku, ale nie kropkę.
`);(;'2.'\Kilka operacji na łańcuchach pasujących do kropki.

e * 460! oblicza się jako 1 + 460 + 460 * 459 + 460 * 459 * 458 itd.

aaaaaaaaaaaa
źródło
1

pne , 17 znaków

scale=read()
e(1)
Tomas
źródło
0

J, 17

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

Przykład:

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

Używa wbudowanego wykładniczego czasownika - więc „obliczanie” jest niepewne. Gruntownie:

^1 - computes e**1
x: - does extended precision
0jy ": - formats the number to y digit
fryzjer męski
źródło
*&0j1jest po prostuj.
FrownyFrog
0

GTB , 14

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

Wyjaśnienie

e- Wpisz ejako ostatnią obliczoną wartość

S?- Konwertuj ena ciąg_

`A - Wejście A

S;_,1,A+1Wyświetl pierwsze Acyfrye

Timtech
źródło
0

Mathcad, [tbd] bajty

wprowadź opis zdjęcia tutaj

Korzysta z algorytmu czopka - http://comjnl.oxfordjournals.org/content/11/2/229.full.pdf+html .


Liczba bajtów nie podana jako równoważność liczby bajtów Mathcada nie została jeszcze ustalona. Jednak przy użyciu równoważności symbolu jest to około 121 bajtów ... i nie będzie wygrywać żadnych zwięzłych nagród, bez względu na to, jak zostanie ustalona równoważność.

Stuart Bruff
źródło
0

Mathematica, 7 bajtów

N[E,#]&

Moja odpowiedź jest kolejnym golfem tej odpowiedzi.

Wypróbuj online!

Z jakiegoś powodu wyjście w TIO wygląda zabawnie, ale przetestowałem to na moim komputerze i kod działa dobrze.

RGS
źródło