Skip to content

Commit 1857ba3

Browse files
committed
Speacial case size calc
1 parent 404b2ab commit 1857ba3

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/day7.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff 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;

0 commit comments

Comments
 (0)