Introduction
We develop an algorithm to construct solvable Sudoku puzzles of varying difficulties
with a unique solution. The algorithm begins by creating a completed Sudoku board, and then
removes entries while knowing that it will remain solvable and has one sole solution. The
boards produced by this algorithm represent only a small fraction of all possible filled-board
enumerations. Many Sudoku generators employ a similar tactic and allow for a user-specific
difficulty rating determining which puzzle is presented to them. Our goal is to define difficulty
metrics applicable to our generated puzzles and extensible to boards that our algorithm fails to
generate. Sudoku difficulties may be derived in a number of ways such as computer
computation times, human computation times, or counting the logical steps required for various
deduction methods. An algorithm produces a puzzle that must satisfy two initial requirements;
(i) The puzzle must be solvable, and
(ii) The puzzle must have a unique solution.