谜题是这样的:一个岛上有 4 座寺庙。每个寺庙都有一个名称、位置和建造日期。您将获得 4 条线索来帮助您确定哪 4 种组合(姓名、位置、日期)是正确的。我必须使用 prolog 来解决这个问题。
寺庙的名称是:hori_takesi、okabe honzo、sama takako 和 takahashi。地点是:船内,toyagi,uchida和usui。日期是 1525、1585、1645 和 1705。
你会得到以下线索:
- 内田神社和建于 1645 年的寺庙,一个是高子大人,另一个是冈部本藏。
- 船内的寺庙建于高桥之前
- 枥木寺建于臼井寺前120年
- Hori Takesi wasa 在 sama takako 之后建造
我创建了以下知识库,其中包含所有可能的组合。
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).
你要问 prolog 的查询是:?-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。但我不确定如何实现它。如果有人可以帮助我,我会喜欢它。