public static void DoTask1() { Console.WriteLine("Task 1"); var bagStrings = File.ReadAllLines("input.txt"); var bagRuleParser = new BagRuleParser(); BagRule[] parsedBagRules = bagStrings .Select(bagRuleParser.Parse) .ToArray() !; var shinyGoldBagColor = new Color("shiny gold"); int result = parsedBagRules.Aggregate( 0, (acc, r) => CanHoldBagColor( parsedBagRules, r, shinyGoldBagColor ) > 0 ? acc + 1 : acc ); Console.WriteLine($"Amount: {result}"); }
static void Main(string[] args) { var rules = File.ReadAllLines("input.txt"); var parser = new BagRuleParser(); var parsedRules = parser.Parse(rules); Console.WriteLine(new BagRuleEvaluator(parsedRules).CountBagsWithAtLeastOne("shiny gold")); Console.WriteLine(new BagCalculator(parsedRules).CountBags("shiny gold")); }
public static void DoTask2() { Console.WriteLine("Task 2"); var bagStrings = File.ReadAllLines("input.txt"); var bagRuleParser = new BagRuleParser(); IReadOnlyDictionary <Color, BagRule> parsedBagRules = bagStrings .Select(bagRuleParser.Parse) .Where(r => r != null) .ToDictionary(r => r !.BagColor) !; var shinyGoldBagColor = new Color("shiny gold"); var rule = parsedBagRules[shinyGoldBagColor] !; int result = CountContainedBags(parsedBagRules, rule); Console.WriteLine($"Amount: {result}"); }