swi-prolog头部独特的列表组合

时间:2017-03-04 02:59:36

标签: list prolog combinations

我尝试修改此组合谓词:

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).

我可能会在不必要的程序上思考,但现在就是这样。如果你提出一个完全不同的解决方案而不是修改我给定的谓词,那也没关系。

0 个答案:

没有答案