Интерпретировать ДОГО
DOGO - менее известный язык программирования. Хотя оригинальный DOGO (язык шутки из поста Usenet) никогда не был реализован, был создан язык, похожий на него. Команды для языка:
+===========+================================================================+
| Command | Description |
+===========+================================================================+
| SIT | If the value of the current memory cell is 0, jump to STAY. |
+-----------+----------------------------------------------------------------+
| STAY | If the value of the current memory cell is not 0, jump to SIT. |
+-----------+----------------------------------------------------------------+
| ROLL-OVER | Select the next operation from the operation list. |
+-----------+----------------------------------------------------------------+
| HEEL | Execute the currently selected operation. |
+-----------+----------------------------------------------------------------+
Операции:
+========+=======================================================+====+
| Number | Description | BF |
+========+=======================================================+====+
| 0 | Increment current memory cell. | + |
+--------+-------------------------------------------------------+----+
| 1 | Decrement current memory cell. | - |
+--------+-------------------------------------------------------+----+
| 2 | Move to next memory cell. | > |
+--------+-------------------------------------------------------+----+
| 3 | Move to previous memory cell. | < |
+--------+-------------------------------------------------------+----+
| 4 | Input a byte and store it in the current memory cell. | , |
+--------+-------------------------------------------------------+----+
| 5 | Output the current memory cell as ASCII. | . |
+--------+-------------------------------------------------------+----+
Примеры
Привет мир:
roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel
heel heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over
roll-over roll-over heel heel heel heel heel heel heel heel roll-over roll-over
heel roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over
roll-over heel roll-over roll-over roll-over heel roll-over roll-over roll-over
roll-over heel heel heel heel heel heel heel sit roll-over roll-over roll-over
heel roll-over roll-over roll-over heel heel heel heel roll-over roll-over heel
roll-over roll-over roll-over roll-over roll-over heel roll-over roll-over
roll-over roll-over roll-over stay roll-over roll-over roll-over heel roll-over
roll-over roll-over heel roll-over roll-over roll-over roll-over roll-over heel
roll-over heel heel heel heel heel heel heel roll-over roll-over roll-over
roll-over roll-over heel heel roll-over heel heel heel roll-over roll-over
roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel heel
roll-over roll-over roll-over roll-over heel heel heel heel heel heel heel heel
sit roll-over roll-over roll-over heel roll-over roll-over roll-over heel heel
heel heel roll-over roll-over heel roll-over roll-over roll-over roll-over
roll-over heel roll-over roll-over roll-over roll-over roll-over stay roll-over
roll-over roll-over heel roll-over roll-over heel roll-over roll-over roll-over
heel heel heel roll-over roll-over roll-over roll-over heel heel heel heel heel
heel heel heel heel heel sit roll-over roll-over roll-over heel roll-over
roll-over roll-over heel heel heel heel heel heel heel heel heel roll-over
roll-over heel roll-over roll-over roll-over roll-over roll-over heel roll-over
roll-over roll-over roll-over roll-over stay roll-over roll-over roll-over heel
roll-over roll-over roll-over roll-over heel heel heel roll-over roll-over
roll-over roll-over heel roll-over roll-over roll-over roll-over heel heel heel
heel roll-over roll-over heel roll-over heel heel heel roll-over roll-over
roll-over roll-over roll-over heel roll-over roll-over heel heel heel heel heel
heel roll-over roll-over roll-over roll-over heel roll-over roll-over heel heel
heel heel heel heel heel heel roll-over roll-over roll-over roll-over heel
roll-over roll-over roll-over heel heel roll-over roll-over roll-over roll-over
heel roll-over roll-over roll-over roll-over roll-over heel
правила
- Каждое представление должно быть либо полной программой, либо функцией. Если это функция, она должна быть запущена, для этого нужно всего лишь добавить вызов функции в конец программы. Все остальное (например, заголовки в C), должно быть включено.
- Если это возможно, предоставьте ссылку на веб-сайт, где можно протестировать ваш код.
- Ваша программа не может ничего записать
STDERR
(или что-то подобное). - Вы можете использовать вход
STDIN
(или ближайшую альтернативу на вашем языке) или в качестве аргумента. - Стандартные лазейки запрещены.
счет
Программы оцениваются в соответствии с байтами . Набор символов по умолчанию - UTF-8, если вы используете другой, пожалуйста, укажите.
Это в стороне, это Код-гольфи самый низкий счетчик байтов будет считаться победителем!
Материалы
Чтобы убедиться, что ваш ответ отображается, начните его с заголовка, используя следующий шаблон уценки:
# Language Name, N bytes
где N
размер вашего представления. Если вы улучшите свой счет, вы можете сохранить старые результаты в заголовке, вычеркнув их. Например:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Если вы хотите включить в заголовок несколько чисел (например, потому что ваш результат равен сумме двух файлов или вы хотите перечислить штрафы за флаг интерпретатора отдельно), убедитесь, что фактический результат является последним числом в заголовке:
# Perl, 43 + 2 (-p flag) = 45 bytes
Вы также можете сделать название языка ссылкой, которая затем будет отображаться во фрагменте списка лидеров:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Leaderboard
Вот фрагмент стека, который генерирует как регулярную таблицу лидеров, так и обзор победителей по языкам.
Обновить:
Извините, что не разъяснил sit
и stay
команды очень хорошо. Они, как сказал @ user6245072, как [
и ]
в BF.
Обновление 2:
Чтобы уточнить вопросы @ KennyLau:
- Операция по умолчанию
0
. - Память состоит из 8-битных ячеек.
- Клетки обертывают при переполнении / недостаточности.
- Ввод необходим для работы 4.
источник
sit lie-down roll-over play-dead heel
1
говорит: «увеличить следующую ячейку», но соответствующий код BF - «уменьшить текущую ячейку». Какая из них правильная?Ответы:
Рубин, 287 байт
Работает на бесконечной ленте в обоих направлениях. Вход DOGO - это файл в командной строке. Если аргумента командной строки нет, программа DOGO все равно будет работать, если передается как STDIN, если только она не использует операцию
3
(получить байт из STDIN), и в этом случае я понятия не имею. В любом случае, ввод файла лучше.Предполагается, что в файле программы нет другого текста, кроме четырех команд и пробелов.
Привет Мир Демонстрация
источник
Python 3,
388398373371 байтПредполагает 256 ячеек памяти. Просто простая реализация, легко победимая, вероятно, может быть лучше в гольф. Попробуйте на repl.it .
Спасибо @EasterlyIrk за то, что я понял, что Python 3 намного короче, чем Python 2.
РЕДАКТИРОВАТЬ: понял, что во время печати я учитывал только переполнение, а не фактическое значение.
Спасибо @ KevinLau-notKenney за сохранение 25 (!) Байтов с трюками умножения и преобразования операторов
РЕДАКТИРОВАТЬ: -3 байта, поместив 256 в переменную, -4 переписываясь с операторами, +8 убедившись, что это строчные буквы
источник
sys.stdout.write
? Почему нетprint
?print(...,end='')