Hintergrund
Inspiriert von Ich bin ein Palindrom. Bist du? , wo es die schockierende Tatsache gibt, dass " ()()kein Palindrom ist, sondern ())(", fragte ich mich, was stattdessen ist ()()und die Antwort ist einfach: Es ist eine Saite mit einer vertikalen Symmetrieachse!
Die Aufgabe
Schreiben Sie ein Programm oder eine Funktion, die einen String S (oder das entsprechende Äquivalent in Ihrer Sprache) als Eingabe verwendet, auf Symmetrie entlang der vertikalen Achse prüft und dementsprechend einen Wahrheits- oder Falschwert zurückgibt . Sie können alle angemessenen Mittel verwenden , um die Eingabe zu übernehmen und die Ausgabe bereitzustellen.
Reflexionssymmetrie
Reflexionssymmetrie um eine vertikale Achse (oder Links-Rechts-Symmetrie) bedeutet, dass das reflektierte Bild der ersten Hälfte der Zeichenfolge mit der zweiten Hälfte der Zeichenfolge identisch ist, wenn Sie einen Spiegel vertikal in der exakten Mitte der Zeichenfolge platzieren.
Die folgenden Zeichenfolgen sind beispielsweise um eine vertikale Achse reflexionssymmetrisch:
()()
()()()
[A + A]
WOW ! WOW
OH-AH_wx'xw_HA-HO
(<<[[[T*T]]]>>)
(:)
)-(
())(()
qpqp
während die folgenden nicht sind:
())(
((B))
11
+-*+-
WOW ! wow
(;)
qppq
Regeln des Wettbewerbs
• Ihr Programm oder Ihre Funktion empfängt nur druckbare ASCII-Zeichen. Sie können die leere Zeichenfolge (die natürlich symmetrisch ist!) Als legale Eingabe einfügen oder nicht, was für Sie besser ist.
• Folgende ASCII-Zeichen können in Bezug auf die vertikalen Achsen als symmetrisch angesehen werden (beachten Sie den Anfangsraum und den Unterschied zwischen Groß- und Kleinbuchstaben):
!"'+*-.:=AHIMOTUVWXY^_ovwx|
Die ASCII-Zeichen, die als "gespiegelt" betrachtet werden können, und die entsprechenden Zeichen sind:
()<>[]{}qpbd/\
Beachten Sie, dass, da sie gespiegelt sind, können Sie beide haben ()als auch )(, /\und \/etc.
Alle anderen druckbaren ASCII-Zeichen müssen als asymmetrisch und ohne gespiegeltes entsprechendes Zeichen betrachtet werden.
• Dies ist eine Code-Golf- Herausforderung: Je kürzer Ihr Programm ist, gemessen in Bytes, desto besser in jeder Programmiersprache.
• Ein großes Lob an Leute, die ein symmetrisches Programm erstellen!
Hinweis : Bei dieser Frage handelt es sich nicht um ein Duplikat von "Convenient Palindrome" , bei dem nach palindromen Zeichenfolgen gesucht werden muss, bei denen Klammern gespiegelt sind. Diese Frage unterscheidet sich aus zwei Gründen:
1) Es handelt sich um eine Einschränkung der anderen Frage in Bezug auf nicht in Klammern gesetzte Zeichen, da nur symmetrische Zeichen in umgekehrter Reihenfolge auftreten können.
2) Da es auf dem Konzept der Symmetrie und nicht auf dem Konzept des "bequemen Palindroms" basiert, können gespiegelte Zeichen in beiden Reihenfolgen auftreten, dh []und ][, und dies unterscheidet das zu lösende Programm von Programmen, die das andere Problem lösen .
8als "symmetrisch" angesehen?