Example #1
0
 private bool BagInChildTypes(Bag bag, LuggageRule rule)
 {
     foreach (Bag btype in rule.childTypes)
     {
         if (btype == bag)
         {
             return(true);
         }
     }
     return(false);
 }
Example #2
0
        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);
        }
Example #3
0
        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);
        }