day 03 part 2

This commit is contained in:
Spectre 2023-12-08 14:30:17 +01:00
parent d8816f70d7
commit cc82236995
2 changed files with 32 additions and 7 deletions

View file

@ -51,14 +51,39 @@ impl Solution for Day03 {
let mut out: u64 = 0;
let gear = Regex::new(r"\*").unwrap();
let num = Regex::new(r"\d+").unwrap();
for (i, line) in lines.iter().enumerate() {
for star in gear.find_iter(line) {
let prev = if i > 0 { lines.get(i - 1) } else { None };
let curr = lines.get(i);
let next = lines.get(i+1);
let mut nums: Vec<u64> = vec![];
if prev != None {
for number in num.find_iter(prev.unwrap()) {
if ((1.max(number.start())-1)..(number.end()+1)).contains(&star.start()) { nums.push(number.as_str().parse().unwrap()) }
}
}
if curr != None {
for number in num.find_iter(curr.unwrap()) {
if ((1.max(number.start())-1)..(number.end()+1)).contains(&star.start()) { nums.push(number.as_str().parse().unwrap()) }
}
}
if next != None {
for number in num.find_iter(next.unwrap()) {
if ((1.max(number.start())-1)..(number.end()+1)).contains(&star.start()) { nums.push(number.as_str().parse().unwrap()) }
}
}
Answer::Unimplemented
if nums.len() == 2 {
out += nums[0] * nums[1]
}
}
}
Answer::from(out)
}
}
fn extract_num(line: &str, pos: usize) -> u64 {
todo!()
}

View file

@ -11,7 +11,7 @@ fn main() {
let Ok(data) = load_actual(2023, 3)
else { return; };
let result = aoc2023::day03::Day03.part_1(&data);
let result = aoc2023::day03::Day03.part_2(&data);
let elapsed = now.elapsed();