Instructions

Foreword

Before you go any further, this program was written in javascript which is by nature slow, and further handicapped by my amateur programming skills. If you have opened it in Microsoft Internet Explorer (IE), I recommend you exit and re-open it in Google's Chrome, or second best Firefox. Chrome's javascript runs considerably faster than IE.

This program attempts to use pure logic to solve puzzles, using humanistic, interactive approach. The interface between logical strategies and trial-and-error (T&E) is very murky, and is the subject of considerable debate. Each of the methods used in this program has a help page which will discuss the underlying logic. Included in the help pages is a large selection of examples

On the other hand, brute force / backtracking programs will solve any sudoku puzzle in moments. This is of course no use to someone who wants to know how to solve the puzzle without guessing, but can be very useful when you need to see the answer to check where you went wrong. An excellent such program is the Kudoku Sudoku solver. A recent addition to my solver is the quick solve method which is a hybrid logic/backtracking method using patterns (aka templates). Most puzzles are solved in less than a second, but a few with a large number of patterns will take a little longer. If there are multiple solutions, it will tell you how many, or else it will say if there is no solution.

My interest in pursuing the logical approach to solving non-trivial sudoku's was initially set in motion by Andrew Stuart's excellent book "the logic of sudoku" (MM Publishing Ltd 2007) as well as his online solver. However, following on I encountered further books and web postings that seemed to require post doctoral qualifications in mathematics and professional programming skills to understand. Despite my own scientific/medical background, I felt there had to be a clearer, simpler way. I was inspired by the program Sudoku Explainer which allows each step to be studied and understood. However it lacks ALSs and other newer techniques such as exocets and various rank zero logic approaches (SK loops. multifish, etc).

To run program

  • The rows and columns are numbered 1 to 9
  • To start a new puzzle, either:
    • paste or type 81 character puzzle, with "0" or "." for blanks into text box and click "Import" button.
    • paste a "grid" into the output box and click "Import" button. This can be either a starting grid with dots for blank cells, or a partially completed puzzle. Note that the only numbers present in these grids should be the puzzle numbers, so don't include row/column numbers.
    • Then click "Start" button to populate blanks, and click "Next" button. It will execute naked and hidden singles eliminations firstly, and then look for a box-line elimination. If successful, it will stop and display result. You then click the "Zap" button to execute eliminations. When you run out of box-line eliminations, it looks for naked sets, then hidden sets. Keep clicking "Next" and then "Zap" buttons until puzzle is solved or a message box tells you that there are no more basic eliminations. Every elimination achieved is displayed in output box.
    • Alternatively, you can click "Clear basics" to finish with basic moves in one step.
    • You can then run routines from the "Advanced" and "Other" sets in any order. If an elimination is made, the routines in the basic set are checked before proceeding with further advanced methods. The order I have placed them in corresponds roughly with SE ratings, as demonstrated in the Top95 help file which shows SE ratings as well as the level required by my methods.
    • If you wish to re-run a routine, click the 'Go back' button.
    • If you wish to save a partially solved puzzle, click 'Save', and copy the string in the import box and paste it into a text file and save it. To resume the puzzle, copy and paste it back into the box and click 'Import', and the puzzle is restored.
    • Progress can be followed in the 'Remaining' box, ie the number of candidate numbers left in excess of 81.
    • Partially completed puzzles can be exported by clicking the "Export" button, and the puzzle grid appears in standard format in the output box.
    • By adding 3 numbers into the text box after the "Remove" button, and then clicking 'Remove', a number can be deleted, and the puzzle updated by running the basic set of techniques. The first number is the candidate to be removed, and the next two are the address.

    Feedback

    Comments welcome: email me at pjbeeby@gmail.com

    Acknowledgements

    I am most grateful to all those who laboured away to set the foundation for solution techniques, and especially those recently who have produced a wealth of interesting puzzles to test my solver on and to play with.

    Philip Beeby