Debe escribir un programa o función que reciba una cadena que describa el piso como entrada y salida o que devuelva el área del meta-mosaico más simple que podría crear el patrón dado del piso.
El piso es parte de una cuadrícula cuadrada. Cada mosaico cuadrado tiene un color azul o negro (representado por a
y b
en la entrada).
Un ejemplo de piso:
aaaa
ababab
aaaaa
Un meta-mosaico
- se construye a partir de una
N
porM
rectangular meta-baldosas de cuadrados azules y negros - los meta-mosaicos utilizados son idénticos hasta la traducción (no puede rotarlos ni reflejarlos)
- Si los lados de dos meta-mosaicos están conectados, deben conectarse a lo largo de toda su longitud (es decir, los meta-mosaicos recubren el espacio en forma de cuadrícula)
Un ejemplo de meta-mosaico:
ba
aa
y el meta-mosaico creado por él:
.
.
.
babababa
aaaaaaaa
... babababa ...
aaaaaaaa
babababa
aaaaaaaa
.
.
.
Este meta-mosaico crea el piso superior que se muestra como muestran las letras de la izquierda:
.
.
.
********
***aaaa*
... *ababab* ...
*aaaaa**
********
********
.
.
.
Un meta-mosaico es más simple que otro si el área de su meta-mosaico es más pequeña. Nuestro ejemplo tiene un área 2*2 = 4
que es la más pequeña posible para el piso de ejemplo. Entonces la salida debería ser 4
para el ejemplo.
Entrada
- Una cadena que consta de los caracteres
a b space
y quenewline
contiene al menos unoa
ob
. - Las letras (
ab
) forman una forma de 4 conectados (uno al lado del otro). - No habrá espacios innecesarios al frente de las filas, es decir, habrá al menos una fila que comience con
a
ob
. Puede elegir entre dos formatos de entrada:
- Sin espacios en blanco innecesarios al final de las filas (como se ve en los ejemplos).
- Espacios en el lado derecho de las filas para hacer que todas las filas tengan la misma longitud que la fila más larga.
La nueva línea final es opcional.
Salida
- Un solo entero, el área del meta-mosaico más pequeño posible cuyo mosaico contiene el piso de entrada.
Ejemplos
Los ejemplos están delimitados por guiones. Las tres partes de un ejemplo son entrada, salida y uno de los meta-mosaicos más pequeños posibles.
a
1
a
-----------------
aaaa
aaa
a
1
a
-----------------
aabaab
abaa
aaba
6
aab
aba
-----------------
aabaab
a a a
aabab
18
aabaab
aaaaaa
aababa
-----------------
ba
aaab
8
baaa
aaab
-----------------
aaaa
ababb
aaaa
10
aaaaa
ababb
-----------------
a aa
ab ba
aba
6
aa
ab
ba
-----------------
aaaa
abab
aaaa
4
aa
ab
-----------------
ba
ba
b
4
ba
ab
-----------------
baa
aba
aab
9
baa
aba
aab
-----------------
aaaa
aabaa
aaaa
6
aaa
aab
Este es el código de golf por lo que gana la entrada más corta