基于一些事实,我必须找到使用Prolog的最古老的人。例如:查找Prolog中最古老的人
age(john, 10).
age(mary, 15).
age(rose, 75).
age(jack, 49).
age(carl, 17).
age(lucy, 66).
控制台输出应该是:
?- oldest(rose).
True.
?- oldest(X).
X = rose.
我的代码如下,但它不工作:
oldest(P) :- age(P, X) , age(_, Y) , X >= Y.
我找不到错误,但我猜猜这是跟回溯有关的东西。请有人帮助我吗?我是Prolog的新手。
它的工作原理,谢谢!但是这个定义和我的区别是什么?为什么这个工作和我的不工作? – renatov
你的代码找到了第一个拥有*几乎*一个更年轻的人 – CapelliC
@renatov,如果你直接从字面上读取“最古老的”谓语,它说:“如果**'X'是' * *和*年龄为'Y',*和*'Y'小于或等于'X'“的人。如果它发现只有一个比“P”更年轻的人,它就会成功。它没有确定其他所有人都必须年轻的约束。 – lurker