From e12c0134b07316f9e70d716a098da2b8da580877 Mon Sep 17 00:00:00 2001 From: Keenan Tims Date: Thu, 14 Dec 2023 23:33:48 -0800 Subject: [PATCH] day15: functional hash implementation using fold() --- 15/src/main.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/15/src/main.rs b/15/src/main.rs index eb4a526..180463f 100644 --- a/15/src/main.rs +++ b/15/src/main.rs @@ -27,13 +27,12 @@ fn main() { // COMMON fn hash_string(s: &str) -> u64 { - let mut val = 0u64; - for c in s.bytes() { - val += c as u64; - val *= 17; - val %= 256; - } - val + s.bytes().fold(0u64, |mut accum, val| { + accum += val as u64; + accum *= 17; + accum %= 256; + accum + }) } // PROBLEM 1 solution @@ -80,8 +79,12 @@ impl LensBox { } } - fn total_lens_power(&self) -> u64{ - self.order.iter().enumerate().map(|(lens_idx, label)| (lens_idx+1) as u64 * self.lenses[label] as u64).sum() + fn total_lens_power(&self) -> u64 { + self.order + .iter() + .enumerate() + .map(|(lens_idx, label)| (lens_idx + 1) as u64 * self.lenses[label] as u64) + .sum() } } @@ -137,7 +140,11 @@ fn problem2(mut input: Lines) -> u64 { inst.execute(&mut boxes); } - boxes.iter().enumerate().map(|(box_idx, b)| (box_idx + 1) as u64 * b.total_lens_power()).sum() + boxes + .iter() + .enumerate() + .map(|(box_idx, b)| (box_idx + 1) as u64 * b.total_lens_power()) + .sum() } #[cfg(test)]