From 36400e5636773f552c513f2972f16cf7094aa2fb Mon Sep 17 00:00:00 2001 From: "D. Scott Boggs" Date: Sun, 3 Dec 2023 06:55:58 -0500 Subject: [PATCH] Day 2: make proximity check more generically applicable --- day3/src/main.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/day3/src/main.rs b/day3/src/main.rs index 9e89422..31ee0b7 100644 --- a/day3/src/main.rs +++ b/day3/src/main.rs @@ -71,7 +71,7 @@ impl Number { } numbers } - fn is_part(&self, grid: Grid) -> bool { + fn proximity_check(&self, grid: Grid, check: impl Fn(char, (usize, usize)) -> bool) -> bool { for digit_index in self.location.clone() { for xoff in [-1_i32, 0, 1] { for yoff in [-1_i32, 0, 1] { @@ -98,7 +98,7 @@ impl Number { .unwrap_or_else(|_| panic!("bad xoff {xoff} at digit index {digit_index}")); let x = digit_index.min(line.len() - 1); let chr = line[x]; - if chr != '.' && !chr.is_ascii_digit() { + if check(chr, (x, y)) { return true; } } @@ -106,4 +106,7 @@ impl Number { } false } + fn is_part(&self, grid: Grid) -> bool { + self.proximity_check(grid, |chr, _| chr != '.' && !chr.is_ascii_digit()) + } }