Mã tính toán Pi [đóng]


17

Các thách thức

Bạn phải tính pi theo chiều dài ngắn nhất bạn có thể. Bất kỳ ngôn ngữ nào đều được chào đón để tham gia và bạn có thể sử dụng bất kỳ công thức nào để tính pi. Nó phải có khả năng tính toán pi đến ít nhất 5 chữ số thập phân. Ngắn nhất, sẽ được đo bằng ký tự. Cuộc thi kéo dài trong 48 giờ. Bắt đầu


Lưu ý : Câu hỏi tương tự này nói rằng PI phải được tính bằng cách sử dụng chuỗi 4 * (1 - 1/3 + 1/5 - 1/7 + Lỗi). Câu hỏi này không có hạn chế này và trên thực tế, rất nhiều câu trả lời ở đây (bao gồm cả khả năng chiến thắng cao nhất) sẽ không hợp lệ trong câu hỏi khác đó. Vì vậy, đây không phải là một bản sao.


5
@hvd Tại sao bạn nghĩ nó nên bị loại? Nó phù hợp với thông số kỹ thuật ...
Tiến sĩ belisarius

5
@hvd acos (-1). Tôi thắng!
Cấp sông St

4
Điều này có vẻ kỳ lạ, không nhất quán. Tính toán π phải chia một vòng tròn cho đường kính của nó, hoặc một số thao tác khác cho π. Nếu chúng ta chấp nhận thực hiện 355/113 - không liên quan gì đến π ngoại trừ may mắn - như @ace, thì về mặt logic, chúng ta nên chấp nhận thực hiện 3.14159 .
Nicolas Barbulesco

7
Tôi không hiểu tại sao mọi người thích câu hỏi này. Đây là một trong những câu hỏi khó hiểu và không thú vị nhất mà tôi thấy ở đây. Sự khác biệt duy nhất giữa thế giới này và xin chào, là điều này có liên quan đến Pi.
Cruncher

8
Để làm cho câu hỏi này thú vị, nó cần một hàm tính điểm thưởng cho các chữ số pi trên mỗi byte mã.
Ben Jackson

Câu trả lời:


56

Python3, 7

Chạy trong vỏ tương tác

355/113

Đầu ra : 3.1415929203539825, đúng đến 6 chữ số thập phân

Và cuối cùng tôi có một giải pháp đánh bại APL!

Ồ, và trong trường hợp bạn đang tự hỏi, tỷ lệ này được gọi là 密 (nghĩa đen là "tỷ lệ chính xác"), và được đề xuất bởi nhà toán học Trung Quốc Zu Chongzhi (429-500 sau Công nguyên). Một bài viết wikipedia có liên quan có thể được tìm thấy ở đây . Zu cũng đưa ra tỷ lệ 22/7 là "tỷ lệ thô" và ông được biết đến là nhà toán học đầu tiên đề xuất rằng 3.1415926 <= pi <= 3.1415927


12
mhmh - đó thực sự là một câu trả lời đa âm. Hoạt động trong Smalltalk quá!
blabla999

7
Lộng ngôn! Đó chỉ là một phép tính!
mniip

3
tốt, đó là một bộ phận, và độ chính xác của nó đáp ứng yêu cầu ... (và ngay cả kinh thánh cũng kém chính xác hơn, bạn sẽ không gắn nhãn đó là báng bổ - bạn sẽ không? 3 * ;-)
blabla999

29
Khoảnh khắc khó xử khi tôi viết đây là một câu trả lời nghiêm túc nhưng mọi người diễn giải nó như một trò đùa ...
user12205

20
Câu trả lời bình chọn cao nhất : 355/113. Câu trả lời bình chọn thấp nhất : 3+.14159. Tôi không thấy nhiều sự khác biệt, thực sự.
primo

49

PHP - 132 127 125 124 byte

Mô phỏng cơ bản Monte-Carlo. Cứ sau 10 triệu lần lặp, nó sẽ in trạng thái hiện tại:

