このページからこのコードをコピーしました:
% combination(K,L,C) :- C is a list of K distinct elements
% chosen from the list L
combination(0,_,[]).
combination(K,L,[X|Xs]) :- K > 0,
el(X,L,R), K1 is K-1, combination(K1,R,Xs).
el(X,[X|L],L).
el(X,[_|L],R) :- el(X,L,R).
たとえば、combination(2,[1,2,3,4],L) と入力すると、結果は次のようになります。
L = [1, 2] ;
L = [1, 3] ;
L = [1, 4] ;
L = [2, 3] ;
L = [2, 4] ;
L = [3, 4] ;
ここで、組み合わせの決まった時点から開始できるものを入力したいと思います。たとえば、combination(2,[1,2,3,4],[1,4],L) のようなもので、結果は次のようになります。
L = [1, 4] ;
L = [2, 3] ;
L = [2, 4] ;
L = [3, 4] ;
[1,4] で組み合わせを開始し、「ステップ」[1,2] および [1,3] をスキップします。
助けてくれてありがとう!