diff --git a/inputs/2022/2022_07.solution b/inputs/2022/2022_07.solution index bc3a819..b832b2e 100644 --- a/inputs/2022/2022_07.solution +++ b/inputs/2022/2022_07.solution @@ -1,2 +1,2 @@ Part 1: 1243729 -Part 2: ??? +Part 2: 4443914 diff --git a/rs/src/y2022/d07.rs b/rs/src/y2022/d07.rs index 51fd61b..a6055b5 100644 --- a/rs/src/y2022/d07.rs +++ b/rs/src/y2022/d07.rs @@ -113,11 +113,19 @@ pub fn solve(input: String) { } } - let part1 = fs - .dirs() - .into_iter() - .map(|d| d.size()) - .filter(|s| *s <= 100000) - .sum::(); + let dir_sizes = fs.dirs().into_iter().map(|d| d.size()).collect::>(); + + let part1 = dir_sizes.iter().filter(|s| **s <= 100000).sum::(); println!("Part 1: {part1}"); + + let total_available = 70000000; + let required_for_update = 30000000; + let unused = total_available - fs.size(); + let free_at_least = required_for_update - unused; + let part2 = dir_sizes + .into_iter() + .filter(|s| *s >= free_at_least) + .min() + .unwrap(); + println!("Part 2: {part2}"); } diff --git a/sample_inputs/2022/2022_07.solution b/sample_inputs/2022/2022_07.solution index d6d6903..ba010ca 100644 --- a/sample_inputs/2022/2022_07.solution +++ b/sample_inputs/2022/2022_07.solution @@ -1,2 +1,2 @@ Part 1: 95437 -Part 2: ??? +Part 2: 24933642