Hãy định nghĩa một cách đơn giản bằng ngôn ngữ 2D, mà chúng tôi sẽ cung cấp cho các tên vô cùng gốc befinge . Befinge có 5 hướng dẫn:
<>^v
, như trong hầu hết các esolang 2D, chuyển hướng con trỏ lệnh theo hướng tương ứng..
là một không-op.
Con trỏ lệnh bắt đầu ở góc trên bên trái đi bên phải. Nếu con trỏ lệnh tới một cạnh, chương trình sẽ dừng lại. Mỗi chương trình Befinge rõ ràng sẽ dừng lại hoặc đi vào một vòng lặp vô tận mà không làm gì cả. Đây là hai ví dụ:
Dừng lại:
>.v
..<
Không dừng lại:
>....v
..v..<
..>v..
^..<..
Vấn đề tạm dừng không thể giải quyết được đối với ngôn ngữ Turing-Complete, nhưng nó là dành cho ngôn ngữ này. Nhiệm vụ của bạn là viết một chương trình (hoặc hàm) lấy đầu vào là một chuỗi đại diện cho chương trình befinge và trả về giá trị trung thực hoặc falsey tùy thuộc vào việc nó có dừng hay không.
- Bạn có thể giả định rằng đầu vào sẽ chỉ bao gồm các ký tự này và sẽ được đệm bằng khoảng trắng để tạo thành một hình chữ nhật.
- Bạn có thể sử dụng bất kỳ bộ năm ký tự cho hướng dẫn (ví dụ
adws
).
Các trường hợp thử nghiệm
Dừng lại:
.
v>
>^
....v....
....>...v
.^..<....
.......v<
.......v.
....^..<.
v<>v>v^
>v^>^>v
<>>^v<v
v^<>v^<
Không dừng lại:
>..v
^..<
>v<
v<.
>v.
v<.
>.^
>.>.>.v
.><.<.<
Đây là môn đánh gôn , vì vậy chương trình ngắn nhất (tính bằng byte) sẽ thắng.
>..>.
hoặc ><
.