[TWEAK] Day 3 performance

This commit is contained in:
2023-12-03 13:29:58 +01:00
parent fa48e8877a
commit 9ebb5c851a

View File

@@ -64,7 +64,7 @@ impl Day3 {
}
}
fn has_adjacent_symbol(&self, pos: &Coord<usize>, n: &u32) -> bool {
fn has_adjacent_symbol(&self, pos: &Coord<usize>, n: u32) -> bool {
let n_len = Self::number_length(n);
for y in pos.y.checked_sub(1).unwrap_or(0)..pos.y + 2 {
for x in pos.x.checked_sub(1).unwrap_or(0)..pos.x + n_len + 1 {
@@ -86,12 +86,17 @@ impl Day3 {
fn is_adjacent(&self, pos: &Coord<usize>, number: &(Coord<usize>, u32)) -> bool {
return pos.x >= number.0.x.checked_sub(1).unwrap_or(0) && pos.x <= number.0.x + Self::number_length(&number.1) &&
return pos.x >= number.0.x.checked_sub(1).unwrap_or(0) && pos.x <= number.0.x + Self::number_length(number.1) &&
pos.y >= number.0.y.checked_sub(1).unwrap_or(0) && pos.y <= number.0.y + 1
}
fn number_length(n: &u32) -> usize {
n.to_string().len()
fn number_length(n: u32) -> usize {
if n < 10 { 1 }
else if n < 100 { 2 }
else if n < 1000 { 3 }
else if n < 10000 { 4 }
else if n < 100000 { 5 }
else { n.to_string().len() }
}
}
@@ -102,7 +107,7 @@ impl DaySolver for Day3 {
// println!("{:?}", self);
let mut sum = 0u32;
for (pos, n) in &self.numbers {
if self.has_adjacent_symbol(&pos, n) {
if self.has_adjacent_symbol(&pos, n.to_owned()) {
sum += n;
// } else {
// println!("No adjacent symbol for {}", n);