Skip to content

Commit 5d2a06e

Browse files
committed
Precalc rotate
1 parent 1e2769b commit 5d2a06e

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

src/day23.rs

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ pub fn part1(s: &str) -> u64 {
2121
(s.get_unchecked(i) - b'a') as u16 * 26 + (s.get_unchecked(i + 1) - b'a') as u16;
2222
let cp2 = (s.get_unchecked(i + 3) - b'a') as u16 * 26
2323
+ (s.get_unchecked(i + 4) - b'a') as u16;
24+
let cp1 = (cp1 + T_START_REM) % MAX as u16;
25+
let cp2 = (cp2 + T_START_REM) % MAX as u16;
2426

2527
connections
2628
.get_unchecked_mut(cp1 as usize)
@@ -31,35 +33,35 @@ pub fn part1(s: &str) -> u64 {
3133

3234
i += 6;
3335
}
34-
}
3536

36-
// println!(
37-
// "{}{}:",
38-
// ((c / 26) as u8 + b'a') as char,
39-
// ((c % 26) as u8 + b'a') as char,
40-
// );
41-
42-
let mut sum = 0;
43-
for c in T_START..T_END {
44-
for con in &connections[c as usize] {
45-
if ((*con + T_START_REM) % MAX as u16) < (c + T_START_REM) % MAX as u16 {
46-
continue;
47-
}
48-
for concon in &connections[*con as usize] {
49-
if ((*concon + T_START_REM) % MAX as u16) < (*con + T_START_REM) % MAX as u16 {
37+
// println!(
38+
// "{}{}:",
39+
// ((c / 26) as u8 + b'a') as char,
40+
// ((c % 26) as u8 + b'a') as char,
41+
// );
42+
43+
let mut sum = 0;
44+
for c in 0..26 {
45+
for con in &connections[c as usize] {
46+
if *con < c {
5047
continue;
5148
}
52-
for conconcon in &connections[*concon as usize] {
53-
if *conconcon == c {
54-
sum += 1;
55-
break;
49+
for concon in &connections[*con as usize] {
50+
if *concon < *con {
51+
continue;
52+
}
53+
for conconcon in &connections[*concon as usize] {
54+
if *conconcon == c {
55+
sum += 1;
56+
break;
57+
}
5658
}
5759
}
5860
}
5961
}
60-
}
6162

62-
sum
63+
sum
64+
}
6365
}
6466

6567
static mut SCRATCH: [u8; 16 * 3] = [0; 16 * 3];

0 commit comments

Comments
 (0)