Prolog规则(谓词)

Prolog规则(谓词),prolog,Prolog,我是Prolog SWI的新手,你能帮我解决这个问题吗。 假设有一个包含谓词like(person1,person2)和嗜好(person1,嗜好)的数据库。现在,我如何设计一个规则,使系统能够回答两个人是否有相同的爱好,这取决于他们的爱好 likes (john, jake). true 最后,我做到了 hobby(harry,music). hobby(harry,running). hobby(jocker,swimming). hobby(jocker,movies). hobb

我是Prolog SWI的新手,你能帮我解决这个问题吗。 假设有一个包含谓词like(person1,person2)和嗜好(person1,嗜好)的数据库。现在,我如何设计一个规则,使系统能够回答两个人是否有相同的爱好,这取决于他们的爱好

likes (john, jake).  
true 
最后,我做到了

hobby(harry,music).
hobby(harry,running).
hobby(jocker,swimming).
hobby(jocker,movies).
hobby(jocker,art).
hobby(curl,running).
hobby(curl,art).
hobby(curl,movies).

same_hobby(P1,P2) :-
        dif(P1,P2),
        hobby(P1,H),
        hobby(P2,H).

先用普通语言编写规则,不考虑序言。会是什么?“根据他们的爱好有相同的爱好”是什么意思?你是说一条规则,决定两个人是否有相同的爱好?或者你是在寻找一条规则来定义两个彼此都喜欢又有相同爱好的人?你的“喜欢”事实是单向的吗?(如果a喜欢b,b喜欢a也是隐式的吗?).你说你想检查两个人是否有相同的爱好。但是您的
checkhobby
示例甚至没有使用
habbies
数据。你到底想要什么有点让人困惑。这听起来像是你只需要去读一本开始的序言书的开始章节,或者尝试一个序言教程。