Напишите программу или функцию, которая принимает текстовую сетку 4 × 4, состоящую из ровно 4 A, 4 B, 4 Cи 4 D, например:
ACDC
BBCA
BADD
ABCD
Они ABCDмогут быть в любом порядке, но всегда будет 4 каждого. Вы можете предположить, что ввод действителен. При желании вы также можете предположить, что у него есть завершающий символ новой строки и / или что он идет одной строкой в порядке чтения, например ACDCBBCABADDABCD. Вы также можете заменить символы ABCDна 0123или 1234соответственно, если хотите (но это все).
Выведите истинное значение, если текстовая сетка имеет отражательную или вращательную симметрию. В частности:
Если есть центральная горизонтальная линия симметрии. например
BACD BACD BACD \___ bottom mirrors top BACD /Если есть центральная вертикальная линия симметрии. например
BCCB DAAD CAAC BDDB \/___ right mirrors leftЕсли есть диагональная линия симметрии (в любом направлении). например
___ diagonally mirrored / ABDC BACD DCAB CDBA \___ diagonally mirroredЕсли есть вращательная симметрия 90 °. например
BDAB ACCD same if rotated 90 degrees (or 180 or 270) DCCA BADBЕсли есть вращательная симметрия 180 °. например
DBCA BDCA same if rotated 180 degrees ACDB ACBD
(Обратите внимание, что трансляционная симметрия здесь не играет роли.)
Выведите ложное значение, если сетка не имеет одну из симметрий, упомянутых выше. например, самый первый пример сетки.
Самый короткий код в байтах побеждает.