Python sudoku solver based off backtracking and constraint search