Tính N chữ số đầu tiên của e


13

Thử thách

Viết chương trình tính các chữ số N (<= 10 ^ 3) đầu tiên của e .

Chương trình của bạn nên lấy một số nguyên N làm đầu vào.

Đầu vào:

100

Đầu ra:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427

Đầu vào:

7

Đầu ra:

2.718282

Đầu vào:

1000

Đầu ra:

2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035

Giải pháp ngắn nhất sẽ thắng!

Câu trả lời:


8

Toán học (12 byte)

N[E,Input[]]

Bạn có thể dùng thử trực tuyến: có một e-digitslệnh trên yubnub.org, ví dụ: yubnub.org/parser/parse?command=e-digits+1000 sử dụng wolframalpha wolframalpha.com/input/iêu
jfs

1
-1 vì bạn không tự thực hiện phép tính.
FUZxxl

2
@FUZxxl: Tác giả đã không yêu cầu thực hiện, chỉ những cái ngắn nhất được ưu tiên.
Quixotic

7
@Quixotic Câu hỏi không nói "tính toán" không chỉ đầu ra. Bạn có tranh luận điều tương tự nếu câu hỏi đã nói "tính toán" thay vì "tính toán" không?
nitro2k01

7

Con trăn, 69

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

Tính toán các lần lặp N + 2 của chuỗi lũy thừa tiêu chuẩn cho e.


6

J, 20 ... là.

Tính toán, nhưng ... Rất kém hiệu quả. Với n được xác định (20):

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

Là một hàm đơn âm (32):

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

Là một hàm ngầm (33, đã sửa):

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

Điều này hội tụ rất nhanh (đối với 100 chữ số bạn cần "chỉ" 70 thuật ngữ) để bạn có thể bỏ nó +9.
Eelvex

Đối với 1000 chữ số này: (0 j.<:1000)":+/%!i.x:450chỉ mất vài giây.
Eelvex

Bạn có quan tâm để giải thích mã của bạn?
aaaaaaaaaaaa

@Eelvex: Nhưng tôi cần các điều khoản bổ sung cho đến khi N = 30 hoặc hơn. (Bất kỳ gợi ý nào về việc giảm sự lộn xộn của các tác phẩm, hoặc điều đó có đúng không?)
Jesse Millikan

Ah, bạn nói đúng, thật không may. ("Mớ hỗn độn" đó ngắn hơn bất cứ thứ gì tôi có thể nghĩ ra - trừ khi, tất nhiên, bạn sử dụng một số cố định cho tôi như : (0 j.<:n)":+/%!i.999x; sau đó ngầm (+/%!i.999x)":~0 j.<::)
Eelvex

5

Con trăn, 67

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

Tiết kiệm 3 ký tự? from decimal import*và xóa cả haid.
Timtech 2/214

@Timtech import *sẽ không nhập _Onedo gạch dưới hàng đầu.
jfs

Được rồi, không biết rằng, xin lỗi /
Timtech

3

05AB1E, 4 3 2 byte

Vượt qua 4 vẫn là 4 thường xuyên (

Cảm ơn @Adnan cho một byte.

žt

Sử dụng mã hóa CP-1252 .

Giải trình:

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

Cập nhật:

Xóa I, như žtmất đầu vào nếu không có trong ngăn xếp.


1
Tôi đã đánh dấu điều này là không cạnh tranh vì 05AB1E đã được tạo ra khoảng 4 năm rưỡi sau khi thử thách này được đăng.
Mego

@Mego OK, tôi sẽ nhớ làm điều đó vào lần tới.
George Gibson

1
Chào mừng bạn đến với Câu đố lập trình và Code Golf! Ký žtự là 1 byte trong mã hóa CP-1252 , do đó, nó có tổng số điểm là 2 byte thay vì 3: p.
Ad Nam

@Ad Nam Cảm ơn! Ngôn ngữ hay, btw.
George Gibson

@GeorgeGibson Cảm ơn bạn! :)
Ad Nam

