private bool NumberHasTooManyFullCells()
        {
            for (int i = 0; i < solver.gridHeight; i++)
            {
                for (int j = 0; j < solver.gridWidth; j++)
                {
                    if (solver.CellIsNumber(i, j) && solver.GetCellCounter(i, j) > solver.GetCellNumberValue(i, j))
                    {
                        return(true);
                    }
                }
            }

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