Python Sudoku solver that expresses the puzzle as a constraint satisfaction problem.