このディレクトリの索引
#  
#  リストの先頭からN個ずつ要素を取り出してリストとして返す。
#  最後に余りが出る場合の処理のために、返されたリストの他に
#  まだ対象になっていない要素リストも第四引数に返す。
#  

'N個組'(N,L,X,R) :-
        length(X,N),
        append(L0,X,R,L),
        length(L0,Len1),
        0 is Len1 mod N.

%
%  以下は、第一引数に何個ずつ取り出していくかリストで指定するもの。
%

'N個組'(_取り出し数ならび,_対象ならび,X,R) :-
        'N個組'(_取り出し数ならび,0,_対象ならび,N,S,L0,X,R).

'N個組'([N|R1],S_1,L,N,S,L0,X,R) :-
        'N個を取り出す'(N,S_1,L,L0,X,R),
        S is S_1 + N.
'N個組'([N|R1],S_1,L,N,S,L0,X,R) :-
        S_2 is S_1 + N,
        'N個組'(R1,S_2,L,N,S,L0,X,R) :-

'N個を取り出す'(N,S_1,L,L0,X,R) :-
        length(L0,S_1),
        length(X,N),
        append(L0,X,R,L),!.