Как можно меньше байт, ваша задача - написать программу, которая выдает:
3.14
На празднование позднего дня Пи, конечно! :)
правила
Вы можете сделать это как угодно, но есть некоторые ограничения.
- Вы не можете использовать арифметические операции где-либо в вашей программе. Это включает в себя
+
,-
,*
,/
,%
,^
(возведение в степень), и т.д ... Это также включает в себя приращением (обычно++
), декремента (--
), битовые операции , и любые встроенные функции , которые могут быть использованы в качестве замены , таких какsum()
,prod()
,mod()
,double()
,pow()
,sqrt()
,inc()
иdec()
т. д. (по усмотрению автора) - Цифры
3
,1
и не4
могут появляться где-либо в вашем коде. - Вы можете не использовать какие - либо предопределенные переменные / постоянные , что ваш язык может иметь в качестве замены
3
,1
и4
. (По усмотрению автора) - Вы также можете не использовать любые тригонометрические функции , такие как
sin()
,cos()
,tan()
,arcsin()
,arccos()
,arctan()
,sinh()
,cosh()
,tanh()
и т.д. ... (усмотрение автора) - Вы не можете использовать встроенные или предопределенные значения Pi (или
3.14
). Нет веб-запросов . - Ваша программа не может требовать какого-либо ввода (кроме запуска).
3.14
это единственное , что вы можете выводить, это не может быть частью более длинного / большего вывода ..
победитель
Ответ с наименьшим количеством байтов 18 апреля выигрывает. Удачи!
Ждем умных ответов от умных умов! Малболе кто-нибудь? :П
^
это оператор возведения в степень, а не побитовый оператор XOR.Ответы:
CJam -
86CJam - это новый язык, который я разрабатываю, похожий на GolfScript - http://sf.net/p/cjam .
Вот объяснение:
S
переменная, предварительно инициализированная пробелом (""),`
генерирует строковое представление последнего значения - которое точно" "
(3 символа),
вычисляет длину строки (3)'.
, если символ точкиE
является переменной, инициализированной до 14; 3, 1 и 4 не допускаются, но это ничего не говорит о 14 :)Кредиты для Doorknob для идеи backtick
источник
E
.PHP - 22 байта
День Пи в 1998 году был действительно крутым!
источник
n.j
это формат и8899e5
метка времени Unix от 14 марта 1998 года.,8899e5
. Это будет правильно один раз в год.<?=date('w.W',78e5);
1 апреля 1970 года было средой на неделе 14.С, 39
Предполагается, что машина имеет младший порядок и использует стандарт IEEE с плавающей точкой.
Интересный факт, что
"P@I@"
это на самом деле не связано с,PI
но эквивалентно тому,0x40494050
что является представлением3.144550323486328
http://ideone.com/uXVEtl
источник
постоянный ток ,
119 байтz
Вставить текущую глубину стека (0) в стекE
Нажмите E 16 (== 14 10 )[.]
Нажмите на строку "."z
Вставьте текущую глубину стека (3) в стопкуn
Поп 3 и распечатать как числоP
Поп "." и печатать как символp
Поп 14 и распечатать как число с новой строкойВыход:
источник
dc
это язык и переводчик, как и все остальные языки здесь.dc -e
это просто вызов этого переводчика. Я мог бы так же легко сохранить 9-байтовую программу в файле и запуститьdc pi.dc
. Если эти байты нужно посчитать, то то же самое должно быть применимо ко всем другим языкам. Например, включитьpython
во все записи Python илиruby golfscript.rb
во все записи Golfscript. Я полагаю, что согласованная конвенция здесь не должна включать их, если не будут приняты особые варианты.JavaScript ( ES5 ) 20 байт
Вариант решения JS от m.buettner.
Изменить: JavaScript ( ES5 ) 18 байт
Вариант идеи ComFreek об использовании функции декодирования base64.
Изменить: Javascript ( ES5 ) 16 байт
Если унарному
+
оператору разрешено приводить строку к числу, его можно уменьшить до:источник
+
принято здесь?Haskell, 41 байт
Когда в Австралии день пи?
Отредактировано, чтобы добавить: как и другой ответ на Haskell, который выводит строку, поэтому имеет кавычки. Вы можете набрать 33, и быть строго в рамках правил, но это менее весело:
источник
p=[2.9,2.92..]!!([0,6..]!!2)
... и в этом..
он выглядит неправильно. Но Хаскелл строго типизирован, и прирост в ответе, который я дал,Char
неNum
является и не арифметическим - вещь, которая фактически запрещена. Мне нужноfromEnum
преобразовать символы обратно в числа, чтобы использовать их таким образом. Во всяком случае, моя совесть чиста :)Азбука Морзе, 33 байта
Технически говоря, информация занимает всего 21 байт.
источник
J -
151110 символовКороче, используя фантастику
i:
.Разъяснение:
6.28j8
- Комплекс № 6.28 + 8i.i:
- Здесь происходит волшебство.i:
на комплексном числе A + Bi B ≠ 0 отбирает B + 1 одинаково расположенных точек из интервала [-A, A].6{
- Возьмите элемент с индексом 6, который как раз и получается 3.14.Ранее у нас была следующая ерунда:
Объяснил взрывом:
источник
|.'.'2}":22b8d5
вы можете сохранить 2 символа, выбрав число, которое не требует перестановки:'.'1}":16bbc6
41X3
потому что я только разрешено изменять символы с индексами 0 и 2.Командная строка Linux, 35 байт
Этот не близок к победе, но вот для удовольствия:
Выход (через 2 секунды):
источник
:;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'
. Это устанавливает TTL в 1, поэтому исходящее ICMP-эхо сбрасывается вашим маршрутизатором, прежде чем он когда-либо попадет в Интернетping -w2 67502862
. (Редактировать ниндзя, потому что, прежде чем я советовал w1, почти нарушил правила.)GolfScript,
181312Старая версия:
Это очень художественно, всего 3 уникальных персонажа! ;)
Как это устроено:
Вот объяснение 12-символьной версии (гораздо интереснее, IMO):
Это работает, потому что
n`,
есть4
, так какn`
есть'"\n"'
. Та же логика для'.'`,
. Он также меняет вместо создания новой строки для сохранения символа (спасибо @algorithmshark).Альтернативная версия:
или же
Или что-нибудь в этих строках, правда. :П
источник
'.'.`,\.,n`,
работать, чтобы сохранить символ? Повторное использование'.'
путем дублирования и обмена.Ответ ОП.
Математика,
212018Это кажется дешевым ...
или же
Разобрался, как это сделать 18:
Хаскелл,
494812(48 включает символ новой строки)
Запустите его, вызвав
r
функцию.Используя метод, описанный выше в Mathematica, вы можете ввести его в GHCi:
Ява
8786Скала, 27
Перевод с Java в соответствии с предложением Score_Under . (Я действительно не знаю, Scala)
источник
0xe
это умно. Вы не возражаете, если я улучшу свой ответ JS этим? ;)[-.86:5][5]
у 11, но решил, что это не считается, поскольку диапазоны - просто математика.Баш, 50
Справка / сообщения об ошибках - это не внешние ресурсы, а вывод команды!
Если что-то является нарушением правил, это оно. Это использует совпадение, что сообщение помощи, данное
STDERR
точной командойдлиной 314 символов (по крайней мере, в Ubuntu 13.10 с
iputils-121221
). РЕДАКТИРОВАТЬ: я ценю, что это гораздо менее портативный, чем я ожидал ...Первая строка принимает длину символа справочного сообщения и сохраняет его в переменной.
Как и в других моих ответах, следующие несколько строк получают номер 1, принимая статус выхода
false
(не очень переносимый, но в конце концов это код-гольф !), Затем используйте это значение, чтобы вставить десятичную точку в последнюю строку.Выход:
3.14
источник
info ping6
Iputils-121221chmod
интересным ответом на этот вопрос по адресу codegolf.stackexchange.com/a/25724/16402ping6|&wc -c|sed 's/./&./'
Bash + TeX 28 байт
Если у вас установлен TeX:
Номер версии TeX асимптотически приближается к пи по мере улучшения программного обеспечения. Таким образом, со временем вы можете использовать эту (несоответствующую) реализацию, чтобы печатать все больше и больше цифр!
Это напечатано 3.1415926 еще в 2011 году; по состоянию на январь 2014 года будет напечатано 3.14159265.
источник
tex -v|grep -oP '.\..\d'
чтобы сохранить 4 байта. (Regex украден из ответа DigitalTrauma .) В любом случае, +1, потому что я только что подумал о том же ответе.JavaScript, 20 байт
Используйте его в консоли, чтобы результат был напечатан напрямую. В противном случае
alert(...)
добавим еще 7 символов.Так же, как и мой другой ответ, я только заметил, что в JS он намного короче.
Идея использования
0xe
14 взята из представления ОП с любезного разрешения ОП.источник
(x='.'+0xE).length+x
Дата GNU, 17 байтов
Этот гарантированно будет работать только в этом году, но я не вижу никаких ограничений в правилах по этому поводу ;-)
Значение
+
просто указывает начало спецификатора форматаdate
и не является арифметическим сложением. То же самое с-
указанием даты ввода.Выход:
источник
only guaranteed to work this year
Это нормально .. :)Баш, 17 байт
Тире, 41 байт
источник
Баш
2322Shell (без расширения истории) 20
источник
seq 2 .06 5|sed -n 20p
также работает, как указано в ответе OP Mathematica.sed 58!d
немного короче.!d
сdpkg ...
которых была моя последняя команда, с которой я начиналd
. Работает нормально,ksh
ноzsh
говорит,zsh: event not found: d
что это определенно заменяет что-то.pi.sh
и выполните ту же командуbash pi.sh
, она будет работать нормально.Python, 39 или 28
47 или 34(Спасибо Score_Under за то, что вы так много играли в гольф)
+
здесь оператор объединения строк, а не сложение.Скопировать
0xe
трюк с ОП, вот 28 символов с помощью @psalСтарые версии:
источник
print"%s.%s"%(len('aaa'),0xe)
на 29 байтов. Вы можете сделать то же самое с первым:print"%s.%s%c"%(len('aaa'),len('a'),52)
на 39 байтов.%s
все еще требуетstr
. Спасибо за совет :)print('%s,%s'%(0xE9,0xE))[2:]
print('%X.%s'%(675,0xE))[2:]
GolfScript, 8 байт
Эта программа содержит непечатные символы ASCII, поэтому ее нельзя вставить напрямую. Вместо этого знаки вопроса в приведенном выше коде должны быть заменены байтами
03
и0E
шестнадцатеричными.Для удобства вот шестнадцатеричный дамп самой программы. Пользователи Unix / Linux могут запустить этот шестнадцатеричный дамп
xxd -r
для восстановления программы:Объяснение:
Первые пять байтов программы образуют строковый литерал в одинарных кавычках, кодирующий три символа с кодами ASCII 3, 14 и 46 (= период ASCII).
(
обрезает первый символ в строке и помещает его код ASCII (3) в стек.\
меняет два верхних элемента в стеке, вытягивая строку обратно в верх, а второй(
отбрасывает другой символ из строки, снова помещая свой код ASCII (14) в стек.Поэтому в конце программы стек (исключая пустую строку ввода) выглядит следующим образом:
В конце программы поведение интерпретатора GolfScript по умолчанию состоит в том, чтобы привести в порядок и распечатать все в стеке, получая желаемый результат.
источник
Баш - 39
Мы все знаем, что первые несколько цифр числа Pi можно вычислить из следующего утверждения:
Нам нужно только 2 знака после запятой, верно?
источник
Mathematica - 78
источник
Perl
1520 байтисточник
тр + баш, 17 байт
Эти
-
символы здесь не являются арифметическими операторами вычитания. Они указывают на диапазон.Выход:
источник
write()
вызов или подобное. Под крышками обязательно будет некоторая арифметика, гарантирующая правильное количество записанных байтов, если нигде больше. Я думаю, что вопрос заключается в том, чтобы скрыть необходимые арифметические / побитовые вычисления.БАШ, 57
Это длиннее, чем большинство ответов, но в попытках нет ничего плохого.
дает
источник
c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
С, 36
источник
main(){printf("%d\b.%d",' ',0xe);}
JavaScript - 23 байта
Спасибо nderscore (см. Его комментарии)!
источник
4
хотя;)btoa()
работать, чтобы получить3.14
как-то?atob('Mw')+atob('LjE0')
и 14-байтовая «нелегальная» версия:atob("My4xNA")
C #
character является символом 314, а не предопределенной переменной или константой. .ToString форматирует вывод в цифру, точку, а затем еще 2 цифры.
источник
GolfScript,
1310Спасибо Ilmari Karonen за улучшенную версию!
x
иy
являются непечатаемыми символами (см. http://www.asciitable.com/ для получения дополнительной информации) соответственноETX
иSO
, которые декодируют до 3 и 14.Что этот код делает, должно быть довольно ясно.
Примечание: следующее правило
You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)
не прерывается, так как символы ASCII не являются ни переменными, ни константами.
источник
The digits 3, 1, and 4 may not appear anywhere in your code.
,Your program cannot require input of any kind (besides running it).
{}.*.{}.*
и внутри скобок есть 2 непечатаемых символа, соответственно ( asciitable.com )ETX
иSO
{xy}.*'.'\
(10 символов). Мой еще короче, хотя. ;-) Но +1 за то, что научил меня{ }.*
(и{ }.%
), я должен помнить об этом трюке.Новичок на сайте и пока не могу писать комментарии, поэтому я опубликую его здесь. Просто интересно об этом решении Javascript:
и это правило:
3.14 - единственное, что вы можете выводить, оно не может быть частью более длинного / большего вывода.
Если я запускаю этот код в консоли браузера, я получаю:
или используя Node в командной строке:
но если я запускаю этот код:
Я получил:
Используя Node.js для запуска файла .js, я могу написать:
и получить:
источник
console
при отображении их можно заключать строки в кавычки ... Вы использовали,+
но не арифметически, он используется в качестве конкатенатора, так что это действительно ... Также Вы могли бы сделать это меньше, используя,alert
а неconsole.log
... Но в противном случае, большие усилия. Мы надеемся, что вам здесь понравится ...Mathematica, 56 байт
Не так много, чтобы сказать. Я генерирую цифры как длины строк и объединяю их.
источник