Escriba un programa o función que tome una cuadrícula de texto de 4 × 4 que consta exactamente de 4 A
's, 4 B
' s, 4 C
's y 4 D
' s, tales como:
ACDC
BBCA
BADD
ABCD
El ABCD
's puede estar en cualquier disposición, pero siempre habrá 4 de cada uno. Puede asumir que la entrada es válida. Si lo desea, también puede suponer que tiene una nueva línea final y / o que viene como una línea en el orden de lectura, por ejemplo ACDCBBCABADDABCD
. También puede reemplazar los caracteres ABCD
con 0123
o 1234
respectivamente, si lo desea (pero eso es todo).
Produzca un valor verdadero si la cuadrícula de texto tiene alguna forma de simetría reflexiva o rotacional. Específicamente:
Si hay una línea horizontal central de simetría. p.ej
BACD BACD BACD \___ bottom mirrors top BACD /
Si hay una línea vertical central de simetría. p.ej
BCCB DAAD CAAC BDDB \/___ right mirrors left
Si hay una línea diagonal de simetría (en cualquier dirección). p.ej
___ diagonally mirrored / ABDC BACD DCAB CDBA \___ diagonally mirrored
Si hay una simetría rotacional de 90 °. p.ej
BDAB ACCD same if rotated 90 degrees (or 180 or 270) DCCA BADB
Si hay una simetría rotacional de 180 °. p.ej
DBCA BDCA same if rotated 180 degrees ACDB ACBD
(Tenga en cuenta que la simetría traslacional no entra en juego aquí).
Genere un valor falso si la cuadrícula no tiene una de las simetrías mencionadas anteriormente. por ejemplo, la primera cuadrícula de ejemplo.
El código más corto en bytes gana.