protected override void checkSurroundings(int squareNum, PuzzleNumbers puzzle, PuzzleStructure grid)
        {
            Dictionary <string, int> containers = grid.findContainers(squareNum);

            row        = grid.rows[containers["Row"]];
            block      = grid.blocks[containers["Block"]];
            col        = grid.columns[containers["Column"]];
            duplicates = new List <char>();
            for (int i = 0; i < row.Squares.Count; i++)
            {
                if (puzzle.squares[row.Squares[i]].number != '-')
                {
                    if (!duplicates.Contains(puzzle.squares[row.Squares[i]].number))
                    {
                        duplicates.Add(puzzle.squares[row.Squares[i]].number);
                    }
                }
                if (puzzle.squares[col.Squares[i]].number != '-')
                {
                    if (!duplicates.Contains(puzzle.squares[col.Squares[i]].number))
                    {
                        duplicates.Add(puzzle.squares[col.Squares[i]].number);
                    }
                }
                if (puzzle.squares[block.Squares[i]].number != '-')
                {
                    if (!duplicates.Contains(puzzle.squares[block.Squares[i]].number))
                    {
                        duplicates.Add(puzzle.squares[block.Squares[i]].number);
                    }
                }
            }
        }
 protected override void checkSurroundings(int squareNum, PuzzleNumbers puzzle, PuzzleStructure grid)
 {
     skip = true;
     if (puzzle.squares[squareNum].number == '-' && puzzle.squares[squareNum].candidates.Count == 2)
     {
         if (squareNum == 22)
         {
             Console.Write("");
         }
         rowPossible   = new List <int>();
         colPossible   = new List <int>();
         blockPossible = new List <int>();
         skip          = false;
         Dictionary <string, int> containers = grid.findContainers(squareNum);
         row   = grid.rows[containers["Row"]];
         block = grid.blocks[containers["Block"]];
         col   = grid.columns[containers["Column"]];
         List <string> compare = new List <string>(puzzle.squares[squareNum].candidates);
         for (int i = 0; i < row.Squares.Count; i++)
         {
             if (puzzle.squares[row.Squares[i]].number == '-' && puzzle.squares[row.Squares[i]].candidates.SequenceEqual(compare) && row.Squares[i] != squareNum)
             {
                 rowPossible.Add(row.Squares[i]);
             }
             if (puzzle.squares[col.Squares[i]].number == '-' && puzzle.squares[col.Squares[i]].candidates.SequenceEqual(compare) && col.Squares[i] != squareNum)
             {
                 colPossible.Add(col.Squares[i]);
             }
             if (puzzle.squares[block.Squares[i]].number == '-' && puzzle.squares[block.Squares[i]].candidates.SequenceEqual(compare) && block.Squares[i] != squareNum)
             {
                 blockPossible.Add(block.Squares[i]);
             }
         }
     }
 }
Exemple #3
0
        protected override void checkSurroundings(int squareNum, PuzzleNumbers puzzle, PuzzleStructure grid)
        {
            used = false;
            Dictionary <string, int> containers = grid.findContainers(squareNum);

            row      = grid.rows[containers["Row"]];
            block    = grid.blocks[containers["Block"]];
            col      = grid.columns[containers["Column"]];
            blockCol = new Dictionary <int, List <string> >();
            for (int i = 0; i < Convert.ToInt32(Math.Sqrt(block.Squares.Count)); i++)
            {
                blockCol.Add(i, new List <string>());
            }

            int currentCol = 0;

            for (int i = 0; i < block.Squares.Count; i++)
            {
                if (puzzle.squares[block.Squares[i]].number == '-')
                {
                    addBlockColCandidates(block.Squares[i], currentCol, puzzle);
                }
                currentCol++;
                if (currentCol == 3)
                {
                    currentCol = 0;
                }
            }
            List <string> temp = new List <string>();

            for (int i = 0; i < blockCol.Count; i++)
            {
                List <string> temp2 = new List <string>();
                for (int j = 0; j < blockCol[i].Count; j++)
                {
                    if (!temp2.Contains(blockCol[i][j]))
                    {
                        temp2.Add(blockCol[i][j]);
                    }
                }
                for (int j = 0; j < blockCol.Count; j++)
                {
                    if (j != i)
                    {
                        for (int k = 0; k < blockCol[j].Count; k++)
                        {
                            if (temp2.Contains(blockCol[j][k]))
                            {
                                temp2.Remove(blockCol[j][k]);
                            }
                        }
                    }
                }
                temp = temp.Concat(temp2).ToList <string>();
            }
            for (int i = 0; i < blockCol.Count; i++)
            {
                blockCol[i] = blockCol[i].Intersect(temp).ToList <string>();
            }
        }
