Implement 2025 - Day 2 - Part 2
This commit is contained in:
34
2025/02.rs
34
2025/02.rs
@@ -17,18 +17,34 @@ fn main() {
|
|||||||
let mut result = 0;
|
let mut result = 0;
|
||||||
for r in ranges.iter() {
|
for r in ranges.iter() {
|
||||||
for v in r.clone() {
|
for v in r.clone() {
|
||||||
let len = v.ilog10() + 1;
|
let v_len = v.ilog10() + 1;
|
||||||
if len % 2 != 0 {
|
|
||||||
continue;
|
let mut iter = (1..=v_len/2).filter_map(|len| {
|
||||||
}
|
if v_len % len != 0 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
let first_half = v / 10_usize.pow(len/2);
|
let mut seqs = (0..v_len/len).map(|i| {
|
||||||
let second_half = v - (first_half * 10_usize.pow(len/2));
|
let offset = 10_usize.pow(i*len);
|
||||||
|
let mask = 10_usize.pow(len);
|
||||||
|
|
||||||
if first_half == second_half {
|
(v/offset) % mask
|
||||||
|
});
|
||||||
|
|
||||||
|
let first = match seqs.next() {
|
||||||
|
Some(f) => f,
|
||||||
|
None => return None,
|
||||||
|
};
|
||||||
|
|
||||||
|
let invalid = seqs.all(|s| s == first);
|
||||||
|
invalid.then_some((first, len, v_len/len))
|
||||||
|
});
|
||||||
|
|
||||||
|
let first = iter.next();
|
||||||
|
if first.is_some() {
|
||||||
|
println!("{} - {:?}", v, first);
|
||||||
result += v;
|
result += v;
|
||||||
println!("Invalid {} - Halves ({}, {})", v, first_half, second_half);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user