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