読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 102 / 三角形の包含

3つの異なる点が -1000 ≤ x, y ≤ 1000 かつ三角形となるように平面上にランダムに与えられる。次の2つの三角形を考える。

  • A(-340,495), B(-153,-910), C(835,-947)
  • X(-175,41), Y(-421,-714), Z(574,-645)

三角形ABCは原点を内部に含み,XYZは原点を内部に含まない。

27Kのテキストファイル triangles.txt にランダムな1000個の三角形が適当なフォーマットのもと含まれている。内部に原点を含む三角形の数を答えよ。

Problem 102 - Project Euler


ベクトルでやりました。点Oが三角形ABCの内部に含まれる条件は
↑AO = p↑AB + q↑AC
とあらわしたときの係数が
p>0, q>0, p+q<1
をみたすことです。Solve[ ] で p, q を求めて,抽出条件としました。