Author Topic: Sudoku Solver  (Read 3462 times)

0 Members and 2 Guests are viewing this topic.

Offline Sidoh

  • x86
  • Hero Member
  • *****
  • Posts: 17634
  • MHNATY ~~~~~
    • View Profile
    • sidoh
Sudoku Solver
« on: March 20, 2007, 11:10:00 pm »
This has been a project I've been working on and off for a while.  It's a pretty interesting problem as there is a pretty big batch of inference rules.  I've only coded three (one of which I discovered was unnecessary in the presence of another), but it solves a pretty good number of puzzles you find in newspapers.

I'll post all of the code when I'm a bit further along, but here's an example of the output:

Code: [Select]
+--------------------------+--------------------------+--------------------------+
|  - - -   1 2 -           |  - 2 3   - 2 3           |          1 - -   1 2 3   |
|  4 - -   - - -     5     |  - - -   4 - -     7     |    6     - - -   - - -   |
|  - 8 9   - 8 9           |  - 8 9   - 8 9           |          - 8 9   - 8 9   |
|                          |                          |                          |
|  - - -   - 2 -   - 2 -   |  - 2 3   - 2 3           |          - - -   - 2 3   |
|  4 - 6   - - -   4 - -   |  - 5 -   4 - -     1     |    7     - - -   - - -   |
|  - 8 9   - 8 9   - - -   |  - 8 9   - 8 9           |          - 8 9   - 8 9   |
|                          |                          |                          |
|  - - -   1 2 -           |  - 2 -           - 2 -   |  - 2 -                   |
|  - - -   - - -     3     |  - - -     6     - - -   |  - - -     5       4     |
|  7 8 9   7 8 9           |  - 8 9           - 8 9   |  - 8 -                   |
+--------------------------+--------------------------+--------------------------+
|                  1 - -   |  - - -   1 - -   - - -   |  - - -   - - -   - - -   |
|    2       3     4 - -   |  - 5 -   - - -   - 5 6   |  4 - -   4 - -   - 5 -   |
|                  7 - -   |  7 8 9   7 8 9   - 8 9   |  - 8 -   7 8 9   7 8 9   |
|                          |                          |                          |
|  - - -                   |          - - -           |                  - - -   |
|  - 5 -     6       8     |    4     - - -     3     |    1       2     - 5 -   |
|  7 - 9                   |          7 - 9           |                  7 - 9   |
|                          |                          |                          |
|  - - -   1 - -   1 - -   |  - 2 -   1 2 -   - 2 -   |  - - -                   |
|  4 5 -   - 5 -   4 - -   |  - 5 -   - - -   - 5 -   |  4 - -     3       6     |
|  7 - 9   7 - 9   7 - -   |  7 8 9   7 8 9   - 8 9   |  - 8 -                   |
+--------------------------+--------------------------+--------------------------+
|                  - 2 -   |  - 2 3           - 2 -   |          - - -   - 2 3   |
|    1       4     - - -   |  - - -     5     - - -   |    9     - - 6   - - -   |
|                  7 - -   |  7 8 -           - 8 -   |          7 8 -   7 8 -   |
|                          |                          |                          |
|  - - 3   - 2 -           |          - 2 3   - 2 -   |  - 2 3   - - -   - 2 3   |
|  - 5 -   - 5 -     6     |    1     4 - -   4 - -   |  4 - -   4 - -   - - -   |
|  7 8 -   7 8 -           |          7 8 9   - 8 9   |  - 8 -   7 8 -   7 8 -   |
|                          |                          |                          |
|  - - 3   - 2 -           |          - 2 3   - 2 -   |          1 - -   1 2 3   |
|  - - -   - - -     9     |    6     4 - -   4 - -   |    5     4 - -   - - -   |
|  7 8 -   7 8 -           |          7 8 -   - 8 -   |          7 8 -   7 8 -   |
+--------------------------+--------------------------+--------------------------+



