private static Variant CreateNewVariant(Variant variant, Pile selectedPile, Potter aBook) { var newPile = new Pile(selectedPile.Books); newPile.Add(aBook); var newVariant = new Variant(variant.Piles.Where(p => p != selectedPile)); newVariant.Add(newPile); return newVariant; }
public Variant SortBooks(Dictionary<Potter, int> notYetSorted, Variant sortedPerDiscount) { var newPile = new Pile(notYetSorted.Select(b => b.Key)); var remain = notYetSorted.Where(b => b.Value > 1).ToDictionary(b => b.Key, b => b.Value - 1); sortedPerDiscount.Add(newPile); return remain.Count > 0 ? SortBooks(remain, sortedPerDiscount) : sortedPerDiscount; }
public void Add(Pile newPile) { _piles.Add(newPile); UpdateHashes(); }