File tree Expand file tree Collapse file tree 1 file changed +9
-3
lines changed
Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -91,7 +91,13 @@ fn search_part2(target: u64, v: &[NonZero<u64>]) -> bool {
9191 }
9292 }
9393
94- let size = unsafe { NonZero :: new_unchecked ( 10u64 . pow ( last. ilog10 ( ) + 1 ) ) } ;
94+ let size = if last >= 100 {
95+ 1000
96+ } else if last >= 10 {
97+ 100
98+ } else {
99+ 10
100+ } ;
95101 if ( target - last) % size == 0 {
96102 if search_part2 ( ( target - last) / size, rest) {
97103 return true ;
@@ -127,11 +133,11 @@ unsafe fn part2_inner(s: &str) -> u64 {
127133 i += 2 ;
128134
129135 let mut num = 0 ;
130- while * s. get_unchecked ( i) != b'\n' {
136+ while i < s . len ( ) && * s. get_unchecked ( i) != b'\n' {
131137 num *= 10 ;
132138 num += ( * s. get_unchecked ( i) - b'0' ) as u64 ;
133139 i += 1 ;
134- if !s. get_unchecked ( i) . is_ascii_digit ( ) {
140+ if i >= s . len ( ) || !s. get_unchecked ( i) . is_ascii_digit ( ) {
135141 * v. get_unchecked_mut ( v_len) = NonZero :: new_unchecked ( num) ;
136142 v_len += 1 ;
137143 num = 0 ;
You can’t perform that action at this time.
0 commit comments