İnanılmaz derecede orijinal ismini befinge verecek olan basit bir 2D dili tanımlayalım . Befinge'da 5 talimat var:
<>^v
, çoğu 2B izolanjında olduğu gibi, talimat işaretçisini ilgili yönlerine yönlendirin..
bir ameliyat değildir.
Talimat işaretçisi, sol üst köşede sağa doğru ilerleyerek başlar. Kumanda göstergesi bir kenara gelirse, program durur. Her Befinge programı açıkça durur ya da hiçbir şey yapmadan sonsuz bir döngüye girer. İşte iki örnek:
durduruluyor:
>.v
..<
Sigara durduruluyor:
>....v
..v..<
..>v..
^..<..
Durma problemi Turing-tamamlanmış bir dil için çözülemez, fakat bunun için. Göreviniz, ateşleme programını temsil eden bir dize girdi olarak alan ve durup durmamasına bağlı olarak bir truthy veya falsey değeri döndüren bir program (veya işlev) yazmaktır .
- Girişin yalnızca bu karakterlerden oluşacağını ve bir dikdörtgen oluşturmak için boşluklarla doldurulacağını varsayabilirsiniz.
- Talimatlar için herhangi bir beş karakter setini kullanabilirsiniz (örn.
adws
).
Test Kılıfları
durduruluyor:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Sigara durduruluyor:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Bu kod golf , yani en kısa program (bayt cinsinden) kazanır.
>..>.
ya da gibi yaptığı hiçbir örneğimiz yok ><
.