Who am I and Why is this here?
Sudoku Helper Review January 2018
Sudoku Helper was recently reviewed at www.ilovefreesoftware.com
See the review of Sudoku Helper
here
Happy Learning
Update March 2015
Version 4.1 release.
I have updated the solver to fix some missed instances of strategies and it also works faster.
The interface now allows for a value that has been placed in a cell to be removed. The only way to do this previously was to use Undo until the solution for the cell is question was removed. If a value is removed from a cell the
candidates for the whole puzzle will be reset.
There is also the option to wok on different puzzle sizes. The Sudoku Helper support 4x4, 9x9 and 16x16 puzzles. Solving and creating 16x16 puzzles will be noticeably slower. There are so many more options to check on the larger puzzles each step takes just a little longer. The create process is sometimes noticeably longer especially if you request a puzzle with only specific strategies.
Some additional documentation pages have been added
Original Version 2007
I have been solving Sudoku puzzles in planes, trains and automobiles for a couple of years. I got the Sudoku bug when I used the daily puzzle in a local newspaper as a holiday activity with my children in 2005. We managed to solve most of the puzzles published in this particular newspaper and had a lot of fun discussing why we made the decisions we did about what value goes where.
Since then I have bought numerous books of puzzles and used them as a way to pass the time on flights and trips. I developed a few solving techniques and thought life was good. I could solve most of the puzzles in the "off the shelf books" you could buy at airports and even managed to help a few colleagues at work finish puzzles they could not solve. I was feeling quite good about my new found Sudoku abilities. Oh, how wrong we can be, when embedded in our own blissful naivety.
For many of the puzzles I could not solve, I had noticed particular patterns that I figured must be usable to make the next decision but I was not able to make consistent use of these.
I looked at a couple of the Internet sites that offered online puzzles to solve and found that the time taken for me to complete puzzles was about average, but mostly Sudoku was an activity I used to pass time when traveling.
Over time I formed a theory. If the basic strategies of solving Sudoku could be implemented in a computer program so that it never made mistakes or missed patterns then the program should be able to solve any puzzle.
I use the word "puzzle" here to mean a Sudoku that has a unique solution. I acknowledge that not all people believe this is a requirement of a Sudoku puzzle.
So, at the end of 2007 I started on the program. Its not that hard to find a few cells with the same values in them and make some decisions about where values can go. Right? (I am certainly not trying to diminish any programmers skills here, just trying to make an observation on the scope of the problem at hand.)
Well, how wrong I was. Not so much about how hard the program was, at least for the basic solving techniques, or making a program what would never make a mistake or miss a pattern, but the part about the simple strategies being able to solve all puzzles was a complete miss.
The program worked pretty well, but I would find a puzzle that it could not solve. I would work out how to solve it and implement that process in the program. "I got it now.", I would think. Soon enough there would be another puzzle that my program could not solve.
Up till this point I had worked out the solving strategies I was using myself and being the somewhat stubborn person I am, thought "I should be able to solve any puzzle with my own logic". Wrong again.
Eventually, I broke down and started to research strategies and techniques on the Internet. Wow, what a lot of stuff there is out there and I noticed a number of people who had started with the same theory I had. Now, my theory is long since proved very wrong, but now I have a new challenge. Make a program that can solve any puzzle using logic. If you are reading this, you have probably already looked at the results I have so far. I am not there yet but it's getting better.
For those that are interested, I started my solver using JavaScript. This meant it was relatively easy to display the results but it created a rather large file of JavaScript code quickly. The size of the code was not helped by the fact that I like to use variable names that make sense when I read the code later.
As I found more complicated solving techniques I decided to move the code that does the solving work to java servlets and maintain the presentation in JavaScript. I am not a professional programmer but I have worked in the IT industry for many years and have some understanding of the languages and tools used to make websites. Learning more java and building a Sudoku solver all at once has been a very interesting challenge. One of the hardest problems I faced was to get a relatively simple and inexpensive way to debug the logic in the java servlets. But I digress.
My stubbornness now is about doing it myself. I have learned there are many websites that have lots of examples and explanations of the strategies and techniques and I have read from a number of them. See the acknowledgments on the side bar. This is where I have learned most of the new techniques and then I have turned them into code. There are also many discussions about the process of implementing solvers and puzzle creation programs with copious code samples. I have not used any of the code samples I have found in my solver, but have created all the code and logic myself.
The documents I have written on the strategies are my interpretation of how the techniques work and the terminology I have used are the words I have read the most often in the research I have done.
I make no claims that this website is any better, faster, bigger and more correct than any other similar creation published before me. This website and the service it offers is the result of my own personal challenge. Making it available to the world to see is a way to find out if it is good enough to get people to use it.
Good Luck, and Happy Sudoku Solving.