From 8354241bbd0b55f938c698c72d3f5d37266fd3fb Mon Sep 17 00:00:00 2001 From: Ishan Jain Date: Fri, 9 Dec 2022 19:41:21 +0530 Subject: [PATCH] Optimized day 9 part 2 by breakinng out early if a knot doesn't move --- src/main.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 7942ba6..269e367 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,7 +51,7 @@ fn solution(input: Vec) -> usize { let mut set: HashSet<(i32, i32)> = HashSet::with_capacity(3000); for mmove in input { - let (steps, (dsxh, dsyh)): (u8, (i32, i32)) = match mmove { + let (steps, (dsxh, dsyh)) = match mmove { Move::R(v) => (v, (1, 0)), Move::L(v) => (v, (-1, 0)), Move::U(v) => (v, (0, -1)), @@ -65,7 +65,11 @@ fn solution(input: Vec) -> usize { // One by one, Updated position of each knot for i in 1..10 { - locs[i] = move_tail(locs[i - 1], locs[i]); + let loci = move_tail(locs[i - 1], locs[i]); + if loci == locs[i] { + break; + } + locs[i] = loci; } set.insert(locs[9]);