2

Hồng ngọc, 68

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

nó không hoạt động trên ruby1.8. Nó tạo ra kết quả không hợp lệ trên ruby1.9
JFS

Bạn nói đúng, nhưng nó sẽ hoạt động trong Ruby 1.9. Dường như có điều gì đó không đúng với độ chính xác trong chức năng E.
david4dev

Có vẻ tốt ở đây, nó chỉ thêm một số chữ số không chính xác. Mayby như thế này? Yêu cầu'bigdecimal / math '; đặt BigMath :: E (a = got.to_i) .to_s (? F) [0, a + 1]
steenslag

1

GolfScript 43 41

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

Chỉnh sửa: Tôi cũng có thể thay thế 0 bằng phần còn lại 1 từ khi khởi tạo b, sự khác biệt kết quả là quá nhỏ để làm cho nó trở thành đầu ra.

Tôi rời phiên bản cũ vì đó là những gì tôi đã ghi lại dưới đây.

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

~10\?Lấy đầu vào và tính 10 ^ đầu vào, để lại kết quả trên ngăn xếp.
1:b;Lưu trữ 1 trong b.
0 461,Đặt 0 trên ngăn xếp, đặt mảng [0 1 ... 459 460] trên ngăn xếp.
{ }460*Thực hiện chức năng 460 lần.
)b*:bLấy phần tử cuối cùng của mảng, nhân nó với b, lưu kết quả vào b và để lại kết quả trên ngăn xếp.
@+\Chuyển 0 (chỉ là số 0 ở lần lặp đầu tiên) sang đầu ngăn xếp, thêm nó vào giá trị b còn lại và chuyển lại kết quả.
;Xóa phần còn lại của mảng (chỉ còn lại [0]).
Số được khởi tạo thành 0 bây giờ giữ giá trị e * 460! và b giữ 460!
*Nhân 10 ^ đầu vào với e * 460! (tại thời điểm này, chỉ có 2 phần tử còn lại trên ngăn xếp).
b/Chia kết quả cho b.
Bây giờ ngăn xếp giữ giá trị e * 10 ^ đầu vào mà khi được chuyển đổi thành một chuỗi sẽ giữ tất cả các số thập phân, nhưng không chứa dấu chấm.
`);(;'2.'\Một loạt các hoạt động chuỗi để phù hợp với dấu chấm.

e * 460! được tính bằng 1 + 460 + 460 * 459 + 460 * 459 * 458, v.v.



0

J, 17

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

Thí dụ:

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

Sử dụng được xây dựng trong động từ theo cấp số nhân - vì vậy, "tính toán" là trên cơ sở run rẩy. Về cơ bản:

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

*&0j1chỉ đơn giản làj.
FrownyFrog

0

GTB , 14

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

Giải trình

e- Đặt elàm giá trị tính toán cuối cùng

S?- Chuyển đổi ethành chuỗi_

`A - Đầu vào A

S;_,1,A+1Hiển thị các Achữ số đầu tiên củae


0

Mathcad, [tbd] byte

nhập mô tả hình ảnh ở đây

Sử dụng thuật toán spigot - http://comjnl.oxfordjournals.org/content/11/2/229.full.pdf+html .


Số lượng byte không được đưa ra là tương đương số lượng byte Mathcad vẫn chưa được xác định. Tuy nhiên, bằng cách sử dụng một biểu tượng tương đương, nó là khoảng 121 byte ... và sẽ không giành được bất kỳ giải thưởng ngắn gọn nào cho dù mức độ tương đương được xác định như thế nào.


0

Toán học, 7 byte

N[E,#]&

Câu trả lời của tôi là tiếp tục chơi golf của câu trả lời này .

Hãy thử trực tuyến!

Vì một số lý do, đầu ra tại TIO trông buồn cười nhưng tôi đã thử nó trên máy của mình và mã hoạt động tốt.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.