AOJ 0115: Starship UAZ Advance

f:id:peroon:20170512052350p:plain f:id:peroon:20170512052358p:plain

問題 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0115

私の解答 http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2312376#1

線分と三角形の交差判定問題。テストケースの途中でWAになってすごくはまった。EPSの精度を変えたり、例外的な対応を入れては再提出を繰り返した。それでも通らなかったので、テストケースを乱数で生成して、正しく通っている人のコードの解答と、自分の解答を突き合わせて間違うテストケースを見つけた。原因は、行列式が0のときの分岐判定にdet > 0としていたこと。det != 0としたら通った。「3次元の行列式は3つのベクトルからなる立方体の体積」というのは知っていて、detは正だと思い込んでいた。detは負も全然ありうる。解けて良かった。

# wrong
denom = det(a, b, c)
if denom > 0:

# correct
denom = det(a, b, c)
if denom != 0: