public int TestBoard(ISuggestionStrategy strategy, Board board, Board[] allBoards, IDictionary <string, int> itemCounts) { Item[] filledItems = new Item[SuperMarioWiiConstants.ItemsPerBoard]; int suggestion = 0; while (allBoards.Where(x => x.Matches(filledItems)).Count() > 1) { var suggestionId = strategy.SuggestNextItemPosition(allBoards, filledItems); suggestion++; if (suggestionId != null) { var item = board[suggestionId.Value]; if (!itemCounts.ContainsKey(item.Name)) { itemCounts.Add(item.Name, 0); } itemCounts[item.Name]++; filledItems[suggestionId.Value] = item; } } Assert.False(filledItems.Where(i => i == Item.Bowser).Count() > 1, "Lost because found two Bowsers"); Assert.False((filledItems.Where(i => i == Item.MiniBowser).Count() > 1), "Lost because found two MiniBowsers"); var solutions = allBoards.Where(x => x.Matches(filledItems)).ToArray(); Assert.Single(solutions); return(suggestion); }
public void FocusBestPosition() { var res = strat.SuggestNextItemPosition(allBoards, itemInformations); if (res == null) { return; } focusedItem = res.Value; }