ok, so I’ve played around and produced some code that automates two of the main steps I take when solving sudoku: filling in all the numbers a cell could be, and identifying when a number can only be in one cell in a row/column/box.
I’ve pushed my code into my public github: https://github.com/gjlipman/notebooks_public/blob/master/sudoku.py
I’ve done two examples, one medium difficulty (in which it solved it fully) and also an evil level puzzle. You’ll see in the evil level, there were a few steps that I had to observe and do manually, for example, seeing that 3 cells in a box had the same 3 digits, therefore no other cell in the box can have those digits. This might be the point where another sudoku player would guess and see what happened.