Давайте определим простой 2D-язык, который мы дадим невероятно оригинальному названию befinge . У Бефинге есть 5 инструкций:
<>^v
, как и в большинстве двумерных esolangs, перенаправьте указатель инструкции в их соответствующих направлениях..
это неоперация.
Указатель инструкций начинается в верхнем левом углу и идет вправо. Если указатель инструкции доходит до края, программа останавливается. Каждая программа Befinge, очевидно, либо остановится, либо войдет в бесконечный цикл, который ничего не делает. Вот два примера:
Приостановление:
>.v
..<
Non-Приостановление:
>....v
..v..<
..>v..
^..<..
Проблема остановки не решаема для языка, полного Тьюринга, но для этого. Ваша задача - написать программу (или функцию), которая принимает в качестве входных данных строку, представляющую программу befinge, и возвращает истинное или ложное значение в зависимости от того, останавливается она или нет.
- Вы можете предположить, что ввод будет состоять только из этих символов и будет дополнен пробелами для формирования прямоугольника.
- Вы можете использовать любой набор из пяти символов для инструкций (например
adws
).
Тестовые случаи
Приостановление:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Non-Приостановление:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Это код-гольф , поэтому выигрывает самая короткая (в байтах) программа.
>..>.
или ><
.