Соревнование
Вы должны рассчитать пи в кратчайшую длину вы можете. Приглашаем присоединиться к любому языку, и вы можете использовать любую формулу для расчета числа пи. Должно быть в состоянии вычислить число Пи как минимум до 5 десятичных знаков. Короче, будет измеряться в символах. Конкурс длится 48 часов. Начать.
Примечание : этот аналогичный вопрос гласит, что PI должен быть рассчитан с использованием серии 4 * (1 - 1/3 + 1/5 - 1/7 + ...). Этот вопрос не имеет этого ограничения, и на самом деле многие ответы здесь (в том числе наиболее вероятные, чтобы выиграть) были бы неверными в этом другом вопросе. Итак, это не дубликат.
code-golf
pi
approximation
Посейдон
источник
источник
Ответы:
Python3, 7
Работает в интерактивной оболочке
Вывод: с
3.1415929203539825
точностью до 6 знаков после запятойИ, наконец, у меня есть решение, которое превосходит APL!
Да, и, если вам интересно, это соотношение называется 密 率 (буквально «точное соотношение») и предложено китайским математиком Цу Чончжи (429-500 гг. Н.э.). Соответствующую статью в Википедии можно найти здесь . Цу также дал соотношение 22/7 как «грубое соотношение», и он, как известно, был первым математиком, предложившим 3.1415926 <= pi <= 3.1415927
источник
355/113
. Самый низкий голосовал ответ:3+.14159
. Я не вижу большой разницы, правда.PHP -
132127125124 байтаБазовое моделирование Монте-Карло. Каждые 10 миллионов итераций выводится текущий статус:
Спасибо cloudfeet и zamnuts за предложения!
Образец вывода:
источник
$j+=$x*$x+$y*$y<=1;
что сэкономит вам четыре байта.$k+=1/4;
иprint $j/$k
может быть уменьшен до$k++;
иprint 4*$j/$k
для другого байта.J 6
Пояснение:
*.
дает длину и угол комплексного числа. Угол -1 равен пи.{:
берет хвост списка [длина, угол]Только для медленно сходящихся фетишистов серии, для 21 байта, серии Лейбница:
источник
atan(0) + pi
. Я не думаю, что использование тригонометрических функций и самого пи следует считать «вычислением».Arg
(то есть аргумент комплексного числа) не является тригонометрической функцией, несмотря на то, что он имеет значения, подобные значениямatan(0) + pi
.Perl, 42 байта
Он вычисляет π по формуле Лейбница :
999999 используется как наибольшее n, чтобы получить точность пяти десятичных цифр.
Результат:
3.14159165358977
источник
Пит, много кодов
Не мой ответ, но это лучшее решение, которое я видел для этой проблемы:
Насколько я понимаю, это складывает пиксели в круг и делит на радиус, а затем еще раз. То есть:
На мой взгляд, лучшим подходом является программа, которая генерирует это изображение в произвольном размере и затем запускает его через интерпретатор Piet.
Источник: http://www.dangermouse.net/esoteric/piet/samples.html
источник
ТЕХНИЧЕСКИ Я РАСЧЕТА, 9
ТЕХНИЧЕСКИ Я ВСЕ РАСЧЕТЫ, 10
Я РАСЧЕТ ТАК ЖЕ, 8
Я СЛУЧАЙНО ПИ, 12
И технически этот ответ воняет.
источник
APL - 6
Выходы
3.141592654
. Он вычисляет дважды арксинус 1.13-символьное решение будет:
Это вывод
3.141591654
для меня, который соответствует запрашиваемой точности.Это использует простой
+ 4/1 - 4/3 + 4/5 - 4/7 ...
ряд, чтобы вычислить все же.источник
¯2○¯1
?» (То есть acos -1). Но это дает комплексное приближение для repl.it (3.1415926425236J¯1.1066193467303274e¯8
). Есть идеи почему? Все реализации делают это?2 * asin(1)
это немного обмануть, хотя.sqrt(1-theta^2)
в какой-то момент он пытался выполнить (который появляется во многих идентификаторах триггеров) и где-то потерял некоторую точность, получая слегка отрицательный результат1-theta^2
.acos -0.75
. Там нет никакого способа, которым это могло бы рассчитывать,1 - 0.75 ^ 2
чтобы быть отрицательным.J - 5 байт
Это значит
|log(-1)|
.источник
ln(e^(42*pi))/42
илиpi*113/113
.Google Calculator, 48
Берет кусочек сливочного масла, делает сложные вычисления, делает из него пи. Я подумал, так как все остальные делали простые математические ответы, я бы добавил немного более уникальный.
пример
источник
stick of butter
мило и забавно, но это, по сути, еще однаpi*x/x+y-y
алгебраическая идентичность.Октава, 31
Вычисляет площадь одной четверти круга с радиусом 2 путем численного интегрирования.
источник
Mathematica 6
источник
Python, 88
Решение :
Пример вывода в оболочке Python:
Удается избежать любого импорта. Может быть легко заменен на использование десятичной библиотеки произвольной точности; просто заменить
3.
наDecimal('3')
, установите точность до и после, затем унарный плюс результат для преобразования точности.И в отличие от всего много ответов здесь, на самом деле вычисляет π вместо того , чтобы полагаться на встроенные константы или математике, то есть подделки
math.acos(-1)
,math.radians(180)
и т.д.источник
ассемблер x86 (5 символов)
Загружает ли это постоянную из ПЗУ или фактически вычисляет ответ, зависит от процессора (но, по крайней мере, для некоторых, он фактически выполняет вычисления, а не просто загружает число из ПЗУ). Для сравнения, в списке 387 указано 40 тактов, что гораздо больше, чем кажется, имеет смысл, если бы оно просто загружало значение из ПЗУ.
Если вы действительно хотите обеспечить расчет, вы можете сделать что-то вроде:
[для 27 символов]
источник
fldpi
делать вычисление ?asin(-1)
неfldpi
являются ни особенно интересными, ни творческими. Нет смысла конкурировать, чтобы увидеть, чей любимый язык имеет самое короткое имя для предопределенных функций триггера и констант пи.bc -l, 37 байт
Я не вижу других ответов, используя продукт Wallis , так как он назван в честь моего тезки (моя история математики лектор по получил большой удар от этого), я не смог устоять.
Оказывается, это довольно хороший алгоритм с точки зрения игры в гольф, но скорость его сходимости ужасна - приближается к 1 миллиону итераций, чтобы получить 5 десятичных знаков:
bc -l, 15 байт
В качестве альтернативы мы можем использовать Ньютона-Рафсона для решения
sin(x)=0
с начальным приближением 3. Поскольку это сходится за очень небольшое количество итераций, мы просто жестко кодируем 2 итерации, что дает 10 десятичных знаков:Итерационная формула по Ньютон-Рафсону:
sin'
===cos
иcos(pi)
===-1
, поэтому мы просто приближаемcos
термин, чтобы получить:Выход:
источник
питон -
4745Пи на самом деле рассчитывается без триггерных функций или констант.
результат:
источник
С, 99
Непосредственно вычисляет площадь / г ^ 2 круга.
Эта функция будет вычислять число пи путем подсчета количества пикселей в круге радиуса, а
r
затем деления наr*r
(фактически она просто рассчитывает один квадрант). Сr
10000, это с точностью до 5 знаков после запятой (3.1415904800). Параметры функции игнорируются, я просто объявил их там для экономии места.источник
Javascript,
4336x
становитсяzeta(2)=pi^2/6
такsqrt(6*x)=pi
. (47 символов)После использования свойства дистрибутива и удаления фигурных скобок из
for
цикла вы получите:(43 символа)
Возвращает:
Редактировать:
Я нашел еще более короткий путь, используя продукт Wallis:
(36 символов)
Возвращает:
источник
Питон, Риман Зета (
5841 символ)Или сэкономить два символа, но использовать scipy
Редактировать : 16 символов (!) Благодаря amcgregor
источник
math
импорта иsqrt
вызова, поворачиваясь к возведению в степень:(6*sum(n**-2 for n in range(1,9**9)))**0.5
Javascript: 99 символов
Используя формулу, приведенную Симоном Плуффом в 1996 году, это работает с точностью до 6 знаков после запятой:
Этот более длинный вариант (130 символов) имеет лучшую точность, 15 цифр после десятичной точки:
Я сделал это на основе моих двух ответов на этот вопрос .
источник
Рубин,
545049Онлайн версия для тестирования.
Другая версия без создания массива (50 символов):
Онлайн версия для тестирования.
источник
a=__import__;reduce(a('operator').__add__,a('itertools').imap(lambda e:(-1.0)**e/(2*e+1)*4,xrange(9**6)))
- обратите внимание на использование xrange / imap; в Python 3 вы можете избежать этого; по сути, я не хочу, чтобы вся ваша оперативная память использовалась при создании списка с таким количеством записей.TI CAS, 35
источник
Perl - 35 байт
Производит полную точность с плавающей точкой. Вывод использованной формулы можно увидеть в другом месте .
Пример использования:
Произвольная Точность Версия
Расширьте по мере необходимости. Длина итерации (например
-329..-1
) должна быть отрегулирована так, чтобы она была приблизительно равна log 2 (10) ≈ 3,342 от количества цифр.Или, используя
bigint
вместо этого:Это работает заметно быстрее, но не включает десятичную точку.
источник
C # 192
Выходы:
Нет математики. Просто просматривает текущую версию TeX и выполняет примитивный разбор получившегося html. В конечном счете это станет π согласно Википедии .
источник
Питон 3 Монте-Карло (103 знака)
источник
Game Maker Language, 34
Предполагает, что все неинициализированные переменные равны 0. Это значение по умолчанию в некоторых версиях Game Maker.
Результат:
источник
float k(){double x=0,i=0;for(;i++<999999;)x+=6/i/i;return sqrt(x);}
короче, чем этот1e8
вместо 999999for(i=1;i<1e8;)x+=6/i/i++;sqrt(x)
для сохранения байта (или в качестве альтернативыfor(i=1;i++<1e8;)
)?Джава -
8355Укороченная версия благодаря Navin.
Старая версия:
источник
180
наpi/180
.R : 33 символа
Надеюсь, это следует правилам.
источник
Руби, 82
Использует формулу, которую я не очень понимаю, и просто скопировал. :П
Выход:
3.1415926535897913
источник
Руби, 12
Я имею технически «вычисление»
PIприближение пи.источник
acos(-1)
.JavaScript - 19 байт
Вычисляет 9- й корень из 29809 .
источник