http://en.wikipedia.org/wiki/Triangleから:
3つの2次元座標タプル(デカルト)を取り、これらの3つのポイントが記述する形状を分類するプログラムを作成します。
ほとんどすべての場合、これらのポイントはさまざまなタイプの三角形を表します。一部の縮退した場合、ポイントは特異ポイントまたは直線のいずれかを表します。プログラムは、記述された形状に適用される次のタグを決定します。
- ポイント(3ポイントは同時発生)
- 線(3点が直線上にある-一致する可能性があるのは2点までです)
- 等辺(3つの側面が等しい、3つの角度が等しい)
- 二等辺(2つの側面が等しい、2つの角度が等しい)
- スカレン(0辺が等しい、0角が等しい)
- 右(1角度正確にπ/ 2(または90°))
- 斜め(0角度正確にπ/ 2(または90°))
- 鈍角(1角度>π/ 2(または90°))
- 急性(3角<π/ 2(または90°))
説明されている一部の形状には、上記のタグが複数適用されることに注意してください。たとえば、直角はいずれも二等辺または斜角になります。
入力
- プログラムは、STDIN、コマンドライン、環境変数、または選択した言語に便利な方法から3つの入力座標を読み取ることができます。
- ただし、フォーマットする入力座標は、選択した言語にとって便利です。すべての入力番号は、最終的に使用するデータ型に関して整形式であると想定できます。
- 入力座標の順序については何も想定できません。
出力
- プログラムは、STDOUT、ダイアログボックス、または選択した言語に便利な表示方法に出力します。
- 出力には、入力座標で記述された形状に適用可能なすべてのタグが表示されます。
- タグは任意の順序で出力できます。
その他の規則
- あなたの言語の三角ライブラリ/ APIは許可されていますが、三角形のタイプを明確に計算するAPIは禁止されています。
- 角度の均等性または辺の長さを決定する場合、おそらく浮動小数点値を比較することになります。1つの値が他の値の1%以内であれば、このような値は2つ「等しい」と見なされます。
- もはや面白くない標準の「抜け穴」
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
例
Input Output
(1,2) (1,2) (1,2) Point
(1,2) (3,4) (5,6) Line
(0,0) (1,1) (2,0) Isosceles Right
(0,0) (2,1) (10,1) Scalene Oblique Obtuse