Deadfish - это шутка «языка программирования» с четырьмя командами. Поскольку страница Esolang немного противоречива и интерпретаторы на этой странице не все работают одинаково, вам следует реализовать следующий вариант:
Спецификация
- Имеется аккумулятор размером не менее 16 бит, больше разрешено, но меньше нет. Отрицательные числа не должны поддерживаться. Аккумулятор - это
0
когда программа запускается. - Существуют следующие два набора из четырех команд, и ваша программа должна поддерживать обе команды одновременно.
Стандартный Deadfish │ XKCD Вариант │ Значение ─────────────────────┼──────────────────┼───────── ─────────────────────────── i │ x │ Аккумулятор увеличения d │ d │ Аккумулятор декремента S │ K │ Площадь (акк = акк * акк) o │ c │ Выходной аккумулятор, как число
- Если после выполнения команды аккумулятор равен
-1
или256
, аккумулятор должен быть сброшен на ноль. Обратите внимание, что это не нормальный переход. Если, скажем, аккумулятор есть20
, аs
команда запущена, аккумулятор должен быть400
позже. Аналогично, если аккумулятор есть257
иd
команда запущена, аккумулятор должен стать0
. - Любой ввод, который не является одной из этих команд, должен игнорироваться.
Тестовые программы
xiskso
должен выводить0
xiskisc
должен выводить289
I / O
Ваша программа должна отображать подсказку: >>
. Подсказка должна быть в начале новой строки. Затем он должен прочитать строку ввода пользователя и выполнить указанные команды слева направо. При выводе чисел числа должны быть разделены. То есть, 12 34
в порядке, 12,34
в порядке,
12
34
все в порядке, но 1234
нет.
Ваша программа должна продолжать делать это в цикле, по крайней мере, до EOF
будет достигнута.
Пример сеанса:
>> xiskso
0
>> xiskisc
289
>> ddddo ddddo
285
281
>> ddddo ddddo
277
273
>> dddddddo
266
>> dddddddddo
257
>> do
0
>> do
0
>> io
1
>>
#{STDIN.gets}
бы сработает, но на самом деле это не так.