let n_digits = value.ilog10() + 1;
if n_digits % 2 == 0 {
let p = 10_u64.pow(n_digits / 2);
- return Some((value / p, value % p));
+ Some((value / p, value % p))
}
else {
- return None;
+ None
}
}
let tmp = count_stones(memo, 1, blinks - 1);
memo.insert((value, blinks), tmp);
}
+ else if let Some((r, l)) = split_in_two(value) {
+ let tmp = count_stones(memo, r, blinks - 1) + count_stones(memo, l, blinks - 1);
+ memo.insert((value, blinks), tmp);
+ }
else {
- if let Some((r, l)) = split_in_two(value) {
- let tmp = count_stones(memo, r, blinks - 1) + count_stones(memo, l, blinks - 1);
- memo.insert((value, blinks), tmp);
- }
- else {
- let tmp = count_stones(memo, value * 2024, blinks - 1);
- memo.insert((value, blinks), tmp);
- }
+ let tmp = count_stones(memo, value * 2024, blinks - 1);
+ memo.insert((value, blinks), tmp);
}
}
*memo.get(&(value, blinks)).unwrap()