С http://en.wikipedia.org/wiki/Triangle :
Напишите программу, которая берет три двумерных координатных кортежа (декартовых) и классифицирует, какую форму описывают эти три точки.
Почти во всех случаях эти точки будут описывать треугольник различных типов. В некоторых вырожденных случаях точки будут описывать особую точку или прямую линию. Программа определит, какие из следующих тегов применимы к описанной фигуре:
- Точка (3 балла являются со-инцидентом)
- Линия (3 точки лежат на прямой линии - может быть не более 2 точек)
- Равносторонний (3 стороны равны, 3 угла равны)
- Равнобедренно (2 стороны равны, 2 угла равны)
- Scalene (0 сторон равны, 0 углов равны)
- Право (1 угол точно π / 2 (или 90 °))
- Наклонный (0 углов точно π / 2 (или 90 °))
- Тупой (1 угол> π / 2 (или 90 °))
- Острый (3 угла <π / 2 (или 90 °))
Обратите внимание, что для некоторых описанных фигур будет применяться более одного из приведенных выше тегов. Например, любой прямоугольник также будет равнобедренным или разносторонним.
вход
- Программа может считывать 3 входные координаты из STDIN, командной строки, переменных среды или любого другого метода, удобного для вашего языка.
- Входные координаты могут быть отформатированы, однако это удобно для вашего языка. Можно предположить, что все входные числа правильно сформированы по отношению к типам данных, которые вы в конечном итоге используете.
- Ничего нельзя предположить о порядке ввода входных координат.
Выход
- Программа выведет на 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