// brute force sudoku solver // by flamingspinach 2006-12-22 private byte[,] puzzle = new byte[9,9]; // The main() function loads an input file into a 9x9 byte array, representing // blanks as zeros, calls solved() until it returns true, and then outputs // the array back into an output file private static bool validDigit (byte a, byte b, byte digit) { byte a0 = (byte)(a - a%3), b0 = (byte)(b - b%3); for (byte c = 0; c < 9; ++c) if (puzzle[a, c] == digit || puzzle[c, b] == digit || puzzle[a0 + c/3, b0 + c%3] == digit) return false; return true; } private static bool solved () { for (byte a = 0; a < 9; ++a) for (byte b = 0; b < 9; ++b) if (puzzle[a, b] == 0) { for (byte digit = 1; digit <= 9; ++digit) if (validDigit(a, b, digit)) { puzzle[a, b] = digit; if (solved()) return true; } puzzle[a, b] = 0; return false; } return true; }