パズルはこのようになります。島には4つのテンプルがあります。各寺には名前、場所、建造日が記されています。どの4つの組み合わせ(名前、場所、日付)が正しいかを判断するのに役立つ4つの手掛かりがあります。私はプロローグを使ってこれを解決しなければならない。プロローググリッドベースのロジックパズルがついた
寺院の名前は:hori_takesi、okabe honzo、sama takakoとtakahashiです。場所は、funai、toyagi、uchida、usuiです。内田における神社と1645年に建てられた神殿の
- 、1はさま 貴子であり、他は岡部です:日付は、あなたは、次の手がかりを与えている1525年、1585年、1645年と1705
ですhonzo。
- 船井の寺院はtoyagiの寺院は120年臼井
- 堀の神殿の前に建てられた高橋
- 前に建てられたtakesi WASA
temple(hori_takesi, Location, Y).
temple(okabe_honzo, Location, Y).
temple(sama_takako, Location, Y).
temple(takahashi, Location, Y).
temple(Name, funai, Y).
temple(Name, toyagi, Y).
temple(Name, uchida, Y).
temple(Name, usui, Y).
temple(Shrine, Location, 1525).
temple(Shrine, Location, 1585).
temple(Shrine, Location, 1645).
temple(Shrine, Location, 1705).
プロローグに問い合わせるクエリは、?-solution(X)です。これは4つの正しい組み合わせをすべて返さなければなりません。だから、Xは4つの要素、すなわち寺院のリストです。
溶液(X)。すべての手がかりが真であれば真です。だから私は次のようにした:
clue1(X) :- temple(Name, uchida, Y), Y\= 1645
clue2(X) :- temple(Name, funai, Y), temple(Shrine, takahashi, Y1), Y < Y1.
clue3(X) :- temple(Name, toyagi Y), temple(Shrine, usui, Y1). Y1 is Y + 120.
clue4(X) :- temple(hori_takesi, Loc, Y), temple(sama_takako, Loc, Y1) Y > Y1.
solution(X) :- clue1(X), clue2(X), clue3(X), clue4(X).
私はここからオンワートを進める方法がわからない。私が得たもう一つのヒントはmember/2を使うことです。しかし、それを実装する方法についてはわからない。誰かが私を助けることができればそれを愛する。
さま貴子後に建てられました – damianodamiano
@damianodamiano:高度なツールを勉強する前に、より良いOPが基礎を学びます。 CLP(FD)それは[漏れ抽象化](https://en.wikipedia.org/wiki/Leaky_abstraction)です。あなたの述語で何が起こっているのかわからなければ、それを使うことはできません... – CapelliC
質問タイトルでは、あなたの試みから欠けている基本的な詳細。変数が一緒に演奏するチャンスが得られる単一の述語で*グリッド*をモデル化する必要があります。各手がかりはグリッド行の一部のサブセットで動作します。各行はエンティティを表しているからです。 – CapelliC