来自http://en.wikipedia.org/wiki/Triangle:
编写一个程序,该程序采用三个2d坐标元组(笛卡尔),并对这三个点描述的形状进行分类。
在几乎所有情况下,这些点都将描述不同类型的三角形。在某些退化的情况下,这些点将描述一个奇异点或一条直线。程序将确定以下哪个标签适用于所描述的形状:
- 点(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%以内,则将两个这样的值视为“相等”。
- 标准的“漏洞”不再有趣
- 这是代码高尔夫球,因此最短的答案以字节为单位。
例子
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