所以我为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],因为这些子集是从左到右的子集。
我尝试使用附加和递归的组合,但没有像我想要的那样工作。在这一点上有点难住了。
谢谢。
发布于 2010-11-11 00:05:58
怎么样
powerset(L, [H|T]):-
append([H|T], _, L).
powerset([_|L], P):-
powerset(L, P).发布于 2015-12-12 16:29:59
这样如何:
powerset(A,B):-
append(A,_,B);
append(_,A,B).
test():-
setof(X,powerset(X,[1,2,3]),L),
writeln(L).https://stackoverflow.com/questions/4146117
复制相似问题