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); }
private ImmutableSudokuGrid FillInSquareWithValue(int value) { SquareCoordinate newSquare = new SquareCoordinate(0, 0); ImmutableSudokuGrid newGrid = sudokuGrid.WithExtraSquare(newSquare, value); return(newGrid); }
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(); }
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); }
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); }
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)); } } }
public void InitializeTest() { sudokuGrid = new ImmutableSudokuGrid(@"..\..\..\VeryHardSudoku.txt"); }