From adfbbf1b0a91211ce6cf5e3fe26736573c8b750d Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Wed, 20 Sep 2023 13:22:48 -0400 Subject: [PATCH] 2015 day 17 --- AOC.Test/Test2015.cs | 1 + AOC2015/Day17.cs | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/AOC.Test/Test2015.cs b/AOC.Test/Test2015.cs index a730cf5..7a2ecf3 100644 --- a/AOC.Test/Test2015.cs +++ b/AOC.Test/Test2015.cs @@ -22,6 +22,7 @@ public class Test2015 [DataRow(typeof(Day14), "2655", "1059")] [DataRow(typeof(Day15), "222870", "117936")] [DataRow(typeof(Day16), "103", "405")] + [DataRow(typeof(Day17), "1304", "18")] public void CheckAllDays(Type dayType, string part1, string part2) { Common.CheckDay(dayType, part1, part2); diff --git a/AOC2015/Day17.cs b/AOC2015/Day17.cs index 54df631..83ac83b 100644 --- a/AOC2015/Day17.cs +++ b/AOC2015/Day17.cs @@ -5,15 +5,26 @@ namespace AOC2015; /// public sealed class Day17 : Day { + private List? _containers; + private IEnumerable>? _combinations; + public Day17() : base(2015, 17, "No Such Thing as Too Much") { } public override void ProcessInput() { + _containers = Input.Select(int.Parse).ToList(); + _combinations = Enumerable.Range(1, (1 << _containers.Count) - 1) + .Select(i => _containers.Where((_, index) => ((1 << index) & i) != 0).ToList()); } - public override object Part1() => ""; + public override object Part1() => _combinations!.Count(c => c.Sum() == 150); - public override object Part2() => ""; + public override object Part2() + { + var successfulCombinations = _combinations!.Where(c => c.Sum() == 150).ToList(); + var minCount = successfulCombinations.Min(c => c.Count); + return successfulCombinations.Count(c => c.Count == minCount); + } }