OK, I will go first.
Since no one has taken the challenge to say how they would approach this problem I will go first. This approach would also work nicely for hex Sudoku.
1. The 'board' is represented by a three dimensional array with each dimension being 3 long. ( 4 for hex ) Each dimension of the array represents the row, colum and square of all the pieces.
2. Each element is a integer or word where each bit represents a number.
3. Initially the board is shuffled or genearated with a bit set in the cell that represents a number 1-9. Blank cells have all bits set.
4. Now the computer can scan each cell for which a number has not been found ( has a bit count > 1 ). All cells in a dimension, except for the cell in question, have their contents inverted and anded with the cell in question. This is a NAND function.
5 For each cell all three dimensions must be processed. It is possible that a only a few bits are cleared but this will help during the next scan through the board.
I have to go to work. Do you get the idea? Did I ruin the game for everyone? The procedure is simple and brute force. There are more sophisticated ways of solving instead of just scanning though all the board over and over again. I will answer questions later.
This involves array indexing and bit counting and bit manipulation. These topics come up on this forum often so I thought it was valid to ask how would you solve this on a PLC.
A Siemens S7 or Control Logix would make this simple. I would choose a S7 if I have to choose a PLC because it programs in assembly language ( STL ) or ST.
When solving by hand I use the same technique except I use dots in the blank squares to keep track of what has been elimated. Not much fun anymore. Back to chess and freecell.
More later.