Vamos definir uma linguagem simples 2D, o que nós vamos dar o nome incrivelmente originais befinge . Befinge tem 5 instruções:
<>^v
, como na maioria dos idiomas 2D, redirecione o ponteiro de instruções nas respectivas direções..
é um não-op.
O ponteiro de instruções começa no canto superior esquerdo, indo para a direita. Se o ponteiro de instruções chegar a uma borda, o programa será interrompido. Todo programa Befinge obviamente irá parar ou entrar em um loop infinito que não faz nada. Aqui estão dois exemplos:
Parada:
>.v
..<
Não-parada:
>....v
..v..<
..>v..
^..<..
O problema da parada não é solucionável para uma linguagem completa de Turing, mas é para esta. Sua tarefa é escrever um programa (ou função) que toma como entrada uma string representando o befinge programa e retorna um valor truthy ou Falsey dependendo se ele pára ou não.
- Você pode assumir que a entrada consistirá apenas desses caracteres e será preenchida com espaços para formar um retângulo.
- Você pode usar qualquer conjunto de cinco caracteres para as instruções (por exemplo
adws
).
Casos de teste
Parada:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Não-parada:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Isso é código-golfe , então o programa mais curto (em bytes) vence.
>..>.
ou ><
.