Введение
Compute - это эзотерическая шутка языка.
Compute не имеет необходимого синтаксиса и может решать любые проблемы. Он достаточно умен, чтобы интерпретировать любой человеческий язык (английский, испанский, латинский и т. Д.), Любой язык программирования (C ++, Java, brainfuck и т. Д.) Или любые виды данных, которые вы можете себе представить. Единственным недостатком является то, что нет абсолютно никакого ввода / вывода.
Некоторые примеры программ
Hello World
Основная программа Hello World
What is love?
Определяет, была ли это любовь (детка, не делай мне больно).
When will we ever graduate?
Определяет точную дату выхода этого сайта из бета-версии.
Соревнование
Ваша задача - написать полный интерпретатор Compute. Это звучит довольно сложно, но имейте в виду, что у Compute абсолютно нет ввода-вывода. Таким образом, ваш интерпретатор будет просто спать одну секунду для каждой строки во входной программе и выводить \n\nDone.
после этого (это единственное исключение из функции отсутствия ввода / вывода).
Вы можете найти официального переводчика внизу этого сайта .
Обратите внимание, что официальный интерпретатор делает паузу в одну секунду для каждого символа в данном исходном коде. Чтобы избежать длительного ожидания при тестировании вашего переводчика со значимыми вопросами, мы остаемся в курсе этой задачи.
правила
- Входные данные могут содержать несколько строк, разделенных
\n
. Всегда будет хотя бы одна строка. - В отличие от официальной реализации, вам не нужно принимать файл в качестве входных данных. Вы можете использовать программу Compute в любой форме ввода.
- Единственный выход разрешен
\n\nDone.
. Трейлинг-перевод строки разрешен. - Функция или полная программа разрешены.
- Правила по умолчанию для ввода / вывода.
- Применяются стандартные лазейки .
- Это Код-гольфтак побеждает самое низкое число байтов. Tiebreaker является более ранним представлением.
источник
Ответы:
05AB1E ,
16151413 байтКод:
Объяснение:
Эта часть эквивалентна
"\n\nDone."
:Попробуйте онлайн!
Использует кодировку CP-1252 .
источник
Oration , 117 байтов
Давайте объясним это. Во-первых, это переносится на:
Все еще в замешательстве? Скажем так:
Импортирует модуль
time
.Это петля во время которого условие
input()
.Наша программа должна дышать сейчас, и
inhale
, хотя она менее здорова, она лучше для гольфа.Now
взять последний импортированный модуль и добавить.sleep(1)
к нему.Давайте выйдем из цикла while.
Печатает две строки.
Начинается захват строки.
Добавляет
Done.
в захваченную строку.Завершает захват строки.
источник
JavaScript Shell REPL, 38 байт
Как функция, которая принимает программу в качестве строкового аргумента и возвращает результат:
29 байт, если функция может принять свой ввод в виде массива строк, или если она должна спать 1 секунду на символ:
34 байта, если это также должно быть больше похоже на программу и явно вывести Done:
Это работает для меня в автономном переводчике Spidermonkey.
источник
Javascript ES6,
4645 байтСпасибо ӍѲꝆΛҐӍΛПҒЦꝆ за сохранение одного байта
Предполагает массив в качестве входных данных.
Как указали и ӍѲꝆΛҐӍΛПҒЦꝆ, и edc65 , вы можете написать следующее, но оно не будет сохранять байты:
источник
1e3
лучше чем10e2
.1e3 is better than 10e2
не могу поверить, что я пропустил это.Баш + coreutils, 28
Спит 1 секунда для каждой строки. Используйте
wc -c
вместо каждого байта илиwc -m
вместо каждого символа.источник
Pyth,
1514 байтов(Вы можете попробовать это онлайн , но в этом нет никакого смысла.)
источник
Done
(что довольно забавно, потому что вы сказали кому-то то же самое в другом ответе): PPerl, 21 + 1 = 22 байта
Требуется
-p
флаг:источник
Python 3, 58 байт
источник
MATL , 17 байт
Завершающая пустая строка (за которой следует новая строка) используется для обозначения конца ввода. Это необходимо в MATL, потому что ввод является интерактивным, и каждый ввод заканчивается новой строкой.
Попробуйте онлайн!
источник
Done
?QBasic, 54 байта
Принимает программу построчно из пользовательского ввода, завершается пустой строкой. Соблюдает букву закона, хотя, возможно, и не дух, делая паузу в 1 секунду после прочтения каждой строки. (Технически в спецификации не говорится, что все паузы должны приходить после завершения ввода.) Если это считается слишком теневым, вот 64-байтовая версия, которая делает паузу после ввода всей программы:
Бонусная версия с файловым вводом / выводом (87 байт):
источник
Рубин, 32 байта
Читает со стандартного ввода.
источник
OCaml, 61 байт
Предполагается, что вход представляет собой список.
источник
Желе , 12 байт (не конкурирует)
Попробуйте онлайн!
Примечание: пожалуйста , не предлагайте помещать
⁷⁷
в сжатую строку, это сделает его длиннее (“¡OÑL[Ṁ»
).Объяснение:
источник
œS
.awk, 34 байта
Так как ввода / вывода нет, а окончательный результат неизбежен,
Done.
часть отдается в самом начале.Единственный способ спать в awk - это использовать систему
sleep
. Самый короткий способ вызвать это -print|"sleep "NR
и мы могли бы также злоупотреблять этим бесполезнымprint
.источник