diff options
author | curly <curly@infernal.garden> | 2023-12-06 11:19:03 -0700 |
---|---|---|
committer | curly <curly@infernal.garden> | 2023-12-06 11:19:03 -0700 |
commit | 1d34093416a4263228c006f3e6b9f4af410b5f88 (patch) | |
tree | 5012ad4f00ed1028c925d59b8b03c80a971f5c4d /src/main.rs | |
parent | f601f4d7c11d03666f67b34eedb024d467c1b0bf (diff) | |
download | aoc23-03-1d34093416a4263228c006f3e6b9f4af410b5f88.tar.gz aoc23-03-1d34093416a4263228c006f3e6b9f4af410b5f88.tar.bz2 aoc23-03-1d34093416a4263228c006f3e6b9f4af410b5f88.zip |
part two
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index 65fb382..df126a7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -82,6 +82,7 @@ fn main() { (-1, 1), ]; let mut outvec = vec![]; + let mut gears = 0; let mut yidx = 0; for y in array { @@ -99,6 +100,7 @@ fn main() { } // Character is a symbol + let mut newgearvec = vec![]; for pos in AROUND { let i = match numarray.get(u32_calc(yidx, pos.0)) { Some(n) => { @@ -114,6 +116,19 @@ fn main() { outvec.push(*i) } + // part two, if also a gear + if i > &-1 && c == '*' { + newgearvec.push(*i); + } + + } + + // process newgearvec + newgearvec.sort(); + newgearvec.dedup(); + if newgearvec.len() == 2 { + println!("{:?}", newgearvec); + gears += numbers[newgearvec[0] as usize] * numbers[newgearvec[1] as usize]; } xidx += 1; @@ -124,7 +139,7 @@ fn main() { // Get only a single of each number and add them all up outvec.sort(); - outvec.dedup_by_key(|i| {*i}); + outvec.dedup(); let outvec: Vec<u32> = outvec.iter().map(|i| { match numbers.get(*i as usize) { Some(n) => *n, @@ -138,7 +153,8 @@ fn main() { final_num += x; } - println!("{}", final_num); + println!("part one:{}", final_num); + println!("part two:{}", gears); } fn u32_calc(x: u32, y: i8) -> usize { |