Sha256: f86aecfbc24839a4e0c319591494d3641d46d88fa1dfb0e2e06886eede81f01c
Contents?: true
Size: 962 Bytes
Versions: 395
Compression:
Stored size: 962 Bytes
Contents
use std::iter::FromIterator; use std::collections::BTreeSet; pub struct Triangle { sides: [u16; 3], } impl Triangle { #[cfg_attr(rustfmt, rustfmt_skip)] fn valid_sides(&self) -> bool { (self.sides.iter().all(|&s| s > 0)) && (self.sides[0] + self.sides[1] >= self.sides[2]) && (self.sides[1] + self.sides[2] >= self.sides[0]) && (self.sides[2] + self.sides[0] >= self.sides[1]) } pub fn build(sides: [u16; 3]) -> Result<Self, ()> { let t = Triangle { sides: sides }; if t.valid_sides() { Ok(t) } else { Err(()) } } pub fn is_equilateral(&self) -> bool { BTreeSet::from_iter(self.sides.iter()).len() == 1 } pub fn is_isosceles(&self) -> bool { BTreeSet::from_iter(self.sides.iter()).len() == 2 } pub fn is_scalene(&self) -> bool { BTreeSet::from_iter(self.sides.iter()).len() == 3 } }
Version data entries
395 entries across 395 versions & 1 rubygems