A sudoku solver and generator