retroactive, to derust my rust
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

day3 part2

+27
+1
input/day3_part2.test.txt
··· 1 + xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))
+26
src/lib.rs
··· 127 127 let products: u32 = multiplicands.into_iter().map(|(l, r)| l * r).sum(); 128 128 products.to_string() 129 129 } 130 + 131 + pub fn day3_part2(input: &str) -> String { 132 + let r = Regex::new(r"(?:do\(\))|(?:don't\(\))|(?:mul\((\d+),(\d+)\))").unwrap(); 133 + let mut multiply = true; 134 + let mut products: Vec<(u32, u32)> = vec![]; 135 + for captures in r.captures_iter(input) { 136 + dbg!(&captures); 137 + if &captures[0] == "do()" { 138 + multiply = true; 139 + } else if &captures[0] == "don't()" { 140 + multiply = false; 141 + } else if multiply { 142 + products.push((captures[1].parse().unwrap(), captures[2].parse().unwrap())); 143 + } 144 + } 145 + let sum: u32 = products.into_iter().map(|(l, r)| l * r).sum(); 146 + sum.to_string() 147 + } 130 148 } 131 149 132 150 #[cfg(test)] ··· 139 157 assert_eq!(test_result, "161"); 140 158 let result = day3::day3_part1(include_str!("../input/day3.txt")); 141 159 assert_eq!(result, "183788984"); 160 + } 161 + 162 + #[test] 163 + fn day3_part2_test() { 164 + let test_result = day3::day3_part2(include_str!("../input/day3_part2.test.txt")); 165 + assert_eq!(test_result, "48"); 166 + let result = day3::day3_part2(include_str!("../input/day3.txt")); 167 + assert_eq!(result, "62098619"); 142 168 } 143 169 144 170 #[test]