首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Prolog中检索项目

在Prolog中检索项目
EN

Stack Overflow用户
提问于 2020-11-19 22:55:07
回答 1查看 38关注 0票数 1

假设我有这个知识库:

代码语言:javascript
复制
step('pancakes', 1, 'mix butter and sugar in a bowl', [butter, sugar], [bowl]). 
step('pancakes', 2, 'add eggs', [eggs], []). 
step('pancakes', 3, 'mix flour and baking powder', [flour, baking powder], []).

如何创建一个谓词来检索食谱所有步骤的所有配料?

因此,如果我要创建一个规则retrieveIngredients(X,Y).并询问retrieveIngredients('pancakes',Y).,我如何才能使其检索Y = ['butter','eggs','flour', 'baking powder'].

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-19 23:09:22

简单地使用findall/3

代码语言:javascript
复制
retrieveIngredients(R,Y):-
    findall(A,step(R,_,_,A,_),Y).

?- retrieveIngredients('pancakes',Y).
Y = [[butter, sugar], [eggs], [flour, baking_powder]]

如果想要展平列表,可以添加一个对flatten/2的调用。如果要删除重复项,请添加对sort/2的调用。请注意,您需要在第三个step/5事实中将baking powder重写为baking_powder (不带空格)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64914187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档