Напишіть функцію або повну програму, яка приймає додатне число n
і виконує n
кроки ітеративного алгоритму для обчислення π, що має квадратичну конвергенцію (тобто приблизно вдвічі збільшує кількість точних цифр при кожній ітерації), після чого повертає або виводить 2 n правильних цифр (у т.ч. початок 3). Одним з таких алгоритмів є алгоритм Гаусса-Легенда , але ви можете вільно використовувати інший алгоритм, якщо хочете.
Приклади:
вхід 1
→ вихідний 3.1
вхід 2
→ вихідний 3.141
вхід 5
→ вихід3.1415926535897932384626433832795
Вимоги:
- Кожна ітерація алгоритму повинна виконувати постійну кількість основних операцій, таких як додавання, віднімання, множення, ділення, потужність і корінь (з цілим показником / ступенем) - кожна така операція з "великими" цілими / десятковими числами рахується як одна парна якщо вона включає одну або кілька петель внутрішньо. Щоб було зрозуміло, тригонометричні функції та сили, що включають складні числа, не є основними операціями.
- Очікується, що алгоритм має етап ініціалізації, який також повинен мати постійну кількість операцій.
- Якщо алгоритму потрібно 1 або 2 ітерації, щоб отримати 2 n правильних цифр, ви можете виконувати до
n+2
ітерацій, а не простоn
. - Якщо це було недостатньо чітко, після правильних 2 n цифр ваша програма не повинна друкувати нічого іншого (наприклад, більш правильних цифр, неправильних цифр або повних творів Шекспіра).
- Ваша програма повинна підтримувати значення
n
від 1 до принаймні 20. - Ваша програма не повинна займати більше години для
n
= 20 на сучасному комп’ютері (це не важке правило, але намагайтеся зробити це розумним). - Програма не повинна отримати більше 20 точних цифр після ініціалізації та першої ітерації алгоритму.
- Програма повинна бути запущена в Linux, використовуючи вільно доступне програмне забезпечення.
- У вихідному коді повинні використовуватися лише символи ASCII.
Оцінка:
Прямий код гольфу, виграє найкоротший код.
Переможець:
Переможець Digital Trauma, я нарешті закінчив виконувати його код на n = 20 (жартую). Спеціальний приз приходить на примо за його дуже швидке рішення пітона та інший алгоритм :)
~q^(n^2)
відповідно до 1-го розділу та там, ~q^2
згідно 2-го розділу.