Rutas
/
Rust
Rust
/
Ejercicios
/
Triángulo
Triángulo

Triángulo

Media

Instrucciones

Determina si un triángulo es equilátero, isósceles o escaleno.

Un triángulo equilátero tiene los tres lados de la misma longitud.

Un triángulo isósceles tiene al menos dos lados de la misma longitud. (A veces se especifica que tiene exactamente dos lados de la misma longitud, pero para los fines de este ejercicio diremos al menos dos).

Un triángulo escaleno tiene todos los lados de longitudes diferentes.

Nota

Para que una figura sea un triángulo, todos los lados deben tener una longitud > 0, y la suma de las longitudes de dos lados cualesquiera debe ser mayor o igual que la longitud del tercer lado.

Note

Los triángulos degenerados son triángulos en los que la suma de la longitud de dos lados es igual a la longitud del tercer lado, p. ej. 1, 1, 2. Hemos optado por no incluir pruebas para los triángulos degenerados en este ejercicio. Puedes gestionar esas situaciones si lo deseas, o ignorarlas sin problema.

En ecuaciones:

Sean a, b y c los lados del triángulo. Entonces las tres expresiones siguientes deben ser verdaderas:

a + b ≥ c
b + c ≥ a
a + c ≥ b

Consulta la desigualdad triangular

La implementación de esto puede adoptar muchas formas. Aquí tienes algunos temas que pueden ayudarte, según el enfoque que adoptes.

¡O quizá se te ocurra un enfoque que no use nada de eso!

Longitudes no enteras

El ejercicio base prueba la identificación de triángulos cuyos lados son todos números enteros. Sin embargo, algunos triángulos no se pueden representar con números enteros puros. Un ejemplo sencillo es un triángulo con un ángulo de 90 grados entre dos lados iguales de longitud 1. Su tercer lado tiene una longitud de raíz cuadrada de 2, que es un número irracional (es decir, que no se puede escribir como un número entero ni como una fracción).

Sería tedioso reescribir las funciones de análisis para manejar tanto los casos de números enteros como los de coma flotante, y especialmente tedioso hacerlo para todos los tipos de enteros y de coma flotante posibles: dadas las variantes con signo y sin signo de 8, 16, 32, 64 y 128 bits, ¡eso serían 10 reimplementaciones del mismo código fundamental, incluso antes de considerar los números de coma flotante!

Hay una forma mejor: los genéricos. Si reescribes tu Triangle como Triangle<T>, puedes escribir tu código una sola vez y delegar en el compilador el trabajo de generar todas esas especializaciones. Ten en cuenta que, para usar operaciones matemáticas, tendrás que restringir tu tipo genérico a los tipos que admitan esas operaciones mediante rasgos.

Hay algunos tests adicionales que puedes ejecutar y que prueban tu implementación con números de coma flotante. Para activarlos, ejecuta tus tests con el flag de características generic, así:

cargo test --features generic
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Rust Exercism

¿Listo para empezar Triángulo?

Regístrate en Exercism para aprender y dominar Rust con 99 ejercicios y mentoría humana real, todo gratis.