Depuis http://en.wikipedia.org/wiki/Triangle :
Écrivez un programme qui prend trois tuples de coordonnées 2D (cartésiennes) et classe la forme décrite par ces trois points.
Dans presque tous les cas, ces points décrivent un triangle de types différents. Dans certains cas dégénérés, les points décrivent soit un point singulier, soit une ligne droite. Le programme déterminera laquelle des balises suivantes s'applique à la forme décrite:
- Point (3 points coïncident)
- Ligne (3 points se situent sur une ligne droite - pas plus de 2 points peuvent être co-incidents)
- Equilatéral (3 côtés égaux, 3 angles égaux)
- Isocèle (2 côtés égaux, 2 angles égaux)
- Scalène (0 côtés égaux, 0 angles égaux)
- Droite (1 angle exactement π / 2 (ou 90 °))
- Oblique (0 angle exactement π / 2 (ou 90 °))
- Obtuse (1 angle> π / 2 (ou 90 °))
- Aigu (3 angles <π / 2 (ou 90 °))
Notez que pour certaines formes décrites, plusieurs des balises ci-dessus s'appliqueront. Par exemple, tout angle droit sera également isocèle ou scalène.
Contribution
- Le programme peut lire les 3 coordonnées d'entrée de STDIN, de la ligne de commande, des variables d'environnement ou de la méthode qui convient à la langue de votre choix.
- L'entrée coordonnée peut être formatée mais convient à la langue de votre choix. On peut supposer que tous les numéros d'entrée sont bien formés par rapport aux types de données que vous finissez par utiliser.
- Rien ne peut être supposé sur l'ordre des coordonnées d'entrée.
Sortie
- Le programme sortira sur STDOUT, une boîte de dialogue ou toute autre méthode d'affichage convenant à la langue de votre choix.
- La sortie affichera toutes les balises applicables à la forme décrite par les coordonnées d'entrée.
- Les balises peuvent être sorties dans n'importe quel ordre.
Autres règles
- Les bibliothèques / API trigonométriques de votre langue sont autorisées, mais toutes les API qui calculent spécifiquement les types de triangle sont interdites.
- Lors de la détermination de l'égalité des angles ou des longueurs des côtés, vous finirez probablement par comparer des valeurs à virgule flottante. Deux de ces valeurs doivent être considérées comme «égales» si l'une est à moins de 1% de l'autre.
- Des «failles» standard qui ne sont plus drôles
- Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte.
Exemples
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