我尝试修改此组合谓词:
comb(+PairCount,+List,-Combination)/3
comb(0,_,[]).
comb(N,[X|T],[X|Comb]):-N>0,N1 is N-1,comb(N1,T,Comb).
comb(N,[_|T],Comb):-N>0,comb(N,T,Comb).
要使其仅包含带有唯一标题的列表,以便在运行时:
?- comb(2, [[1,2],[1,3],[2,4]], L].
我应该得到:
L= [[1,2],[2,4]];
L= [[1,3],[2,4]].
我尝试过类似的东西,但由于我无法获得当前的CombinationList,我不能通过这种方式限制它:
comb(0,_,[]).
comb(N,[X|T],[X|Comb]):-
N>0, N1 is N-1,
+ X = [H|_],
+ % H is not head of any of the current CombinationList's items,
comb(N1,T,Comb).
comb(N,[_|T],Comb):-
N>0,
comb(N,T,Comb).
我可能会在不必要的程序上思考,但现在就是这样。如果你提出一个完全不同的解决方案而不是修改我给定的谓词,那也没关系。