Viết hàm hoặc chương trình hoàn chỉnh lấy số dương n
và thực hiện n
các bước của thuật toán lặp để tính số π có hội tụ bậc hai (nghĩa là nó nhân đôi số chữ số chính xác ở mỗi lần lặp) sau đó trả về hoặc in ra 2 n chữ số chính xác (bao gồm cả đầu 3). Một thuật toán như vậy là thuật toán Gaussâu Legendre , nhưng bạn có thể tự do sử dụng một thuật toán khác nếu bạn thích.
Ví dụ:
đầu vào 1
→ đầu 3.1
vào đầu vào 2
→ đầu 3.141
vào đầu 5
ra → đầu ra3.1415926535897932384626433832795
Yêu cầu:
- Mỗi lần lặp của thuật toán phải thực hiện một số lượng lớn các hoạt động cơ bản như cộng, trừ, nhân, chia, lũy thừa và gốc (với số mũ / độ nguyên) - mỗi thao tác như vậy trên các số nguyên / số thập phân "lớn" được tính là một số chẵn nếu nó liên quan đến một hoặc nhiều vòng lặp trong nội bộ. Để rõ ràng, các hàm và quyền hạn lượng giác liên quan đến số phức không phải là hoạt động cơ bản.
- Thuật toán dự kiến sẽ có một bước khởi tạo cũng phải có số lượng hoạt động không đổi.
- Nếu thuật toán cần thêm 1 hoặc 2 lần lặp để có được 2 n chữ số chính xác, bạn có thể thực hiện tối đa các
n+2
lần lặp thay vì chỉn
. - Nếu nó không đủ rõ ràng, sau 2 n chữ số chính xác , chương trình của bạn không được in bất cứ thứ gì khác (chẳng hạn như nhiều chữ số chính xác hơn, chữ số sai hoặc các tác phẩm hoàn chỉnh của Shakespeare).
- Chương trình của bạn phải hỗ trợ các giá trị
n
từ 1 đến ít nhất 20. - Chương trình của bạn không nên mất hơn một giờ cho
n
= 20 trên một máy tính hiện đại (không phải là một quy tắc cứng, nhưng hãy cố gắng giữ cho nó hợp lý). - Chương trình không được lấy quá 20 chữ số chính xác sau khi khởi tạo và lặp lại lần đầu tiên của thuật toán.
- Chương trình phải được chạy trong Linux bằng phần mềm có sẵn miễn phí.
- Mã nguồn chỉ được sử dụng các ký tự ASCII.
Ghi điểm:
Mã golf đơn giản, mã ngắn nhất thắng.
Người chiến thắng:
Người chiến thắng là Digital Trauma, cuối cùng tôi đã hoàn thành việc chạy mã của mình trên n = 20 (chỉ đùa thôi). Giải đặc biệt thuộc về primo cho giải pháp python rất nhanh và thuật toán khác nhau :)
~q^(n^2)
theo phần 1 ở đó và ~q^2
theo phần 2 ở đó.