あなたは戦艦の船長です。エンジニアリング部門は今年、デザインでコーナーを切っているので、あなたが乗っている船は単純な三角形の形をしています。
デッキに出て海風を楽しんでください...長くはありませんが。敵があなたを攻撃しました!—しかし、ショットはヒットしますか?
入力
このチャレンジのために、関数または完全なプログラムを作成できます。
プログラムは11個の整数を取り、そのうち10個がペアになります。
整数の最初の3つのペア(x 1、y 1)、(x 2、y 2)、(x 3、y 3)は、船舶の頂点を指定します。形成された三角形の面積はゼロではありません。
次の整数のペア(e x、e y)は、敵の大砲の位置を指定します。敵の大砲が船の上や船の境界内に横たわることはありません。*
その後のペア(a x、a y)は、敵が狙った場所を指定します。これは(e x、e y)とは異なります。
最後の正の整数Rは、敵のショットの範囲を指定します
*あなたはその出来事に気付かなかった場合、ひどいキャプテンになるでしょう!
出力
あなたは返す/印刷する必要がありますtruthy戦艦がヒットになる場合は、(1、真など)の値をそれ以外の場合はfalsy値(例えば、偽、0)。
ヒットとは何ですか?
敵のショットは、(a x、e y)から(a x、a y)の方向の長さRの直線セグメントです。この線分が三角戦艦の内部の一部と重なる場合、これはヒットとしてカウントされます。それ以外の場合、ヒットではありません。
三角形に沿って放牧するショット、または三角形の境界までしか到達しないショットは、ヒットとしてカウントされません。
例
0 0 0 1 1 0
1 1
0 0
2

ヒット:敵があなたの船の真ん中を撃ちました!
2 0 0 2 4 4
0 0
1 1
1

ヒットなし:敵の射程が短すぎるため、安全です。
0 0 1 2 3 0
-4 0
0 0
8

ヒットなし:敵が船の側面を放牧したため、これはヒットとしてカウントされません。幸運な!
0 0 -1 3 4 -1
-3 -4
3 4
5

ヒットなし:敵の射撃は船の手前で止まるため、安全です。敵の大砲の射程がわずかに改善されていれば、攻撃されていたでしょう!ふう!
-2 -3 -3 6 7 -2
-6 2
1 -4
7

ヒット:ショットが反対側に浸透しなかったとしても、これはヒットです。
-3 2 2 -4 7 -3
-3 -4
-3 0
10

ヒットなし:記録にとって、これはもう1つのミスです。
追加のテストケース
0 0 6 0 6 8
-6 -8
6 8
20

ヒットなし:これは別の放牧ですが、斜めです。
0 0 -2 -5 5 3
-3 4
0 0
6

ヒット:船の頂点からショットが入りました。
得点
0 0 -1 3 4 -1 -3 -4 3 4 6。たとえば、船が角を貫通している場合です。