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;
|
||||
|
||||
for (i, line) in lines.iter().enumerate() {
|
||||
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()) }
|
||||
}
|
||||
}
|
||||
|
||||
if nums.len() == 2 {
|
||||
out += nums[0] * nums[1]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Answer::Unimplemented
|
||||
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)
|
||||
else { return; };
|
||||
|
||||
let result = aoc2023::day03::Day03.part_1(&data);
|
||||
let result = aoc2023::day03::Day03.part_2(&data);
|
||||
|
||||
let elapsed = now.elapsed();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue