背景
Stack Cats是Martin Ender提出的一种可逆的深奥语言。Stack Cats中的每个命令都是其自身的反函数(表示为对称字符,如-_:T|
),或者具有其反命令(表示为镜像,如()
{}
[]
<>
)。Stack Cats对语法的要求很高,那就是整个程序应该是其自身的镜像。请注意,这意味着任何有效的Stack Cats程序都是自然的镜像歧义。
这是Stack Cats的整个命令集:
- 自对称:
!*+-:=ITX^_|
- 对称对:
()
{}
[]
<>
\/
其他字符无效;字符不在上述字符集中的任何输入应输出false。
语言有附加约束()
和{}
对必须始终平衡,但是为了简单起见,你不必检查此条件。
以下是有效的Stack Cats程序的一些示例(同样,请注意,您不会检查平衡括号):
{[+]==[+]}
[)>^<(]
({T)}|{(T})
<(*]{[:!-_:>}<[<)*(>]>{<:_-!:]}[*)>
这些不是:
b<+>d
())(
({[<++<]})
挑战
编写确定给定字符串是否有效的Stack Cats程序的程序或函数。您的代码也应该是自然的镜像歧义,这意味着:
- 您的代码应该是其自身的镜像。
- 您的代码可能具有一个或多个换行符,只要自然显示的整个代码是其自身的镜像即可。
- 您可以在每行上省略或添加尾随空格,因为它不会更改显示。
- 不允许使用制表符,因为它们在显示上有些歧义。
注意:您的代码不会不必须是一个有效的协议栈猫节目; 它可能包含Stack Cats不允许的某些额外字符。(请参阅下面的完整列表。)
例如,以下两个程序是对称的(因此是有效的提交),而第三个则不是:
({bTd})
[<q|p>]
({bTd})
IXI
({bTd})
IXI
- 关于“镜像对称性”,仅考虑Stack Cats风格的对称性(例如
({IH})
,即使具有镜像对称性,也不是有效的提交方式)。 - 您的代码只能包含以下字符集以及换行符:
- 自对称:空格(
0x20
)+!"'*+-.8:=AHIMOTUVWXY^_ovwx|
- 对称对:
()
/\
<>
[]
bd
pq
{}
- 自对称:空格(
当在SE上显示为代码时,字符集被选择为严格对称或自对称。
输入输出
输入范围是任何可打印ASCII字符的单行字符串。
您可以选择将输入作为字符串,字符列表或ASCII值列表。
您可以选择输出:
- 由您选择的语言定义的任何真假值
- 输入之间的实际结果值可能有所不同(例如,对于一个真实输入,输出1;对于另一个真实输入,输出2)。
- 不允许交换真实值和虚假值。
- 分别为true / false的任何两个常量值
- 在这种情况下,结果值应恰好是两个常数值之一。
您应该在提交中指定输入方法和输出值。
获奖条件
这是代码高尔夫球,因此每种语言中的最低字节为准。
笔记
- 照常禁止出现标准漏洞。
- 当然,您可以在Stack Cats中解决此问题,但是机会是您不能使用允许将代码大小减少一半的标志。:P语言非常难学
#
不允许尖锐?