我希望定义一个谓词powerset( X,P),当P是X的powerset时,它是正确的。
发布于 2012-04-26 20:59:52
由于您使用SICStus Prolog,所以可以使用库(列表)中的subseq0(+序列,?子序列),这“当SubSequence是序列的子序列时是正确的,但可能是序列本身”(引用自手动的http://www.sics.se/sicstus/docs/4.0.2/html/sicstus/lib_002dlists.html)。
?- 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中所解释的,为了完整起见,我在这里引用它(感谢古斯布罗)
powerset([], []).
powerset([H|T], P) :- powerset(T,P).
powerset([H|T], [H|P]) :- powerset(T,P).https://stackoverflow.com/questions/10338666
复制相似问题