public void SolveTest1() { SudokuBoard board = new SudokuBoard(); board.LoadGame(Resources.test3, GameLoadOptions.SolutionValues); SolutionResults results = board.Solve(); }
public void SolveVeryHard2() { SudokuBoard board = new SudokuBoard(); board.LoadGame(Resources.veryhard2, GameLoadOptions.SolutionValues); try { SolutionResults results = board.Solve(); } catch (Exception ex) { Assert.Fail("Exception occured while solving board: " + ex.ToString()); } }
public void OnGet(bool onlyFoundation, bool allSolutions) { if (allSolutions || onlyFoundation) { this.session.Remove("selectedCapabilities"); this.session.Remove("solutionFilters"); } SolutionFilters.FoundationOnly = onlyFoundation; IList <CapabilitySelection> capabilitySelections = new List <CapabilitySelection>(); // Capability Selection Data var selectedCapabilityString = this.session.GetString("selectedCapabilities"); if (selectedCapabilityString != null && selectedCapabilityString != "") { capabilitySelections = JsonConvert.DeserializeObject <IList <CapabilitySelection> >(selectedCapabilityString); } // Solution Selection Data var solutionFiltersString = this.session.GetString("solutionFilters"); if (solutionFiltersString != null && solutionFiltersString != "") { SolutionFilters = JsonConvert.DeserializeObject <FoundationFilters>(solutionFiltersString); } // Read All Capability List Capabilities = readCapabilities(); // Filter Only Selected Capabilitys var selectedSet = capabilitySelections.Where((cap) => cap.IsSelected); var AllSolutions = readSolutions(); // Build Capability Selection Options CapabilitySelectionOptions = Capabilities.Select((cap) => new CapabilitySelection { ID = cap.ID, IsSelected = selectedSet.Any((sel) => sel.ID == cap.ID) }).ToList(); // initialise selected capabilities and visible solutions SelectedCapabilities = new List <Capability>(); Solutions = AllSolutions; // Filter Solutions by selected capabilities. if (capabilitySelections.Count != 0) { SelectedCapabilities = Capabilities.Where( (cap) => selectedSet.Any((sel) => sel.ID == cap.ID) ).ToList(); SolutionResults = AllSolutions.Select( (sol) => new SolutionResult { solution = sol, matchingCapabilities = SelectedCapabilities.Where( // capabilities that are in the solution, and are selected (cap) => sol.CapabilityIDs.Any((id) => id == cap.ID) ).ToList(), otherCapabilities = Capabilities.Where( // capabilities where it is in the solution, but not selected (cap) => sol.CapabilityIDs.Any(id => id == cap.ID) && !SelectedCapabilities.Any(sel => sel.ID == cap.ID) ).ToList() } ) .Where((sol) => sol.matchingCapabilities.Count > 0) .OrderByDescending((solRes) => solRes.matchingCapabilities.Count) .ToList(); } else { SolutionResults = AllSolutions.Select( (sol) => new SolutionResult { solution = sol, matchingCapabilities = new List <Capability>(), otherCapabilities = Capabilities.Where( (cap) => sol.CapabilityIDs.Any(id => id == cap.ID) ).ToList() } ).ToList(); } // filter-out non-foundation solutions if (SolutionFilters.FoundationOnly) { SolutionResults = SolutionResults.Where((sol) => sol.solution.IsFoundation).ToList(); } }