/// <summary>
        /// Ako imamo 2 polja koja su vrijednost ili broj, a između njih je prazno polje, to polje onda obojamo u crno.
        /// </summary>
        private void TechniqueSeparateByOneSquare(int i, int j)
        {
            if (solver.puzzle[i][j].charValue != '1' && solver.CellIsNumber(i, j) &&
                solver.GetCellNumberValue(i, j) == (solver.GetCellCounter(i, j) + 1))
            {
                CheckNeighboursHorizontalAndVertical(i, j);
            }
            else if (solver.CellIsFull(i, j) && solver.GetCellId(i, j) != 0)
            {
                int row    = solver.numbers[solver.GetCellId(i, j)].X;
                int column = solver.numbers[solver.GetCellId(i, j)].Y;

                if (solver.GetCellNumberValue(row, column) == (solver.GetCellCounter(row, column) + 1))
                {
                    CheckNeighboursHorizontalAndVertical(i, j);
                }
            }
        }
        private bool NumbersAreConnected()
        {
            for (int i = 0; i < solver.gridHeight; i++)
            {
                for (int j = 0; j < solver.gridWidth; j++)
                {
                    if (solver.CellIsFull(i, j) && solver.GetCellId(i, j) > 0)
                    {
                        int currentCellId = solver.GetCellId(i, j);

                        if ((i - 1) >= 0)
                        {
                            if ((solver.CellIsFull((i - 1), j) || solver.CellIsNumber((i - 1), j)) &&
                                solver.GetCellId((i - 1), j) > 0 && solver.GetCellId((i - 1), j) != currentCellId)
                            {
                                return(true);
                            }
                        }

                        if ((i + 1) < solver.gridHeight)
                        {
                            if ((solver.CellIsFull((i + 1), j) || solver.CellIsNumber((i + 1), j)) &&
                                solver.GetCellId((i + 1), j) > 0 && solver.GetCellId((i + 1), j) != currentCellId)
                            {
                                return(true);
                            }
                        }

                        if ((j - 1) >= 0)
                        {
                            if ((solver.CellIsFull(i, (j - 1)) || solver.CellIsNumber(i, (j - 1))) &&
                                solver.GetCellId(i, (j - 1)) > 0 && solver.GetCellId(i, (j - 1)) != currentCellId)
                            {
                                return(true);
                            }
                        }

                        if ((j + 1) < solver.gridWidth)
                        {
                            if ((solver.CellIsFull(i, (j + 1)) || solver.CellIsNumber(i, (j + 1))) &&
                                solver.GetCellId(i, (j + 1)) > 0 && solver.GetCellId(i, (j + 1)) != currentCellId)
                            {
                                return(true);
                            }
                        }
                    }
                }
            }

            return(false);
        }