Vamos a definir un lenguaje sencillo 2D, que vamos a dar el nombre muy original, befinge . Befinge tiene 5 instrucciones:
<>^v
, como en la mayoría de los esolangs 2D, redirija el puntero de instrucción en sus respectivas direcciones..
es un no-op.
El puntero de instrucciones comienza en la esquina superior izquierda hacia la derecha. Si el puntero de instrucción llega a un borde, el programa se detiene. Cada programa Befinge obviamente se detendrá o entrará en un ciclo infinito que no hace nada. Aquí hay dos ejemplos:
Vacilante:
>.v
..<
Sin detenerse:
>....v
..v..<
..>v..
^..<..
El problema de detención no se puede resolver para un lenguaje completo de Turing, pero sí para este. Su tarea es escribir un programa (o función) que tome como entrada una cadena que represente el programa befinge y devuelva un valor verdadero o falso dependiendo de si se detiene o no.
- Puede suponer que la entrada consistirá solo en estos caracteres y se rellenará con espacios para formar un rectángulo.
- Puede usar cualquier conjunto de cinco caracteres para las instrucciones (por ejemplo
adws
).
Casos de prueba
Vacilante:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Sin detenerse:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Este es el código de golf , por lo que gana el programa más corto (en bytes).
>..>.
o ><
.