private static int CountParentBags(ColoredBag coloredBag, ISet <ColoredBag> knownBags) { foreach (var bag in coloredBag.ParentBags.Select(relation => relation.Bag)) { knownBags.Add(bag); CountParentBags(bag, knownBags); } return(knownBags.Count); }
private static int CountAmountOfChildBags(ColoredBag bag) { var count = 0; foreach (var relation in bag.ChildBags) { count += relation.Amount; count += CountAmountOfChildBags(relation.ChildBag) * relation.Amount; } return(count); }