Выведите с тем же количеством цифр числа пи, что и длина кода


9

Ваша задача состоит в том, чтобы напечатать xцифры числа пи, где xваша длина кода.

Примеры:

Source code (length) -> output
foo!        (4)         3.141
foobar      (6)         3.14159
kinda long  (10)        3.141592653
+++++       (5)         3.1415
123456789   (9)         3.14159265

Вы можете использовать, чтобы определить количество цифр, которые нужно распечатать. Обратите внимание, что десятичная точка не считается цифрой числа пи - поэтому код длины 3 должен иметь выходную длину 4.floor(π/10 * 10code_length) / 10code_length - 13.14

Правила:

  • Длина вашего кода должна быть больше трех символов.
  • Вы не можете использовать какие-либо стандартные лазейки.
  • Вы можете использовать любые стандартные разрешенные методы вывода.
  • Вы не можете читать свой источник, чтобы определить длину кода.
  • Вы не можете использовать встроенную константу числа Пи.
  • Пи должен быть абсолютно точным и не приближенным.
  • Десятичная точка в выходных данных является обязательной. Если вы решите выводить через возвращаемое значение, вы должны вернуть целое число с плавающей запятой.
  • Цель этой задачи - найти самое короткое решение для каждого языка, а не самый короткий язык для решения. Не бойтесь публиковать решение на языке, когда более короткое решение публикуется на том же языке, если ваше решение использует другой метод.

... так будет ли это действительным или нет?
Джонатан Аллан

(изменить ^ это даже (округление))
Джонатан Аллан

«Длина кода» ← в байтах или символах?
Линн

@ Линн Байт, как обычно.
MD XF

Есть только 3разрешено?
NoOneIsHere

Ответы:


3

Japt , 9 4 байта

Как можно короче, как можно :)

Включает непечатаемый (обратный перевод строки, код 141) после #.

3.#

Попробуй это

В Japt любой последующий символ #преобразуется в его код символа и добавляется к любым цифрам или десятичным точкам, которые могут предшествовать ему, в этом случае3.




6

VBA (Excel), 15 байт

MsgBox 4*Atn(1)

Выход: 3.14159265358979

Я думаю, что это неприемлемо, поскольку я играл в гольф, чтобы соответствовать длине PI. Его длина в гольфе составляет 17 байтов. D:


1
Похоже, вас еще не приветствовали, так что добро пожаловать на сайт!
MD XF

О, спасибо, сэр! : D
переделывать

Разве не AtnАрктангенс? Я не уверен, разрешено ли это ... спрашиваю OP
JungHwan Мин

Я думал, что OP ссылается только на встроенный PI. Виноват.
переделывать

5

Желе , 6 байт

3;⁽4ƒṾ

Попробуйте онлайн!

Печать 3,14159с разрешенным «европейским» десятичным разделителем ,.

Как?

3;⁽4ƒṾ - Main link: no arguments
3      - literal 3                3
  ⁽4ƒ  - base 250 literal 14159   14159
 ;     - concatenate              [3,14159]
     Ṿ - unevaluate               ['3', ',', '1', '4', '1', '5', '9']
       - implicit print           3,14159

1
Этот список цифр выглядит странно. Я думаю, что там есть лишнее ,'.
Джонатан Фрех

1
Вы можете сделать -ÆAær5и использовать .вместо ,, но тогда это будет так же, как мой раствор желе.
Захари

4

Python 3 , 64 байта

print("3.%d"%int("SIXW57LUPVBUA10HBQJOL57QLF54UT0U00KIN32O",36))

Попробуйте онлайн!


Эквивалент Python 2 составляет 60 байтов print'3.%d'%int('3p3aqd50r7654t9ywkfkgsm0yx0bikcluxlhsm',36).
Джонатан Аллан

@JonathanAllan python 2 в 59: tio.run/##K6gsycjPM/r/…
primo

@primo похоже на сообщение, если и когда ...
Джонатан Аллан

1
@JonathanAllan, если ты имеешь в виду, когда он снова откроется, то сейчас.
MD XF


