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());
            }
        }
Exemplo n.º 3
0
        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();
            }
        }