## Sudoku Assignment

Implement a Sudoku solver that works on an empty or partially-filled board.

Your solver should at least work on a board with 3 x 3 sub-grids (81 cells total), but ideally should be parameterized over the width and height of each sub-grid.

Your implementation should find a solution, if one exists, for any given partially filled board. Optionally, it should report the number of solutions that exit.