day 03 part 2
This commit is contained in:
parent
d8816f70d7
commit
cc82236995
2 changed files with 32 additions and 7 deletions
|
|
@ -51,14 +51,39 @@ impl Solution for Day03 {
|
||||||
|
|
||||||
let mut out: u64 = 0;
|
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 (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!()
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ fn main() {
|
||||||
let Ok(data) = load_actual(2023, 3)
|
let Ok(data) = load_actual(2023, 3)
|
||||||
else { return; };
|
else { return; };
|
||||||
|
|
||||||
let result = aoc2023::day03::Day03.part_1(&data);
|
let result = aoc2023::day03::Day03.part_2(&data);
|
||||||
|
|
||||||
let elapsed = now.elapsed();
|
let elapsed = now.elapsed();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue