Day 3
This commit is contained in:
parent
68f6a3946d
commit
d84eede42f
5 changed files with 80 additions and 1 deletions
23
src/day3.rs
Normal file
23
src/day3.rs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
use std::fs;
|
||||
use regex::Regex;
|
||||
|
||||
const READ_ALL: bool = false;
|
||||
|
||||
pub fn day3() {
|
||||
let input_text = fs::read_to_string("res/puzzle_3.txt").unwrap();
|
||||
|
||||
let mut total: u64 = 0;
|
||||
let mut enabled = true;
|
||||
for statement in Regex::new(r"(?:mul\((?<a>\d{1,3}),(?<b>\d{1,3})\))|(?<do>do\(\))|(?<dont>don't\(\))").unwrap().captures_iter(&input_text) {
|
||||
if statement.name("do").is_some() {
|
||||
enabled = true;
|
||||
} else if statement.name("dont").is_some() {
|
||||
enabled = false;
|
||||
} else if enabled || READ_ALL {
|
||||
let numbers: Vec<u64> = vec![&statement["a"], &statement["b"]].iter().map(|s| s.parse::<u64>().unwrap()).collect();
|
||||
total += numbers[0] * numbers[1];
|
||||
}
|
||||
}
|
||||
|
||||
println!("Total: {}", total);
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
mod day1;
|
||||
mod day2;
|
||||
mod day3;
|
||||
|
||||
fn main() {
|
||||
day2::day2();
|
||||
day3::day3();
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue