summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs20
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 {