fundo
Inspirado por eu sou um palíndromo. Você está?, onde é apresentado o fato chocante de que “ ()()
não é um palíndromo, mas ())(
”, perguntei-me o que é ()()
e a resposta é simplesmente: é uma corda com um eixo de simetria vertical!
A tarefa
Escreva um programa ou função que use uma string S (ou o equivalente apropriado no seu idioma) como entrada, verifique a simetria no eixo vertical e retorne um valor verdadeiro ou falso de acordo. Você pode usar qualquer meio razoável para receber a entrada e fornecer a saída.
Simetria reflexiva
Simetria reflexiva em torno de um eixo vertical (ou simetria esquerda-direita) significa que, se você colocar um espelho verticalmente no centro exato da sequência, a imagem refletida da primeira metade da sequência será idêntica à segunda metade da sequência.
Por exemplo, as seguintes seqüências de caracteres são simétricas de reflexão em torno de um eixo vertical:
()()
()()()
[A + A]
WOW ! WOW
OH-AH_wx'xw_HA-HO
(<<[[[T*T]]]>>)
(:)
)-(
())(()
qpqp
enquanto o seguinte não é:
())(
((B))
11
+-*+-
WOW ! wow
(;)
qppq
Regras do concurso
• Seu programa ou função receberá apenas caracteres ASCII imprimíveis. Você pode incluir ou não a sequência vazia (que é simétrica, é claro!) Como entrada legal, o que é melhor para você.
• Os caracteres ASCII que podem ser considerados simétricos em relação aos eixos verticais são os seguintes (observe o espaço inicial e a diferença entre letras maiúsculas e minúsculas):
!"'+*-.:=AHIMOTUVWXY^_ovwx|
Os caracteres ASCII que podem ser considerados "espelhados" e seus caracteres correspondentes são:
()<>[]{}qpbd/\
Note-se que, uma vez que eles são espelhados, você pode ter os dois ()
, bem como )(
,/\
e \/
, etc.
Todos os outros caracteres imprimíveis ASCII devem ser considerados assimétricos e sem um caractere correspondente espelhado.
• Este é um código de golfe desafio do : quanto menor o seu programa, medido em bytes, melhor, em qualquer linguagem de programação.
• Parabéns para as pessoas que produzirão um programa simétrico!
Nota : esta pergunta não é uma duplicata do "Palíndromo Conveniente" , que requer a verificação de cadeias palindrômicas nas quais os parênteses são invertidos. Essa questão é diferente por dois motivos:
1) é uma restrição da outra pergunta no que diz respeito aos caracteres que não estão entre parênteses, uma vez que apenas caracteres simétricos podem aparecer na ordem inversa.
2) Uma vez que é baseado no conceito de simetria, e não em um conceito de “palíndromo conveniente”, caracteres espelhados podem aparecer tanto em ordem, ou seja, []
e ][
, e isso faz com que o programa para resolvê-lo diferente de programas que resolver o outro problema .
8
considerado "simétrico"?