Parcours
/
Prolog
Prolog
/
Exercices
/
Casse-tête binaire
Casse-tête binaire

Casse-tête binaire

Moyen

Introduction

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.

Instructions

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 :

  1. Chaque case doit contenir soit un 0, soit un 1.
  2. Plus de deux chiffres identiques ne peuvent pas être adjacents. Ainsi, si deux cases adjacentes contiennent le même chiffre, les cases situées de part et d'autre doivent contenir l'autre chiffre.
  3. Chaque ligne et chaque colonne doit contenir autant de 0 que de 1.
  4. Chaque ligne et chaque colonne est unique.

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.

Note

Pour t'aider à démarrer, le fichier stub inclut déjà la bibliothèque clpfd via :

:- use_module(library(clpfd)).
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Prolog Exercism

Prêt à commencer Casse-tête binaire ?

Inscris-toi sur Exercism pour apprendre et maîtriser Prolog avec 109 exercices, et un vrai mentorat humain, le tout gratuitement.