Exemple #4
0
        protected override void checkSurroundings(int squareNum, PuzzleNumbers puzzle, PuzzleStructure grid)
        {
            Dictionary <string, int> containers = grid.findContainers(squareNum);

            row             = grid.rows[containers["Row"]];
            block           = grid.blocks[containers["Block"]];
            col             = grid.columns[containers["Column"]];
            blockCandidates = new Dictionary <char, int>();
            rowCandidates   = new Dictionary <char, int>();
            colCandidates   = new Dictionary <char, int>();
            for (int i = 0; i < row.Squares.Count; i++)
            {
                if (puzzle.squares[row.Squares[i]].number == '-' && row.Squares[i] != squareNum)
                {
                    for (int j = 0; j < puzzle.squares[row.Squares[i]].candidates.Count; j++)
                    {
                        if (!rowCandidates.ContainsKey(puzzle.squares[row.Squares[i]].candidates[j].ToCharArray()[0]))
                        {
                            rowCandidates.Add(puzzle.squares[row.Squares[i]].candidates[j].ToCharArray()[0], 1);
                        }
                        else
                        {
                            rowCandidates[puzzle.squares[row.Squares[i]].candidates[j].ToCharArray()[0]]++;
                        }
                    }
                }
                if (puzzle.squares[col.Squares[i]].number == '-' && col.Squares[i] != squareNum)
                {
                    for (int j = 0; j < puzzle.squares[col.Squares[i]].candidates.Count; j++)
                    {
                        if (!colCandidates.ContainsKey(puzzle.squares[col.Squares[i]].candidates[j].ToCharArray()[0]))
                        {
                            colCandidates.Add(puzzle.squares[col.Squares[i]].candidates[j].ToCharArray()[0], 1);
                        }
                        else
                        {
                            colCandidates[puzzle.squares[col.Squares[i]].candidates[j].ToCharArray()[0]]++;
                        }
                    }
                }
                if (puzzle.squares[block.Squares[i]].number == '-' && block.Squares[i] != squareNum)
                {
                    for (int j = 0; j < puzzle.squares[block.Squares[i]].candidates.Count; j++)
                    {
                        if (!blockCandidates.ContainsKey(puzzle.squares[block.Squares[i]].candidates[j].ToCharArray()[0]))
                        {
                            blockCandidates.Add(puzzle.squares[block.Squares[i]].candidates[j].ToCharArray()[0], 1);
                        }
                        else
                        {
                            blockCandidates[puzzle.squares[block.Squares[i]].candidates[j].ToCharArray()[0]]++;
                        }
                    }
                }
            }
        }
Exemple #5
0
        protected override void checkSurroundings(int squareNum, PuzzleNumbers puzzle, PuzzleStructure grid)
        {
            if (squareNum == 13)
            {
            }
            used = false;
            Dictionary <string, int> containers = grid.findContainers(squareNum);

            row      = grid.rows[containers["Row"]];
            block    = grid.blocks[containers["Block"]];
            col      = grid.columns[containers["Column"]];
            blockRow = new Dictionary <int, List <string> >();
            for (int i = 0; i < Convert.ToInt32(Math.Sqrt(block.Squares.Count)); i++)
            {
                blockRow.Add(i, new List <string>());
            }

            int currentRow = 0;

            for (int i = 0; i < block.Squares.Count; i++)
            {
                if (puzzle.squares[block.Squares[i]].number == '-')
                {
                    addBlockRowCandidates(block.Squares[i], currentRow, puzzle);
                }
                if ((i + 1) % Convert.ToInt32(Math.Sqrt(block.Squares.Count)) == 0)
                {
                    currentRow++;
                }
            }
            List <string> temp = new List <string>();

            for (int i = 0; i < blockRow.Count; i++)
            {
                List <string> temp2 = new List <string>();
                for (int j = 0; j < blockRow[i].Count; j++)
                {
                    if (!temp2.Contains(blockRow[i][j]))
                    {
                        temp2.Add(blockRow[i][j]);
                    }
                }
                for (int j = 0; j < blockRow.Count; j++)
                {
                    if (j != i)
                    {
                        for (int k = 0; k < blockRow[j].Count; k++)
                        {
                            if (temp2.Contains(blockRow[j][k]))
                            {
                                temp2.Remove(blockRow[j][k]);
                            }
                        }
                    }
                }
                temp = temp.Concat(temp2).ToList <string>();
            }
            //You need to except off the stuff you havent excepted off of!
            for (int i = 0; i < blockRow.Count; i++)
            {
                blockRow[i] = blockRow[i].Intersect(temp).ToList <string>();
            }
        }