Dovresti scrivere un programma o una funzione che riceva una stringa che descriva il pavimento come input e output o restituisca l'area della meta-piastrellatura più semplice che potrebbe creare il modello dato del pavimento.
Il pavimento fa parte di una griglia quadrata. Ogni quadratino è colorato in azzurro o nero (rappresentato da a
e b
nell'input).
Un esempio di pavimento:
aaaa
ababab
aaaaa
Una meta-piastrellatura
- è costruito da un
N
byM
rettangolare meta-piastrelle di quadrati azzurre e nere - le meta-tessere utilizzate sono identiche alla traduzione (non è possibile ruotarle o rispecchiarle)
- se i lati di due meta-tessere sono collegati, dovrebbero connettersi per tutta la loro lunghezza (cioè meta-tessere affiancare lo spazio in modo simile a una griglia)
Una meta-piastrella di esempio:
ba
aa
e la meta-piastrellatura da essa creata:
.
.
.
babababa
aaaaaaaa
... babababa ...
aaaaaaaa
babababa
aaaaaaaa
.
.
.
Questa meta-piastrellatura crea il piano mostrato in alto come mostrano le lettere a sinistra:
.
.
.
********
***aaaa*
... *ababab* ...
*aaaaa**
********
********
.
.
.
Una meta-piastrellatura è più semplice di un'altra se l'area della sua meta-piastrella è più piccola. Il nostro esempio ha un'area di 2*2 = 4
cui è il più piccolo possibile per il piano di esempio. Quindi l'output dovrebbe essere 4
per l'esempio.
Ingresso
- Una stringa composta dai caratteri
a b space
enewline
contenente almeno unoa
ob
. - Le lettere (
ab
) formano una forma a 4 connessioni (affiancate). - Non ci saranno spazi non necessari nella parte anteriore delle righe, cioè ci sarà almeno una riga che inizia con
a
ob
. Puoi scegliere tra due formati di input:
- Nessuno spazio bianco non necessario alla fine delle righe (come mostrato negli esempi).
- Spazi sul lato destro delle righe per rendere tutte le righe della stessa lunghezza della riga più lunga.
Il trascinamento di newline è facoltativo.
Produzione
- Un singolo numero intero, l'area della più piccola possibile meta-piastrella la cui piastrellatura contiene il piano di input.
Esempi
Gli esempi sono delimitati da trattini. Le tre parti di un esempio sono input, output e una delle possibili meta-tessere più piccole.
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
Questo è il codice golf, quindi vince l'ingresso più breve.