for($i=1,$j=$k=0;;$i++){$x=mt_rand(0,1e7)/1e7;$y=mt_rand(0,1e7)/1e7;$j+=$x*$x+$y*$y<=1;$k++;if(!($i%1e7))echo 4*$j/$k."\n";}

Cảm ơn cloudfeet và zamnuts cho những gợi ý!

Đầu ra mẫu:

$ php pi.php
3.1410564
3.1414008
3.1413388
3.1412641
3.14132568
3.1413496666667
3.1414522857143
3.1414817
3.1415271111111
3.14155092
...
3.1415901754386
3.1415890482759
3.1415925423731

5
Lên cho một câu trả lời mà thực sự tính toán!
blabla999

Không biết về PHP, nhưng trong JS bạn có thể làm một cái gì đó như: $j+=$x*$x+$y*$y<=1;nó sẽ giúp bạn tiết kiệm bốn byte.
đám mây

1
Ngoài ra $k+=1/4;print $j/$kcó thể được giảm xuống $k++;print 4*$j/$kcho một byte khác.
đám mây

@cloudfeet - Thay đổi được thực hiện, mã xác nhận vẫn chạy như cũ. Cảm ơn bạn!

2
@MarkC - Về mặt khái niệm, nó đang ném phi tiêu ngẫu nhiên trong một hình chữ nhật 0,0 đến 1,1. Những người nhỏ hơn hoặc bằng khoảng cách 1 từ 0,0 được xem xét bên trong, khác bên ngoài. Hình dạng của khoảng cách 1 này xảy ra là một nửa vòng tròn hoặc π / 4. [Số phi tiêu bên trong vòng tròn quý] / [tổng số phi tiêu] sẽ xấp xỉ bằng π / 4 khi số lượng mẫu tăng lên.

31

J 6

