diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2024-12-03 17:51:24 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2024-12-03 17:51:24 +0100 |
| commit | 00aebf045590210f4e83a508eec573b2f0558c9d (patch) | |
| tree | 2df97fab82c965a6b3762372fbad3efc5d11d405 /src/bin | |
| parent | 06835ff1a9d00834d6070a6c9d361e8e731519b4 (diff) | |
day3 solution 1
Diffstat (limited to 'src/bin')
| -rw-r--r-- | src/bin/day3.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/bin/day3.rs b/src/bin/day3.rs new file mode 100644 index 0000000..02cb385 --- /dev/null +++ b/src/bin/day3.rs @@ -0,0 +1,36 @@ +use regex::Regex; + +static DAY: u8 = 3; + +fn main() { + let input = advent::read_lines(DAY); + println!("{DAY}a: {}", sum_multiplications(&input)); + println!("{DAY}b: {}", 0); +} + +fn sum_multiplications(input: &[String]) -> u32 { + let re = Regex::new(r"mul\(([0-9]{1,3}),([0-9]{1,3})\)").unwrap(); + + let mut sum = 0; + for line in input { + for cap in re.captures_iter(line) { + let f1 = cap[1].parse::<u32>().unwrap(); + let f2 = cap[2].parse::<u32>().unwrap(); + sum += f1 * f2; + } + } + sum +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test() { + let input = [ + "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))" + ].iter().map(|&x| String::from(x)).collect::<Vec<_>>(); + assert_eq!(sum_multiplications(&input), 161); + } +} |
