static void Main(string[] args) { var newBoard = SudokuBoard.Load(@"C:\Users\ctewalt\Documents\Visual Studio 2013\Projects\Sudoku\csv\sudoku_2_001.csv"); string boardString = newBoard.GetBoard(); Console.WriteLine(boardString); var solver = new SudokuSolver(newBoard); bool solved = solver.Solve(); if (solved) { Console.WriteLine("Sudoku puzzle solved!"); } else { Console.WriteLine("Unable to solve puzzle... :("); } Console.ReadKey(); Console.WriteLine(Environment.NewLine + Environment.NewLine); for (int i = 0; i < solver.Board.Cells.Count; i++) { var cell = solver.Board.Cells[i]; bool hasCandidates = cell.Candidates.Count > 0; string candidates = hasCandidates ? cell.Candidates.Select(c => c.ToString()).Aggregate((a, b) => a + "," + b): ""; Console.WriteLine(String.Format("Cell {0}): candidates - {1}", i, candidates)); Console.ReadKey(); } Console.ReadKey(); }
private void SolveSudoku() { grid.ClearUserCells(); SudokuSolver solver = new SudokuSolver(grid); solver.Solve(); RefreshCellValues(); }
private void SolveSudoku() { //Clear user input grid.ClearUserCells(); //Init solver and do magic SudokuSolver solver = new SudokuSolver(grid); solver.Solve(); RefreshCellValues(); }
static void Main() { var SudokuSolver = new SudokuSolver(); var board = GetBoard(Boards.HardMetro); PrettyPrinter.PrettyPrint(board); var solvedBoard = SudokuSolver.Solve(board, _debug); PrettyPrinter.PrettyPrint(solvedBoard); Console.WriteLine(IsSolved(solvedBoard)); Console.ReadKey(); }
static void Main(string[] args) { FillBoard(); SudokuSolver solver = new SudokuSolver(board); Console.WriteLine(board); solver.Solve(); Console.WriteLine(board); Console.ReadKey(); }
public static void Main(string[] args) { var stopWatch = new Stopwatch(); stopWatch.Start(); var sudoku = new Sudoku("./input.txt"); var visualiser = new SudokuVisualiser(sudoku); var solver = new SudokuSolver(sudoku, visualiser); solver.Solve(); stopWatch.Stop(); Console.WriteLine($"Finished in {stopWatch.Elapsed}"); }
static void Main(string[] args) { var boardMaster = new SudokuSolver(); // var board = boardMaster.SetBoard(); var board = boardMaster.ReadBoardFromFile(); var result = boardMaster.Solve(board); foreach (var salution in result) { boardMaster.Print(salution); Console.WriteLine(new string('-', 17)); } if (result.Count() > 1) { Console.WriteLine("Salutions count: " + result.Count()); } else if (result.Count() == 0) { Console.WriteLine("No solution possible!"); } }
public static void Main(string[] args) { bool verbose = false; if (args.Length > 0) { verbose = args[0].Equals("v"); } int i = 0; int[][] matrix = new int[9][]; while (i < 9) { string s = Console.ReadLine(); string[] line = s.Split(' '); if (line.Length == 9) { int[] intArr = new int[9]; for (int j = 0; j < 9; j++) { int x = int.Parse(line[j]); intArr[j] = x; } //sud.AddRow(intArr); matrix[i] = intArr; i++; } else { //invalid, please retype Console.WriteLine("invalid line, please retype"); continue; } } Console.WriteLine(); PrintMatrix(matrix); DateTime startTime = DateTime.Now; Console.WriteLine("Started: {0}", startTime); //SudokuSolver_old solver = new SudokuSolver_old(sud); //solver.Iterate(false); SudokuSolver solver = new SudokuSolver(matrix, verbose); solver.Solve(); DateTime stopTime = DateTime.Now; Console.WriteLine("Stopped: {0}", stopTime); Console.WriteLine("solution generated: {0}", solver.possibleSolutions.Count); Console.WriteLine("backtracks: {0}", solver.deadendCount); foreach (int[][] solution in solver.possibleSolutions) { PrintMatrix(solution); } Console.WriteLine(); TimeSpan elapsedTime = stopTime - startTime; Console.WriteLine("Elapsed: {0}", elapsedTime); Console.WriteLine("in hours :" + elapsedTime.TotalHours); Console.WriteLine("in minutes :" + elapsedTime.TotalMinutes); Console.WriteLine("in seconds :" + elapsedTime.TotalSeconds); Console.WriteLine("in milliseconds:" + elapsedTime.TotalMilliseconds); }
private bool DeleteField(Sudoku temp, ref int difficulty) { int i = Rnd.Next(0, 9); ; int j = Rnd.Next(0, 9); ; // select random not yet deleted field while (!temp.Fields[i][j].Filled) { i = Rnd.Next(0, 9); j = Rnd.Next(0, 9); } temp.Fields[i][j].Value = 0; temp.Fields[i][j].Filled = false; SudokuSolver Test = new SudokuSolver(); int Difficulty = difficulty; // check the desired characteristics Sudoku Temp = Test.Solve(temp.Copy(), true, Difficulty); if (Temp == null) return false; temp.Difficulty = Temp.Difficulty; if (Temp.NrSolutions > 1 || Temp.Difficulty > Difficulty) return false; else return true; }
public Boolean sePuedeResolver(Sudoku ToBeSolved) { SudokuSolver Solver = new SudokuSolver(); Sudoku Result = Solver.Solve(ToBeSolved, false, 4); if (Result != null) return true; else return false; }
public Sudoku Resolver(Sudoku ToBeSolved) { SudokuSolver Solver = new SudokuSolver(); Sudoku Result = Solver.Solve(ToBeSolved, false, 4); return Result; }
private void SolverToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult EstaSeguro = MessageBox.Show("Esta seguro que desea resolver el sudoku actual? No podra terminarlo una vez haya confirmado." , "Resolver Sudoku?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (EstaSeguro == DialogResult.Yes) { Sudoku ToBeSolved; List<int> Fields = new List<int>(); for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (Texts[i][j].Text == "") Fields.Add(0); else Fields.Add(int.Parse(Texts[i][j].Text)); } } ToBeSolved = new Sudoku(Fields); SudokuSolver Solver = new SudokuSolver(); Sudoku Result = Solver.Solve(ToBeSolved, false, 4); Resolviendo = true; Display(Result); Resolviendo = false; SolverToolStripMenuItem.Enabled = false; } else { MessageBox.Show("Adelante no te desesperes, todavia se puede!", "Tu puedes", MessageBoxButtons.OK, MessageBoxIcon.Information); } }