A recursive sudoku solver