Easy As ABC, également connu sous le nom de "End View", est un casse-tête où vous obtenez une grille vide avec des lettres autour; vous devez remplir partiellement la grille de façon à ce qu’exactement une de chaque lettre soit dans chaque ligne et colonne; en outre, les lettres à la fin d'une ligne (ou colonne) doivent être la première lettre visible dans cette ligne (ou colonne) de cette direction. Votre objectif dans ce code de golf sera de résoudre un puzzle Easy As ABC.
Par exemple, voici un puzzle Easy As ABC du MIT Mystery Hunt de cette année utilisant les lettres MIC:
La solution est:
(Désolé pour les artefacts sur les C; j'ai essayé de supprimer les informations non pertinentes du reste du puzzle.)
E / S
L'entrée sera un tableau de chaînes ou une chaîne éventuellement avec des délimiteurs. Il commencera dans le coin supérieur gauche et ira dans le sens des aiguilles d'une montre. Par exemple, le puzzle ci-dessus pourrait être saisi comme ceci:
".CMM.M|....IM|.....I|C.ICI."
La sortie doit être la grille résolue, avec ou sans bordure. Il peut s'agir d'un tableau de caractères, d'un tableau de chaînes ou de tout autre format pratique. Le même caractère "vide" doit être accepté en entrée et affiché en sortie, mais ce caractère vide peut être n'importe quoi. S'il s'agit de chaînes simples, l'entrée et la sortie doivent avoir le même séparateur (entre les côtés pour l'entrée et les lignes pour la sortie) ou pas de séparateur du tout.
Pour les puzzles insolubles, vous devez produire quelque chose qui ne peut pas être confondu avec une solution. Vous pouvez supposer qu'aucun puzzle n'a plus d'une solution.
Vous devez autoriser n'importe quel nombre de lettres et n'importe quelle grille de taille; toutes les lettres utilisées apparaîtront dans la bordure de la grille.
C'est le code-golf : comme d'habitude, le code le plus court gagne!
Cas de test
"T.AA..|.T.TSS|..TST.|A...SS"
"R.RU..|B.B..B|.UR.UB|UR..B."
"N...NK|E.NK.K|..KK..|....EK"
"CA..DBD|.B..CC.|.D.DEB.|DB.A..A"
"...DDEBE|DC..EBBD|BA..ABF.|E..FECDE"
la source
Réponses:
PHP, 1111 octets
moins les octets supprimant les sauts de ligne
La version en ligne ne fonctionne qu'avec les Testcases d'une longueur de 6
solution rapide
faire toutes les permutations
remplir 2 tableaux avec les permutations $ x $ y
changer entre deux fonctions si longtemps jusqu'à ce qu'une seule solution dans la ligne x pour chaque ligne existe
fonction i: trouver des intersections dans la grille et déposer des permutations
fonction c: vérifier les colonnes dans chaque tableau de caractères uniques et supprimer les permutations dans les autres lignes pour le tableau $ x et $ y
la source