30 lines
685 B
Rust
30 lines
685 B
Rust
use advent_of_code_2024::{make_main, SResult};
|
|
use regex::Regex;
|
|
|
|
make_main!();
|
|
|
|
fn solve(lines: Vec<String>) -> SResult<usize> {
|
|
let mut result = 0;
|
|
let re = Regex::new(r"mul\((?<mul1>\d{1,3}),(?<mul2>\d{1,3})\)")?;
|
|
for line in lines {
|
|
for caps in re.captures_iter(&line) {
|
|
result += caps["mul1"].parse::<usize>().unwrap() * caps["mul2"].parse::<usize>().unwrap();
|
|
}
|
|
}
|
|
Ok(result)
|
|
}
|
|
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use advent_of_code_2024::input;
|
|
|
|
use super::*;
|
|
#[test]
|
|
fn sample_input() {
|
|
let strings: Vec<String> = input!("d3p1.txt");
|
|
let got = solve(strings).unwrap();
|
|
assert_eq!(got, 161);
|
|
}
|
|
}
|