Esempio n. 1
0
        static void Main(string[] args)
        {
            SudokuWriter        sudokuWriter = new SudokuWriter();
            ImmutableSudokuGrid filledGrid   = sudokuWriter.CreateFilledGrid();

            filledGrid.PrintGrid();

            Console.WriteLine("\n");

            ImmutableSudokuGrid emptiedGrid = sudokuWriter.EmptyGridForHardSolve(filledGrid);

            emptiedGrid.PrintGrid();

            Console.WriteLine("\n");

            SudokuGrid   mutableEmptiedGrid = emptiedGrid.MakeMutableCopy();
            SudokuSolver sudokuSolver       = new SudokuSolver();

            sudokuSolver.Solve(mutableEmptiedGrid);
            mutableEmptiedGrid.PrintGrid();

            if (mutableEmptiedGrid.FindAllEmptySquares().Count != 0)
            {
                Console.WriteLine("\n");
                HarderSudokuSolver  harderSolver = new HarderSudokuSolver();
                ImmutableSudokuGrid solvedGrid   = harderSolver.Solve(emptiedGrid);
                solvedGrid.PrintGrid();
            }
        }
        public void TryToSolveInvalidSudoku_CheckSolveReturnsNull()
        {
            ImmutableSudokuGrid grid = new ImmutableSudokuGrid(CreateInvalidSudokuArray());
            var returnFromSolve      = sudokuSolver.Solve(grid);

            Assert.IsNull(returnFromSolve);
        }
Esempio n. 3
0
        private ImmutableSudokuGrid FillInSquareWithValue(int value)
        {
            SquareCoordinate    newSquare = new SquareCoordinate(0, 0);
            ImmutableSudokuGrid newGrid   = sudokuGrid.WithExtraSquare(newSquare, value);

            return(newGrid);
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Do you want me to try and solve an Easy Sudoku (type 1) or a Very Hard Sudoku (type 2)?");
            string difficulty = Console.ReadLine();

            if (difficulty == "1")
            {
                difficulty = "Easy";
            }
            else if (difficulty == "2")
            {
                difficulty = "VeryHard";
            }
            else
            {
                Console.WriteLine("Stop being difficult.  I'm going to solve an easy one then...");
                difficulty = "Easy";
            }

            ImmutableSudokuGrid grid = new ImmutableSudokuGrid(@"..\..\..\" + difficulty + @"Sudoku.txt");

            if (grid.Elements == null)
            {
                Console.WriteLine("Error, cannot read grid from file.");
                return;
            }

            HarderSudokuSolver sudokuSolver = new HarderSudokuSolver();

            sudokuSolver.Solve(grid).PrintGrid();
        }
Esempio n. 5
0
        public void AddExtraSquareWhichIsSameAsOldSquare_CheckDifferentArrayReturned()
        {
            ImmutableSudokuGrid newGrid = FillInSquareWithValue(-1);

            Assert.AreNotSame(newGrid.Elements, sudokuGrid.Elements);
            Assert.AreEqual(sudokuGrid.Elements[0, 1], -1);
            Assert.AreEqual(newGrid.Elements[0, 0], -1);
        }
Esempio n. 6
0
        public void AddExtraSquareWithDifferentValueFromOriginal_CheckDifferentArrayReturned()
        {
            ImmutableSudokuGrid newGrid = FillInSquareWithValue(1);

            Assert.AreNotSame(newGrid.Elements, sudokuGrid.Elements);
            Assert.AreEqual(sudokuGrid.Elements[0, 1], -1);
            Assert.AreEqual(newGrid.Elements[0, 0], 1);
        }
        public void TryToSolveValidSudoku_CheckSolveReturnsCompletedGrid()
        {
            ImmutableSudokuGrid grid = new ImmutableSudokuGrid(CreateSudokuArray());
            var returnFromSolve      = sudokuSolver.Solve(grid);
            var numberEmptySquares   = returnFromSolve.FindAllEmptySquares().Count;

            Assert.IsNotNull(grid);
            Assert.AreEqual(numberEmptySquares, 0);
        }
Esempio n. 8
0
        public void DetermineValidEntriesWorksCorrectly()
        {
            var grid = new ImmutableSudokuGrid(CreateNewMostlyEmptyArray());
            var validOptionsFor00 = sudokuSolver.DetermineValidOptionsForSquare(new SquareCoordinate(0, 0), grid);
            var validOptionsFor14 = sudokuSolver.DetermineValidOptionsForSquare(new SquareCoordinate(1, 4), grid);

            Assert.AreEqual(validOptionsFor00.Count, 6);
            for (int i = 4; i <= 9; i++)
            {
                Assert.IsTrue(validOptionsFor00.Contains(i));
            }

            Assert.AreEqual(validOptionsFor14.Count, 7);
            for (int i = 1; i <= 9; i++)
            {
                if (i != 3 && i != 4)
                {
                    Assert.IsTrue(validOptionsFor14.Contains(i));
                }
            }
        }
Esempio n. 9
0
 public void InitializeTest()
 {
     sudokuGrid = new ImmutableSudokuGrid(@"..\..\..\VeryHardSudoku.txt");
 }