Definiamo un semplice linguaggio 2D, che daremo il nome incredibilmente originale befinge . Befinge ha 5 istruzioni:
<>^v
, come nella maggior parte degli esolang 2D, reindirizzare il puntatore dell'istruzione nelle rispettive direzioni..
è una no-op.
Il puntatore dell'istruzione inizia nell'angolo in alto a sinistra andando a destra. Se il puntatore dell'istruzione raggiunge un limite, il programma si arresta. Ovviamente ogni programma Befinge si fermerà o entrerà in un ciclo infinito che non fa nulla. Ecco due esempi:
arrestare:
>.v
..<
Non-Halting:
>....v
..v..<
..>v..
^..<..
Il problema dell'arresto non è risolvibile per un linguaggio completo di Turing, ma è per questo. Il tuo compito è scrivere un programma (o una funzione) che accetta come input una stringa che rappresenta il programma befinge e restituisce un valore di verità o falsità a seconda che si interrompa o meno.
- Si può presumere che l'input consisterà solo di questi caratteri e sarà riempito con spazi per formare un rettangolo.
- È possibile utilizzare qualsiasi set di cinque caratteri per le istruzioni (ad es
adws
.).
Casi test
arrestare:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Non-Halting:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Questo è code-golf , quindi vince il programma più breve (in byte).
>..>.
o ><
.