Un méandre remplissant une grille est un chemin fermé qui visite chaque cellule d'une grille carrée au moins une fois, ne traversant jamais aucun bord entre des cellules adjacentes plus d'une fois et ne se croisant jamais. Par exemple:
Une fois remplie, chaque cellule de la grille peut être représentée par l'une des 8 tuiles suivantes:
Numérotées de cette façon, les tuiles du méandre ci-dessus peuvent être représentées par cette matrice:
5 6 5 6
4 8 3 2
5 7 6 2
4 3 4 3
Votre tâche consiste à terminer un méandre remplissant la grille étant donné un ensemble incomplet de tuiles. Par exemple, le méandre incomplet:
... qui peut être représenté à l'aide de 0
s pour les tuiles manquantes:
5 0 0 0 6
0 0 7 0 0
0 0 0 0 3
2 4 0 0 0
0 0 3 0 0
... pourrait être complété comme ceci:
...c'est à dire:
5 6 5 1 6
4 8 7 6 2
5 7 7 7 3
2 4 8 8 6
4 1 3 4 3
Caractéristiques
- L'entrée aura toujours au moins et au plus tuiles (non vides), où .
- Vous pouvez utiliser n'importe quel ensemble de valeurs pour représenter les tuiles, tant qu'il est spécifié dans votre réponse.
- Vos entrées et sorties peuvent être dans n'importe quel format et ordre, tant qu'elles sont spécifiées dans votre réponse.
- Au moins une solution valide existera pour toutes les entrées (c'est-à-dire que vous n'avez pas besoin de gérer les entrées non valides).
- Les règles d'E / S standard s'appliquent.
- Les failles standard sont interdites.
- Des explications, même pour les langues "pratiques", sont encouragées.
Cas de test
Entrée ( Θ ):
0 6 0 0
Sortie ( Θ ):
5 6 4 3
Entrée ( Θ ):
5 6 5 6 4 0 3 2 5 7 6 2 4 3 4 3
Sortie ( Θ ):
5 6 5 6 4 8 3 2 5 7 6 2 4 3 4 3
Entrée ( Θ ):
5 0 0 0 6 0 0 7 0 0 0 0 0 0 3 2 4 0 0 0 0 0 3 0 0
Sortie ( Θ ):
5 6 5 1 6 4 8 7 6 2 5 7 7 7 3 2 4 8 8 6 4 1 3 4 3