Фон:
Pi ( π
) - трансцендентное число , и поэтому оно имеет не заканчивающееся десятичное представление. Аналогично, представление не завершается, если записано в любой другой целочисленной базе. Но что, если мы написали это в базе π
?
Цифры в десятичном виде представляют степени 10, поэтому:
π = 3.14… = (3 * 10^0) + (1 * 10^-1) + (4 * 10^-2) + …
Таким образом, в основе π
цифры будут представлять полномочия π
:
π = 10 = (1 * π^1) + (0 * π^0)
В этой новой базе целые числа теперь имеют не заканчивающиеся представления. Таким образом, 10 в десятичном виде теперь становится следующим:
10 => 100.01022… = (1 * π^2) + (0 * π^1) + (0 * π^0) + (0 * π^-1) + (1 * π^-2) + …
Обратите внимание, что в основе π
используются цифры 0,1,2,3, потому что это цифры меньше, чем π
.
Вызов:
Учитывая неотрицательное целое число x
, либо:
Выведите (без остановки) его представление в базу
π
. Если число имеет конечное представление (0, 1, 2, 3), то программа может остановиться вместо вывода бесконечных нулей.Возьмите произвольно большое целое число
n
и выведите первыеn
цифрыx
в базуπ
.
Правила:
- Поскольку число имеет несколько возможных представлений, вы должны вывести то, которое кажется наибольшим (нормализованным). Как и
1.0 = 0.9999…
в десятичной системе, эта проблема существует и в этой базе. В базеπ
, один все еще1.0
, но также может быть написано как0.3011…
, например. Точно так же десять есть100.01022…
, но также может быть записано как30.121…
или23.202…
. - Это код-гольф, поэтому побеждает меньше байтов. Программа или функция.
- Нет встроенных модулей ( я смотрю на тебя , Mathematica )
Полученные результаты:
0 = 0
1 = 1
2 = 2
3 = 3
4 = 10.220122021121110301000010110010010230011111021101…
5 = 11.220122021121110301000010110010010230011111021101…
6 = 12.220122021121110301000010110010010230011111021101…
7 = 20.202112002100000030020121222100030110023011000212…
8 = 21.202112002100000030020121222100030110023011000212…
9 = 22.202112002100000030020121222100030110023011000212…
10 = 100.01022122221121122001111210201201022120211001112…
42 = 1101.0102020121020101001210220211111200202102010100…
1337 = 1102021.0222210102022212121030030010230102200221212…
9999 = 100120030.02001010222211020202010210021200221221010…
Первые 10 000 цифр из десяти в базе Пи
Проверка:
Вы можете проверить любой вывод, используя код Mathematica здесь . Первый параметр x
, третий n
. Если время истекло, выберите маленький n
и запустите его. Затем нажмите «Открыть в коде», чтобы открыть новый рабочий лист Mathematica с программой. Там нет ограничения по времени там.
Преобразуйте полученный результат в число здесь .
Связанные с:
источник
n
, я предполагаю, что Пи должен иметь хотя быn
точность точности.Ответы:
Юлия 0,6 , 81 байт
Печатает цифры (и т. Д., Которые стоят мне 14 байт) до тех пор, пока в TIO не переполнится стек около 22 тыс. Цифр. Если мне разрешено передавать входные данные как
BigFloat
я, я могу сократить 5 байтов. Использует встроенную произвольную постоянную точностиπ
. Но это немного круче, чем это, на самом деле это адаптивная константа точности,π*1.0
это 64-битное число с плавающей запятойπ*big(1.0)
(или умноженное на более высокое число точности), которое выдаетπ
при любой вашей точности.Попробуйте онлайн!
источник
Python 3 ,
471317310 байт7 байт благодаря caird.
Конечно, есть гольф, который я пропустил. Не стесняйтесь указывать их в комментариях.
Попробуйте онлайн!
Безголовая версия:
Попробуйте онлайн!
источник
`i`
.Рубин
-rbigdecimal/math
,11110397 байтПопробуйте онлайн!
Принимает входной номер как
x
и желаемую точность какn
. Выходы на печать. Использует встроенную библиотеку BigDecimal для произвольного значения PI pecision.источник
Python 3 + sympy, 144 байта
Попробуйте онлайн!
На самом деле довольно медленно.
источник