http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%20102 *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).