Skip to content

Commit 2cd3f2e

Browse files
committed
Better loop design
1 parent 0f62a2a commit 2cd3f2e

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

src/day25.rs

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@ pub fn part1(s: &str) -> u64 {
88
unsafe { part1_inner(s) }
99
}
1010

11-
const DS: usize = 6 * 7 + 1;
11+
#[cfg(not(test))]
12+
const SIZE: usize = 500;
13+
#[cfg(test)]
14+
const SIZE: usize = 5;
15+
16+
const DS: usize = 7 * 6 + 1;
1217

1318
#[inline(always)]
1419
unsafe fn part1_inner(s: &[u8]) -> u64 {
@@ -17,8 +22,8 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
1722
let mut keys = heapless::Vec::<u16, 512>::new();
1823
let mut holes = heapless::Vec::<u16, 512>::new();
1924

20-
let mut i = 0;
21-
while i < s.len() {
25+
for i in 0..SIZE {
26+
let i = i * DS;
2227
let is_key = *s.get_unchecked(i) == b'.';
2328

2429
let d = s
@@ -61,27 +66,13 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
6166
);
6267
let collisions = _mm256_movemask_epi8(collisions);
6368
sum += (collisions == 0) as u64;
64-
65-
// let mut fd = [0u8; 256 / 8];
66-
// fd.as_mut_ptr().cast::<__m256i>().write_unaligned(d);
67-
// println!("{:?}", String::from_utf8_lossy(&fd));
68-
// let mut fo = [0u8; 256 / 8];
69-
// fo.as_mut_ptr().cast::<__m256i>().write_unaligned(o);
70-
// println!("{:?}", String::from_utf8_lossy(&fo));
71-
// let mut fsum = [0u8; 256 / 8];
72-
// fsum.as_mut_ptr()
73-
// .cast::<__m256i>()
74-
// .write_unaligned(collisions);
75-
// println!("{:?}", &fsum);
7669
}
7770

7871
if is_key {
7972
keys.push_unchecked(i as u16);
8073
} else {
8174
holes.push_unchecked(i as u16);
8275
}
83-
84-
i += DS;
8576
}
8677

8778
sum

0 commit comments

Comments
 (0)