Zdefiniujmy prosty język 2D, któremu nadamy niezwykle oryginalną nazwę befinge . Befinge ma 5 instrukcji:
<>^v
, jak w większości esolangów 2D, przekieruj wskaźnik instrukcji w odpowiednich kierunkach..
jest zakazem.
Wskaźnik instrukcji zaczyna się w lewym górnym rogu, po prawej stronie. Jeśli wskaźnik instrukcji dojdzie do krawędzi, program zatrzymuje się. Każdy program Befinge oczywiście zatrzyma się lub przejdzie w nieskończoną pętlę, która nic nie robi. Oto dwa przykłady:
Postojowy:
>.v
..<
Bez zatrzymania:
>....v
..v..<
..>v..
^..<..
Problemu zatrzymania nie da się rozwiązać w języku kompletnym Turinga, ale właśnie w tym. Twoim zadaniem jest napisanie programu (lub funkcji), który pobiera jako dane wejściowe ciąg znaków reprezentujący program befinge i zwraca wartość prawdy lub fałszu w zależności od tego, czy się zatrzyma, czy nie.
- Możesz założyć, że dane wejściowe będą składały się tylko z tych znaków i będą wypełnione spacjami, aby utworzyć prostokąt.
- Do instrukcji można użyć dowolnego zestawu pięciu znaków (np
adws
.).
Przypadki testowe
Postojowy:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Bez zatrzymania:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
To jest golf golfowy , więc wygrywa najkrótszy program (w bajtach).
>..>.
lub ><
.