a python implementation of a sudoku solver