A couple days ago I started solving a few Sudokus. I would say I am average at solving them. I certainly don't use any advanced techniques and I don't really find the difficult ones very entertaining. By difficult here I mean where you have to think several moves ahead to rule out possibilities. So I thought I would write a Sudoku solver. You can try it out. Yeah, I named it 'Jasudoku' after myself. There are some test cases in it, and you can actually play them by entering some numbers and clicking 'Solve' as the program won't let you go to solve mode unless the puzzle is correct at the end.
My solver can't solve those puzzles.
Update: So, I removed the limit on my solver. It turns out it is not as inefficient as I thought. It can solve all the puzzles, and takes about 46 seconds (on quite an old computer) or just over 100K moves to solve the harder of Filmer's puzzle that I programmed into Jasudoku as a preset.
Arto Inkala is a Finnish mathematician who also creates very difficult Sudokus. One of his puzzles was published in the Telegraph, claiming it was the "World's hardest sudoku", but actually that puzzle is a lot easier than Filmer's puzzles according to the number of moves my solver takes.
There are far more efficient solvers out there such as Peter Norvig's solver. I am probably not going to modify my program to solve Sudokus. First, I like the algorithm that is currently in use, and if I ever get around to porting it to C, it might be a good program to use to benchmark the difficulty of different Sudoku grids. That in turn could be interesting to study the distribution of difficulties. If we could at least empirically estimate the distribution of difficulty across puzzles, then we could estimate how many puzzles of different difficulties there really are. Incidentally, Stertenbrink and later Felgenhauser and Jarvis actually computed that there are
possible Sudoku puzzles. I didn't check the computation myself, but it seems about right ;). This means that if you could solve a billion of these per second, it would take just over 211 millennia to solve all of them.
I think I've had enough of Sudoku for now. There is a Jasudoku GitHub repository with code licensed under the GPLv3 in case you want to take a look to learn from it.