diff --git a/aoc2025/src/day02.rs b/aoc2025/src/day02.rs index 3a119df..5b99438 100644 --- a/aoc2025/src/day02.rs +++ b/aoc2025/src/day02.rs @@ -50,15 +50,31 @@ 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); - *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 {