Dominic wrote:In any case, I think you'll find a human very much "guesses", e.g. "If I put a 4 in this square, what are the consequences for allocating a number in another square?" That's a guess.
Not really, I would look where can a 4 go, I wouldn't try filling in one randomly and see where it takes me.
What follows are some grids in which you can fill in a number using only logic.
Assume this small (incomplete) grid, for the first three boxes:
* * * | * * 4 | * * *
* * * | * * * | 4 * *
1 2 * | * * * | * * *
In this situation there is only one valid place for the 4 in box 1, so no need to guess at all. That is a logic conclusion based on the rules: a column, row, box has to have all numbers from 1 to 9.
Some other patterns:
* * * | * * * | * * *
* * * | * * * | * * *
* * * | 3 5 6 | 7 8 9
-----------------------
1 * * | * * * | * * *
2 * * | * * * | * * *
Based on that you can fill in the 4 in box1: row 3 needs the number 1, 2 and 4. But r3c1 cannot be 1 or 2 so it has to be 4. Logic conclusion, not a guess.
Another one:
6 5 * | * 2 * | * * 7
* * 1 | * * * | 9 * *
8 9 * | * * * | * * 1
------------------------
* * * | * * * | 8 * *
Missing numbers for row 1: 1, 3, 4, 8, 9
In this example you fill in the 8 without a problem, without needing to do a single guess. Possibilites:
r1c3: 3, 4
r1c4: 1, 3, 4, 8, 9
r1c6: 1, 3, 4, 8, 9
r1c7: 3, 4
r1c8: 3, 4, 8
From this you learn that there are two cells that have two identical values, this means that you can remove them as candidates from all other cells, and allow you to fill in the 8 in r1c8
That is what I mean by logic and that is how most people here solve the puzzle, by looking at the possibilites, not by trial and error (which is guessing). (Note though, these are not all the possible patterns, there are more, it are juist some examples!)
A human solves the puzzle by reconsing the patterns, and all puzzles created by the Pappocom software are solvable using this technique.
And that's what all the fuzz about... making a program that reconise the patterns. It is easy enough to write a program that tries every possiblities.