Давайте визначимо просту 2D мову, якій ми дамо неймовірно оригінальну назву befinge . Befinge має 5 інструкцій:
<>^v
, як у більшості 2D езоланг, перенаправляйте вказівник інструкцій у відповідних напрямках..
є неоперативним.
Покажчик інструкцій починається у верхньому лівому куті, йдучи праворуч. Якщо вказівник інструкції потрапить на край, програма зупиняється. Кожна програма Befinge очевидно або зупиниться, або піде в нескінченний цикл, який нічого не робить. Ось два приклади:
Припинення:
>.v
..<
Неприпинення:
>....v
..v..<
..>v..
^..<..
Проблема зупинки не вирішується для мови, що завершує Тьюрінга, але саме для цієї. Ваше завдання - написати програму (або функцію), яка приймає як вхід рядок, що представляє програму befinge і повертає значення truthy або falsey залежно від того, зупиняється вона чи ні.
- Можна припустити, що вхід буде складатися лише з цих символів і буде прокладений пробілами, щоб утворити прямокутник.
- Ви можете використовувати будь-який набір з п'яти символів для вказівок (наприклад
adws
).
Випробування
Припинення:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Неприпинення:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Це код-гольф , тому найкоротша програма (в байтах) виграє.
>..>.
або ><
.