namespace AOC2015; /// /// Day 17: /// public sealed class Day17() : Day(2015, 17, "No Such Thing as Too Much") { private List? _containers; private IEnumerable>? _combinations; 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() => _combinations!.Count(c => c.Sum() == 150); 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); } }