Tâche:
Considérez le problème: "étant donné un échiquier avec un carré manquant, coupez-le en 21 L-triominos". Il existe une preuve constructive bien connue que cela peut être fait pour n'importe quelle taille d'échiquier carré qui est une puissance de deux. Il fonctionne en divisant l'échiquier en un échiquier plus petit avec le trou dedans et un gros triomino, puis en observant que ce triomino peut être découpé récursivement en quatre triominos.
Dans cette tâche, vous devez couper un échiquier 8x8 en triominos en forme de L, puis les colorier en quatre couleurs de sorte qu'il n'y ait pas deux triominos adjacents de la même couleur.
Spécification:
Votre entrée est la position du trou, donnée sous la forme d'une paire d'entiers. Vous pouvez choisir lequel est l'index de colonne et lequel est l'index de ligne. Vous pouvez choisir si chacun commence à 0 ou à 1 et à partir de quel coin ils augmentent. Vous pouvez exiger A..H comme première coordonnée au lieu de 0..7 ou 1..8. Vous pouvez également accepter les deux coordonnées regroupées dans un seul entier 0..63 ou 1..64 dans l'ordre lexicographique (ligne principale ou colonne principale, de gauche à droite ou de droite à gauche, de haut en bas ou de bas en haut). Vous pouvez écrire un programme complet ou une fonction.
Vous pouvez sortir le pavage en ASCII, en ASCII coloré ou en primitives graphiques. Si vous choisissez la sortie ASCII, vous pouvez choisir quatre caractères ASCII imprimables pour représenter les quatre couleurs. Si vous choisissez l'ASCII coloré, vous pouvez choisir quatre caractères ASCII imprimables ou un seul caractère autre que l'espace. Le trou doit être représenté par le caractère espace. Si l'un de vos personnages est le personnage de l'espace, aucun triomino adjacent au trou ou au bord de l'échiquier ne peut être de cette couleur.
Si vous choisissez une sortie ASCII colorée ou graphique, vous pouvez choisir quatre couleurs parmi # 000, # 00F, # 0F0, # 0FF, # F00, # F0F, # FF0, #FFF ou leurs équivalents les plus proches disponibles dans votre environnement. Si vous choisissez une sortie graphique, vos primitives graphiques doivent être remplies de carrés d'au moins 32 x 32 pixels et séparés par pas plus de deux pixels d'une autre couleur. Si ce qui précède dépasse la résolution d'écran de votre environnement, la taille minimale requise est assouplie à la plus grande taille carrée qui tient toujours sur l'écran.
Vous pouvez choisir n'importe quel pavage valide de l'échiquier donné. Vous pouvez choisir n'importe quelle quadrichromie du carrelage que vous choisissez. Votre choix de quatre couleurs doit être le même pour toutes les sorties, mais vous n'êtes pas obligé d'utiliser chaque couleur dans chaque sortie.
Exemples:
Sortie possible pour l'entrée = [0, 0] (coin supérieur gauche)
#??##??
##.?#..?
?..#??.#
??##.?##
##?..#??
#.??##.?
?..#?..#
??##??##
Une autre sortie possible du même programme (entrée = [0, 7]):
??#??#?
?##?##??
..xx..xx
.?x#.?x#
??##??##
..xx..xx
.?x#.?x#
??##??##
Un programme différent peut également produire, pour l'entrée de "D1" (notez l'orientation d'échiquier non standard mais autorisée),
AABBCCAA
ACBACBAC
CCAABBCC
ABBAADD
AABDABDC
BBDDBBCC
BABBACAA
AABAACCA