【发布时间】:2016-05-04 04:43:40
【问题描述】:
我对此有疑问:Finding the oldest person in Prolog
数据:
age(john, 10).
age(mary, 15).
age(rose, 75).
age(jack, 49).
age(carl, 17).
age(lucy, 66).
所以这个查询将返回最年长的人:
oldest(P) :- age(P, X), \+ ( age(_, Y), Y > X ).
我是 Prolog 的新手,我很难理解这个查询,尤其是 \+ 部分。
我的理解是:要得到最年长的人,我们会选择所有年龄为 X 的人,不包括年龄大于 X 的人。但这会返回最年轻的人。我很困惑:D
你能帮忙阅读这个查询吗?
【问题讨论】:
-
它的意思是:P 是一个人(他的年龄是 X),因此没有其他人的年龄高于 P 的年龄。
-
@gusbro 我明白了,请将其作为答案发布。
-
更有趣:添加
age(tony,75).并再次提问!你不会得到最年长的人,而是最年长的人。
标签: prolog