Skip to content

Commit b1cbdfe

Browse files
committed
Only check ones
1 parent c44d014 commit b1cbdfe

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

src/day25.rs

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,41 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
4242
),
4343
);
4444

45-
let other = if is_key { &holes } else { &keys };
46-
for o in other {
47-
let collisions = _mm256_cmpeq_epi8(d, *o);
48-
let collisions = _mm256_movemask_epi8(collisions);
49-
sum += (collisions == 0) as u64;
50-
}
51-
let d = _mm256_and_si256(d, _mm256_set1_epi8(KEPT_BITS));
52-
let d = _mm256_or_si256(
53-
d,
54-
_mm256_setr_epi8(
55-
0, 0, 0, 0, 0, -1, //
56-
0, 0, 0, 0, 0, -1, //
57-
0, 0, 0, 0, 0, -1, //
58-
0, 0, 0, 0, 0, -1, //
59-
0, 0, 0, 0, 0, -1, -1, -1,
60-
),
61-
);
62-
6345
if is_key {
46+
for o in &holes {
47+
let collisions = _mm256_cmpeq_epi8(d, *o);
48+
let collisions = _mm256_movemask_epi8(collisions);
49+
sum += (collisions == 0) as u64;
50+
}
51+
let d = _mm256_and_si256(d, _mm256_set1_epi8(KEPT_BITS));
52+
let d = _mm256_or_si256(
53+
d,
54+
_mm256_setr_epi8(
55+
0, 0, 0, 0, 0, -1, //
56+
0, 0, 0, 0, 0, -1, //
57+
0, 0, 0, 0, 0, -1, //
58+
0, 0, 0, 0, 0, -1, //
59+
0, 0, 0, 0, 0, -1, -1, -1,
60+
),
61+
);
6462
keys.push_unchecked(d);
6563
} else {
64+
for o in &keys {
65+
let collisions = _mm256_cmpeq_epi8(d, *o);
66+
let collisions = _mm256_movemask_epi8(collisions);
67+
sum += (collisions == 0) as u64;
68+
}
69+
let d = _mm256_and_si256(d, _mm256_set1_epi8(KEPT_BITS));
70+
let d = _mm256_or_si256(
71+
d,
72+
_mm256_setr_epi8(
73+
0, 0, 0, 0, 0, -1, //
74+
0, 0, 0, 0, 0, -1, //
75+
0, 0, 0, 0, 0, -1, //
76+
0, 0, 0, 0, 0, -1, //
77+
0, 0, 0, 0, 0, -1, -1, -1,
78+
),
79+
);
6680
holes.push_unchecked(d);
6781
}
6882

0 commit comments

Comments
 (0)