e의 처음 N 자리를 계산


13

도전

e 의 첫 번째 N (<= 10 ^ 3) 자릿수를 계산하는 프로그램을 작성하십시오 .

프로그램은 정수 N 을 입력으로 사용해야 합니다.

입력:

100

산출:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

입력:

7

산출:

2.718282

입력:

1000

산출:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

최단 솔루션이 승리합니다!

답변:


8

매스 매 티카 (12 바이트)

N[E,Input[]]

온라인으로해볼 수 있습니다 : e-digitsyubnub.org에 wolframalpha 를 사용 하는 yubnub.org/parser/parse?command=e-digits+1000과 같은 명령 이 있습니다. wolframalpha wolframalpha.com/input/…
jfs

1
-1 스스로 계산을 수행하지 않기 때문에 -1.
FUZxxl

2
@FUZxxl : 저자는 구현을 요구하지 않았으며 가장 짧은 것만 선호합니다.
Quixotic

7
@Quixotic이 질문은 단지 출력이 아니라 "계산"이라고 말합니다. 질문이 "계산"대신 "계산"이라고 말한 경우에도 같은 주장을 했습니까?
nitro2k01

7

파이썬, 69

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

e에 대한 표준 전력 계열의 N + 2 반복을 계산합니다.


6

J, 20 ... ish.

계산적이지만 ... 매우 비효율적입니다. n이 정의 된 상태 (20) :

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

모나 딕 함수 (32)로서 :

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

암묵적 기능 (33, 고정) :

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

이것은 매우 빠르게 수렴됩니다 (100 자리 숫자에는 "단지"70 개의 용어가 필요함) +9.
Eelvex

1000 자리 숫자 : (0 j.<:1000)":+/%!i.x:450몇 초 밖에 걸리지 않습니다.
Eelvex

코드를 설명해 주시겠습니까?
aaaaaaaaaaaa

@ Elvex : 그러나 N = 30 정도까지 추가 용어가 필요합니다. (작곡의 혼란을 줄이는 데 도움이되는 힌트가 있습니까?)
Jesse Millikan

아, 맞아, 불행한 일이야 ( "엉망"무엇보다 짧은 것을 내가 가지고 올 수있는 - 물론 떨어져, 당신은 내가 대한 고정 된 번호를 사용하지 않는 한 같은 :. (0 j.<:n)":+/%!i.999x, 다음 암묵적 : (+/%!i.999x)":~0 j.<:)
Eelvex

5

파이썬, 67

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

3자를 저장 하시겠습니까? from decimal import*d.
Timtech

@Timtech import *_One밑줄로 인해 가져올 수 없습니다 .
jfs

좋아, 몰랐어, 미안 /
Timtech

3

05AB1E, 4 3 2 바이트

4를 넘어도 여전히 규칙적입니다 .4; (

바이트에 대한 @Adnan에게 감사합니다.

žt

CP-1252 인코딩을 사용합니다 .

설명:

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

최신 정보:

제거는 I, 같은 žt아무도 스택에없는 경우 입력 어쨌든 걸립니다.


1
05AB1E는이 챌린지가 게시 된 지 약 4 년 반이 지나서 만들어 졌으므로 경쟁이 아닌 것으로 표시했습니다.
Mego

@ Mego 좋아, 나는 다음에 그 일을 기억합니다.
조지 깁슨

1
프로그래밍 퍼즐과 코드 골프에 오신 것을 환영합니다! ž문자는 1 바이트CP-1252 (P)이 대신 3의 2 바이트의 총 점수를 갖도록, 부호화.
Adnan

@Adnan 감사합니다! 좋은 언어, btw.
조지 깁슨 17

@GeorgeGibson 감사합니다! :)
Adnan 2016 년

2

루비, 68

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

ruby1.8에서는 작동하지 않습니다. ruby1.9에서 유효하지 않은 결과를 생성합니다.
jfs

당신 말이 맞아,하지만 해야 루비 1.9에서 작동합니다. E 기능 에서 정밀도에 문제가있는 것 같습니다 .
david4dev

여기에 잘 보이고, 정확하지 않은 숫자가 추가됩니다. 이런 식으로? 'bigdecimal / math'; puts 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.'\

편집 : b를 초기화 할 때 남은 1로 0을 대체 할 수도 있습니다. 결과 차이가 너무 작아서 출력으로 만들 수 없습니다.

아래에 문서화 한대로 이전 버전을 남겼습니다.

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

~10\?입력을 받아 10 ^ 입력을 계산하고 결과를 스택에 남겨 둡니다.
1:b;b에 1을 저장하십시오.
0 461,스택에 0을 놓고 스택에 배열 [0 1 ... 459 460]을 놓습니다.
{ }460*기능을 460 번 실행하십시오.
)b*:b배열의 마지막 요소에 b를 곱한 다음 b에 결과를 저장하고 결과를 스택에 그대로 둡니다.
@+\0 (첫 번째 반복에서 0 임)을 스택의 맨 위로 전환하고 남은 b 값에 ​​추가 한 다음 결과를 다시 전환하십시오.
;나머지 배열을 제거합니다 ([0] 만 남음).
0으로 초기화 된 숫자는 이제 e * 460 값을 보유합니다! 그리고 b는 460을 잡아라!
*10 ^ 입력에 e * 460을 곱하십시오! (이 시점에서 스택에 남은 요소는 2 개뿐입니다).
b/결과를 b로 나눕니다.
스택은 이제 e * 10 ^ input 값을 가지고 있는데, 이것은 문자열로 변환 될 때 모든 소수점을 포함하지만 점은 포함하지 않습니다.
`);(;'2.'\도트에 맞도록 일련의 문자열 연산.

e * 460! 1 + 460 + 460 * 459 + 460 * 459 * 458 등으로 계산됩니다.



0

J, 17

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

예:

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

지수 동사로 사용되므로 "계산"은 흔들리는 곳에 있습니다. 원래:

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

*&0j1는 단순히j.
FrownyFrog

0

GTB , 14

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

설명

e- e마지막 계산 값으로

S?- e문자열로 변환_

`A -입력 A

S;_,1,A+1의 첫 A자릿수 표시e



0

Mathematica, 7 바이트

N[E,#]&

내 대답은 대답 의 추가 골프입니다 .

온라인으로 사용해보십시오!

어떤 이유로 TIO에서의 출력 결과는 재미있어 보이지만 내 컴퓨터에서 테스트했는데 코드가 제대로 작동합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.