このディレクトリの索引
#  
#  リストから部分リストを切り出す述語 部分ならび/8
#  member/2,append/3のスーパー版
#  中間のリストにだけ開始位置(1から数えて)が付いているから注意
#  

部分ならび(_対象ならび,_長さ_1,_部分ならび_1,_開始nth,_長さ_2,_部分ならび_2,_長さ_3,_残りならび_3) :-
        append(_ならび_1,_ならび_2,_ならび_3,_対象ならび),
        length(_ならび_1,_長さ_1),
        length(_ならび_2,_長さ_2),
        length(_ならび_3,_長さ_3),
        _開始Nth is _長さ_1 + 1.


append([],L1,L2,L) :-
        append(L1,L2,L).
append([A|R1],L1,L2,[A|R]) :-
        append(R1,L1,L2,R).



%  ?- 部分ならび([臨,兵,闘,者,皆,陣,列,在,前],_,_,Nth,6,L,_,_).
%  Nth = 1, L = [臨,兵,闘,者,皆,陣];
%  Nth = 2, L = [兵,闘,者,皆,陣,列];
%  Nth = 3, L = [闘,者,皆,陣,列,在];
%  Nth = 4, L = [者,皆,陣,列,在,前]
%
%  ?- 部分ならび([臨,兵,闘,者,皆,陣,列,在,前],Len1,_,Nth,Len2,[闘,者,皆,陣,列,在],Len3,_).
%  Len1 = 2, Nth = 3, Len2 = 6, Len3 = 1
%