# Computer Solver

## What is a Computer Solver?

A computer solver like the one integrated into sudoku.coach basically imitates how a human solves a Sudoku, so that

- it can
**show you how to advance**in a Sudoku (in case you are stuck) - it can
**determine the difficulty**of a specific Sudoku (specifically how difficult a**human**might find that Sudoku)

If you haven't seen a Sudoku solver yet, maybe it is best, if you simply have a look at the sudoku.coach Solver itself.

Simply click on the little "**Solver**" button below the Sudoku grid, to open that Sudoku in the Solver. You can then step through all steps that are necessary to solve this specific Sudoku.

**Don't let this solver intimidate you.** There are two common responses that I get from people who don't have experience with computer solvers (or much experience with computers at all):

*"Of course the computer can solve Sudokus easily, it's a computer, after all..."*

Please don't see computers as magical machines that are not comparable to humans. A computer can only do, what it is taught. If it is taught the techniques that people use, then it will do nothing more than what people do. It will be much quicker at applying those techniques, but it will not do anything impossible for you and me.*"The solver uses so many pencil marks. I thought, this solver should imitate humans? People don't do this."*

That is true, people generally start to write down cell candidates when only few candidates remain for a single cell, or when they are stuck and need to use more advanced techniques. It is only for consistency reasons that the computer solver notates cell candidates from the start. Let me assure you, that you don't need those notations for using the basic techniques. It is always helpful, though, to see the Sudoku grid from different perspectives, and seeing the whole grid as cells with cell candidates in them, might give you a new perspective.

## How does the computer solver do it?

To imitate a human solver, we first need to order all techniques by

- how difficult it is to apply the technique, and also
- how useful it is. (how likely it is that the technique will actually yield a result)

After all, this is how people do it. We start to look for the easy stuff, and if we cannot find anything, we start to look for increasingly difficult things.

We've already seen the ordering of the techniques on the page Sudoku Difficulty, so we already know in what order the Solver should execute the techniques.

For every step the Solver makes (for every click on the '**>**' button) the techniques are tried in that order, and only if the Solver finds something for a technique, the step is completed and its result is shown to the user.

That means that if the Solver shows you something advanced like Simple Coloring, then you know that it failed to find anything easier than this (and you could not either).

## The computer Sudoku solver is not perfect

It **is** perfect in the sense that it can spot everything that it should be able to spot.

Where it is *not* perfect, though, is with imitating humans completely.

We have said before that a computer solver tries to imitate a human solver. That is of course true, and yet there are still some differences between the two, mainly the following:

The computer solver strictly tries one technique after another (and always does the same checks in the same order within that technique's execution). A human solver thinks and scans the board far more "human-like", which oftentimes is **more chaotic**, and also **more local**.

What do I mean by local? It means that people base their next step on the number or candidate that they have found in the previous step. The sudoku.coach Solver will not take that into account. If you, for example, found a **5** in a cell, then you (should) immediately check everything that this cell somehow influences. That increases the overall solving speed for humans, and could also potentially increase the computer's speed if taught to the computer.