Thử thách này được tạo ra để kỷ niệm ngôn ngữ bí truyền đầu tiên của tôi, Backhand !
Backhand là ngôn ngữ một chiều với luồng con trỏ phi tuyến tính. Con trỏ di chuyển ba bước một lần, chỉ thực hiện mỗi lệnh thứ ba.
Chương trình 1..1..+..O..@
sẽ thêm 1 + 1 và đầu ra 2 trước khi kết thúc. Các hướng dẫn trung gian được bỏ qua, do đó, 1<>1()+{}O[]@
chính xác là cùng một chương trình.
Khi con trỏ chuẩn bị rời khỏi phần cuối của băng, nó sẽ đảo ngược hướng và bước theo cách khác, đó 1.@1.O+.
là cùng một chương trình. Lưu ý rằng nó chỉ đếm hướng dẫn kết thúc một lần. Điều này cho phép chúng tôi nén hầu hết các chương trình tuyến tính xuống, chẳng hạn như1O+1@
Thách thức của bạn ở đây là viết một chương trình hoặc hàm lấy một chuỗi và xuất ra các hướng dẫn sẽ được thực thi nếu chương trình được diễn giải như Backhand (bạn không cần phải xử lý bất kỳ hướng dẫn Backhand thực tế nào). Bạn chỉ xuất ra cho đến khi con trỏ hạ cánh xuống ký tự cuối cùng của chuỗi (tại thời điểm đó, việc thực thi thường sẽ đi lùi).
Nhưng chờ đã , đó không phải là tất cả! Khi chính chương trình của bạn được diễn giải theo kiểu này, mã kết quả sẽ xuất ra một trong các cách sau:
(Mostly) works
Turing complete
'Recreational'
(dấu ngoặc kép có thể là'
hay"
, nhưng không phải tất cả)Perfectly okay
Only a few bugs
Ví dụ, nếu mã nguồn của bạn là code 2 backhand
, thì chương trình ce cankb od2ahd
sẽ xuất ra một trong những cụm từ này.
Các trường hợp thử nghiệm:
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
Và một chương trình tham khảo được viết bằng, tất nhiên, Backhand ( điều này có thể là một lỗi nhỏ Được rồi, tôi nghĩ rằng tôi đã sửa nó).
Quy tắc.
- Lỗ hổng tiêu chuẩn bị cấm
- Đầu vào của chương trình đầu tiên sẽ chỉ chứa ASCII có thể in và các dòng mới (nghĩa là byte
0x20
-0x7E
cũng như 0x0A) - Bạn có thể chọn xem chương trình thứ hai của bạn được chuyển đổi từ đầu tiên theo byte hay bằng ký tự UTF-8.
- Chương trình thứ hai:
- Trường hợp không không quan trọng, vì vậy đầu ra của bạn có thể là
pErFectLy OKay
nếu bạn muốn. - Bất kỳ số lượng dấu vết / khoảng trắng hàng đầu (dòng mới, tab, khoảng trắng) cũng được.
- Chương trình thứ hai phải cùng ngôn ngữ với ngôn ngữ thứ nhất, mặc dù không nhất thiết phải cùng định dạng (chương trình / chức năng)
- Tôi rất vui khi bao gồm các đề xuất từ các nhận xét về các cụm từ bổ sung (miễn là chúng không quá ngắn)
- Trường hợp không không quan trọng, vì vậy đầu ra của bạn có thể là
- Vì đây là môn đánh gôn , mục tiêu của bạn là có được câu trả lời ngắn nhất cho ngôn ngữ của bạn!
- Trong hai tuần, tôi sẽ trao 200 tiền thưởng cho câu trả lời Backhand ngắn nhất.
"---!---!"
(hoặc bất kỳ chuỗi nào có ký tự cuối cùng xuất hiện nhiều lần)