diff --git a/challenges/triangle-type/solutions/rust/function/Cargo.lock b/challenges/triangle-type/solutions/rust/function/Cargo.lock new file mode 100644 index 0000000..c8ae10e --- /dev/null +++ b/challenges/triangle-type/solutions/rust/function/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "rust_application" +version = "1.0.0" diff --git a/challenges/triangle-type/solutions/rust/function/Cargo.toml b/challenges/triangle-type/solutions/rust/function/Cargo.toml new file mode 100644 index 0000000..a119ace --- /dev/null +++ b/challenges/triangle-type/solutions/rust/function/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "rust_application" +version = "1.0.0" +edition = "2021" + +[dependencies] diff --git a/challenges/triangle-type/solutions/rust/function/README.md b/challenges/triangle-type/solutions/rust/function/README.md new file mode 100644 index 0000000..a749231 --- /dev/null +++ b/challenges/triangle-type/solutions/rust/function/README.md @@ -0,0 +1,3 @@ +# triangle-type/rust/function + +Created by [@Divlo](https://github.com/Divlo) on 4 January 2023. diff --git a/challenges/triangle-type/solutions/rust/function/src/main.rs b/challenges/triangle-type/solutions/rust/function/src/main.rs new file mode 100644 index 0000000..ce46f88 --- /dev/null +++ b/challenges/triangle-type/solutions/rust/function/src/main.rs @@ -0,0 +1,46 @@ +use std::io; + +pub struct Triangle { + pub sides: [u32; 3], +} + +impl Triangle { + pub fn sides_type(&self) -> String { + if (self.sides[0] + self.sides[1] < self.sides[2]) + || (self.sides[2] + self.sides[0] < self.sides[1]) + || (self.sides[2] + self.sides[1] < self.sides[0]) + { + return String::from("impossible"); + } + if self.sides[0] == self.sides[1] && self.sides[1] == self.sides[2] { + return String::from("equilateral"); + } + if self.sides[0] == self.sides[1] + || self.sides[1] == self.sides[2] + || self.sides[2] == self.sides[0] + { + return String::from("isosceles"); + } + return String::from("scalene"); + } + + pub fn size(&self) -> usize { + return self.sides.len(); + } +} + +fn main() { + let mut triangle = Triangle { sides: [0, 0, 0] }; + for index in 0..triangle.size() { + let mut side = String::new(); + io::stdin() + .read_line(&mut side) + .expect("Failed to read `stdin` line."); + let side: u32 = side + .trim() + .parse() + .expect("Failed to convert `side` as an `u32`."); + triangle.sides[index] = side; + } + println!("{}", triangle.sides_type()); +}