10/01/04 07:28:00
>>109
% Prolog 出題から離れますが、2次元のリストの指定された列を取り出すユーティリティは
全ての行に対して位置指定により列を選択する(_,[],[]) :- !.
全ての行に対して位置指定により列を選択する(_選択する列位置ならび,[_行|R1],[L|R2
]) :-
列の選択(_選択する列位置ならび,_行,L),
全ての行に対して位置指定により列を選択する(_選択する列位置ならび,R1,R2).
列の選択([],_,[]) :- !.
列の選択([_列位置|R1],_行,[A|R2]) :-
integer(_列位置),
list_nth(_列位置,_行,A),
列の選択(R1,_行,R2),!.
列の選択([A|R1],_行,R2) :-
\+(integer(A)),
B は A,
integer(B),
列の選択([B|R1],_行,R2),!.
列の選択([A|R1],_行,[B|R2]) :-
\+(integer(A)),
B は A,
\+(integer(B)),
列の選択(R1,_行,R2),!.