day(11): factor out ‹count_within›
Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
parent
63d495b175
commit
8e90fd7fe5
1 changed files with 6 additions and 10 deletions
|
@ -17,6 +17,10 @@ struct Day11 {
|
|||
}
|
||||
|
||||
impl Day11 {
|
||||
fn count_within(xs: &HashSet<usize>, min_x: usize, max_x: usize) -> usize {
|
||||
xs.iter().filter(|&&x| min_x < x && x < max_x).count()
|
||||
}
|
||||
|
||||
fn solve(&self, factor: usize) -> usize {
|
||||
let to_add = factor - 1;
|
||||
|
||||
|
@ -31,16 +35,8 @@ impl Day11 {
|
|||
let mut xd = x0.abs_diff(x1);
|
||||
let mut yd = y0.abs_diff(y1);
|
||||
|
||||
let min_x = min(x0, x1);
|
||||
let max_x = max(x0, x1);
|
||||
|
||||
xd += to_add
|
||||
* self
|
||||
.empty_xs
|
||||
.iter()
|
||||
.filter(|&&x| min_x < x && x < max_x)
|
||||
.count();
|
||||
yd += to_add * self.empty_ys.iter().filter(|&&y| y0 < y && y < y1).count();
|
||||
xd += to_add * Self::count_within(&self.empty_xs, min(x0, x1), max(x0, x1));
|
||||
yd += to_add * Self::count_within(&self.empty_ys, y0, y1);
|
||||
|
||||
xd + yd
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue