Ta grand-mère s'est récemment prise de passion pour les casse-tête binaires. Même si elle progresse, il lui arrive assez régulièrement de se retrouver bloquée. Comme tu es un petit-enfant serviable, tu décides de créer une petite application capable de résoudre n'importe quel casse-tête binaire. Cela te permettra de donner à ta grand-mère des indices pour son prochain coup.
Ta tâche est de résoudre un casse-tête binaire. Chaque casse-tête binaire possède exactement une solution, que l'on peut trouver en appliquant ces règles :
On te passe un casse-tête incomplet sous forme de lignes de 0 et de 1, avec des emplacements réservés (_) pour les valeurs inconnues.
Le but est de définir les règles du casse-tête binaire, ce qui permettra aux tests de déterminer les valeurs des emplacements réservés (ce n'est pas à toi de le faire).
Ton implémentation doit utiliser la programmation logique par contraintes sur domaines finis (CLP(FD)) de Prolog, qui est parfaite pour ce genre de tâche.
Pour t'aider à démarrer, le fichier stub inclut déjà la bibliothèque clpfd via :
:- use_module(library(clpfd)).
Inscris-toi sur Exercism pour apprendre et maîtriser Prolog avec 109 exercices, et un vrai mentorat humain, le tout gratuitement.