From 4b4f4fbf80e62d6aa49a2a950658ff4a3326a588 Mon Sep 17 00:00:00 2001 From: kageru Date: Thu, 8 Jul 2021 19:58:30 +0200 Subject: [PATCH] Add tests and clean up add/sub/mul for positions --- 2020/src/grid.rs | 13 +++++++++++++ 2020/src/grid/position.rs | 27 ++++++++++++--------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/2020/src/grid.rs b/2020/src/grid.rs index 621eb8a..347029b 100644 --- a/2020/src/grid.rs +++ b/2020/src/grid.rs @@ -61,9 +61,22 @@ pub fn draw_ascii(coordinates: &HashMap PositionND { impl Mul for PositionND { type Output = PositionND; - fn mul(self, rhs: i64) -> Self::Output { - let mut points = [0; D]; - for i in 0..D { - points[i] = self.points[i] * rhs; + fn mul(mut self, rhs: i64) -> Self::Output { + for p in self.points.iter_mut() { + *p *= rhs; } - PositionND { points } + self } } impl Add> for PositionND { type Output = PositionND; - fn add(self, rhs: PositionND) -> Self::Output { - let mut points = [0; D]; - for i in 0..D { - points[i] = self.points[i] + rhs.points[i]; + fn add(mut self, rhs: PositionND) -> Self::Output { + for (x, y) in self.points.iter_mut().zip(rhs.points) { + *x += y; } - PositionND { points } + self } } impl Sub> for PositionND { type Output = PositionND; - fn sub(self, rhs: PositionND) -> Self::Output { - let mut points = [0; D]; - for i in 0..D { - points[i] = self.points[i] - rhs.points[i]; + fn sub(mut self, rhs: PositionND) -> Self::Output { + for (x, y) in self.points.iter_mut().zip(rhs.points) { + *x -= y; } - PositionND { points } + self } }