Mục tiêu
Tạo ( N
) các đoạn đường ngẫu nhiên có độ dài đồng nhất ( l
), kiểm tra xem chúng có vượt qua các t
đường thẳng song song ( ) không.
Mô phỏng
Chúng ta đang mô phỏng cái gì? Kim của Buffon . Làm mịn cát trong hộp cát của bạn, vẽ một tập hợp các đường song song cách đều nhau (gọi khoảng cách ở giữa t
). Lấy một thanh thẳng dài l
và thả nó N
vào hộp cát. Hãy để số lần nó vượt qua một dòng c
. Sau đó Pi = (2 * l * n) / (t * c)
!
Làm thế nào chúng ta mô phỏng điều này?
- Lấy đầu vào
N,t,l
- Với
N, t, l
tất cả là số nguyên dương - Làm những
N
lần sau :- Tạo tọa độ nguyên ngẫu nhiên đồng đều
x,y
- Với
1 <= x, y <= 10^6
x,y
là trung tâm của một đoạn đường dàil
- Tạo một số nguyên ngẫu nhiên đồng đều
a
- Với
1 <= a <= 180
- Gọi
P
là điểm mà đoạn thẳng sẽ đi qua trục x - Sau đó
a
là góc(x,y), P, (inf,0)
- Tạo tọa độ nguyên ngẫu nhiên đồng đều
- Đếm số lượng,
c
của các phân đoạn dòng vượt qua dòngx = i*t
cho bất kỳ số nguyên nàoi
- Trở về
(2 * l * N) / (t * c)
Sự chỉ rõ
- Đầu vào
- Linh hoạt, nhận đầu vào theo bất kỳ cách tiêu chuẩn nào (ví dụ: tham số hàm, STDIN) và ở bất kỳ định dạng chuẩn nào (ví dụ: Chuỗi, Nhị phân)
- Đầu ra
- Linh hoạt, cung cấp đầu ra theo bất kỳ cách tiêu chuẩn nào (ví dụ: trả lại, in)
- Không gian trắng, dấu vết và khoảng trắng hàng đầu được chấp nhận
- Độ chính xác, vui lòng cung cấp ít nhất 4 chữ số thập phân chính xác (nghĩa là
3.1416
)
- Chấm điểm
- Mã ngắn nhất sẽ thắng!
Các trường hợp thử nghiệm
Đầu ra của bạn có thể không phù hợp với những điều này, vì cơ hội ngẫu nhiên. Nhưng trung bình, bạn sẽ nhận được nhiều về độ chính xác này cho giá trị đã cho N, t, l
.
Input (N,t,l) -> Output
----------- ------
10,10,5 -> ?.????
10,100,50 -> ?.????
1000,1000,600 -> 3.????
10000,1000,700 -> 3.1???
100000,1000,700 -> 3.14??
TL; DR
Những thách thức này là mô phỏng các thuật toán chỉ yêu cầu tự nhiên và bộ não của bạn (và có thể một số tài nguyên có thể sử dụng lại) để ước tính Pi. Nếu bạn thực sự cần Pi trong ngày tận thế zombie, những phương pháp này không lãng phí đạn ! Có chín thử thách tổng cộng.
a
cũng bằng phương pháp khác, nếu nó đồng nhất? (nghĩ về bong bóng Gauss 2D)
t > l
? Hai giải pháp dưới đây đưa ra giả định này, giúp đơn giản hóa việc kiểm tra giao lộ khá nhiều.