From f18e7797edf8240569d0104e16dcf5fca75fbf76 Mon Sep 17 00:00:00 2001 From: Johannes Date: Thu, 27 Jun 2024 21:53:21 +0200 Subject: [PATCH] Day 17 part 1. --- src/day17.rs | 43 +++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 44 insertions(+) create mode 100644 src/day17.rs diff --git a/src/day17.rs b/src/day17.rs new file mode 100644 index 0000000..0367614 --- /dev/null +++ b/src/day17.rs @@ -0,0 +1,43 @@ +use aoc_runner_derive::{aoc, aoc_generator}; + +#[aoc_generator(day17)] +fn parse(input: &str) -> Vec { + input.lines().map(|line| line.parse().unwrap()).collect() +} + +#[aoc(day17, part1)] +fn part1(input: &[u32]) -> usize { + bar(input, 150) +} + +fn bar(containers: &[u32], target: u32) -> usize { + baz(containers, target, 0) +} + +fn baz(containers: &[u32], target: u32, filled: u32) -> usize { + if filled > target { + return 0; + } else if filled == target { + return 1; + } else if containers.len() == 0 { + return 0; + } + + baz(&containers[1..], target, filled + containers[0]) + + baz(&containers[1..], target, filled) +} + +#[aoc(day17, part2)] +fn part2(_input: &[u32]) -> usize { + 0 +} + +#[cfg(test)] +mod test { + use crate::day17::bar; + + #[test] + fn part1() { + assert_eq!(bar(&[20, 15, 10, 5, 5], 25), 4) + } +} diff --git a/src/lib.rs b/src/lib.rs index 7e780e4..a6a81d4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,5 +9,6 @@ mod day13; mod day14; mod day15; mod day16; +mod day17; aoc_lib! { year = 2015 }