gpt4 book ai didi

当两个人有相同的爱好时 Prolog 谓词返回 true

转载 作者:行者123 更新时间:2023-12-02 20:44:04 24 4
gpt4 key购买 nike

我想编写一个 Prolog 谓词,当两个人有相同的爱好时返回 true,而不使用否定。我有以下数据库:

likes(john,movies). 
likes(john,tennis).
likes(john,games).
likes(karl,music).
likes(karl,running).
likes(peter,swimming).
likes(peter,movies).
likes(jacob,art).
likes(jacob,studying).
likes(jacob,sleeping).
likes(mary,running).
likes(mary,sleeping).
likes(sam,art).
likes(sam,movies).

我想出了以下谓词:

same_hobby(X,Y) :-
likes(X,Z),
likes(Y,Z).

但是,当 X 等于 Y 时,该谓词也成立,但我不希望出现这种情况。谁能帮我找到解决方案吗?一个小的解释也将不胜感激。

最佳答案

您可以简单地使用谓词 dif/2 ,即 diff(Term1, Term2) ,这意味着 Term1 必须与 Term2 不同,否则将会失败。您的规则将变为:

same_hobby(X,Y) :-
likes(X,Z),
likes(Y,Z),
dif(X,Y).

因为 diff/2 是一个完全纯的谓词,你也可以将其写为

same_hobby(X,Y) :-
dif(X,Y),
likes(X,Z),
likes(Y,Z).

这意味着,如果 X 与 Y 不同,则减少目标 like(X,Z)、like(Y,Z),否则失败。

关于当两个人有相同的爱好时 Prolog 谓词返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34133904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com