@@ -82,7 +82,7 @@ unsafe fn vmod104976(a: __m256i) -> __m256i {
8282 _mm256_sub_epi32 ( a, c)
8383}
8484
85- static mut DONE : [ [ u16 ; 8 ] ; 104976 ] = [ [ 0u16 ; 8 ] ; SEQUENCES ] ;
85+ static mut DONE : [ [ u16 ; 104976 ] ; 8 ] = [ [ 0u16 ; SEQUENCES ] ; 8 ] ;
8686
8787#[ aoc( day22, part2) ]
8888pub fn part2 ( s : & str ) -> i32 {
@@ -91,7 +91,9 @@ pub fn part2(s: &str) -> i32 {
9191 let mut sequences = [ 0 ; SEQUENCES ] ;
9292 let done = unsafe { & mut DONE } ;
9393
94- done. fill ( [ 0 ; 8 ] ) ;
94+ for j in 0 ..8 {
95+ done[ j] . fill ( 0 ) ;
96+ }
9597
9698 let mut i = 0 ;
9799 let mut monky = 1 ;
@@ -164,67 +166,67 @@ pub fn part2(s: &str) -> i32 {
164166
165167 let diff_i = _mm256_extract_epi32 :: < 0 > ( diffs) as usize ;
166168 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
167- if done[ diff_i ] [ 0 ] != monky + 0 {
169+ if done[ 0 ] [ diff_i ] != monky + 0 {
168170 let price = _mm256_extract_epi32 :: < 0 > ( price) ;
169171 sequences[ diff_i] += price;
170172
171- done[ diff_i ] [ 0 ] = monky + 0 ;
173+ done[ 0 ] [ diff_i ] = monky + 0 ;
172174 }
173175 let diff_i = _mm256_extract_epi32 :: < 1 > ( diffs) as usize ;
174176 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
175- if done[ diff_i ] [ 1 ] != monky + 1 {
177+ if done[ 1 ] [ diff_i ] != monky + 1 {
176178 let price = _mm256_extract_epi32 :: < 1 > ( price) ;
177179 sequences[ diff_i] += price;
178180
179- done[ diff_i ] [ 1 ] = monky + 1 ;
181+ done[ 1 ] [ diff_i ] = monky + 1 ;
180182 }
181183 let diff_i = _mm256_extract_epi32 :: < 2 > ( diffs) as usize ;
182184 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
183- if done[ diff_i ] [ 2 ] != monky + 2 {
185+ if done[ 2 ] [ diff_i ] != monky + 2 {
184186 let price = _mm256_extract_epi32 :: < 2 > ( price) ;
185187 sequences[ diff_i] += price;
186188
187- done[ diff_i ] [ 2 ] = monky + 2 ;
189+ done[ 2 ] [ diff_i ] = monky + 2 ;
188190 }
189191 let diff_i = _mm256_extract_epi32 :: < 3 > ( diffs) as usize ;
190192 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
191- if done[ diff_i ] [ 3 ] != monky + 3 {
193+ if done[ 3 ] [ diff_i ] != monky + 3 {
192194 let price = _mm256_extract_epi32 :: < 3 > ( price) ;
193195 sequences[ diff_i] += price;
194196
195- done[ diff_i ] [ 3 ] = monky + 3 ;
197+ done[ 3 ] [ diff_i ] = monky + 3 ;
196198 }
197199 let diff_i = _mm256_extract_epi32 :: < 4 > ( diffs) as usize ;
198200 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
199- if done[ diff_i ] [ 4 ] != monky + 4 {
201+ if done[ 4 ] [ diff_i ] != monky + 4 {
200202 let price = _mm256_extract_epi32 :: < 4 > ( price) ;
201203 sequences[ diff_i] += price;
202204
203- done[ diff_i ] [ 4 ] = monky + 4 ;
205+ done[ 4 ] [ diff_i ] = monky + 4 ;
204206 }
205207 let diff_i = _mm256_extract_epi32 :: < 5 > ( diffs) as usize ;
206208 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
207- if done[ diff_i ] [ 5 ] != monky + 5 {
209+ if done[ 5 ] [ diff_i ] != monky + 5 {
208210 let price = _mm256_extract_epi32 :: < 5 > ( price) ;
209211 sequences[ diff_i] += price;
210212
211- done[ diff_i ] [ 5 ] = monky + 5 ;
213+ done[ 5 ] [ diff_i ] = monky + 5 ;
212214 }
213215 let diff_i = _mm256_extract_epi32 :: < 6 > ( diffs) as usize ;
214216 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
215- if done[ diff_i ] [ 6 ] != monky + 6 {
217+ if done[ 6 ] [ diff_i ] != monky + 6 {
216218 let price = _mm256_extract_epi32 :: < 6 > ( price) ;
217219 sequences[ diff_i] += price;
218220
219- done[ diff_i ] [ 6 ] = monky + 6 ;
221+ done[ 6 ] [ diff_i ] = monky + 6 ;
220222 }
221223 let diff_i = _mm256_extract_epi32 :: < 7 > ( diffs) as usize ;
222224 std:: hint:: assert_unchecked ( diff_i < SEQUENCES ) ;
223- if done[ diff_i ] [ 7 ] != monky + 7 {
225+ if done[ 7 ] [ diff_i ] != monky + 7 {
224226 let price = _mm256_extract_epi32 :: < 7 > ( price) ;
225227 sequences[ diff_i] += price;
226228
227- done[ diff_i ] [ 7 ] = monky + 7 ;
229+ done[ 7 ] [ diff_i ] = monky + 7 ;
228230 }
229231
230232 prev = price;
0 commit comments