このディレクトリの索引

冪集合(_対象集合,_冪集合) :- findall(_部分集合,( 部分集合(_対象集合,_部分集合)), _冪集合). 部分集合([], []). 部分集合([_|R1], LL) :- 部分集合(R1,LL). 部分集合([L|R1], [L|R2]) :- 部分集合(R1,R2). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 冪集合(_集合,_冪集合) :- length(_集合,Len), findall(L,( between(1,Len,N), 組合せ(_集合,N,L)), _冪集合_0), _冪集合 = [[]|_冪集合_0]. 組合せ(X,1,[A]) :- member(A,X). 組合せ([A|Y],N,[A|X]) :- N > 1, M is N - 1, 組合せ(Y,M,X). 組合せ([_|Y],N,A) :- N > 1, 組合せ(Y,N,A). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 冪集合(_集合,_冪集合) :- findall(L,部分集合(_集合,L),_冪集合) . 部分集合(_,[]). 部分集合(LL,L) :- length(LL,Len), between(1,Len,N), 組合せ(LL,N,L). 組合せ(L,1,[A]):- member(A,L). 組合せ([A|R1],N,[A|R2]):- N > 1, succ(M,N), 組合せ(R1,M,R2). 組合せ([_|R],N,A):- N > 1, 組合せ(R,N,A).