※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。



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).