Tu abuela hace poco empezó a interesarse mucho por resolver rompecabezas binarios. Aunque cada vez se le da mejor, todavía se atasca con bastante frecuencia. Como eres alguien servicial, decides crear una pequeña aplicación que pueda resolver cualquier rompecabezas binario. Así podrás darle pistas a tu abuela para su siguiente movimiento.
Tu tarea es resolver un puzzle binario. Cada puzzle binario tiene exactamente una solución, que se puede encontrar aplicando estas reglas:
Recibirás un puzzle sin completar como filas de ceros y unos, con marcadores de posición (_) para los valores desconocidos.
El objetivo es definir las reglas del puzzle binario, lo que permitirá que las pruebas deduzcan los valores de los marcadores de posición (eso no lo haces tú).
Tu implementación debe usar la programación lógica con restricciones sobre dominios finitos (CLP(FD)) de Prolog, que es perfecta para este tipo de tareas.
Para ayudarte a empezar, el archivo stub ya incluye la biblioteca clpfd mediante:
:- use_module(library(clpfd)).
Regístrate en Exercism para aprender y dominar Prolog con 109 ejercicios y mentoría humana real, todo gratis.