所以我得到了这个用于 powerset:
powerset([], []).
powerset([H|T], P) :- powerset(T,P).
powerset([H|T], [H|P]) :- powerset(T,P).
这将生成列表的所有集合。是否可以按列表顺序生成所有集合。
例子:
List = [a,b,c]
我想得到
[a],[a,b],[a,b,c],[b],[b,c],[c]
注意没有
[a,c]
在这个子集列表中,因为这些是从左边开始到右边的子集。我试过使用附加和递归的组合,但这并没有达到我想要的效果。在这一点上有点难倒。
谢谢。
最佳答案
怎么样
powerset(L, [H|T]):-
append([H|T], _, L).
powerset([_|L], P):-
powerset(L, P).
关于list - gnu Prolog powerset 修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146117/