З http://uk.wikipedia.org/wiki/Triangle :
Напишіть програму, яка займає три координати дворядних кортежів (декартових) та класифікує, яку форму описують ці три точки.
Майже у всіх випадках ці точки описують трикутник різного типу. У деяких вироджених випадках точки будуть або описувати окрему точку, або пряму. Програма визначить, який із наведених нижче тегів застосовується до описаної форми:
- Бал (3 бали є спільними випадками)
- Лінія (3 бали лежать на прямій лінії - не більше 2 балів можуть бути спільними випадками)
- Рівносторонній (3 сторони рівні, 3 кути рівні)
- Ізоскелети (2 сторони рівні, 2 кути рівні)
- Скелен (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