Da http://en.wikipedia.org/wiki/Triangle :

Scrivi un programma che prende tre tuple di coordinate 2d (cartesiane) e classifica la forma descritta da questi tre punti.
In quasi tutti i casi questi punti descriveranno un triangolo di vari tipi. In alcuni casi degeneri, i punti descriveranno un punto singolare o una linea retta. Il programma determinerà quale dei seguenti tag si applica alla forma descritta:
- Punto (3 punti sono coincidenti)
- Linea (3 punti si trovano su una linea retta - non più di 2 punti possono essere coincidenti)
- Equilatero (3 lati uguali, 3 angoli uguali)
- Isoscele (2 lati uguali, 2 angoli uguali)
- Scalene (0 lati uguali, 0 angoli uguali)
- Destra (1 angolo esattamente π / 2 (o 90 °))
- Obliquo (0 angoli esattamente π / 2 (o 90 °))
- Ottuso (1 angolo> π / 2 (o 90 °))
- Acuto (3 angoli <π / 2 (o 90 °))
Si noti che per alcune forme descritte, verrà applicato più di uno dei tag sopra. Ad esempio, qualsiasi angolo retto sarà anche isoscele o scalene.
Ingresso
- Il programma può leggere le 3 coordinate di input da STDIN, dalla riga di comando, dalle variabili di ambiente o da qualunque metodo sia conveniente per la tua lingua preferita.
- L'input coordina il mio essere formattato, tuttavia è conveniente per la tua lingua preferita. Si può presumere che tutti i numeri di input siano ben formati rispetto ai tipi di dati che si utilizzano.
- Non si può presumere nulla sull'ordinamento delle coordinate di input.
Produzione
- Il programma verrà trasmesso su STDOUT, finestra di dialogo o qualsiasi altro metodo di visualizzazione sia conveniente per la tua lingua preferita.
- L'output visualizzerà tutti i tag applicabili alla forma descritta dalle coordinate di input.
- I tag possono essere emessi in qualsiasi ordine.
Altre regole
- Le librerie / API trigonometriche della tua lingua sono consentite, ma tutte le API che calcolano specificamente i tipi di triangolo sono vietate.
- Quando si determina l'uguaglianza di angoli o lunghezze dei lati, si finirà probabilmente per confrontare i valori in virgola mobile. Due di questi valori devono essere considerati "uguali" se uno si trova entro l'1% dell'altro.
- "Scappatoie" standard che non sono più divertenti
- Questo è code-golf , quindi vince la risposta più breve in byte.
Esempi
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