斑馬謎題是一個著名的邏輯謎題,其中有 5 棟房子,每棟漆成不同的顏色。 這些房子住著不同的居民,他們各有不同的國籍、養不同的寵物、喝不同的飲料,也有不同的嗜好。
為了幫你解開謎題,題目會給你 15 則描述解答的敘述。 不過,唯有把_全部_敘述裡的資訊結合起來,你才能找出這個謎題的解答。
斑馬謎題是一種限制滿足問題(CSP)。 在這類問題中,你會有一組可能的值,以及一組限制條件,決定哪些值是有效的。 另一個知名的 CSP 是數獨。
你的任務是解開斑馬謎題,找出以下兩個問題的答案:
以下 15 個陳述都是已知為真:
此外,這五棟房子各漆成不同的顏色,居民們的國籍、養的寵物、喝的飲料和從事的嗜好也各不相同。
可能的解有 240 億種(5!⁵ = 24,883,200,000),所以試著盡可能排除掉越多解越好。
這是第一個附有預先寫好套件的練習。
請留意 pkgIndex.tcl 這個檔案的存在,以及目前目錄被納入 auto_path 變數中。
這些設定讓 package require 指令能夠找到套件的原始檔。
這個套件寫得不算特別好:它只是從各方來源借來的一些程式碼。
interp alias 的呼叫是為了遮掩這些瑕疵,讓 permutations 套件更容易使用。
參考資料: