このディレクトリの索引
#  
#  剰余算を使った最終組余り有効N個組
#  

最終組余り有効N個組(N,_対象ならび,_N個組) :-
        最終組余り有効N個組(N,_対象ならび,_前ならび,_N個組,_後ならび).

最終組余り有効N個組(N,_対象ならび,_前ならび,_N個組,_後ならび) :-
        length(X1,N),
        append(L0,X1,R1,_対象ならび),
        length(L0,Len1),
        0 is Len1 mod N,
        最終組余り有効N個組終了条件(N,L0,X1,R1,_前ならび,_N個組,_後ならび).

最終組余り有効N個組終了条件(N,L0,X,R,L0,X,R).
最終組余り有効N個組終了条件(N,L0,X,R,L1,R,[]) :-
        length(R,LenR),
        LenR < N,
        append(L0,X,L1).

append([],L1,L2,L) :-
        append(L1,L2,L).
append([U|L1],L2,L3,[U|L4]) :-
        append(L1,L2,L3,L4).



%  ?- 最終組余り有効N個組(3,[1,2,3,4,5,6,7,8],_前ならび,_N個組,_後ならび).
%  _前ならび = [],
%  _N個組 = [1, 2, 3],
%  _後ならび = [4, 5, 6, 7, 8] ;
%  _前ならび = [1, 2, 3],
%  _N個組 = [4, 5, 6],
%  _後ならび = [7, 8] ;
%  _前ならび = [1, 2, 3, 4, 5, 6],
%  _N個組 = [7, 8],
%  _後ならび = [] ;
%  false.