背景
受到我的回文启发。你是?在这里,令人震惊的事实是“ ()()
不是回文,而是())(
”,我问自己是什么()()
,答案很简单:它是具有垂直对称轴的字符串!
任务
编写一个程序或函数,该程序或函数将字符串S(或您的语言中适当的等效语言)作为输入,检查沿垂直轴的对称性,并相应地返回真实或虚假值。您可以使用任何合理的方式获取输入并提供输出。
反射对称
围绕垂直轴的反射对称性(或左右对称)意味着,如果将镜子垂直放置在字符串的确切中心,则字符串前半部分的反射图像与字符串后半部分相同。
例如,以下字符串围绕垂直轴反射对称:
()()
()()()
[A + A]
WOW ! WOW
OH-AH_wx'xw_HA-HO
(<<[[[T*T]]]>>)
(:)
)-(
())(()
qpqp
而以下不是:
())(
((B))
11
+-*+-
WOW ! wow
(;)
qppq
比赛规则
•您的程序或函数将仅接收可打印的ASCII字符。您可以包含或不包含空字符串(当然是对称的!)作为合法输入,这对您来说更好。
•可以认为相对于垂直轴对称的ASCII字符如下(请注意初始空间以及大小写字母之间的差异):
!"'+*-.:=AHIMOTUVWXY^_ovwx|
可以视为“镜像”的ASCII字符及其对应的字符为:
()<>[]{}qpbd/\
需要注意的是,因为他们镜像,你可以同时拥有()
,以及)(
,/\
和\/
等。
所有其他ASCII可打印字符必须被认为是非对称的,并且没有镜像的对应字符。
•这是一个代码挑战:用任何编程语言,以字节为单位的程序越短,越好。
•对将产生对称程序的人表示敬意!
注意:这个问题不是“便捷回文”的重复,它需要检查回圆括号中是否翻转的回文字符串,这个问题有所不同,原因有两个:
1)对于非括号字符,这是另一个问题的限制,因为只有对称字符可以相反的顺序出现。
2)因为它基于对称性概念,而不是基于“方便回文”的概念,所以镜像字符可以同时出现,即[]
和][
,这使得解决该问题的程序不同于解决其他问题的程序。
8
被认为是“对称的”?