Rust
Its not Christmas, but this one was a gift :D. Merry Christmas all, thanks for everyone who has contributed solutions!
Rest easy little advent bot, your work is done now.
spoiler
struct Tree {
w: u32,
h: u32,
presents: Vec<u32>,
}
fn is_solveable(tree: &Tree) -> bool {
if tree.h * tree.w < tree.presents.iter().sum::<u32>() * 9 {
return false;
}
true
}
#[test]
fn test_y2025_day12_part1() {
let input = include_str!("../../input/2025/day_12.txt");
let parts = input.split("\n\n").collect::<Vec<_>>();
let trees: Vec<Tree> = parts
.last()
.unwrap()
.lines()
.map(|line| {
let parts: (&str, &str) = line.split_once(": ").unwrap();
let [w, h] = parts
.0
.split("x")
.map(u32::from_str)
.map(Result::unwrap)
.collect::<Vec<_>>()[..]
else {
unreachable!()
};
let num_presents = parts
.1
.split(" ")
.map(u32::from_str)
.map(Result::unwrap)
.collect::<Vec<_>>();
Tree {
w,
h,
presents: num_presents,
}
})
.collect();
let mut solvable = 0;
for tree in trees {
if is_solveable(&tree) {
solvable += 1;
}
}
println!("solvable: {}", solvable);
}