Hi All
I have written a small DOS sudoku solving program which managed to solve all the problems I encountered easily. It tackles the puzzle directly ("This cell must be 7 because ..") , as would be done manually, and this solves all the simple problems almost instantly. The more difficult puzzles cannot be fully solved in this way so the approach is to tackle the puzzle first directly and then apply trial / error, in an optomised order, to complete the solution. The solution shows those cells determined directly and those obtained by trial and error. It seemed to manage even the difficult problems in a flash until I encountered the following puzzle -
002 | 090 | 107
038 | 600 | 000
400 | 000 | 000
----+-----+----
000 | 005 | 000
009 | 010 | 300
000 | 400 | 000
----+-----+----
000 | 000 | 004
000 | 007 | 920
806 | 030 | 700
- contributed by Addlan under "Favourite Puzzles" on the Solving Techniques Forum on this website. Instead of a result in less than a second the program took several minutes (admittedly on an old P2 computer) and not a single cell was solved directly. There is a re-calculation option which reverses the order in which digits are tried and it confirmed that the solution was unique.
I had thought that a second level of direct processing could reduce the time taken to reach a solution but with such a difficult puzzle I now feel that trial / error is the only practical approach. The time taken to produce the trial / error result is largely determined by the optimisation method used but with solution of all previously encountered problems down to a second or less it seemed hardly justified. I thought a better challenge was to find the most difficult puzzle. This puzzle has changed my thinking and I intend to re-visit my optimisation method.
Any thoughts on this? Is this really the most difficult puzzle?
Wally