This program solves a given sudoku by converting the puzzle into an exact cover problem, which is then solved using Knuth's Algorithm X (see https://en.wikipedia.org/wiki/Knuth%27s_Algorithm_X)
PyQt5 is required for the GUI. This can be installed using pip.
To access GUI open main.pyw. A zero represents an unfilled cell.
Example puzzle:
Solution: