tło
Zainspirowany jestem palindromem. Jesteś? , gdzie przedstawiono szokujący fakt, że „ ()()nie jest palindromem, ale ())(”, zadałem sobie pytanie, co to jest, ()()a odpowiedź brzmi po prostu: jest to struna o pionowej osi symetrii!
Zadanie
Napisz program lub funkcję, która pobiera jako ciąg ciąg S (lub odpowiedni odpowiednik w Twoim języku), sprawdza symetrię wzdłuż osi pionowej i zwraca odpowiednio wartość prawdy lub fałszu . Możesz użyć wszelkich rozsądnych środków, aby pobrać dane wejściowe i dostarczyć dane wyjściowe.
Odbicie symetrii
Odbicie symetrii wokół osi pionowej (lub symetrii lewa-prawa) oznacza, że jeśli umieścisz lustro pionowo w dokładnym środku struny, odbity obraz pierwszej połowy struny jest identyczny z drugą połową struny.
Na przykład następujące ciągi są odbijające symetrycznie wokół osi pionowej:
()()
()()()
[A + A]
WOW ! WOW
OH-AH_wx'xw_HA-HO
(<<[[[T*T]]]>>)
(:)
)-(
())(()
qpqp
podczas gdy następujące nie są:
())(
((B))
11
+-*+-
WOW ! wow
(;)
qppq
Zasady konkursu
• Twój program lub funkcja otrzyma tylko drukowalne znaki ASCII. Możesz dołączyć lub nie pusty ciąg (oczywiście symetryczny!) Jako dane prawne, co jest dla ciebie lepsze.
• Znaki ASCII, które można uznać za symetryczne względem osi pionowych, są następujące (zwróć uwagę na początkową spację oraz różnicę między wielkimi i małymi literami):
!"'+*-.:=AHIMOTUVWXY^_ovwx|
Znaki ASCII, które można uznać za „dublowane”, oraz odpowiadające im znaki to:
()<>[]{}qpbd/\
Należy zauważyć, że ponieważ są dublowane, można mieć jedno i drugie (), a także )(, /\i \/itp
Wszystkie pozostałe znaki drukowalne ASCII należy traktować jako asymetryczne i bez lustrzanego odpowiadającego znaku.
• Jest to wyzwanie polegające na kodzie golfowym : im krótszy jest twój program, mierzony w bajtach, tym lepiej w dowolnym języku programowania.
• Uznanie dla osób, które stworzą symetryczny program!
Uwaga : to pytanie nie jest duplikatem „Wygodnego palindromu” , który wymaga sprawdzenia ciągów palindromicznych, w których nawiasy są odwrócone. To pytanie jest inne z dwóch powodów:
1) jest to ograniczenie drugiego pytania dotyczącego tego, co dotyczy znaków nie w nawiasach, ponieważ tylko znaki symetryczne mogą występować w odwrotnej kolejności.
2) Ponieważ jest oparty na koncepcji symetrii, a nie na koncepcji „wygodnego palindromu”, znaki lustrzane mogą pojawiać się w obu kolejności, tj. []I ][, i to sprawia, że program do rozwiązania różni się od programów, które rozwiązują inny problem .
8uważany za „symetryczny”?