public (Disc disc, int targetWeight) GetUnbalancedChild() { var groups = ChildDiscs.GroupBy(x => x.GetTotalWeight()); var targetWeight = groups.First(x => x.Count() > 1).Key; var unbalancedChild = groups.First(x => x.Count() == 1).First(); return(unbalancedChild, targetWeight); }
public int GetTotalWeight() { var childSum = ChildDiscs.Sum(x => x.GetTotalWeight()); return(childSum + Weight); }
public bool IsBalanced() { var groups = ChildDiscs.GroupBy(x => x.GetTotalWeight()); return(groups.Count() == 1); }
public void AddChildDiscs(IEnumerable <Disc> discs) { ChildDiscs = ChildNames.Select(x => discs.First(y => y.Name == x)).ToList(); ChildDiscs.ForEach(x => x.Parent = this); }