Задний план
Вдохновленный я палиндром. Ты? Там, где представлен шокирующий факт, что « ()()
это не палиндром, но ())(
», я спросил себя, что вместо этого, ()()
и ответ прост: это строка с вертикальной осью симметрии!
Задание
Напишите программу или функцию, которая принимает строку S (или соответствующий эквивалент на вашем языке) в качестве входных данных, проверяет симметрию вдоль вертикальной оси и возвращает значение true или false соответственно. Вы можете использовать любые разумные средства, чтобы получить данные и предоставить результаты.
Отражательная симметрия
Отражательная симметрия вокруг вертикальной оси (или лево-правая симметрия) означает, что если вы поместите зеркало вертикально в точный центр строки, отраженное изображение первой половины строки будет идентично второй половине строки.
Например, следующие строки отражательно симметричны вокруг вертикальной оси:
()()
()()()
[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
считается "симметричным"?