Contexte
Inspiré par I'm a palindrome. Es-tu? , où il est présenté le fait choquant que "ce ()()
n'est pas un palindrome, mais ())(
", je me suis demandé ce que c'est ()()
et la réponse est simple: c'est une corde avec un axe de symétrie vertical!
La tâche
Écrivez un programme ou une fonction qui prend en entrée une chaîne S (ou l'équivalent approprié dans votre langue), vérifie la symétrie le long de l'axe vertical et renvoie une valeur véridique ou fausse en conséquence. Vous pouvez utiliser tous les moyens raisonnables pour prendre l'entrée et fournir la sortie.
Symétrie réflexionnelle
La symétrie réflexive autour d'un axe vertical (ou symétrie gauche-droite) signifie que si vous placez un miroir verticalement au centre exact de la chaîne, l'image réfléchie de la première moitié de la chaîne est identique à la seconde moitié de la chaîne.
Par exemple, les chaînes suivantes sont symétriques par réflexion autour d'un axe vertical:
()()
()()()
[A + A]
WOW ! WOW
OH-AH_wx'xw_HA-HO
(<<[[[T*T]]]>>)
(:)
)-(
())(()
qpqp
alors que les suivants ne le sont pas:
())(
((B))
11
+-*+-
WOW ! wow
(;)
qppq
Règlement du concours
• Votre programme ou fonction ne recevra que des caractères ASCII imprimables. Vous pouvez inclure ou non la chaîne vide, (qui est symétrique, bien sûr!) Comme entrée légale, ce qui est mieux pour vous.
• Les caractères ASCII qui peuvent être considérés comme symétriques par rapport aux axes verticaux sont les suivants (notez l'espace initial et la différence entre les majuscules et les minuscules):
!"'+*-.:=AHIMOTUVWXY^_ovwx|
Les caractères ASCII qui peuvent être considérés comme «en miroir» et leurs caractères correspondants sont:
()<>[]{}qpbd/\
Notez que, comme ils sont en miroir, vous pouvez avoir à la fois ()
ainsi que )(
, /\
et \/
, etc.
Tous les autres caractères imprimables ASCII doivent être considérés comme asymétriques et sans caractère correspondant en miroir.
• C'est un défi de code-golf : plus votre programme est court, mesuré en octets, mieux c'est, dans n'importe quel langage de programmation.
• Félicitations aux personnes qui produiront un programme symétrique!
Remarque : cette question n'est pas un doublon de "Palindrome pratique" , qui nécessite de vérifier les chaînes palindromiques dans lesquelles les parenthèses sont inversées. Cette question est différente pour deux raisons:
1) c'est une restriction de l'autre question pour ce qui concerne les caractères non parenthèses, puisque seuls les caractères symétriques peuvent apparaître dans l'ordre inverse.
2) Puisqu'il est basé sur le concept de symétrie et non sur un concept de «palindrome commode», les caractères en miroir peuvent apparaître dans les deux ordres, c'est []
-à- dire et ][
, ce qui rend le programme pour le résoudre différent des programmes qui résolvent l'autre problème. .
8
considéré comme "symétrique"?