@@ -4,11 +4,11 @@ use tinyvec::ArrayVec;
44use crate :: memchr_inv:: OneInv ;
55
66#[ cfg( not( test) ) ]
7- const SIZE : i32 = 50 ;
7+ const SIZE : i16 = 50 ;
88#[ cfg( test) ]
9- const SIZE : i32 = 12 ;
9+ const SIZE : i16 = 12 ;
1010
11- const SIZE1 : i32 = SIZE + 1 ;
11+ const SIZE1 : i16 = SIZE + 1 ;
1212
1313/// Has the `SIZE` lsb set
1414const FIELD_SIZE : u64 = 2u64 . pow ( SIZE as u32 ) - 1 ;
@@ -21,13 +21,6 @@ pub fn part1(s: &str) -> u32 {
2121}
2222
2323unsafe fn part1_inner ( s : & str ) -> u32 {
24- #[ cfg( not( test) ) ]
25- const SIZE : i16 = 50 ;
26- #[ cfg( test) ]
27- const SIZE : i16 = 12 ;
28-
29- const SIZE1 : i16 = SIZE + 1 ;
30-
3124 let s = s. as_bytes ( ) ;
3225
3326 let mut masts: [ ArrayVec < [ ( i16 , i16 ) ; 3 ] > ; FREQ_RANGE ] =
@@ -105,8 +98,8 @@ pub fn part2(s: &str) -> u64 {
10598fn part2_inner ( s : & str ) -> u64 {
10699 let s = s. as_bytes ( ) ;
107100
108- let mut masts: [ ArrayVec < [ i32 ; 4 ] > ; FREQ_RANGE ] =
109- [ ArrayVec :: from_array_empty ( [ 0 ; 4 ] ) ; FREQ_RANGE ] ;
101+ let mut masts: [ ArrayVec < [ i16 ; 3 ] > ; FREQ_RANGE ] =
102+ [ ArrayVec :: from_array_empty ( [ 0 ; 3 ] ) ; FREQ_RANGE ] ;
110103
111104 let mut antinodes = [ false ; ( SIZE * SIZE ) as usize ] ;
112105 let mut total_antinotedes = 0 ;
@@ -120,7 +113,7 @@ fn part2_inner(s: &str) -> u64 {
120113 continue ;
121114 }
122115 let f = s[ i] - b'0' ;
123- let i = i as i32 ;
116+ let i = i as i16 ;
124117
125118 let new_x = i % SIZE1 ;
126119 let new_y = i / SIZE1 ;
@@ -129,7 +122,7 @@ fn part2_inner(s: &str) -> u64 {
129122 let mast_y = mast_i / SIZE1 ;
130123
131124 let o_diff_x = mast_x - new_x;
132- let o_diff_y = ( new_y - mast_y) . abs ( ) as i32 ;
125+ let o_diff_y = new_y - mast_y;
133126
134127 for k in 0 .. {
135128 let diff_x = o_diff_x * k;
@@ -158,7 +151,7 @@ fn part2_inner(s: &str) -> u64 {
158151 }
159152 }
160153
161- masts[ f as usize ] . push ( i) ;
154+ masts[ f as usize ] . try_push ( i) ;
162155 }
163156
164157 total_antinotedes
0 commit comments