Наша бабуся нещодавно зацікавилася розвʼязуванням бінарних головоломок. Хоч вона й робить дедалі більші успіхи, доволі регулярно вона таки застрягає. Тож ми, як турботливі онуки, вирішуємо створити невеликий застосунок, який уміє розвʼязати будь-яку бінарну головоломку. Це дозволить нам підказувати нашій бабусі наступний хід.
Завдання - розвʼязати бінарну головоломку. У кожної бінарної головоломки є рівно одне рішення, яке можна знайти, застосувавши ці правила:
На вхід надійде незаповнена головоломка у вигляді рядків нулів та одиниць, де невідомі значення позначено заповнювачами (_).
Мета - визначити правила для бінарної головоломки, завдяки яким тести зможуть визначити значення для заповнювачів (це робити не потрібно).
Реалізація повинна використовувати логічне програмування з обмеженнями над скінченними доменами (CLP(FD)) у Prolog, яке ідеально підходить для таких завдань.
Щоб було легше почати, файл-заготовка вже містить бібліотеку clpfd, підключену через:
:- use_module(library(clpfd)).