4

Desmos , 130 байт

f\left(\right)=\frac{\operatorname{floor}\left(10^{128}\cdot 4\sum_{k=1}^{9^9}\frac{\left(-1\right)^{k+1}}{2k-1}\right)}{10^{128}}

Исходный код для этого (доступ к которому можно получить путем копирования и вставки внутри и снаружи Desmos) не является оптимальным при создании с помощью редактора Desmos, поэтому несколько байтов пустого пространства были заполнены, где это возможно.

Это определяет функция , fкоторая не принимает никаких аргументов возвращают пи, вычисленная с помощью Gregory последовательности , чтобы k=9^9 (я не могу подтвердить , что это достаточно точен, однако я придерживаюсь считаем , что это, может быть более точным , с большим значением к ) он затем 128помещает результат в десятичные разряды, что наряду 3.с длиной исходного кода.

Попробуйте онлайн!


Как на самом деле увидеть результат - я вижу только 3.14159265617, я смотрю не в том месте; мне нужно нажать кнопку?
Джонатан Аллан

Desmos по умолчанию не печатает столько знаков после запятой, сколько предусмотрено, но значение все равно должно быть точным.
ATaco

1
Это разочаровывает, поскольку задача состоит в том, чтобы «напечатать ...»
Джонатан Аллан

1
«Десятичная точка в выходных данных необходима. Если вы хотите вывести через возвращаемое значение, вы должны вернуть целое число с плавающей запятой». что делает это действительным.
ATaco

Я чувствую, что цель этого заявления состояла не в том, чтобы обеспечить меньшую точность, а в том, чтобы обеспечить десятичный разделитель. Имейте в виду, я не думаю, что ваш ответ плохой.
Джонатан Аллан





3

APL, 6 байтов

10○⍟-1

Принимает мнимую часть ln (-1).

Попробуйте онлайн!


Эй, добро пожаловать обратно @Uriel! Хороший, я не думал ни о чем таком (с журналами отрицательных чисел), хорошая работа!
Захари

@ Zacharý спасибо, только что бросил визит и не мог не ответить на этот вопрос: P
Uriel

2

J , 16 байт

17j15":4*_3 o.1:

Попробуйте онлайн!

Похоже на ответ VBA. Выходы: 3.141592653589793.


«Вы не можете использовать встроенный макрос или константу для определения числа пи». Забавно, это ваш комментарий
Leaky Nun

Ваш вывод 17 байтов, а не 16.
ATaco

1
Точно @ATaco, это 16 цифр
только ASCII

@ LeakyNun это не так. _3 o.1вычисляет атан (1). Как вы могли знать, я хорошо знаю правила.
Конор О'Брайен,

2

Math.JS , 17 байт.

     log(-1,e).im

Это 5 ведущих пробелов

Это рассчитывает до 15 знаков после запятой и неявно печатает это.

Попробуйте онлайн!


Ну, технически это вычисляет мнимую часть ln(-1), но, поскольку это чисто мнимое число, оно эквивалентно делению на i.
Захари

2

05AB1E , 11 байт

3•∊&SK•)'.ý

Попробуйте онлайн!

COMMAND     # CURRENT STACK         | EXPLANATION
------------#-----------------------+-----------------------------------
3           # [3]                   | Push 3.
 •∊&SK•     # [3, 1415926535]       | Push compressed base-255 number 1415926535.
       )    # [[3,1415926535]]      | Wrap the 2 to an array.
        '.  # [[3,1415926535],'.']  | Push a decimal point.
          ý # ['3.1415926535']      | Join 3 and 1415926535 with a decimal point.

ИСПОЛЬЗУЯ ВСТРОЕННЫЕ:

05AB1E , 4 байта

žq5£

Попробуйте онлайн!


3žs не работает по какой-то причине ...


@ Захари, я что-то пропустил? Почему это особенное xD?
Волшебная Урна Осьминога

Это в моем имени пользователя, а также, вы можете добавить объяснение?
Захари

