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

  • CameronDevOPM
    link
    fedilink
    arrow-up
    2
    ·
    3 days ago

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