/// <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); }
/// <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; } } }