{:*._1

Giải thích: *.cho chiều dài và góc của một số phức. Góc của -1 là pi. {:lấy đuôi của danh sách [chiều dài, góc]

Chỉ dành cho những người theo chủ nghĩa fettish-series-fettishists, với 21 byte, một chuỗi Leibniz:

      +/(4*_1&^%>:@+:)i.1e6
 3.14159

12
Nói cách khác, đây là atan(0) + pi. Tôi không nghĩ rằng việc sử dụng các hàm lượng giác và chính pi nên được tính là một "phép tính".
Jason C

@JasonC Arg(nghĩa là đối số của số phức) không phải là hàm lượng giác, mặc dù có các giá trị tương tự như của arctangent
mniip

1
@mniip Vâng, đúng vậy. Nó chỉ là một từ đồng nghĩa với atan (tốt, atan2) trên các phần thực và ảo. Như bạn có thể thấy ở đó, nó chính xác là bằng nhau, theo định nghĩa, để atan(0) + pi.
Jason C

25

Perl, 42 byte

map{$a+=(-1)**$_/(2*$_+1)}0..9x6;print$a*4

Đó là tính toán π bằng công thức Leibniz :

Công thức ERICniz

999999 được sử dụng là n lớn nhất để có độ chính xác của năm chữ số thập phân.

Kết quả: 3.14159165358977


Thật tuyệt! Nó truyền cảm hứng cho tôi để viết một trong Java 8.
David Conrad

19

Piet, nhiều codel

Không phải câu trả lời của tôi, nhưng đây là giải pháp tốt nhất tôi từng thấy cho vấn đề này:

Xấp xỉ Pi ở Piet

Sự hiểu biết của tôi là nó cộng các pixel trong vòng tròn và chia cho bán kính, và sau đó một lần nữa. Đó là:

A = πr²  # solve for π
π = A/r²
π = (A/r)/r

Một cách tiếp cận tốt hơn trong tâm trí của tôi là một chương trình tạo ra hình ảnh này ở một kích thước tùy ý và sau đó chạy nó thông qua một trình thông dịch.

Nguồn: http://www.dangermouse.net/esoteric/piet/samples.html


Bạn có thể giải thích những gì nó thực sự làm? (Tôi biết ý tưởng chung đằng sau Piet nhưng một lời giải thích về cách chương trình cụ thể này hoạt động sẽ là một bổ sung tốt cho câu trả lời của bạn).
plannapus

Tôi thực sự không biết về Piet, nhưng tôi nghĩ rằng điều này theo nghĩa đen là đo diện tích của vòng tròn đỏ và sau đó chia cho bán kính hai lần, giải cho π = A / (r * r)
Không phải là Charles

Khu vực này khá rõ ràng, vì khi con trỏ đi vào vòng tròn màu đỏ, nó sẽ đếm số lượng codel trong vùng màu đỏ và đẩy nó vào ngăn xếp khi thoát ra (vì điểm thoát là màu đỏ sẫm, do đó không có màu sắc nào thay đổi mà tối hơn một bước ), đó là phần "chia cho bán kính bình phương" mà tôi gặp khó khăn trong việc hiểu.
plannapus

1
@plannapus Bán kính được "mã hóa cứng" trong đường màu đỏ sẫm kéo dài từ góc trên bên trái đến nửa dưới cạnh trái (rất khó nhìn thấy trong hình). Rất khó để theo dõi nhưng ý chính là các khối màu có giá trị bằng diện tích của chúng (đường thẳng ở cạnh trái có r pixel, vòng tròn có pixel vùng ) và các công cụ ở giữa chỉ là một bó các phép toán số học và số học. Các chương trình bắt đầu ở phía trên bên trái. Các văn bản ở trên cùng bên phải về cơ bản là một nhận xét.
Jason C

2
@JasonC ah tất nhiên rồi! Vòng tròn chạm vào cả phía trên và phía dưới, do đó, đường màu đỏ sẫm giảm dần từ phía trên xuống giữa chính xác là cần thiết bán kính! Thông minh!
plannapus

18

KỸ THUẬT TÔI TÍNH TOÁN, 9

0+3.14159

KỸ THUẬT TÔI VẪN TÍNH TOÁN, 10

PI-acos(1)

Tôi đang tính toán CỨNG, 8

acos(-1)

TÔI TAI NẠN PI, 12

"3.14"+"159"

Và về mặt kỹ thuật, câu trả lời này bốc mùi.


31
Vì vậy, tiêu đề, nhiều tiêu đề lớn, rất đau cho mắt của tôi, wow.
Pierre Arlaud

1
pluzz wan cho nhiều lulz, thankz
Jonathan Van Matre

Này em yêu, muốn mở rộng loạt Taylor của tôi?
Jason C


@SimonT Bạn đã không trả lời câu hỏi của tôi về loạt Taylor. Nhưng trong khi bạn đang suy nghĩ về nó, hãy xem ý kiến ​​của tôi về câu hỏi và hầu hết các câu trả lời khác ở đây. : P
Jason C

14

APL - 6

2ׯ1○1

Đầu ra 3.141592654 . Nó tính hai lần arcsine của 1.

Một giải pháp 13 char sẽ là:

--/4÷1-2×⍳1e6

Kết quả này 3.141591654cho tôi, phù hợp với độ chính xác được yêu cầu.
Nó sử dụng + 4/1 - 4/3 + 4/5 - 4/7 ...chuỗi đơn giản để tính toán mặc dù.


1
Wow, đó là một sự hội tụ chậm!

Suy nghĩ đầu tiên của tôi là tại sao không ¯2○¯1? '(Tức là acos -1). Nhưng điều đó mang lại một xấp xỉ phức tạp trên repl.it ( 3.1415926425236J¯1.1066193467303274e¯8). Bất cứ ý tưởng tại sao? Có phải tất cả các thực hiện làm điều đó?
James Wood

+1 cho giải pháp thứ hai của bạn. 2 * asin(1)là một chút gian lận, mặc dù.
Jason C

@JamesWood Tôi không biết APL nhưng nếu tôi phải đoán thì tôi đã nói rằng nó đã cố gắng thực hiện sqrt(1-theta^2)(xuất hiện rất nhiều danh tính trig) tại một số điểm và mất một số độ chính xác ở đâu đó, kết thúc với một chút tiêu cực 1-theta^2.
Jason C

1
Điều kỳ lạ là vẫn còn một phần tưởng tượng nhỏ bé acos -0.75. Không có cách nào nó có thể tính 1 - 0.75 ^ 2là âm.
James Wood

14

J - 5 byte

|^._1

Điều này có nghĩa |log(-1)|.


Sử dụng thông minh danh tính của Euler's.
primo

1
Thật tuyệt, một câu trả lời đại số khác. Về thông minh như ln(e^(42*pi))/42hay pi*113/113.
Jason C

Cũng hoạt động trong TI-BASIC
Timtech

1
(Hoàn toàn không liên quan, tôi ước chúng ta có thể sử dụng LaTeX trên codegolf.)
Jason C

1
(Trả lời cho câu hỏi hoàn toàn không liên quan, tôi lấy bằng biểu đồ google, ví dụ ở đây .) Về chủ đề, đây là câu trả lời sắp xếp nhất, và do đó nên được chấp nhận.
primo

14

Máy tính Google, 48

stick of butter*(26557.4489*10^-9)/millimeters^3

Lấy một que bơ, tính toán tiên tiến, làm cho pi ra khỏi nó. Tôi hình dung vì những người khác đang làm những câu trả lời toán đơn giản nên tôi sẽ thêm một câu độc đáo hơn một chút.

Thí dụ


3
Điều stick of butternày là dễ thương và hài hước nhưng về cơ bản đây là một pi*x/x+y-ybản sắc đại số khác .
Jason C

10
Có rất nhiều cách tốt hơn để làm pi bằng cách sử dụng một que bơ
Không phải là Charles

Bạn đã thử làm bơ với một que pi chưa?
mbomb007

12

Tháng mười, 31

quad(inline("sqrt(4-x^2)"),0,2)

Tính diện tích của một phần tư hình tròn có bán kính 2, thông qua tích hợp số.

octave:1> quad(inline("sqrt(4-x^2)"),0,2)
ans =     3.14159265358979

1
Đẹp! +1 khi phiếu bầu của tôi nạp lại.
Jason C


10

Con trăn, 88

Giải pháp :

l=q=d=0;t,s,n,r=3.,3,1,24
while s!=l:l,n,q,d,r=s,n+q,q+8,d+r,r+32;t=(t*n)/d;s+=t
print s

Đầu ra mẫu trong shell Python:

>>> print s
3.14159265359

Quản lý để tránh bất kỳ nhập khẩu. Có thể dễ dàng hoán đổi để sử dụng thư viện thập phân chính xác tùy ý; chỉ cần thay thế 3.bằng Decimal('3'), đặt độ chính xác trước và sau, sau đó unary cộng với kết quả để chuyển đổi độ chính xác.

Và không giống như một toàn bộ rất nhiều câu trả lời ở đây, thực sự tính π thay vì dựa vào built-in hằng hoặc man trá làm giả toán, tức là math.acos(-1), math.radians(180)vv


9

ngôn ngữ lắp ráp x86 (5 ký tự)

fldpi

Việc này có tải một hằng số từ ROM hay thực sự tính toán câu trả lời tùy thuộc vào bộ xử lý (nhưng ít nhất là một số, nó thực sự thực hiện một phép tính, không chỉ tải số từ ROM). Để đặt mọi thứ vào viễn cảnh, nó được liệt kê là thực hiện 40 chu kỳ xung nhịp trên 387, điều này có vẻ hợp lý hơn nếu nó chỉ tải giá trị từ ROM.

Nếu bạn thực sự muốn đảm bảo tính toán, bạn có thể làm một cái gì đó như:

fld1
fld1
fpatan
fimul f

f dd 4

[cho 27 ký tự]


1
Bạn có thể giải thích được không ?
Nicolas Barbulesco

And, on some processors, what calculcation would fldpi do ?
Nicolas Barbulesco

1
I don't think using a command that loads pi (or even computes it based on somebody else's asin implementation or any existing trig function implementations at all) really counts in the spirit of "calculating" anything (the "omg assembler" factor doesn't really change that). Perhaps port this to the shortest assembler implementation possible, and it can be called a "calculation".
Jason C

2
@JasonC: Sounds like an entirely arbitrary notion to me, with no more real sense than my deciding that people had to implement addition, subtraction, multiplication and division on their own if they're doing to use them.
Jerry Coffin

3
@JerryCoffin Instead of arguing technicalities, suffice it to say that neither asin(-1) nor fldpi are particularly interesting or creative. There's not much purpose in competing to see whose favorite language has the shortest name for predefined trig functions and pi constants.
Jason C

8

bc -l, 37 bytes

for(p=n=2;n<7^7;n+=2)p*=n*n/(n*n-1);p

Tôi không thấy bất kỳ câu trả lời nào khác khi sử dụng sản phẩm của Wallis , vì vậy nó được đặt theo tên của tôi ( giảng viên Lịch sử Toán học của tôi đã có một cú hích lớn từ đó), tôi không thể cưỡng lại.

Hóa ra một thuật toán khá hay của nó từ góc độ chơi gôn, nhưng tốc độ hội tụ của nó rất tệ - tiếp cận 1 triệu lần lặp chỉ để có được 5 chữ số thập phân:

$ time bc -l<<<'for(p=n=2;n<7^7;n+=2)p*=n*n/(n*n-1);p'
3.14159074622629555058

real    0m3.145s
user    0m1.548s
sys 0m0.000s
$ 

bc -l, 15 byte

Ngoài ra, chúng ta có thể sử dụng Newton-Raphson để giải sin(x)=0, với xấp xỉ bắt đầu bằng 3. Vì điều này hội tụ trong rất ít lần lặp, chúng tôi chỉ đơn giản là mã 2 lần lặp, cho 10 chữ số thập phân:

x=3+s(3);x+s(x)

Công thức lặp theo Newton-Raphson là:

x[n+1] = x[n] - ( sin(x[n]) / sin'(x[n]) )

sin'=== coscos(pi)=== -1, vì vậy chúng tôi chỉ cần ước tính costhuật ngữ cần lấy:

x[n+1] = x[n] + sin(x[n])

Đầu ra:

$ bc -l<<<'x=3+s(3);x+s(x)'
3.14159265357219555873
$ 

+1 now that's more like it!
Jason C

@JasonC What is your opinion of application of Newton-Raphson to solve sin(x)=0 (see edit)?
Digital Trauma

6

python - 47 45

pi is actually being calculated without trig functions or constants.

a=4
for i in range(9**6):a-=(-1)**i*4/(2*i+3)

result:

>>> a
3.1415907719167966

Should be able to save a byte by dropping the zero after the decimal place for forced float interpretation. :) Bonus points for brevity, but I like mine for arbitrary accuracy and lower memory utilization. (Edited to scratch the parenthesis idea; I see what's going on there and my isolated test didn't catch the issue.)
amcgregor

Uh… no. After your modification this no longer gives valid output. (265723 ≭ π) You still need the period, just not the trailing zero.
amcgregor

@amcgregor use python 3?
qwr

I do, though I primarily develop under 2.7 and make my code work in both. However on the stock Mac 10.9 python3 installation your code causes a segmentation fault.
amcgregor

@amcgregor I just tested it, it works for me (python 3.3.4)
qwr

6

C, 99

Directly computes area / r^2 of a circle.

double p(n,x,y,r){r=10000;for(n=x=0;x<r;++x)for(y=1;y<r;++y)n+=x*x+y*y<=r*r;return(double)n*4/r/r;}

Hàm này sẽ tính pi bằng cách đếm số pixel trong một vòng tròn bán kính rsau đó chia cho r*r(thực ra nó chỉ tính một góc phần tư). Với r10000, nó chính xác đến 5 chữ số thập phân (3.1415904800). Các tham số cho hàm bị bỏ qua, tôi chỉ khai báo chúng ở đó để tiết kiệm không gian.


6

Javascript, 43 36

x=0;for(i=1;i<1e6;i++){x+=1/i/i};Math.sqrt(6*x)

xtrở zeta(2)=pi^2/6nên sqrt(6*x)=pi. (47 ký tự)

Sau khi sử dụng thuộc tính phân phối và xóa dấu ngoặc nhọn khỏi forvòng lặp bạn nhận được:

x=0;for(i=1;i<1e6;i++)x+=6/i/i;Math.sqrt(x)

(43 ký tự)

Nó trở lại:

3.14159169865946

Biên tập:

Tôi đã tìm thấy một cách thậm chí ngắn hơn bằng cách sử dụng sản phẩm Wallis:

x=i=2;for(;i<1e6;i+=2)x*=i*i/(i*i-1)

(36 ký tự)

Nó trở lại:

3.141591082792245

6

Python, Riemann zeta (58 41 ký tự)

(6*sum(n**-2for n in range(1,9**9)))**0.5

Hoặc phụ tùng hai ký tự, nhưng sử dụng scipy

import scipy.special as s
(6*s.zeta(2,1))**0.5

Chỉnh sửa : Đã lưu 16 ký tự (!) Nhờ amcgregor


1
Thay vào đó, có thể tránh việc mathnhập và sqrtgọi bằng cách xoay vòng theo cấp số nhân:(6*sum(n**-2 for n in range(1,9**9)))**0.5
amcgregor

5

Javascript: 99 ký tự

Sử dụng công thức do Simon Plouffe đưa ra vào năm 1996, công thức này có 6 chữ số chính xác sau dấu thập phân:

function f(k){return k<2?1:f(k-1)*k}for(y=-3,n=1;n<91;n++)y+=n*(2<<(n-1))*f(n)*f(n)/f(2*n);alert(y)

Biến thể dài hơn này (130 ký tự) có độ chính xác tốt hơn, 15 chữ số sau dấu thập phân:

function e(x){return x<1?1:2*e(x-1)}function f(k){return k<2?1:f(k-1)*k}for(y=-3,n=1;n<91;n++)y+=n*e(n)*f(n)*f(n)/f(2*n);alert(y)

Tôi đã thực hiện điều này dựa trên hai câu trả lời của tôi cho câu hỏi này .


5

Hồng ngọc 54 50 49

p (0..9**6).map{|e|(-1.0)**e/(2*e+1)*4}.reduce :+

Phiên bản trực tuyến để thử nghiệm.

Một phiên bản khác mà không tạo một mảng (50 ký tự):

x=0;(0..9**6).each{|e|x+=(-1.0)**e/(2*e+1)*4}; p x

Phiên bản trực tuyến để thử nghiệm.


It's interesting to see the language differences that such compact solutions can give. For example, the Python translation of the above is 105 characters (after using some trivial code compression tricks): a=__import__;reduce(a('operator').__add__,a('itertools').imap(lambda e:(-1.0)**e/(2*e+1)*4,xrange(9**6))) -- note the use of xrange/imap; in Python 3 you can avoid this; basically I don't want all of your RAM to get consumed constructing a list with so many entries.
amcgregor

1
You're absolutely right. It is often very convenient to use (especially Ruby's) Array and Enumerable functions, though it might really not be the best idea in terms of performance and speed... Well, thinking about that, it should be possible to do the calculation with the Range.each method instead of creating a map.
David Herrmann

Yes, it's possible - just one character more...
David Herrmann

Your first answer is not as precise as your second.
Josh

Could you elaborate, please? Same algorithm, same output for me?
David Herrmann

5

TI CAS, 35

lim(x*(1/(tan((180-360/x)/2))),x,∞)

1
I looked back at this and i completely forget how it works :P
TheDoctor

5

Perl - 35 bytes

$\=$\/(2*$_-1)*$_+2for-46..-1;print

Produces full floating point precision. A derivation of the formula used can be seen elsewhere.

Sample usage:

$ perl pi.pl
3.14159265358979

Arbitrary Precision Version

use bignum a,99;$\=$\/(2*$_-1)*$_+2for-329..-1;print

Extend as needed. The length of the iteration (e.g. -329..-1) should be adjusted to be approximately log2(10)3.322 times the number of digits.

3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211707

Or, using bigint instead:

use bigint;$\=$\/(2*$_-1)*$_+2e99for-329..-1;print

This runs noticably faster, but doesn't include a decimal point.

3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

5

C# 192

class P{static void Main(){var s=(new System.Net.WebClient()).DownloadString("http://www.ctan.org/pkg/tex");System.Console.WriteLine(s.Substring(s.IndexOf("Ver&shy;sion")+21).Split(' ')[0]);}}

Outputs:

3.14159265

No math involved. Just looks up the current version of TeX and does some primitive parsing of the resulting html. Eventually it will become π according to Wikipedia.


I'm 5 years late, but this is a standard loophole that was created 4 days before this answer.
Benjamin Urquhart

5

Python 3 Monte Carlo (103 char)

from random import random as r
sum(1 for x,y in ((r(),r()) for i in range(2**99)) if x**2+y**2<1)/2**97

5

Game Maker Language, 34

Assumes all uninitialized variables as 0. This is default in some versions of Game Maker.

for(i=1;i<1e8;i++)x+=6/i/i;sqrt(x)

Result:

3.14159169865946

very nice. also, in C float k(){double x=0,i=0;for(;i++<999999;)x+=6/i/i;return sqrt(x);} is shorter than this one
izabera

even shorter with 1e8 instead of 999999
izabera

Could you use for(i=1;i<1e8;)x+=6/i/i++;sqrt(x) to save a byte (or alternatively for(i=1;i++<1e8;))?
mbomb007

@mbomb007 Unfortunately not, GML requires all 3 parameters.
Timtech

4

Java - 83 55

Shorter version thanks to Navin.

class P{static{System.out.print(Math.toRadians(180));}}

Old version:

class P{public static void main(String[]a){System.out.print(Math.toRadians(180));}}

This doesn't do any calculation.
Hosch250

I don't understand the downvote, although - I'd answered with "Math.toRadians(180)". It is also questionable, who computes pi: the compiler or the program. But that was not part of the question.
blabla999

2
@user2509848 It most certainly does: it multiplies 180 by pi/180.
AJMansfield

You mean it multiplies pi by 1? It is essentially the same thing. I did not downvote it, but I don't think it really counts.
Hosch250


4

R: 33 characters

sqrt(8*sum(1/seq(1,1000001,2)^2))
[1] 3.141592

Hopefully this follows the rules.


3

Ruby, 82

q=1.0
i=0
(0.0..72).step(8){|k|i+=1/q*(4/(k+1)-2/(k+4)-1/(k+5)-1/(k+6))
q*=16}
p i

Uses some formula I don't really understand and just copied down. :P

Output: 3.1415926535897913


3

Ruby, 12

p 1.570796*2

I am technically "calculating" pi an approximation of pi.


No, you are not technically calculating pi. You are technically calculating 3.141592, which happens to be close to pi, but will never converge to exactly acos(-1).
wchargin

@Wchar Ok, edited
Doorknob

3
I don't think hard-coding pi/2 then multiplying it by 2 really counts; the point is to calculate pi, not obfuscate a numeric literal.
Jason C

3

JavaScript - 19 bytes

Math.pow(29809,1/9)

Calculates the 9th root of 29809.

3.1415914903890925
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.