The device is pretty simple electronically, comprised of an Arduino Mega 2650, one 4x4 keypad and two 2.8" TFT screens enclosed in a clear plastic case. The real work was coding most of the Sudoku solution algorithms and creating the demo/test puzzles.
A Sudoku (i.e. the puzzle) is a partially completed grid.
A grid has 9 rows, 9 columns and 9 boxes, each having 9 cells (81 total). Each row, column and box continues the digits 1-9 only once.
The program first tries to solve the input puzzle using solution algorithms including:
1. Naked Single
2. Hidden Single
3. Pointing and Claiming (Locked Candidates)
4. Naked Pair,Triple,Quad
5. Hidden Pair,Triple,Quad
6. X-Wing
7. Y-Wing (aka XY-Wing)
8. XYZ-Wing
9. WXYZ-Wing
10. Swordfish
11. Jellyfish
12. Unique Rectangle (Type 1)
13. Unique Rectangle (Type 2)
14. Unique Rectangle (Type 3)
15. Unique Rectangle (Type 4)
16. Unique Rectangle (Type 5)
17. Hidden Rectangle
These solution algorithms use a classic "candidate-based" approach using an initial build of all candidate entries
for each cell that is not initially filled by the input grid. Candidates are the same as "pencil marks" or
"marks" in a manual/paper Sudoku puzzle
If the algorithm-based solutions fail (and they do for certain input puzzles!), the program switches first to "Forcing Chain" algorithms including XY-Chain, X-Chain, Medusa 3_D, Forbidding Chain
(that adds group nodes to X-Chain to enhance strong links) and Remote Pair and finally to a "Recursive Descent/Backtrack" solution search that is optimized using only the remaining candidates for
each attempt made to fill the remaining empty cells. That should work for any legal input puzzle.
The additional "robot animation" for the sleep screen, main menu, entry menu and configuration menu are stored on a micro-SD card. If they aren't present or the load fails, the solver reverts to text only displays.