Advent of Code solutions
at main 34 lines 857 B view raw
1use advent_core::{day_stuff, ex_for_day, Day}; 2use regex::RegexBuilder; 3 4pub struct Day3; 5 6const RE: &str = r"mul\((\d+),(\d+)\)"; 7 8fn re_do(i: &str) -> u64 { 9 let re = RegexBuilder::new(RE).multi_line(true).build().unwrap(); 10 re.captures_iter(i) 11 .map(|c| { 12 c.get(1).unwrap().as_str().parse::<u64>().unwrap() 13 * c.get(2).unwrap().as_str().parse::<u64>().unwrap() 14 }) 15 .sum::<u64>() 16} 17 18impl Day for Day3 { 19 day_stuff!(3, "161", "48"); 20 21 fn part_1(input: Self::Input) -> Option<String> { 22 Some(re_do(&input).to_string()) 23 } 24 25 fn part_2(input: Self::Input) -> Option<String> { 26 Some( 27 input 28 .split("do()") 29 .map(|v| re_do(v.split("don't()").nth(0).unwrap())) 30 .sum::<u64>() 31 .to_string(), 32 ) 33 } 34}