Lý lịch
Stack Mèo là một ngôn ngữ bí truyền đảo ngược được thực hiện bởi Martin Ender. Mỗi lệnh trong Stack Mèo là nghịch đảo của chính nó (được biểu diễn dưới dạng một ký tự đối xứng, chẳng hạn như -_:T|
) hoặc có lệnh nghịch đảo của nó (được biểu thị dưới dạng hình ảnh phản chiếu, chẳng hạn như ()
{}
[]
<>
). Mèo Stack có một yêu cầu cú pháp mạnh mẽ rằng toàn bộ chương trình phải là hình ảnh phản chiếu của chính nó. Lưu ý rằng điều này có nghĩa là bất kỳ chương trình Stack Mèo hợp lệ nào cũng là một ambigram hình ảnh phản chiếu tự nhiên .
Dưới đây là toàn bộ bộ lệnh của Stack Mèo:
- Tự đối xứng:
!*+-:=ITX^_|
- Các cặp đối xứng:
()
{}
[]
<>
\/
Bất kỳ ký tự nào khác đều không hợp lệ; bất kỳ đầu vào nào có ký tự không nằm trong bộ ký tự ở trên sẽ xuất sai.
Ngôn ngữ có hạn chế bổ sung ()
và {}
cặp phải luôn cân bằng, nhưng vì lợi ích của sự đơn giản, bạn không cần phải kiểm tra các điều kiện này.
Sau đây là một số ví dụ về chương trình Stack Mèo hợp lệ (một lần nữa, lưu ý rằng bạn không kiểm tra các parens cân bằng):
{[+]==[+]}
[)>^<(]
({T)}|{(T})
<(*]{[:!-_:>}<[<)*(>]>{<:_-!:]}[*)>
Đây không phải là:
b<+>d
())(
({[<++<]})
Thử thách
Viết chương trình hoặc hàm xác định xem chuỗi đã cho có phải là chương trình Stack Mèo hợp lệ không. Mã của bạn cũng phải là một ambigram hình ảnh phản chiếu tự nhiên , có nghĩa là:
- Mã của bạn phải là một hình ảnh phản chiếu của chính nó.
- Mã của bạn có thể có một hoặc nhiều dòng mới, miễn là toàn bộ mã, được hiển thị một cách tự nhiên, là hình ảnh phản chiếu của chính nó.
- Bạn có thể bỏ qua hoặc thêm các khoảng trắng ở cuối mỗi dòng vì nó không thay đổi hiển thị.
- Các ký tự tab không được phép vì chúng có một chút mơ hồ trên màn hình.
Lưu ý: mã của bạn không phải là chương trình Stack Mèo hợp lệ; nó có thể chứa một số ký tự phụ không được phép trong Stack Mèo. (Xem bên dưới để biết danh sách đầy đủ.)
Ví dụ: hai chương trình sau đây là đối xứng (và do đó, đệ trình hợp lệ ), trong khi chương trình thứ ba thì không:
({bTd})
[<q|p>]
({bTd})
IXI
({bTd})
IXI
- Về "tính đối xứng gương", chỉ xem xét tính đối xứng kiểu Stack Cat (ví dụ:
({IH})
không phải là một đệ trình hợp lệ, mặc dù nó có tính đối xứng gương). - Mã của bạn chỉ có thể chứa các bộ ký tự này, cộng với dòng mới:
- Tự đối xứng: dấu cách (
0x20
) +!"'*+-.8:=AHIMOTUVWXY^_ovwx|
- Các cặp đối xứng:
()
/\
<>
[]
bd
pq
{}
- Tự đối xứng: dấu cách (
Bộ ký tự được chọn là đối xứng nghiêm ngặt hoặc tự đối xứng khi được hiển thị dưới dạng mã trên SE.
Đầu vào và đầu ra
Phạm vi đầu vào là bất kỳ chuỗi ký tự ASCII có thể in một dòng nào .
Bạn có thể chọn lấy đầu vào dưới dạng chuỗi, danh sách ký tự hoặc danh sách các giá trị ASCII.
Bạn có thể chọn đầu ra:
- Bất kỳ giá trị trung thực / giả nào như được xác định bởi ngôn ngữ bạn chọn
- Các giá trị kết quả thực tế có thể khác nhau giữa các đầu vào (ví dụ: đầu ra 1 cho đầu vào trung thực và 2 cho đầu vào trung thực khác).
- Trao đổi giá trị trung thực và giả mạo không được phép.
- Bất kỳ hai giá trị không đổi cho đúng / sai tương ứng
- Trong trường hợp này, các giá trị kết quả phải chính xác là một trong hai giá trị không đổi.
Bạn nên chỉ định phương thức nhập và giá trị đầu ra trong bài gửi của mình.
Điều kiện chiến thắng
Đây là môn đánh gôn , do đó, byte thấp nhất trong mỗi ngôn ngữ sẽ thắng.
Ghi chú
- Sơ hở tiêu chuẩn bị cấm như bình thường.
- Tất nhiên bạn có thể giải quyết điều này trong Stack Mèo, nhưng cơ hội là bạn không thể sử dụng một lá cờ cho phép giảm một nửa kích thước mã của bạn. Và đó là ngôn ngữ rất khó để chọn: P
#
không được phép?