prolog - 了解成员函数的工作原理
问题描述
我正在开发一个 Prolog 程序。我得到了一堆粉丝形式的事实(名字,喜欢的小说列表)。我正在编写程序,它将告诉三个人莎莉、马克和罗布共同拥有的书名,而不重复书名。我了解如何获得两个人之间的交集(如下所示),但我不知道如何从这里开始。
mutual_novels(Book) :-
fan(sally,S),
fan(mark,M),
fan(rob,R),
novel(Book, _),
member(Book,P),
member(Book,R).
解决方案
你的方法很好,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(同时是三个列表的成员)。
推荐阅读
- android - 为什么我的颤振项目不断出错?
- python-3.x - Pandas 获取属于营业时间或营业日的日期时间戳
- mysql - 用 IF 和 ELSE 求和
- php - 如果找到查询字符串,则 URL 重定向到 url
- c# - 当达到 500 条记录或从上一个文件经过 2 分钟时间时将记录写入文件
- apache-camel - Camel - 使用 MYBATIS 组件时,如何使用 java dsl 在骆驼路由中记录选择查询?
- angular - 图像选择器在 p 编辑器中不起作用 (Primeng)
- jelastic - 有没有办法在我的jelastic清单中的单独操作中获取有关创建环境的信息?
- sql - MDX 查询数量超过 10 行的总售价
- machine-learning - 我可以在 LIBSVM 的 svmtrain 中进行哪些修改以提高垃圾邮件分类器的准确性?