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
la source
Réponses:
JavaScript (ES6),
184 ... 171163 octets(x)(y)
Essayez-le en ligne!
Méthode
Chaque triomino est l'un des:
La configuration initiale de la matrice est la suivante:
Nous alternons les 2 premières couleurs comme nous le ferions sur n'importe quel échiquier, ce qui donne:
Les prochaines étapes sont les suivantes:
Par exemple, en supposant que le trou est situé à( 3 , 0 )
Et dans ce cas, la matrice finale est:
Commenté
Sortie graphique
Cliquez sur l'image pour définir la position du trou.
Afficher l'extrait de code
la source
charbon , 78 octets
Essayez-le en ligne!Le lien est vers la version détaillée du code. Sorties utilisant des
#$%
caractères. Explication:Saisissez les coordonnées du carré vide.
Génère une chaîne compressée. Il contient des sauts de ligne afin d'éviter de rompre le flux de cette explication, vous trouverez la chaîne à la fin de la réponse.
Si l'une des coordonnées est supérieure à
3
souvenez-vous de ce fait et soustrayez la coordonnée de 7.Aller au plus proche
%
du carré supérieur gauche de%
s et l'écraser avec un#
ou$
selon le cas. (Mais cela sera écrasé par le blanc s'il était déjà dans ce carré.)Videz le carré aux coordonnées réduites, puis réfléchissez la sortie si nécessaire pour ramener le blanc à sa position d'origine.
J'ai essayé de commencer par le carré de
%
s au centre et de travailler vers les coordonnées souhaitées, mais cela a pris 90 octets.la source