Skip to content

Commit 7ef9800

Browse files
committed
Revert "Is this even faster?"
This reverts commit 15a5430.
1 parent 15a5430 commit 7ef9800

File tree

1 file changed

+31
-23
lines changed

1 file changed

+31
-23
lines changed

src/day23.rs

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,53 @@ const MAX_C: usize = 13;
1515
pub fn part1(s: &str) -> u64 {
1616
let s = s.as_bytes();
1717

18-
let mut g = BitArray::<[u64; BAL]>::default();
19-
20-
let mut connections = heapless::Vec::<(u16, u16), 3380>::new();
21-
18+
let mut connections = [const { heapless::Vec::<u16, 16>::new() }; MAX];
2219
unsafe {
2320
let mut i = 0;
2421
while i < s.len() {
2522
let cp1 =
2623
(s.get_unchecked(i) - b'a') as u16 * 26 + (s.get_unchecked(i + 1) - b'a') as u16;
2724
let cp2 = (s.get_unchecked(i + 3) - b'a') as u16 * 26
2825
+ (s.get_unchecked(i + 4) - b'a') as u16;
26+
let cp1 = (cp1 + T_START_REM) % MAX as u16;
27+
let cp2 = (cp2 + T_START_REM) % MAX as u16;
2928

30-
connections.push_unchecked((cp1, cp2));
31-
g.set(cp2 as usize * MAX + cp1 as usize, true);
32-
g.set(cp1 as usize * MAX + cp2 as usize, true);
29+
connections
30+
.get_unchecked_mut(cp1 as usize)
31+
.push_unchecked(cp2);
32+
connections
33+
.get_unchecked_mut(cp2 as usize)
34+
.push_unchecked(cp1);
3335

3436
i += 6;
3537
}
3638

39+
// println!(
40+
// "{}{}:",
41+
// ((c / 26) as u8 + b'a') as char,
42+
// ((c % 26) as u8 + b'a') as char,
43+
// );
44+
3745
let mut sum = 0;
38-
for (a, b) in connections {
39-
for i in T_START..T_START + 26 {
40-
if *g.get_unchecked(a as usize * MAX + i as usize)
41-
&& *g.get_unchecked(b as usize * MAX + i as usize)
42-
{
43-
println!(
44-
"{}{},{}{},{}{}",
45-
((a / 26) as u8 + b'a') as char,
46-
((a % 26) as u8 + b'a') as char,
47-
((b / 26) as u8 + b'a') as char,
48-
((b % 26) as u8 + b'a') as char,
49-
((i / 26) as u8 + b'a') as char,
50-
((i % 26) as u8 + b'a') as char,
51-
);
52-
53-
sum += 1;
46+
for c in 0..26 {
47+
for con in connections.get_unchecked(c as usize) {
48+
if *con < c {
49+
continue;
50+
}
51+
for concon in connections.get_unchecked(*con as usize) {
52+
if *concon < *con {
53+
continue;
54+
}
55+
for conconcon in connections.get_unchecked(*concon as usize) {
56+
if *conconcon == c {
57+
sum += 1;
58+
break;
59+
}
60+
}
5461
}
5562
}
5663
}
64+
5765
sum
5866
}
5967
}

0 commit comments

Comments
 (0)