Problem 2085. Sudoku Solver - Standard 9x9
Input: m, a 9x9 matrix of values 0 thru 9. Unknowns are 0s.
Output: mout, a 9x9 matrix of values 1 thru 9 that satisfy Sudoku rules.
Scoring: Time (msec) to solve the Hard Sudoku
m mout 390701506 398721546 042890701 542896731 106540890 176543892 820600150 829674153 400138009 457138269 031002087 631952487 065087304 965287314 703065920 713465928 204309075 284319675
Future challenges will involve the Sudoku variations Diagonal, Arrow(Sums), Inequality, Irregular, and others as they present themselves.
Algorithm Spoiler: Sudoku's can be readily solved using minimal choice recursion with consistency check. A key step is an index map of all indices that have mutual value exclusion (row,col,3x3), idxmap[81,27]. Another key step is to have an Evolve function that implements all single option values determined by the idxmap. A critical performance enhancement is a Sudoku Consistency Checker that checks for illegal replications of values. Illegal placements by Evolve occur when an incorrect value is asserted into the matrix during recursion trials. The recursive solver finds an idx with minimum options based on idxmap. The values for the idx location are asserted, Evolved, Consistency Checked, and then recursion call if Consistent. When all is Consistent and no unknowns remain the Sudoku is solved. Solution times are in the milli-seconds even for Evil, minimum 17 value, Sudokus.
Solution CommentsShow comments
Problem Recent Solvers34