A Sudoku Puzzle Solver and Generator