Browse Source

day 7 part 2 solution (yay recursion)

main
Colin McMillen 3 years ago
parent
commit
314eaa841a
  1. 26
      2020/Day07.cs

26
2020/Day07.cs

@ -64,6 +64,16 @@ namespace AdventOfCode {
}
}
static int CountBags(List<Contains> rules, string target) {
int total = 1;
foreach (Contains rule in rules) {
if (rule.Outer == target) {
total += rule.Count * CountBags(rules, rule.Inner);
}
}
return total;
}
static int Part1() {
List<Contains> contains = ParseRules(File.ReadAllLines(Util.RootDir + "day07.txt"));
return ComputePart1(contains);
@ -71,7 +81,7 @@ namespace AdventOfCode {
static int Part2() {
List<Contains> contains = ParseRules(File.ReadAllLines(Util.RootDir + "day07.txt"));
return -1;
return CountBags(contains, "shiny gold") - 1;
}
[Fact]
@ -88,9 +98,19 @@ faded blue bags contain no other bags.
dotted black bags contain no other bags.".Split('\n');
Assert.Equal(4, ComputePart1(ParseRules(example)));
Assert.Equal(213, Part1());
Assert.Equal(-1, Part2());
string[] example2 =
@"shiny gold bags contain 2 dark red bags.
dark red bags contain 2 dark orange bags.
dark orange bags contain 2 dark yellow bags.
dark yellow bags contain 2 dark green bags.
dark green bags contain 2 dark blue bags.
dark blue bags contain 2 dark violet bags.
dark violet bags contain no other bags.".Split('\n');
Assert.Equal(127, CountBags(ParseRules(example2), "shiny gold"));
Assert.Equal(38426, Part2());
}
}
}
Loading…
Cancel
Save