Napisz program lub funkcję, która pobiera siatkę tekstową 4 × 4 składającą się dokładnie z 4 A, 4 B, 4 Ci 4 D, takich jak:
ACDC
BBCA
BADD
ABCD
W ABCD„S może mieć dowolny układ, ale zawsze będzie 4 każdy. Możesz założyć, że dane wejściowe są prawidłowe. W razie potrzeby możesz również założyć, że ma on końcowy znak nowej linii i / lub że występuje jako jeden wiersz w kolejności czytania, np ACDCBBCABADDABCD. Można również zastąpić znaki ABCDz 0123lub 1234odpowiednio, w razie potrzeby (ale to wszystko).
Wypisuje prawdziwą wartość, jeśli siatka tekstowa ma jakąkolwiek formę symetrii odblaskowej lub obrotowej. Konkretnie:
Jeśli istnieje centralna pozioma linia symetrii. na przykład
BACD BACD BACD \___ bottom mirrors top BACD /Jeśli istnieje centralna pionowa linia symetrii. na przykład
BCCB DAAD CAAC BDDB \/___ right mirrors leftJeśli występuje ukośna linia symetrii (w obu kierunkach). na przykład
___ diagonally mirrored / ABDC BACD DCAB CDBA \___ diagonally mirroredJeśli występuje symetria obrotowa 90 °. na przykład
BDAB ACCD same if rotated 90 degrees (or 180 or 270) DCCA BADBJeśli występuje symetria obrotowa 180 °. na przykład
DBCA BDCA same if rotated 180 degrees ACDB ACBD
(Pamiętaj, że symetria translacyjna nie wchodzi tutaj w grę.)
Wypisuje wartość fałsz, jeśli siatka nie ma żadnej z wyżej wymienionych symetrii. np. pierwsza przykładowa siatka.
Najkrótszy kod w bajtach wygrywa.