Compare commits
2 commits
188d490e8e
...
ef970ed47a
| Author | SHA1 | Date | |
|---|---|---|---|
| ef970ed47a | |||
| f0dc93b0bb |
1 changed files with 2 additions and 18 deletions
|
|
@ -50,31 +50,15 @@ fn get_num_digits(num: &u64) -> usize {
|
|||
digits
|
||||
}
|
||||
|
||||
fn get_nth_digit(num: &u64, n: usize) -> u64 {
|
||||
let mut num = *num;
|
||||
for _ in 0..n {
|
||||
num /= 10;
|
||||
}
|
||||
num % 10
|
||||
}
|
||||
|
||||
fn is_repeated_twice(num: &u64) -> bool {
|
||||
let num_digits = get_num_digits(num);
|
||||
if !num_digits.is_multiple_of(2) {
|
||||
return false;
|
||||
}
|
||||
let half = num_digits / 2;
|
||||
let mask = 10_u64.pow(half as u32);
|
||||
|
||||
for (right, left) in (0..half).zip(half..num_digits) {
|
||||
let ln = get_nth_digit(num, left);
|
||||
let rn = get_nth_digit(num, right);
|
||||
|
||||
if ln != rn {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
true
|
||||
*num / mask == *num % mask
|
||||
}
|
||||
|
||||
fn part1(input: &str) -> Result<u64> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue