De http://en.wikipedia.org/wiki/Triangle :
Escriba un programa que tome tres tuplas de coordenadas 2d (cartesianas) y clasifique qué forma describen estos tres puntos.
En casi todos los casos, estos puntos describirán un triángulo de diferentes tipos. En algunos casos degenerados, los puntos describirán un punto singular o una línea recta. El programa determinará cuáles de las siguientes etiquetas se aplican a la forma descrita:
- Punto (3 puntos son coincidentes)
- Línea (3 puntos se encuentran en una línea recta; no más de 2 puntos pueden ser coincidentes)
- Equilátero (3 lados iguales, 3 ángulos iguales)
- Isósceles (2 lados iguales, 2 ángulos iguales)
- Escaleno (0 lados iguales, 0 ángulos iguales)
- Recto (1 ángulo exactamente π / 2 (o 90 °))
- Oblicuo (0 ángulos exactamente π / 2 (o 90 °))
- Obtuso (1 ángulo> π / 2 (o 90 °))
- Agudo (3 ángulos <π / 2 (o 90 °))
Tenga en cuenta que para algunas formas descritas, se aplicará más de una de las etiquetas anteriores. Por ejemplo, cualquier ángulo recto también será isósceles o escaleno.
Entrada
- El programa puede leer las 3 coordenadas de entrada de STDIN, línea de comandos, variables de entorno o cualquier método que sea conveniente para el idioma que elija.
- El formato de entrada puede ser formateado, sin embargo, es conveniente para su idioma de elección. Se puede suponer que todos los números de entrada están bien formados con respecto a los tipos de datos que termina utilizando.
- No se puede suponer nada sobre el orden de las coordenadas de entrada.
Salida
- El programa saldrá a STDOUT, cuadro de diálogo o cualquier método de visualización que sea conveniente para el idioma que elija.
- La salida mostrará todas las etiquetas aplicables a la forma descrita por las coordenadas de entrada.
- Las etiquetas pueden salir en cualquier orden.
Otras reglas
- Las bibliotecas / API trigonométricas de su idioma están permitidas, pero cualquier API que calcule específicamente los tipos de triángulos está prohibida.
- Al determinar la igualdad de ángulos o longitudes de lados, probablemente terminará comparando valores de punto flotante. Dos de estos valores deben considerarse "iguales" si uno está dentro del 1% del otro.
- "Lagunas" estándar que ya no son divertidas
- Este es el código de golf , por lo que gana la respuesta más corta en bytes.
Ejemplos
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