Example #1
0
        private static void Main()
        {
            SudokuPuzzle puzzle = SudokuFactory.Create(new[, ]
            {
                { 0, 0, 3, 0, 9, 5, 0, 0, 0 },
                { 0, 0, 6, 2, 0, 0, 4, 0, 0 },
                { 0, 0, 0, 1, 0, 0, 0, 8, 7 },
                { 0, 0, 4, 7, 0, 0, 5, 0, 3 },
                { 0, 2, 0, 0, 0, 0, 0, 4, 0 },
                { 3, 0, 7, 0, 0, 6, 1, 0, 0 },
                { 2, 4, 0, 0, 0, 1, 0, 0, 0 },
                { 0, 0, 9, 0, 0, 2, 8, 0, 0 },
                { 0, 0, 0, 5, 8, 0, 9, 0, 0 },
            });

            Console.WriteLine(puzzle);
            Console.WriteLine("Pieces Left: " + puzzle.RemainingPieces);

            puzzle.Solve();

            Console.WriteLine(puzzle);
            Console.WriteLine("Pieces Left: " + puzzle.RemainingPieces);

            Console.ReadLine();
        }
Example #2
0
        private static void AssertIsSolved(SudokuPuzzle puzzle, SudokuPuzzle solution)
        {
            // Pre-Assert
            Assert.AreNotEqual(0, puzzle.RemainingPieces);

            // Act
            puzzle.Solve();

            // Assert
            Assert.AreEqual(0, puzzle.RemainingPieces);
            Assert.AreEqual(true, IsPuzzleValid(puzzle));

            Assert.AreEqual(0, solution.RemainingPieces);
            Assert.AreEqual(true, IsPuzzleValid(solution));

            var ps = solution.GetPuzzle();
            var pp = puzzle.GetPuzzle();

            for (int i = 0; i < 9; ++i)
            {
                for (int k = 0; k < 9; ++k)
                {
                    Assert.AreEqual(pp[i, k].Value, ps[i, k].Value);
                    Assert.AreEqual(true, ps[i, k].PossibleValues == null);
                    Assert.AreEqual(true, pp[i, k].PossibleValues == null);
                }
            }
        }
Example #3
0
        public void Solve()
        {
            var p = new SudokuPuzzle(Board.Instance.cells.ToArray());

            p = p.Solve();
            Board.Instance.cells = p.Cells.Select(c => c[0]);
        }