Définissons un langage simple 2D, que nous allons donner le nom d' origine incroyablement befinge . Befinge a 5 instructions:
<>^v
, comme dans la plupart des esolangs 2D, redirigez le pointeur d'instruction dans leurs directions respectives..
est un no-op.
Le pointeur d'instructions commence dans le coin supérieur gauche en allant vers la droite. Si le pointeur d'instruction atteint un bord, le programme s'arrête. Chaque programme Befinge s'arrêtera évidemment ou entrera dans une boucle infinie qui ne fait rien. Voici deux exemples:
Arrêt:
>.v
..<
Sans interruption:
>....v
..v..<
..>v..
^..<..
Le problème d'arrêt n'est pas résolu pour un langage complet de Turing, mais il l'est pour celui-ci. Votre tâche consiste à écrire un programme (ou une fonction) qui prend en entrée une chaîne représentant le programme befinge et renvoie une valeur true ou falsey selon qu'elle s'arrête ou non.
- Vous pouvez supposer que l'entrée ne comprendra que ces caractères et sera complétée par des espaces pour former un rectangle.
- Vous pouvez utiliser n'importe quel ensemble de cinq caractères pour les instructions (par exemple
adws
).
Cas de test
Arrêt:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Sans interruption:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Il s'agit de code-golf , donc le programme le plus court (en octets) l'emporte.
>..>.
ou ><
.