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"); } }