Example #1
0
 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;
 }
Example #2
0
        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;
        }
Example #3
0
 public void Add(Pile newPile)
 {
     _piles.Add(newPile);
     UpdateHashes();
 }