10/02/03 06:20:55
>>225
% prolog (その二)
ユーザの入力点からの距離ならびを得る([],_,_,[]) :- !.
ユーザの入力点からの距離ならびを得る([[X1,Y1]|R1],X,Y,[[_距離,X1,Y1]|R2]) :-
_距離 is sqrt(((Y1-Y)^2 + (X1-X)^2)),
ユーザの入力点からの距離ならびを得る(R1,X,Y,R2).
ユーザの入力座標から最も遠い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も遠い点X座標,_最も遠い点Y座標) :-
findmax(L,member(L,_ユーザの入力点からの距離ならび),[_最も遠い距離,_最も遠い点X座標,_最も遠い点Y座標]).
ユーザの入力座標から最も近い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も近い点X座標,_最も近い点Y座標) :-
findmin(L,member(L,_ユーザの入力点からの距離ならび),[_最も近い距離,_最も近い点X座標,_最も近い点Y座標]).
ユーザ座標と10個の座標点の表示(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :-
ユーザ座標と10個の座標点の表示(0,0,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標).
ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :- N > 9,!.
ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :-
M > 9,N2 is N + 1,wr('\n'),
ユーザ座標と10個の座標点の表示(0,N2,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標),!.
ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :-
座標点表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標),
M2 is M + 1,
ユーザ座標と10個の座標点の表示(M,N2,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標).