Day 12: Christmas Tree Farm
Megathread guidelines
- Keep top level comments as only solutions, if you want to say something other than a solution put it in a new post. (replies to comments can be whatever)
- You can send code in code blocks by using three backticks, the code, and then three backticks or use something such as https://topaz.github.io/paste/ if you prefer sending it through a URL
FAQ
- What is this?: Here is a post with a large amount of details: https://programming.dev/post/6637268
- Where do I participate?: https://adventofcode.com/
- Is there a leaderboard for the community?: We have a programming.dev leaderboard with the info on how to join in this post: https://programming.dev/post/6631465


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