學習軌道
/
Prolog
Prolog
/
練習
/
二進位謎題
二進位謎題

二進位謎題

中等

簡介

你的奶奶最近對解二元謎題產生了濃厚的興趣。 雖然她越解越上手,但還是常常會卡住呢。 身為奶奶貼心的孫子,你決定做一個小應用程式,來解開任何二元謎題。 這樣一來,你就能給奶奶提示,幫她想出下一步。

說明

你的任務是解開一道二進位謎題。 每一道二進位謎題都恰好只有 一個 解,只要套用以下規則就能找出來:

  1. 每一格都必須填入 0 或 1。
  2. 相同的數字不能有兩個以上相鄰。因此,如果相鄰的兩格填入相同的數字,這兩個數字旁邊的格子就必須填入另一個數字。
  3. 每一列和每一欄都必須包含數量相同的 0 和 1。
  4. 每一列和每一欄都是獨一無二的。

你會拿到一道尚未完成的謎題,它是以 0 和 1 組成的列來表示,未知的值則以佔位符(_)代替。 你的目標是定義這道二進位謎題的規則,讓測試能自行推算出佔位符的值(這部分不用你自己來做喔)。 你的實作必須使用 Prolog 的有限領域約束邏輯程式設計(CLP(FD)),它非常適合這類任務。

Note

為了幫你踏出第一步,起始檔案已經透過以下方式引入 clpfd函式庫:

:- use_module(library(clpfd)).
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Prolog Exercism

準備好開始 二進位謎題 了嗎?

註冊 Exercism,透過 109 個練習 和真人引導來學習並精通 Prolog,全部免費。