private bool BagInChildTypes(Bag bag, LuggageRule rule) { foreach (Bag btype in rule.childTypes) { if (btype == bag) { return(true); } } return(false); }
private List <LuggageRule> GetLuggageRules(string part) { string[] rules = InputParser.ReadToStringArr(Day, part); List <LuggageRule> LugRules = new List <LuggageRule>(); foreach (string rule in rules) { LuggageRule r = new LuggageRule(rule); LugRules.Add(r); } return(LugRules); }
private List <Bag> CountContainedBags(Bag bag, List <LuggageRule> rules) { List <Bag> bags = new List <Bag>(); LuggageRule rule = GetRule(bag, rules); if (rule.childTypes.Count > 0) { foreach ((Bag bg, int ct) in rule.children) { for (int i = 0; i < ct; i++) { bags.Add(bg); bags.AddRange(CountContainedBags(bg, rules)); } } } return(bags); }