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(); }
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); } } }
public void Solve() { var p = new SudokuPuzzle(Board.Instance.cells.ToArray()); p = p.Solve(); Board.Instance.cells = p.Cells.Select(c => c[0]); }