Ce défi est basé sur le casse-tête suivant: Vous obtenez une grille n
par n
avec des n
cellules marquées. Votre travail consiste à partitionner la grille en n
parties où chaque partie se compose exactement de n
cellules, chacune contenant exactement une cellule marquée.
Exemple
Voici un puzzle à gauche et sa solution (unique) à droite:
Défi
Vous recevrez un ensemble de n
coordonnées indexées zéro dans n'importe quel format raisonnable.
[(0,0), (0,3), (1,0), (1,1), (2,2)]
Et votre travail consiste à écrire un programme qui renvoie toute partition valide (encore une fois, dans n'importe quel format raisonnable).
[
[(0,0), (0,1), (0,2), (1,2), (1,3)],
[(0,3), (0,4), (1,4), (2,4), (3,4)],
[(1,0), (2,0), (3,0), (4,0), (4,1)],
[(1,1), (2,1), (3,1), (3,2), (4,2)],
[(2,2), (2,3), (3,3), (4,3), (4,4)]
]
Si le puzzle n'a pas de solution, le programme devrait l'indiquer en lançant une erreur ou en renvoyant une solution vide.
Exemples d'entrées / sorties
[(0,0)] => [[(0,0)]]
[(0,0), (1,1)] => [
[(0,0), (1,0)],
[(0,1), (1,1)]
]
[(0,0), (0,1), (1,0)] => [] (no solution)
[(0,0), (0,1), (0,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (1,1), (2,1)],
[(0,2), (1,2), (2,2)],
]
[(0,0), (0,2), (1,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (0,2), (1,1)],
[(1,2), (2,1), (2,2)],
]
Notation
C'est le code-golf , donc le code le plus court l'emporte.