2D平面上の4点を与えA, B, C, D、三角形OABとの交差領域の面積を計算しますOCD。ここOで、は平面の中心であり、座標は(0, 0)です。
(算術演算に関して)一定の時間の複雑さで実行されるアルゴリズムは推奨されますが、強制されません。
ルール
- 各ポイントは2つの実数として表され、それらのXおよびY座標を示します。
- オプションで、プログラミング言語(またはプログラミング言語のライブラリ)に組み込み
Point型または同等の型がある場合、Pointオブジェクトを入力として使用できます。
- オプションで、プログラミング言語(またはプログラミング言語のライブラリ)に組み込み
- 入力は、以下を含むがこれらに限定されない形式で、4ポイントとして与えられます。
- 8つの座標のリスト。
- 4点のリスト。各点は任意の便利な形式で表すことができます。
- 2点の2つのリスト。
- 等
- ポイントの特定の順序(反時計回りまたは時計回り)を想定することはできません
- ポイント
Oが入力として渡されると想定することはできません。言い換えれば、プログラムは外部からの入力を受け取って使用してはなりません。 - すべてのポイントが異なると仮定することはできません。言い換えれば、三角形が縮退している可能性があります。そのケースも処理する必要があります(以下のテストケースを参照)
- 絶対的または相対的な差は、以下のサンプルテストケースの差よりも小さくなければなりません。
10-3
受賞基準
これはcode-golfで、バイト単位の最短回答が勝ちです!
サンプルテストケース
Ax Ay Bx By Cx Cy Dx Dy area
5 1 1 3 -1 0 0 -1 0
5 1 1 3 -1 0 0 0 0
5 1 1 3 0 0 0 0 0
5 1 1 3 3 4 4 -3 4.50418
5 1 1 3 1 2 2 1 1.5
5 1 1 3 -2 5 4 -2 1.74829
5 1 1 3 -2 5 5 4 2.96154
5 1 1 3 3 5 5 4 1.88462
5 1 1 3 3 5 3 1 3.92308
5 1 1 3 3 5 4 -1 5.26619
5 1 1 3 5 1 4 -1 0
5 1 1 3 5 1 1 3 7
1 3 1 3 5 1 1 3 0
1 3 1 3 1 3 1 3 0
4 8 4 -1 -2 6 -2 -3 0
1.2 3.4 -0.3 4.2 5 7.6 -1.1 2.4 2.6210759326188535
3.1 0.6 0.1 7.2 5.2 0.7 0.9 8 9.018496993987977
誰でも必要な場合、最初のテストケースグループの出力は次のとおりです。
0
0
0
46375/10296
3/2
1792/1025
77/26
49/26
51/13
23345/4433
0
7
0
0
0
テストケースのイラスト画像5 1 1 3 3 4 4 -3(緑色の四辺形の領域が予想される出力です):
[
]
テストケースの1つには8ではなく9つの入力があります。1.2 3.4 -0.3 4.2 5 3 7.6 -1.1 2.4 0
—
ケリーロウダー
@KellyLowder修正済み。
—
user202729
