Tracks
/
Rust
Rust
/
Ejercicios
/
Triángulo
Triángulo

Triángulo

Intermedia

Instrucciones

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

Un triángulo equilátero tiene sus 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 sus lados de longitudes diferentes.

Nota

Para que una figura sea un triángulo, todos sus 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, por ejemplo 1, 1, 2. Elegimos no incluir pruebas para triángulos degenerados en este ejercicio. Puedes manejar esas situaciones si así 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 tomar muchas formas. Aquí tienes algunos temas que pueden ayudarte, según el enfoque que elijas.

¡O quizás se te ocurra un enfoque que no use ninguno de esos!

Longitudes no enteras

El ejercicio base evalúa la identificación de triángulos cuyos lados son todos 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 la longitud raíz cuadrada de 2, que es un número irracional (es decir, no se puede escribir ni como entero ni como fracción).

Sería tedioso reescribir las funciones de análisis para manejar tanto los casos con enteros como los de punto flotante, y sería especialmente tedioso hacerlo para todos los posibles tipos de enteros y de punto flotante: dadas las variantes con signo y sin signo de anchos de bits 8, 16, 32, 64 y 128, eso serían 10 reimplementaciones de un código fundamentalmente igual, ¡incluso antes de considerar los flotantes!

Hay una mejor manera: los genéricos. Si reescribes tu Triangle como un Triangle<T>, puedes escribir tu código una sola vez y dejarle al 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 usando traits.

Hay algunas pruebas adicionales que puedes ejecutar para probar tu implementación con números de punto flotante. Para habilitarlas, ejecuta tus pruebas con la bandera de funcionalidad generic, así:

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

¿Todo listo para empezar Triángulo?

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