/// <summary>
        /// Finds the Largest Unsolved MainBlock. For each PossibleBlock in the MainBlock.PossibleBlock, Clones the Grid and sets the relevant PossibleBlock to be the Mainblock.
        /// Adds all the copied grids to a list and returns the list.
        /// </summary>
        /// <returns></returns>
        public List <Grid> GetGridsWithSetBlocks()
        {
            MainBlock largestUnsolved = GetLargestUnsolvedMainBlock();

            GridPlusSetBlocks = new List <Grid>();
            foreach (PossibleBlock possibleBlock in largestUnsolved.PossibleBlocks)
            {
                Grid          newGrid = _cloneGrid.CloneGrid();
                PossibleBlock toTry   = GetEquivalentPossibleBlock(possibleBlock, newGrid);
                toTry.SetAsMainBlock();
                GridPlusSetBlocks.Add(newGrid);
            }
            return(GridPlusSetBlocks);
        }
Exemple #2
0
 /// <summary>
 /// Loops through all MainBlocks. Removes invalid PossibleBlocks. If there
 /// </summary>
 public void RemoveImposBlocksAndsetCertain()
 {
     foreach (MainBlock MBlock in Grid.Blocks)
     {
         RemoveImpossibleBlocks(MBlock);
         if (MBlock.PossibleBlocks.Count == 1)
         {
             PossibleBlock pBlock = MBlock.PossibleBlocks[0];
             pBlock.SetAsMainBlock();
         }
         else if (MBlock.PossibleBlocks.Count == 0)
         {
             ProvesNoSolution = true;
         }
     }
 }