Sie sollten ein Programm oder eine Funktion schreiben, die eine Zeichenfolge empfängt, die den Boden als Eingabe und Ausgabe beschreibt, oder den Bereich der einfachsten Meta-Kacheln zurückgibt, die das gegebene Muster des Bodens erzeugen könnten.
Der Boden ist Teil eines quadratischen Gitters. Jede quadratische Kachel ist entweder azurblau oder schwarz gefärbt (dargestellt durch a
und b
in der Eingabe).
Ein Beispielboden:
aaaa
ababab
aaaaa
Eine Meta-Kachelung
- wird von einem eingebauten
N
vonM
rechteckiger meta-Kachel von himmelblau und schwarzen Quadraten - Die verwendeten Meta-Kacheln sind bis zur Übersetzung identisch (Sie können sie nicht drehen oder spiegeln).
- Wenn die Seiten von zwei Meta-Kacheln verbunden sind, sollten sie sich über ihre gesamte Länge verbinden (dh Meta-Kacheln kacheln den Raum gitterartig).
Ein Beispiel für eine Meta-Kachel:
ba
aa
und die von ihm erstellten Meta-Kacheln:
.
.
.
babababa
aaaaaaaa
... babababa ...
aaaaaaaa
babababa
aaaaaaaa
.
.
.
Diese Meta-Kacheln erzeugen das obere angezeigte Stockwerk, wie die linken Buchstaben zeigen:
.
.
.
********
***aaaa*
... *ababab* ...
*aaaaa**
********
********
.
.
.
Eine Meta-Kachelung ist einfacher als eine andere, wenn der Bereich ihrer Meta-Kachelung kleiner ist. Unser Beispiel hat eine Fläche, 2*2 = 4
die für den Beispielboden so klein wie möglich ist. Die Ausgabe sollte also 4
für das Beispiel sein.
Eingang
- Eine Zeichenfolge, die aus den Zeichen besteht
a b space
undnewline
mindestens eina
oder enthältb
. - Die Buchstaben (
ab
) bilden eine 4-verbundene (nebeneinander verbundene) Form. - Es gibt keine unnötigen Leerzeichen an der Vorderseite der Zeilen, dh es gibt mindestens eine Zeile, die mit
a
oder beginntb
. Sie können zwischen zwei Eingabeformaten wählen:
- Kein unnötiges Leerzeichen am Ende der Zeilen (wie in den Beispielen gezeigt).
- Leerzeichen auf der rechten Seite der Zeilen, damit alle Zeilen dieselbe Länge wie die längste Zeile haben.
Nachgestellte Zeilenumbrüche sind optional.
Ausgabe
- Eine einzelne Ganzzahl, die Fläche der kleinstmöglichen Meta-Kachel, deren Kachel die Eingabeetage enthält.
Beispiele
Beispiele werden durch Bindestriche begrenzt. Die drei Teile eines Beispiels sind Eingabe, Ausgabe und eine der möglichen kleinsten Meta-Kacheln.
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
Dies ist Code Golf, so dass der kürzeste Eintrag gewinnt.
Antworten:
C - 208 Bytes
Äquivalenter Code vor dem Golfen:
Der Algorithmus ist ziemlich brutal, daher sollte es ziemlich offensichtlich sein, wie er basierend auf dem Code funktioniert. Hier noch ein paar Kommentare:
q
. Beendet mit einem,return
wenn eine Meta-Kachel den Boden bedecken kann. Beachten Sie, dass die Schleife keine weitere Ausgangsbedingung benötigt, da es immer eine Lösung gibt (der schlimmste Fall ist die Größe der Eingabe).if
werden gültige Kombinationen aus Breite und Höhe der Metakacheln für die Größe aufgelistetq
.u
ist der Index in der Meta-Kachel, der der Bodenkachel entspricht.a
oderb
und unterschiedlich sind (Summe vona = 97
undb = 98
ist195
), liegt eine Nichtübereinstimmung vor, und die Meta-Fliesengröße mit den versuchten Abmessungen funktioniert nicht.a
oder istb
, die Fliesenfarbe auf die Kandidaten-Meta-Fliese kopiert.Verwendeter Testcode:
Ausgabe:
quelle