Треки
/
Prolog
Prolog
/
Вправи
/
Двійкова головоломка
Двійкова головоломка

Двійкова головоломка

Середня

Вступ

Наша бабуся нещодавно зацікавилася розвʼязуванням бінарних головоломок. Хоч вона й робить дедалі більші успіхи, доволі регулярно вона таки застрягає. Тож ми, як турботливі онуки, вирішуємо створити невеликий застосунок, який уміє розвʼязати будь-яку бінарну головоломку. Це дозволить нам підказувати нашій бабусі наступний хід.

Вказівки

Завдання - розвʼязати бінарну головоломку. У кожної бінарної головоломки є рівно одне рішення, яке можна знайти, застосувавши ці правила:

  1. У кожній комірці має бути нуль або одиниця.
  2. Понад дві однакові цифри не можуть стояти поруч. Тож якщо дві сусідні комірки містять одну й ту саму цифру, комірки поруч із ними повинні містити іншу цифру.
  3. Кожен рядок і кожен стовпець повинні містити однакову кількість нулів та одиниць.
  4. Кожен рядок і кожен стовпець унікальні.

На вхід надійде незаповнена головоломка у вигляді рядків нулів та одиниць, де невідомі значення позначено заповнювачами (_). Мета - визначити правила для бінарної головоломки, завдяки яким тести зможуть визначити значення для заповнювачів (це робити не потрібно). Реалізація повинна використовувати логічне програмування з обмеженнями над скінченними доменами (CLP(FD)) у Prolog, яке ідеально підходить для таких завдань.

Note

Щоб було легше почати, файл-заготовка вже містить бібліотеку clpfd, підключену через:

:- use_module(library(clpfd)).
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Prolog Exercism

Час розпочати Двійкова головоломка?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Prolog, а також 109 вправ та справжнє наставництво від людей, і все це безкоштовно.