public void SolveGuessing(SudokuModel sudokuModel)
        {
            SolveLogical(sudokuModel);

            SudokuBackupModel backup = new SudokuBackupModel
            {
                BackupCells = SubComponents.CopyArray(sudokuModel.Cells)
            };

            while (!SubComponents.CheckIfSolved(sudokuModel.Cells))
            {
                while (!SubComponents.CheckIfStuck(sudokuModel.Cells))
                {
                    sudokuModel.Cells = SubComponents.GuessANumber(sudokuModel);
                    sudokuModel.Cells = SolveLogical(sudokuModel);
                    if (SubComponents.CheckIfSolved(sudokuModel.Cells))
                    {
                        return;
                    }
                }
                sudokuModel.Cells = SubComponents.CopyArray(backup.BackupCells);
            }
        }
        public void SolveGuessing(SudokuModel sudokuModel)
        {
            PlaceNumbers(sudokuModel.Cells);

            SudokuBackupModel backup = new SudokuBackupModel
            {
                BackupCells = CopyArray(sudokuModel.Cells)
            };

            while (!CheckIfSolved(sudokuModel.Cells))
            {
                while (!CheckIfStuck(sudokuModel.Cells))
                {
                    sudokuModel.Cells = GuessANumber(sudokuModel);
                    //Program.PrintSudoku(sudokuModel.Cells);
                    sudokuModel.Cells = PlaceNumbers(sudokuModel.Cells);
                    if (CheckIfSolved(sudokuModel.Cells))
                    {
                        return;
                    }
                }
                sudokuModel.Cells = CopyArray(backup.BackupCells);
            }
        }