このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/135
#  配列a[n],配列b[n] と配列の大きさn を渡すと配列の 
#  要素を入れ換えるプログラムをポインタを用いて作成せよ. 
#  例えば,a[3]={1,2,3},b[3]={101,102,103}とすると 
#  き,結果として,a[3]={101,102,103},b[3]={1,2,3}と 
#  なるようにせよ. 
#   
#  よろしくお願いします! 
# 
# 

二つのリストの最初のN要素だけ入れ替える(L1_1,L2_1,N,L1_2,L2_2) :-
        length(L1_0,N),
        length(L2_0,N),
        append(L1_0,R1,L1),
        append(L2_0,R2,L2),
        append(L2_0,R1,L3),
        append(L1_0,R2,L4),!.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

二つのリストの最初のN要素だけ入れ替える(L1_1,L2_1,N,L1_2,L2_2) :-
        integer(N),
        length(LN,N),
        二つのリストの最初のN要素だけ入れ替える(L1_1,L2_1,LN,L1_2,L2_2).
二つのリストの最初のN要素だけ入れ替える(R1,R2,[],R1,R2).
二つのリストの最初のN要素だけ入れ替える([A|R1_1],[B|R2_1],[_|R],[B|R1_2],[A|R2_2]) :-
        二つのリストの最初のN要素だけ入れ替える(R1_1,R2_1,R,R1_2,R2_2).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

二つのリストの最初のN要素だけ入れ替える(R1,R2,0,R1,R2).
二つのリストの最初のN要素だけ入れ替える([A|R1_1],[B|R2_1],N,[B|R1_2],[A|R2_2]) :-
        N1 is N - 1,
        二つのリストの最初のN要素だけ入れ替える(R1_1,R2_1,N1,R1_2,R2_2).