static void BashThroughSudokus(string path, int number, int start = 0) { Shape shape = Shape.SquareGrid(3); string [] lines = File.ReadAllLines(path); ISolver solver = new RecursiveSolver(); SolverArgs args = new SolverArgs() { use_set_elimination = false }; Stopwatch stopwatch = Stopwatch.StartNew(); for (int i = start; i < number + start; i++) { int [] grid = lines [i].Select(x => int.Parse(x.ToString())).ToArray(); int [] [] solution = solver.Solve(shape, grid, args, out int diff, out int [] [] fill_orders); if (solution.Length != 1) { Console.WriteLine("!"); } if ((i + 1) % 100 == 0) { Console.Write("."); } if ((i + 1) % 500 == 0) { Console.Write(" "); } if ((i + 1) % 1000 == 0) { Console.Write("\n"); } if ((i + 1) % 5000 == 0) { Console.Write("\n"); } } double n = stopwatch.Elapsed.TotalSeconds / number; Console.WriteLine("\n" + n * 1000 + "ms per sudoku."); Console.WriteLine(1 / n + " sudoku per second."); }
public void RecursiveSolverSolvesForGivenMaze() { var actualSolution = new NodePtr[] { new NodePtr(1, 1), new NodePtr(4, 2) }; var solution = solver.Solve(startPoint, endPoint); //Assert.AreEqual(actualSolution.Length, solution.Count); foreach (var node in actualSolution) { if (!solution.Contains(node)) { Assert.Fail(); } } }
private void MakeNonograms(bool createHandlers) { DrawDelayed(() => _solvedNonogram, 0, true); DrawDelayed(() => { var clone = _solvedNonogram.Clone() as Nonogram; clone.Clear(); var solver = new ContradictionSolver(); solver.Solve(clone); return(clone); }, 1, createHandlers); DrawDelayed(() => { var clone = _solvedNonogram.Clone() as Nonogram; var solver = new ContradictionSolver(); solver.SolveWithOneGuess(clone); return(clone); }, 2, createHandlers); DrawDelayed(() => { var clone = _solvedNonogram.Clone() as Nonogram; var solver = new ArcConsistencySolver(); solver.Solve(clone); return(clone); }, 3, createHandlers); DrawDelayed(() => { var clone = _solvedNonogram.Clone() as Nonogram; var solver = new RecursiveSolver(); solver.Solve(clone); return(clone); }, 4, createHandlers); }
public SolveResult Solve(IProblemDefinition gridToSolve) { var iterativeSolver = new RecursiveSolver(gridToSolve.PossibilitiesSquareGrid); return iterativeSolver.Solve(gridToSolve.StartingKnownSquares); }