Non-brute-force Sudoku solver