Optimized day 9 part 2 by breakinng out early if a knot doesn't move
This commit is contained in:
parent
8b91005736
commit
8354241bbd
|
@ -51,7 +51,7 @@ fn solution(input: Vec<Move>) -> usize {
|
||||||
let mut set: HashSet<(i32, i32)> = HashSet::with_capacity(3000);
|
let mut set: HashSet<(i32, i32)> = HashSet::with_capacity(3000);
|
||||||
|
|
||||||
for mmove in input {
|
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::R(v) => (v, (1, 0)),
|
||||||
Move::L(v) => (v, (-1, 0)),
|
Move::L(v) => (v, (-1, 0)),
|
||||||
Move::U(v) => (v, (0, -1)),
|
Move::U(v) => (v, (0, -1)),
|
||||||
|
@ -65,7 +65,11 @@ fn solution(input: Vec<Move>) -> usize {
|
||||||
|
|
||||||
// One by one, Updated position of each knot
|
// One by one, Updated position of each knot
|
||||||
for i in 1..10 {
|
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]);
|
set.insert(locs[9]);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user