From 27a646f88fbedfaafe8e7cab31d982aa68b6b75f Mon Sep 17 00:00:00 2001 From: Luke Else Date: Sun, 3 Dec 2023 08:39:30 +0000 Subject: [PATCH] Day 3 part 2... My struggle in the first half made the second half bliss! --- src/solutions/day03.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/solutions/day03.rs b/src/solutions/day03.rs index 0f24cee..dd10a45 100644 --- a/src/solutions/day03.rs +++ b/src/solutions/day03.rs @@ -22,9 +22,21 @@ impl Solution for Day03 { fn part2( &self, - _input: &mut Vec, + input: &mut Vec, ) -> Result, Box> { - Ok(Box::new("Ready")) + // Get data into a byte array + let lines = input.iter().map(|s| s.as_bytes()).collect::>(); + let mut symbols: HashMap<(usize, usize, char), Vec> = HashMap::new(); + + // Get the valid numbers from the input + self.map_valid_nums(&lines, &mut symbols)?; + + let ans: usize = symbols + .iter() + .filter(|(&(_, _, s), v)| s == '*' && v.len() == 2) + .map(|(_, v)| v[0] * v[1]) + .sum(); + Ok(Box::new(ans)) } fn get_day(&self) -> u8 { @@ -124,6 +136,6 @@ mod test { .unwrap() .to_string(); - assert_eq!(answer, "Ready"); + assert_eq!(answer, "467835"); } }