Di recente tua nonna ha sviluppato un vivo interesse per la risoluzione dei puzzle binari. Sta diventando sempre più brava, ma si blocca abbastanza spesso. Da bravo nipote quale sei, decidi di realizzare una piccola applicazione in grado di risolvere qualsiasi puzzle binario. Così potrai dare a tua nonna qualche suggerimento per la sua prossima mossa.
Il tuo compito è risolvere un puzzle binario. Ogni puzzle binario ha esattamente una soluzione, che si trova applicando queste regole:
Riceverai un puzzle incompleto sotto forma di righe di zeri ed uni, con dei segnaposto (_) per i valori sconosciuti.
L'obiettivo è definire le regole del puzzle binario, che permetteranno ai test di ricavare i valori dei segnaposto (non sei tu a farlo).
L'implementazione deve usare il Constraint Logic Programming over Finite Domains (CLP(FD)) di Prolog, perfetto per questo tipo di attività.
Per aiutarti a iniziare, il file stub include già la libreria clpfd tramite:
:- use_module(library(clpfd)).
Iscriviti a Exercism per imparare e padroneggiare Prolog con 109 esercizi e il mentoring di persone reali, tutto gratis.