首页 > 解决方案 > 了解成员函数的工作原理

问题描述

我正在开发一个 Prolog 程序。我得到了一堆粉丝形式的事实(名字,喜欢的小说列表)。我正在编写程序,它将告诉三个人莎莉、马克和罗布共同拥有的书名,而不重复书名。我了解如何获得两个人之间的交集(如下所示),但我不知道如何从这里开始。

mutual_novels(Book) :-  
   fan(sally,S),
   fan(mark,M),
   fan(rob,R),
   novel(Book, _),
   member(Book,P),
   member(Book,R).

标签: prolog

解决方案


你的方法很好,Prolog 将直接统一 Book 变量,所以你只需要再添加一个成员子句:

mutual_novels(Book) :- fan(sally,S), fan(mark,M), fan(rob,R), novel(Book, _), member(Book,S), member(Book,R), member(Book,M).

谓词只会为您提供断言它的实例 Book(同时是三个列表的成员)。


推荐阅读