public Engine(IList <Item> items) { _items = items; Immutable.Add("Sulfuras, Hand of Ragnaros"); IncreasesInQuality.Add("Aged Brie"); AccelleratesInQuality.Add("Backstage passes"); DegradesFast.Add("Conjured"); _rules = new Dictionary <Func <Item, bool>, Action <Item> > { { i => i.Name.StartsWithAny(IncreasesInQuality) || i.Name.StartsWithAny(AccelleratesInQuality), i => i.Quality = i.Quality + 2 }, { i => i.Name.StartsWithAny(IncreasesInQuality) && i.SellIn < 0, i => i.Quality++ }, { i => i.Name.StartsWithAny(AccelleratesInQuality) && i.SellIn < 11, i => i.Quality++ }, { i => i.Name.StartsWithAny(AccelleratesInQuality) && i.SellIn < 6, i => i.Quality++ }, { i => i.Name.StartsWithAny(AccelleratesInQuality) && i.SellIn < 0, i => i.Quality = 0 }, { i => !IncreasesInQuality.Contains(i.Name) && !AccelleratesInQuality.Contains(i.Name) && i.SellIn < 0, i => i.Quality-- }, { i => i.Name.StartsWithAny(DegradesFast), i => i.Quality-- } }; }