Napisz program lub funkcję, która pobiera siatkę tekstową 4 × 4 składającą się dokładnie z 4 A
, 4 B
, 4 C
i 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 ABCD
z 0123
lub 1234
odpowiednio, 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 left
Jeśli występuje ukośna linia symetrii (w obu kierunkach). na przykład
___ diagonally mirrored / ABDC BACD DCAB CDBA \___ diagonally mirrored
Jeśli występuje symetria obrotowa 90 °. na przykład
BDAB ACCD same if rotated 90 degrees (or 180 or 270) DCCA BADB
Jeś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.