Aufgabe:
Betrachten Sie das Problem: "Wenn ein Schachbrett mit einem fehlenden Quadrat vorhanden ist, schneiden Sie es in 21 L-Triominoes". Es gibt einen bekannten konstruktiven Beweis dafür, dass dies für jede quadratische Schachbrettgröße mit einer Zweierpotenz möglich ist. Es funktioniert, indem das Schachbrett in ein kleineres Schachbrett mit dem Loch darin und einem großen Triomino aufgeteilt wird und dann beobachtet wird, dass dieses Triomino rekursiv in vier Triominos geschnitten werden kann.
In dieser Aufgabe müssen Sie ein 8x8-Schachbrett in L-förmige Triominoes schneiden und diese dann mit vier Farben färben, sodass keine zwei benachbarten Triominoes dieselbe Farbe haben.
Spezifikation:
Ihre Eingabe ist die Position des Lochs, angegeben als Paar von ganzen Zahlen. Sie können wählen, welcher der Spaltenindex und welcher der Zeilenindex ist. Sie können wählen, ob jede bei 0 oder bei 1 beginnt und von welcher Ecke sie zunimmt. Möglicherweise benötigen Sie A..H als erste Koordinate anstelle von 0..7 oder 1..8. Sie können auch beide Koordinaten akzeptieren, die in einer einzigen Ganzzahl 0..63 oder 1..64 in lexikografischer Reihenfolge gepackt sind (Zeilen- oder Spaltenmajor, von links nach rechts oder von rechts nach links, von oben nach unten oder von unten nach oben). Sie können ein vollständiges Programm oder eine Funktion schreiben.
Sie können die Kacheln als ASCII, als farbiges ASCII oder als grafische Grundelemente ausgeben. Wenn Sie die ASCII-Ausgabe auswählen, können Sie vier beliebige druckbare ASCII-Zeichen auswählen, um die vier Farben darzustellen. Wenn Sie farbiges ASCII auswählen, können Sie vier beliebige druckbare ASCII-Zeichen oder nur ein anderes Zeichen als Leerzeichen auswählen. Das Loch muss durch das Leerzeichen dargestellt werden. Wenn einer Ihrer Charaktere der Leerzeichencharakter ist, darf kein Triomino neben dem Loch oder am Schachbrettrand diese Farbe haben.
Wenn Sie eine farbige ASCII- oder grafische Ausgabe auswählen, können Sie vier beliebige Farben aus # 000, # 00F, # 0F0, # 0FF, # F00, # F0F, # FF0, #FFF oder deren nächstgelegenen Entsprechungen auswählen, die in Ihrer Umgebung verfügbar sind. Wenn Sie sich für eine grafische Ausgabe entscheiden, müssen Ihre grafischen Grundelemente mit mindestens 32 x 32 Pixel großen Quadraten gefüllt und durch nicht mehr als zwei Pixel einer anderen Farbe getrennt sein. Wenn das oben Gesagte die Bildschirmauflösung Ihrer Umgebung überschreitet, wird die Mindestgröße auf die größte quadratische Größe reduziert, die noch auf den Bildschirm passt.
Sie können eine beliebige gültige Kachelung des angegebenen Schachbretts auswählen. Sie können eine beliebige vierfarbige Kachel wählen. Die Auswahl von vier Farben muss für alle Ausgaben gleich sein, Sie müssen jedoch nicht jede Farbe in jeder Ausgabe verwenden.
Beispiele:
Mögliche Ausgabe für Eingabe = [0, 0] (obere linke Ecke)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
Eine weitere mögliche Ausgabe desselben Programms (Eingabe = [0, 7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
Ein anderes Programm kann auch für die Eingabe von "D1" (beachten Sie die nicht standardmäßige, aber erlaubte Schachbrettausrichtung) Folgendes erzeugen:
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA