Tu abuela ha mostrado recientemente un gran interés por resolver puzles binarios. Aunque cada vez se le da mejor, lo cierto es que se atasca con bastante frecuencia. Como eres un nieto tan servicial, decides crear una pequeña aplicación capaz de resolver cualquier puzle binario. Así podrás darle pistas a tu abuela para su siguiente movimiento.
Tu tarea es resolver un puzle binario. Todos los puzles binarios tienen exactamente una solución, que se puede encontrar aplicando estas reglas:
Recibirás un puzle sin completar en forma de filas de ceros y unos, con marcadores de posición (_) para los valores desconocidos.
El objetivo es definir las reglas del puzle binario, que permitirán a los tests averiguar 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 clpfd library mediante:
:- use_module(library(clpfd)).
Regístrate en Exercism para aprender y dominar Prolog con 109 ejercicios y mentoría humana real, todo gratis.