Exemplo n.º 1
0
        public void SolveTest_Positive()
        {
            var sudokuSolver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9);
            var data         = sudokuSolver.Solve(_sudokuMediumLevel);

            Assert.AreEqual(_sudokuSolved, data.Data);
        }
Exemplo n.º 2
0
        public void SolveTest_Negative_NotUniqueSolution()
        {
            var sudokuSolver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9);
            var data         = sudokuSolver.Solve(_sudokuNotUniqueSolution);

            Assert.IsFalse(data.IsUnique);
        }
        public void GenerateTest()
        {
            var solver    = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9);
            var generator = new ClassicSudokuGenerator(solver);
            var level     = new SudokuLevel(ESudokuLevel.Medium);
            var data      = generator.Generate(level);
            var resultOfSolvingGeneratedSudoku = solver.Solve(data.Data);

            Assert.IsTrue(resultOfSolvingGeneratedSudoku.HasUniqueSolution);
        }
Exemplo n.º 4
0
        public static ISudoku GetSudoku(ESudokuType type)
        {
            ISudokuSolver    solver;
            ISudokuGenerator generator;

            switch (type)
            {
            case ESudokuType.Classic9X9:
                solver    = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9);
                generator = new ClassicSudokuGenerator((IClassicSudokuSolver)solver);
                break;

            case ESudokuType.Classic16X16:
                solver    = new ClassicSudokuSolver(EClassicSudokuType.Classic16x16);
                generator = new ClassicSudokuGenerator((IClassicSudokuSolver)solver);
                break;

            default:
                throw new NotSupportedException(Enum.GetName(typeof(ESudokuType), type));
            }
            return(new Sudoku(solver, generator));
        }
Exemplo n.º 5
0
        public void GenerateSolvedTest()
        {
            var sudokuSolver = new ClassicSudokuSolver(EClassicSudokuType.Classic9x9);
            var data         = sudokuSolver.GenerateSolved().Data;

            for (int i = 0; i < 9; i++)
            {
                var possibleRowValues = Enumerable.Range(1, 9).ToList();
                var possibleColValues = Enumerable.Range(1, 9).ToList();
                for (int j = 0; i < 9; i++)
                {
                    if (!possibleRowValues.Remove(data[i, j]) || !possibleColValues.Remove(data[j, i]))
                    {
                        Assert.Fail("Column or Row contain not unique value.");
                    }
                }
            }

            for (int x = 0; x < 3; x++)
            {
                for (int y = 0; y < 3; y++)
                {
                    var possibleValues = Enumerable.Range(1, 9).ToList();
                    for (int i = x * 3; i < x * 3 + 3; i++)
                    {
                        for (int j = y * 3; j < y * 3 + 3; j++)
                        {
                            if (!possibleValues.Remove(data[i, j]))
                            {
                                Assert.Fail("Block contain not unique value.");
                            }
                        }
                    }
                }
            }
        }