From d36e8924c0b1a17fc9ea04caf3d42ae1f5596d2c Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Fri, 9 Dec 2022 16:39:58 +0100 Subject: [PATCH] Simplification --- src/day09.rs | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/day09.rs b/src/day09.rs index 193d7cb..0fedd3c 100644 --- a/src/day09.rs +++ b/src/day09.rs @@ -48,24 +48,17 @@ pub fn nb_positions_visited_by_tail(movements: &[Movement]) -> u // 2) Move the rest of the rope. for i in (0..N-1).rev() { let target = rope[i+1]; - let mut node = rope[i]; + let node = &mut rope[i]; - let (dx, dy): (i32, i32) = (node.0 - target.0, node.1 - target.1); - let (dx_abs, dy_abs) = (dx.abs(), dy.abs()); + let (dx, dy): (i32, i32) = (target.0 - node.0, target.1 - node.1); - if dx_abs == 2 && dy_abs == 2 { - node = (target.0 + dx.signum(), target.1 + dy.signum()); - } else if dx_abs >= 2 { - node = (target.0 + dx.signum(), target.1); - } else if dy_abs >= 2 { - node = (target.0, target.1 + dy.signum()); + if dx.abs() >= 2 || dy.abs() >= 2 { + node.0 += dx.signum(); + node.1 += dy.signum(); + if i == 0 { + visited.insert(*node); + } } - - if i == 0 && node != rope[i] { - visited.insert(node); - } - - rope[i] = node; } } }; -- 2.45.2