Skip to content

Commit 7e66c68

Browse files
committed
Put monkys together
1 parent a6629b4 commit 7e66c68

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

src/day22.rs

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ unsafe fn vmod104976(a: __m256i) -> __m256i {
8282
_mm256_sub_epi32(a, c)
8383
}
8484

85-
static mut DONE: [[u16; 104976]; 8] = [[0u16; SEQUENCES]; 8];
85+
static mut DONE: [[u16; 8]; 104976] = [[0u16; 8]; SEQUENCES];
8686

8787
#[aoc(day22, part2)]
8888
pub fn part2(s: &str) -> i32 {
@@ -91,9 +91,7 @@ pub fn part2(s: &str) -> i32 {
9191
let mut sequences = [0; SEQUENCES];
9292
let done = unsafe { &mut DONE };
9393

94-
for j in 0..8 {
95-
done[j].fill(0);
96-
}
94+
done.fill([0; 8]);
9795

9896
let mut i = 0;
9997
let mut monky = 1;
@@ -166,67 +164,67 @@ pub fn part2(s: &str) -> i32 {
166164

167165
let diff_i = _mm256_extract_epi32::<0>(diffs) as usize;
168166
std::hint::assert_unchecked(diff_i < SEQUENCES);
169-
if done[0][diff_i] != monky + 0 {
167+
if done[diff_i][0] != monky + 0 {
170168
let price = _mm256_extract_epi32::<0>(price);
171169
sequences[diff_i] += price;
172170

173-
done[0][diff_i] = monky + 0;
171+
done[diff_i][0] = monky + 0;
174172
}
175173
let diff_i = _mm256_extract_epi32::<1>(diffs) as usize;
176174
std::hint::assert_unchecked(diff_i < SEQUENCES);
177-
if done[1][diff_i] != monky + 1 {
175+
if done[diff_i][1] != monky + 1 {
178176
let price = _mm256_extract_epi32::<1>(price);
179177
sequences[diff_i] += price;
180178

181-
done[1][diff_i] = monky + 1;
179+
done[diff_i][1] = monky + 1;
182180
}
183181
let diff_i = _mm256_extract_epi32::<2>(diffs) as usize;
184182
std::hint::assert_unchecked(diff_i < SEQUENCES);
185-
if done[2][diff_i] != monky + 2 {
183+
if done[diff_i][2] != monky + 2 {
186184
let price = _mm256_extract_epi32::<2>(price);
187185
sequences[diff_i] += price;
188186

189-
done[2][diff_i] = monky + 2;
187+
done[diff_i][2] = monky + 2;
190188
}
191189
let diff_i = _mm256_extract_epi32::<3>(diffs) as usize;
192190
std::hint::assert_unchecked(diff_i < SEQUENCES);
193-
if done[3][diff_i] != monky + 3 {
191+
if done[diff_i][3] != monky + 3 {
194192
let price = _mm256_extract_epi32::<3>(price);
195193
sequences[diff_i] += price;
196194

197-
done[3][diff_i] = monky + 3;
195+
done[diff_i][3] = monky + 3;
198196
}
199197
let diff_i = _mm256_extract_epi32::<4>(diffs) as usize;
200198
std::hint::assert_unchecked(diff_i < SEQUENCES);
201-
if done[4][diff_i] != monky + 4 {
199+
if done[diff_i][4] != monky + 4 {
202200
let price = _mm256_extract_epi32::<4>(price);
203201
sequences[diff_i] += price;
204202

205-
done[4][diff_i] = monky + 4;
203+
done[diff_i][4] = monky + 4;
206204
}
207205
let diff_i = _mm256_extract_epi32::<5>(diffs) as usize;
208206
std::hint::assert_unchecked(diff_i < SEQUENCES);
209-
if done[5][diff_i] != monky + 5 {
207+
if done[diff_i][5] != monky + 5 {
210208
let price = _mm256_extract_epi32::<5>(price);
211209
sequences[diff_i] += price;
212210

213-
done[5][diff_i] = monky + 5;
211+
done[diff_i][5] = monky + 5;
214212
}
215213
let diff_i = _mm256_extract_epi32::<6>(diffs) as usize;
216214
std::hint::assert_unchecked(diff_i < SEQUENCES);
217-
if done[6][diff_i] != monky + 6 {
215+
if done[diff_i][6] != monky + 6 {
218216
let price = _mm256_extract_epi32::<6>(price);
219217
sequences[diff_i] += price;
220218

221-
done[6][diff_i] = monky + 6;
219+
done[diff_i][6] = monky + 6;
222220
}
223221
let diff_i = _mm256_extract_epi32::<7>(diffs) as usize;
224222
std::hint::assert_unchecked(diff_i < SEQUENCES);
225-
if done[7][diff_i] != monky + 7 {
223+
if done[diff_i][7] != monky + 7 {
226224
let price = _mm256_extract_epi32::<7>(price);
227225
sequences[diff_i] += price;
228226

229-
done[7][diff_i] = monky + 7;
227+
done[diff_i][7] = monky + 7;
230228
}
231229

232230
prev = price;

0 commit comments

Comments
 (0)