Enter an option
0. Exit
1. Try to solve the puzzle
2. Print current contents
3. Print the state of a cell
4. Load a new sudoku file
Which one? 1
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (2,6).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (6,7).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (6,7).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (1,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (1,0).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (1,0).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (1,3).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (1,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (1,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (1,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (2,0).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (2,0).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (2,1).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (2,1).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (2,1).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (2,1).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (0,1).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (3,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (5,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (6,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (7,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (4,0).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (5,0).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (7,0).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,0).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (2,3).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (2,5).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (6,3).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (6,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (6,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (0,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (0,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (0,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (0,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (1,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (1,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (4,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,3).
findSubsets(columns) has simplified the puzzle.  Removing {3} at (0,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (4,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (0,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (1,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (5,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (5,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (5,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (5,4).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (5,0).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (7,0).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (0,0).
findSubsets(columns) has simplified the puzzle.  Removing {3} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {3} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (8,4).
findSubsets(rows) has simplified the puzzle.  Removing {1} at (3,2).
findSubsets(rows) has simplified the puzzle.  Removing {5} at (5,1).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,1).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,8).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (7,1).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,1).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (8,1).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (5,1).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (5,2).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (5,2).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,7).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (6,5).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (7,5).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (8,5).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (7,5).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (7,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (6,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (6,8).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (4,4).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (2,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (0,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (1,8).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (2,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (4,8).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (6,2).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,8).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (8,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (3,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (5,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (8,1).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (0,1).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (1,1).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,1).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (1,2).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (3,2).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (0,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (0,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (1,7).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (0,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (1,8).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (0,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (0,1).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (1,1).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (1,8).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (1,4).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (3,6).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (3,3).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (5,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,6).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (5,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (0,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (0,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (0,8).
forceMove placing {4} at (0,0).
forceMove placing {2} at (1,2).
forceMove placing {7} at (6,2).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (1,0).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (1,0).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (2,6).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (6,7).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (1,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (1,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (1,4).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (1,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (1,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (1,8).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (1,4).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (1,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (2,0).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (2,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (2,1).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (2,1).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (2,1).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (0,1).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (0,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (0,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (5,1).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (3,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (5,3).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (6,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (7,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {3} from (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (4,0).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (5,0).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (7,0).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,1).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (7,1).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,1).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,1).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (5,1).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (0,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (0,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (0,4).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (0,4).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (2,3).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (2,5).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {5} at (5,0).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (5,3).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (6,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (6,3).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,8).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (8,0).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (2,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {3} at (0,3).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (2,5).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,4).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,7).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (3,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,6).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (5,2).
findSubsets(rows) has simplified the puzzle.  Removing {1} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (8,4).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (8,4).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (8,5).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (8,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (0,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (3,2).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (4,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,6).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (6,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,5).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,5).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (0,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (0,7).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (1,7).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (7,8).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (6,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (0,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (0,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (0,1).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (1,1).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (8,7).
forceMove placing {8} at (0,1).
forceMove placing {9} at (1,1).
forceMove placing {8} at (1,7).
forceMove placing {3} at (1,8).
forceMove placing {7} at (2,0).
forceMove placing {1} at (2,1).
forceMove placing {2} at (2,6).
forceMove placing {6} at (6,7).
forceMove placing {2} at (8,1).
forceMove placing {6} at (1,0).
forceMove placing {5} at (1,3).
forceMove placing {4} at (1,4).
forceMove placing {5} at (7,1).
forceMove placing {7} at (5,1).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (7,6).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (0,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (0,4).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,4).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,7).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {5} at (5,0).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (6,3).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (6,3).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,8).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (4,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,0).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (2,3).
findSubsets(columns) has simplified the puzzle.  Removing {3} at (0,3).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (0,7).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (7,8).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (6,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (0,8).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (0,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,6).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (5,2).
findSubsets(rows) has simplified the puzzle.  Removing {1} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (6,5).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (8,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (2,5).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (3,2).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,6).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,5).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (8,7).
forceMove placing {2} at (0,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (6,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (7,6).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (0,4).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,4).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,7).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {5} at (5,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,6).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (5,2).
findSubsets(rows) has simplified the puzzle.  Removing {1} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,8).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (3,2).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (4,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,0).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (2,3).
findSubsets(columns) has simplified the puzzle.  Removing {3} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (0,7).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (7,8).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (6,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (0,8).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (6,5).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,5).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (8,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (2,5).
forceMove placing {3} at (0,4).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (6,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (7,6).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,4).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,7).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {5} at (5,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,6).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (5,2).
findSubsets(rows) has simplified the puzzle.  Removing {1} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,8).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (3,2).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (4,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,7).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (2,3).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,4).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (0,7).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (7,8).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (6,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {1} at (0,8).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (6,5).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,5).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (2,5).
forceMove placing {1} at (0,7).
forceMove placing {9} at (0,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (6,3).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (5,5).
findSubsets(columns) has simplified the puzzle.  Removing {5} at (3,5).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (7,6).
findSubsets(columns) has simplified the puzzle.  Removing {4} at (3,7).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (3,7).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (8,8).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,4).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (3,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (3,8).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,3).
findSubsets(rows) has simplified the puzzle.  Removing {9} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {5} at (5,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (5,6).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (5,2).
findSubsets(rows) has simplified the puzzle.  Removing {1} at (5,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (7,8).
findSubsets(rows) has simplified the puzzle.  Removing {3} at (7,0).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {1} from (3,2).
findSubsets(boxes) has simplified the puzzle .  Eliminating {9} from (4,0).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (4,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {8} from (3,4).
findSubsets(boxes) has simplified the puzzle .  Eliminating {5} from (4,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {4} from (3,6).
findSubsets(boxes) has simplified the puzzle .  Eliminating {7} from (7,8).
findSubsets(boxes) has simplified the puzzle .  Eliminating {2} from (6,8).
findSubsets(columns) has simplified the puzzle.  Removing {8} at (2,3).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {2} at (7,4).
findSubsets(columns) has simplified the puzzle.  Removing {7} at (8,4).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (6,5).
findSubsets(rows) has simplified the puzzle.  Removing {7} at (7,7).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {2} at (7,5).
findSubsets(rows) has simplified the puzzle.  Removing {8} at (8,5).
findSubsets(rows) has simplified the puzzle.  Removing {4} at (8,7).
findSubsets(columns) has simplified the puzzle.  Removing {9} at (2,5).
forceMove placing {9} at (2,3).
forceMove placing {8} at (2,5).
forceMove placing {8} at (5,3).
forceMove placing {4} at (5,6).
forceMove placing {3} at (6,3).
forceMove placing {2} at (6,5).
forceMove placing {8} at (6,8).
forceMove placing {3} at (7,6).
forceMove placing {4} at (8,5).
forceMove placing {7} at (8,7).
forceMove placing {1} at (8,8).
forceMove placing {7} at (3,3).
forceMove placing {8} at (3,6).
forceMove placing {9} at (3,7).
forceMove placing {5} at (3,8).
forceMove placing {9} at (4,4).
forceMove placing {7} at (4,8).
forceMove placing {1} at (5,2).
forceMove placing {2} at (5,4).
forceMove placing {5} at (5,5).
forceMove placing {8} at (7,0).
forceMove placing {7} at (7,4).
forceMove placing {9} at (7,5).
forceMove placing {4} at (7,7).
forceMove placing {2} at (7,8).
forceMove placing {3} at (8,0).
forceMove placing {8} at (8,4).
forceMove placing {4} at (3,2).
forceMove placing {1} at (3,4).
forceMove placing {6} at (3,5).
forceMove placing {5} at (4,0).
forceMove placing {9} at (5,0).


Enter an option
0. Exit
1. Try to solve the puzzle
2. Print current contents
3. Print the state of a cell
4. Load a new sudoku file
Which one? 2
+--------------------------+--------------------------+--------------------------+
|                          |                          |                          |
|    4       8       5     |    2       3       7     |    6       1       9     |
|                          |                          |                          |
|                          |                          |                          |
|                          |                          |                          |
|    6       9       2     |    5       4       1     |    7       8       3     |
|                          |                          |                          |
|                          |                          |                          |
|                          |                          |                          |
|    7       1       3     |    9       6       8     |    2       5       4     |
|                          |                          |                          |
+--------------------------+--------------------------+--------------------------+
|                          |                          |                          |
|    2       3       4     |    7       1       6     |    8       9       5     |
|                          |                          |                          |
|                          |                          |                          |
|                          |                          |                          |
|    5       6       8     |    4       9       3     |    1       2       7     |
|                          |                          |                          |
|                          |                          |                          |
|                          |                          |                          |
|    9       7       1     |    8       2       5     |    4       3       6     |
|                          |                          |                          |
+--------------------------+--------------------------+--------------------------+
|                          |                          |                          |
|    1       4       7     |    3       5       2     |    9       6       8     |
|                          |                          |                          |
|                          |                          |                          |
|                          |                          |                          |
|    8       5       6     |    1       7       9     |    3       4       2     |
|                          |                          |                          |
|                          |                          |                          |
|                          |                          |                          |
|    3       2       9     |    6       8       4     |    5       7       1     |
|                          |                          |                          |
+--------------------------+--------------------------+--------------------------+