Using the agreed lingo, I suggest that a any program that attempts to solve puzzles that have multiple grids (samurai sudoku being a common example) use the following ideas:
Define a class called cell that includes the cell's value and a flag called clue which is true if the cell's value cannot be changed.
Define a class called unit that includes pointers to the cells that are a part of it and a way of showing what numbers are remaining to be used.
This eliminates all concept of it being individual grids, and instead forces the program to think of the puzzle as a whole. This easily scales back to a standard puzzle, and can also be used to include a cell in more than 3 units, such as the corresponding cells in each of the boxes, and also the broken diagonals.
I don't completely understand OOP, otherwise I would try this myself. Hopefully someone can run with this idea, and maybe expand it if necessary.
LA