円と正方形には、単一の明確な中心点があります。しかし、三角形の中心の概念は長い間議論されてきました。古代ギリシャ人には4つの異なるセンターが知られていました。
- 中央:三角形の角二等分線の交差点
- 重心:三角形の各頂点から反対側の中央までの線の交点
- Circumcenter:側面の垂直二等分線の交点
- Orthocenter:三角形の高度の交点
オイラーは後に、重心、外心、および直交中心が任意の三角形で共線であることを証明しました。これらの3つの点が三角形になっている線は、オイラー線と呼ばれます。すべてのポイントが一致する正三角形を除くすべての三角形に対して定義されます。
あなたの課題は、2つの入力が与えられたときに特定の中心または三角形のオイラー線を出力する最短のプログラムまたは関数を作成することです。最初は、三角形の各頂点の座標を指定します。2番目は1〜5の整数で、何を出力するかを決定します。
1 - Incenter
2 - Centroid
3 - Circumcenter
4 - Orthocenter
5 - Equation of Euler Line
(if the Euler Line is vertical, output the `x` value of the line
(e.g. output `5` if the equation of the line is `x = 5`))
与えられた頂点は決して共線的ではなく、常に整数座標であると仮定することができます(これは@ R.Kapのコメントによると、入力として正三角形を持つ可能性も排除します)。
入力配列は、言語の有効なネストされた配列である必要があり、入力は適切な形式である必要があります。浮動小数点値は、少なくとも小数点以下3桁まで表示する必要があります。出力されるポイントは、入力形式と一致する言語の有効な配列である必要があります。
テストケース:
Input: [(-2, 0), (1, 0), (0, 1)] 1
Output: (-0.089, 0.451)
Input: [(-2, 0), (1, 0), (0, 1)] 2
Output: (-0.333, 0.333)
Input: [(-2, 0), (1, 0), (0, 1)] 3
Output: (-0.5, -0.5)
Input: [(-2, 0), (1, 0), (0, 1)] 4
Output: (0, 2)
Input: [(-2, 0), (1, 0), (0, 1)] 5
Output: 5x + 2
明確化:入力は、スペースまたは改行で区切られたstdinから、または関数への引数としてのいずれかです。ただし、出力はstdoutに書き込む必要があります。
y=f(x)。
(if the triangle is equilateral, output the point at which the centers meet)、あるようでないだけで整数座標使って座標平面上で正三角形を作成することが可能。