This version of the sudoku solver and checker does not reflect the original game of sudoku; the 
original game also checks for the uniqueness of 3x3 subgrids in addition to the rows and columns.
Update the `assert_uniq` function to add new constraints for all nine 3x3 subgrids, and update the
`check_valid` function to make sure that input grids have unique 3x3 subgrids. 
