首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog powerset谓词

Prolog powerset谓词
EN

Stack Overflow用户
提问于 2012-04-26 17:46:40
回答 1查看 5.9K关注 0票数 1

我希望定义一个谓词powerset( X,P),当P是X的powerset时,它是正确的。

EN

回答 1

Stack Overflow用户

发布于 2012-04-26 20:59:52

由于您使用SICStus Prolog,所以可以使用库(列表)中的subseq0(+序列,?子序列),这“当SubSequence是序列的子序列时是正确的,但可能是序列本身”(引用自手动的http://www.sics.se/sicstus/docs/4.0.2/html/sicstus/lib_002dlists.html)。

代码语言:javascript
复制
      ?- setof(X, subseq0([a,b,c],X), Xs).
      Xs = [[],[a],[a,b],[a,b,c],[a,c],[b],[b,c],[c]]

如果您不被允许使用库谓词,您可以实现subseteq0,如gnu Prolog powerset modification中所解释的,为了完整起见,我在这里引用它(感谢古斯布罗)

代码语言:javascript
复制
powerset([], []).
powerset([H|T], P) :- powerset(T,P).
powerset([H|T], [H|P]) :- powerset(T,P).
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10338666

复制
相关文章

相似问题

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