@ Zacharý HA! Мой мозг разбирался со всеми возможными забавными шутками, связанными с PPCG, которые могли быть пустыми. Я обдумываю дерьмо.
Волшебная урна осьминога

@ Захари также добавил.
Волшебная Урна Осьминога

Если МОЙ был неявный IO, то не было бы никакой возможности бить E3., я злюсь на моей самости теперь: с.
Захари


2

MATL , 9 8 байт

-1X;V9:)

Попробуйте онлайн!

Объяснение:

-1      % number literal
X;      % inverse cosine (radians), giving pi
V       % convert to string
9       % specify precision
:)      % keep first 9 characters - 8 digits of precision

Спасен один байт благодаря Луису Мендо!


1

Желе , 6 байт

-ÆAær5

Попробуйте онлайн!

Использует другой подход, чем другие ответы желе.

Как?

-ÆAявляется обратным косинусом -1(который является пи), ær5получает необходимый раздел. Так получилось, что округление эквивалентно усечению в этом случае



1

Perl 5, 40 байт

}{$\=$\/~(2*$_)*~$_+2for-130..-2

Требуется опция командной строки -pMbignum, считается 8.

Образец использования:

$ perl -pMbignum test.pl < /dev/null
3.141592653589793238462643383279502884197

Я прошу прощения за отсутствие ссылки TIO, она, кажется, не поддерживает bignum(или непревзойденную открывающую скобку ...).


1

МОИ , 7 байт

’2ō"8↑↵

Попробуйте онлайн!

Как?

  • , уменьшить вершину стека (0 выталкивается, если пусто, делая стек [-1]). (Тот же символ, что и желе)
  • 2, От себя 2 .
  • ō, так как вершина стека равна двум, отбросьте 2, поп n, затем нажмите acos(n)(в радианах, это дает пи, этот символo с отрицательным знаком поверх него o(для нормального триггера) происходит из APL).
  • "вставьте верхний элемент стека и вставьте его как строку.
  • 8, От себя 8 .
  • , поп aтогда b, толкниb[:a] (это еще один символ, взятый из APL).
  • , вывод с новой строкой (OUTPUT <- STACK).

Затем добавьте неявный вывод: P
MD XF

Я придерживаюсь природы MY, я мог бы сделать улучшенную версию с фактическим синтаксисом и определенно с неявным выводом
Zacharý

1

RPL (HP48), 86,5 байта, 87 цифр [Это считается?]

« GROB 8 43
14159265358979323846264338327950288419716939937510582097494459230781640628620899862803
→STR 9 OVER SIZE SUB 2 "." REPL »

GROB - это ключевое слово для изображения. Следующие 2 числа - это ширина и высота. Следующие шестнадцатеричные цифры являются растровыми. Это 1 байт памяти на каждые 2 цифры плюс метаданные изображения.

Пустая программа « »занимает 10 байтов. Команда занимает 2,5 байта. Число с плавающей запятой занимает 10,5 байта, но если оно равно целому числу из одной цифры, оно может занимать 2,5 байта.

HP48 хранит 4, а не 8 бит в каждой ячейке памяти, поэтому байт занимает 2 последовательных местоположения (младший порядок). Часто используются 20-битные порции, и они занимают 2,5 байта (не 3).





0

Excel VBA, 16 байт

Анонимные функции непосредственного окна VBE, которые не требуют ввода и вывода в любой из STDOUT Excel VBA

Каждая строка представляет отдельную функцию, которая возвращает Pi длины 16

?Mid(4*Atn(1),1)
?Str([Acos(-1)])
Debug.?4*Atn(1);
MsgBox[Acos(-1)]
[A1]="=ACOS(-1)"



0

TI-BASIC, 7 байтов

round(4tan⁻¹(1),6

round(2sin⁻¹(1),6

round(cos⁻¹(-1),6

Эти три заявления будут напечатаны 3.141593.


Примечание: TI-BASIC - это токенизированный язык. Количество символов не равно количеству байтов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.