Problem 102 「三角形の包含」 †
2次元平面に三角形の座標が与えられるので、原点を含む三角形の数をこたえる問題。
詳細はリンク先参照のこと。
解法
2次元の外積の値で判断します。
それだけ。
三角形のデータファイルはテキストエディタでPrologのリスト形式に変換してから読み込んだ。
check(T1,T2,T3):-T1=<0,T2=<0,T3=<0,!.
check(T1,T2,T3):-0=<T1,0=<T2,0=<T3,!.
isIns(Rows,1):-
member([X1,Y1,X2,Y2,X3,Y3],Rows),
T1 is X1*Y2-X2*Y1,
T2 is X2*Y3-X3*Y2,
T3 is X3*Y1-X1*Y3,
check(T1,T2,T3).
main102:-
open('pe102.txt',read,IS),
read_term(IS,Rows,[]),
close(IS),
findall(C,isIns(Rows,C),Count),
length(Count,Ans),
write(Ans).
最終更新:2014年03月05日 11:51