Многие пользователи PPCG помогли с созданием этой задачи, как в чате, так и в песочнице, в частности Martin Ender , AdmBorkBork , Emigna и user202729.
Наше сообщество сочло необходимым создать набор языков, разработанных специально для игры в гольф, «языки игры в гольф», как мы их называем. Такие языки развивались от некогда блестящего, теперь неуклюжего GolfScript до гладких лаконичных языков, таких как Jelly и Husk . Как мы видим, эти языки становятся все короче и короче для ряда задач. Итак, как очевидные эксперты в области языков для игры в гольф, мы должны вместе разработать язык, чтобы превзойти любой другой язык, который осмелится конкурировать. Представляем Bugle!
Bugle: от аббревиатуры BuGoL: Bu ilt Go lfing L anguage.
Как этот вызов будет работать
Если вы не поняли того, на что я намекаю во введении, эта задача представляет собой сложную цепочку ответов, в которой каждый из нас вносит свой вклад в интерпретацию нового языка игры в гольф, улучшая его способность конкурировать на PPCG с каждым ответом.
Я опубликую первый ответ, состоящий из основы языковой спецификации / интерпретатора, и все остальные ответы будут продолжены с этого. Новые материалы предоставят следующие вещи:
- Изменение в спецификации языка
- Современный переводчик, встречающий именно то , что изложено в изменениях
- Обновленная оценка языка (подробности немного)
Вы можете изменить спецификацию одним из трех способов:
- Вы можете добавить одну команду
- Вы можете добавить две новые команды
- Вы можете редактировать поведение одной существующей команды
Что касается нового интерпретатора, вы должны использовать последнюю версию, написанную на Python. Это не должно быть в гольф. Каждая ранее добавленная команда должна быть тестируемой с самым последним интерпретатором, а также с самой новой командой (командами), которую вы добавили. Вы также не должны использовать оскорбительные выражения при обновлении интерпретатора, например, в комментариях или строковых литералах и т. Д.
Добавленные команды могут делать все, что вы пожелаете . Единственными требованиями являются:
- Это не производит оскорбительный вывод
- Это не то же самое, что другая команда
- Это не препятствует выполнению одного из примеров испытаний
Помимо этого, он может быть настолько конкретным или общим, насколько вы хотите. Это также может быть любой персонаж, которого вы хотите. Если вы не уверены, является ли ваше дополнение «новой командой», не стесняйтесь спрашивать в комментариях.
Оценка языка
Возможно, вы заметили, что вам нужно включить оценку языка во все новые предложения. Его оценка - то, что препятствует тому, чтобы этот вызов продолжался навсегда, и определяется следующим образом:
Текущий результат - это сумма количества байтов, необходимых для выполнения языком ниже 20 задач.
Для каждой из задач применяются стандартные правила ввода-вывода , а также стандартные лазейки .
20 заданий:
- "Привет, мир!" - Вывести строку
Hello, World!
- 1, 2, Fizz, 4, Buzz - Выведите каждое целое число от 1 до 100 (включительно) в отдельной строке, с кратными 3, заменяемыми
Fizz
, кратными 5, заменяемымиBuzz
наFizzBuzz
- Произведите число 2014 без каких-либо чисел в исходном коде. Выведите число 2014 без использования каких-либо символов
0123456789
в исходном коде, без доступа к внешним переменным или случайным начальным числам. - Обфусцированный Hello World - Вывод строка
Hello, World!
, без использования какого - либо из символов , по меньшей мере , два из следующих множеств:hlwd
,eor01
и27
(без учета регистра) Спойте С Днем Рождения свой любимый язык программирования. На любом языке выведите следующее:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Мы не новички в программировании гольфа, вы знаете правила, и я тоже - выложу полный текст "Never Gonna Give You Up"
- Выведите знак - Если дано число, выведите -1, если оно отрицательное, 0, если оно равно 0, или 1, если оно положительное.
- Гипотеза Коллатца (OEIS A006577) - Начиная с целого числа, разделите его на 2, если он четный, или умножьте на 3 и добавьте 1, если он нечетный, и повторяйте процесс до достижения 1. Выходные данные должны быть равны числу итераций берет вас, чтобы достичь 1.
- Массив вызовов № 1: Чередующиеся массивы - учитывая массив целых чисел, проверьте, равны ли все элементы с четным индексом, и равны ли все элементы с нечетным индексом, и выведите соответственно истинное или ложное значение
- Я незначительный массив? - Учитывая массив целых чисел, проверьте, все ли абсолютные различия между последовательными элементами меньше или равны 1, и выведите соответственно истинное или ложное значение
- Это число простое? - Если задано положительное целое число, напишите полную программу, чтобы проверить, является ли оно простым, и выведите соответственно значение true или false.
- Я палиндром. Ты? - Получив строку, проверьте, является ли она палиндромом, в то время как ваша программа / функция тоже палиндромом, и выведите соответственно два различных и согласованных значения
- Суммируйте числа на стандартном входе - возьмите ряд чисел из STDIN и выведите их сумму.
- Найти факториал - Учитывая целое число
n
, выведите произведение всех целых чисел между1
иn
включительно. - Кратчайший код для получения бесконечного вывода - без какого-либо ввода создайте бесконечный вывод, который, теоретически, никогда не прекратит выводить.
- Испечь кусочек Пи - Выведите точный текст:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- Найдите наименьшее число, которое не делит N - Учитывая положительное целое число N, выведите наименьшее положительное целое число, которое не делит N.
- Это четное или нечетное? - Если задано целое число N, выведите его четность в виде истинных / ложных значений.
- Вывод такой же длины, как и у кода. Запишите кратчайший код, длина которого равна длине кода, где результат не совпадает с кодом.
- Гольф, ты идешь на отлично! - Напишите кратчайший квин на вашем языке.
Для того, чтобы быть действительным, новое представление должно иметь гольф-представление как минимум для 2 проблем, по крайней мере, 1 байт для каждой. Вы можете увеличить продолжительность других представлений, но общая оценка должна уменьшиться как минимум на 2 за ответ. Также, пожалуйста, рассмотрите возможность включения ссылки на обновленные программы. Обновленные решения не должны работать при запуске с предыдущей версией интерпретатора.
Как получить печенье
У меня есть список из 5 испытаний, которые не являются обязательными для выполнения и не влияют на ваш счет, а представляют собой просто дополнительные испытания, чтобы проверить, достаточно ли Bugle способен. Не стесняйтесь включить решение для любого из них в ваш ответ:
- Создать Self переводчик
- Создать полезную нагрузку
- Совмещать строку
- Гиперпрограммирование: N + N, N × N, N ^ N все в одном
- "УЗЛ" или "НЕ"?
Описания не включены, так как не обязательно, чтобы каждый мог участвовать в соревновании.
Как победить
Как только минимальная оценка ( мы считаем, что 16, хотя любые попытки сыграть в эту игру очень приветствуются), очевидно, цепочка закончилась, поскольку решения не могут получить более высокую оценку. После того, как 16 будет достигнуто, задача остается в силе в течение 1 месяца после этого, чтобы дать кому-либо возможность отыскивать решения больше. После того, как этот месяц прошел, вызов окончен.
Как только задача будет решена, я перенесу переводчик в репозиторий GitHub и пройдусь по обычным махинациям по выпуску стабильного языка. Вы также можете начать публиковать решения проблем PPCG в настоящее время, используя указанный язык, но, пожалуйста, постарайтесь не заполнять первую страницу ответами. Вместо этого распределите их в течение определенного периода времени.
Форматирование
Чтобы облегчить поиск информации в вашем ответе, отформатируйте ее следующим образом:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
Где [N]
ваш номер ответа (1 для первого, 2 для второго и т. Д.)
правила
- Вы должны подождать 3 часа между отправкой ответов
- Вы не можете публиковать сообщения два раза подряд, если ответ не был опубликован в течение 10 дней (ровно 240 часов).
- Вы не можете удалить предыдущие команды.
- Ваш переводчик не должен быть в гольфе, и его количество байтов здесь совершенно не имеет значения.
- Если кто-то предлагает игру в гольф, пока ваш ответ самый последний, вы должны отредактировать поле для гольфа и обновить свой счет.
- Вы также можете сделать это, когда ваш ответ находится в середине цепочки, если ваш счет не становится ниже, чем любые последующие ответы.
- Пожалуйста, воздержитесь от ответа на любые существующие вызовы PPCG, используя этот язык, по крайней мере, пока вызов не будет завершен
- Интерпретатор написан на Python 3 и должен продолжаться таким же образом по всей цепочке. Смена языка запрещена.
- Опять же, для того, чтобы быть действительным, новое представление должно включать в себя как минимум 2 проблемы, по крайней мере, 1 байт для каждой.
Давайте начнем!
Hello, World!
, то это 19 байтов. Но если поведение пустой программы изменится, в зависимости от входных данных, ее можно будет уменьшить
for
циклы) разрешены, и их рекомендуется добавлять