Фон
Stack Cats - це оборотна езотерична мова, виготовлена Мартіном Ендером. Кожна команда в Stack Cats є або оберненою самою собою (представлена як симетричний символ, наприклад -_:T|), або має свою зворотну команду (представлена як дзеркальне зображення, наприклад () {} [] <>). Stack Cats має чітку синтаксичну вимогу, щоб вся програма мала бути дзеркальним зображенням себе. Зауважте, що це означає, що будь-яка дійсна програма Stack Cats - це природна амбіграма дзеркального зображення .
Ось весь набір команд Stack Cats:
- Самосиметричний:
!*+-:=ITX^_| - Симетричні пари:
(){}[]<>\/
Будь-які інші символи недійсні; будь-який вхід із символом, який не знаходиться у наборі символів вище, повинен виводити помилку.
Мова має додаткові обмеження, що ()і {}пари повинні бути завжди збалансованими, але для простоти вам не потрібно перевіряти цю умову.
Нижче наведено кілька прикладів дійсної програми Stack Cats (ще раз зауважте, що ви не перевіряєте на збалансованість паролів):
{[+]==[+]}
[)>^<(]
({T)}|{(T})
<(*]{[:!-_:>}<[<)*(>]>{<:_-!:]}[*)>
Це не такі:
b<+>d
())(
({[<++<]})
Виклик
Напишіть програму або функцію, яка визначає, чи вказана рядок є дійсною програмою Stack Cats. У вашому коді також має бути природна амбіграма дзеркального зображення , що означає:
- Ваш код повинен бути самим дзеркальним зображенням.
- Ваш код може мати один або більше нових рядків, якщо весь код, відображений природним чином, є самим дзеркальним зображенням.
- Ви можете опускати або додавати пробіли білого пробілу в кожному рядку, оскільки це не змінює дисплей.
- Символи вкладок заборонені, оскільки вони мають деяку неоднозначність.
Примітка: ваш код не повинен бути дійсною програмою Stack Cats; він може містити певні зайві символи, які не дозволені в Stack Cats. (Повний список див. Нижче).
Наприклад, наступні дві програми є симетричними (і, отже, дійсним поданням ), тоді як третя не:
({bTd})
[<q|p>]
({bTd})
IXI
({bTd})
IXI
- Що стосується "дзеркальної симетрії", то розглядається лише симетрія у стилі Cats Cats (наприклад
({IH}), це неправдиве подання, хоча воно має дзеркальну симетрію). - Ваш код може містити лише ці набори символів плюс новий рядок:
- Самосиметричний: простір (
0x20) +!"'*+-.8:=AHIMOTUVWXY^_ovwx| - Симетричні пари:
()/\<>[]bdpq{}
- Самосиметричний: простір (
Набір символів вибирається строго симетричним або самосиметричним, коли відображається як код на SE.
Вхід і вихід
Діапазон введення - це будь -яка однорядкова рядок друкованих символів ASCII .
Ви можете вибрати вхід як рядок, список знаків або список значень ASCII.
Ви можете вибрати вихід:
- Будь-яке із значень правди / хибності, визначене мовою, яку ви обрали
- Фактичні значення результатів можуть відрізнятись між вхідними даними (наприклад, вихід 1 для вхідної інформації та 2 для іншого).
- Поміняти обмінні значення і помилкові значення не дозволяється.
- Будь-які два постійні значення для true / false відповідно
- У цьому випадку значення результату повинні бути точно одним із двох постійних значень.
Ви повинні вказати спосіб введення та значення виводу у своєму поданні.
Умова виграшу
Це код-гольф , тому найнижчі байти в кожній мові виграють.
Примітки
- Стандартні лазівки заборонені, як зазвичай.
- Звичайно, ви можете вирішити це в Stack Cats, але шанс полягає в тому, що ви не можете використовувати прапор, що дозволяє зменшити розмір коду вдвічі. І серйозно важку мову підібрати: P
#заборонено?