Implement AoC 2025 #1

Open
leon wants to merge 22 commits from 2025 into main
Showing only changes of commit c40f1c822f - Show all commits

View File

@@ -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); }
}
} }
} }