A Sudoku Solver in C 1.11
Details
| Size: | 27K |
| Last Update: | 2008-04-15 23:41:38 |
| OS Support: | Linux |
| License/Program Type: | GPL (GNU General Public License) |
| Publisher: | Bill DuPree |
| Price: | $0.00 |
Description:
A Sudoku Solver in C 1.11 is puzzle software developed by Bill DuPree.
A Sudoku Solver in C is a console-based Linux program, written in C language, that solves Su Doku puzzles using deductive logic. It will only resort to trial-and-error and backtracking approaches upon exhausting its deductive moves.
Puzzles must be of the standard 9x9 variety using the (ASCII) characters 1 through 9 for the puzzle symbols. Puzzles should be submitted as 81 character strings which, when read left-to-right will fill a 9x9 Sudoku grid from left-to-right and top-to-bottom. In the puzzle specification, the characters 1 - 9 represent the puzzle givens or clues. Any other non-blank character represents an unsolved cell.
The puzzle solving algorithm is home grown. I did not borrow any of the usual techniques from the literature, e.g. Donald Knuth's "Dancing Links." Instead I rolled my own from scratch as a personal challenge. As such, its performance can only be blamed on yours truly. Still, I feel it is quite fast. On a 333 MHz Pentium II Linux box it solves typical medium force puzzles in approximately 800 microseconds or about 1,200 puzzles per second, give or take. On an Athlon XP 3000 it solves about 6,600 puzzles per sec. (Solving time is dependent upon degree of difficulty, so YMMV.)
Description of Algorithm:
The puzzle algorithm initially assumes every unsolved cell can assume every possible value. It then uses the placement of the givens to refine the choices available to each cell. I call this the markup phase.
After markup completes, the algorithm then looks for singleton cells with values that, due to constraints imposed by the row, column, or 3x3 region, may only assume one possible value. Once these cells are assigned values, the algorithm returns to the markup phase to apply these changes to the remaining candidate solutions. The markup/singleton phases alternate until either no more changes occur, or the puzzle is solved. I call the markup/singleton elimination loop the Simple Solver because in a large percentage of cases it solves the puzzle.
If the simple solver portion of the algorithm doesn't produce a solution, then more advanced deductive rules are applied.
I've implemented two additional rules as part of the deductive puzzle solver. The first is subset elimination wherein a row/column/region is scanned for X number of cells with X number of matching candidate solutions. If such subsets (or tuples) are found in the row, column, or region, then the candidates values from the subset may be eliminated from all other unsolved cells within the row, column, or region, respectively.
The next deductive rule examines each region looking for candidate values that exclusively align themselves along a single row or column, i.e. a vector. If such candidate values are found, then they may be eliminated from the cells outside of the region that are part of the aligned row or column.
Note that each of the advanced deductive rules calls all preceeding rules, in order, if that advanced rule has effected a change in puzzle markup.
Finally, if no solution is found after iteratively applying all deductive rules, then we begin trial-and-error using recursion for backtracking. A working copy is created from our puzzle, and using this copy the first cell with the smallest number of candidate solutions is chosen. One of the solutions values is assigned to that cell, and the solver algorithm is called using this working copy as its starting point. Eventually, either a solution, or an impasse is reached.
If we reach an impasse, the recursion unwinds and the next trial solution is attempted. If a solution is found (at any point) the values for the solution are added to a list. Again, so long as we are examining all possibilities, the recursion unwinds so that the next trial may be attempted. It is in this manner that we enumerate puzzles with multiple solutions.
Note that it is certainly possible to add to the list of applied deductive rules. The techniques known as "X-Wing" and "Swordfish" come to mind. On the other hand, adding these additional rules will, in all likelihood, slow the solver down by adding to the computational burden while producing very few results. I've seen the law of diminishing returns even in some of the existing rules, e.g. in subset elimination I only look at two and three valued subsets because taking it any further than that degraded performance.
What's New in This Release:
Code optimization has resulted in a 30% increase in speed.
A Sudoku Solver in C 1.11 supports english interface languages and works with Linux.
Downloading A Sudoku Solver in C 1.11 will take several seconds if you use fast ADSL connection.
0 comments
Downloadtube.com agrees that pirated software hurts software
developers and does not support such practices. We acknowledge and
agree that software piracy is theft. Using A Sudoku Solver in C 1.11 crack,
A Sudoku Solver in C 1.11 key generator, A Sudoku Solver in C 1.11 keygen, as well as any
pirated A Sudoku Solver in C 1.11 serial number/serial numbers and A Sudoku Solver in C 1.11
registration code/codes, warez, keys, torrents, passwords, is illegal
and does not support the future development of A Sudoku Solver in C 1.11.
Downloadtube.com advises that A Sudoku Solver in C 1.11 should be only used in
accordance with the rules of intellectual property and the existing
Criminal Code. Downloadtube.com does not allow the inclusion of any
crack, serial or keygen and disclaims any liability for the
inappropriate use of A Sudoku Solver in C 1.11.
Add to
A Sudoku Solver in C 1.11 Version History
Related Software
|
|
From category: MUD |
| arianne 0.12 is mud software developed by Miguel Angel Blanch Lardin. Arianne is a multiplayer online games framework and engine to develop turn based and real time games. It provides a simp... |
|
|
From category: FPS |
| Medal of Honor: Airborne Dedicated Server is as the name suggest, a dedicated Linux server package for Medal of Honor: Airborne.... |
|
|
From category: MUD |
| Cyphesis 0.5.10 is mud software developed by Alistair Riddoch. Cyphesis is a WorldForge server suitable running small games. Cyphesis is also designed by be used as an AI subsystem in a network of... |
|
|
From category: TBS |
| MKGI Chess Club is a chess playing server with a pure Web interface.... |
|
|
From category: Arcade |
| Absolute Blockbuster 1.0 is arcade software developed by Absolutist. Absolute BlockBuster is a collection of five amazing arcade games, among them BlockBuster, Squares, and other addictive pastimes... |
|
|
From category: Fortune |
| FreeDoko 0.7.3 is fortune software developed by Borg Enders and Diether Knof. FreeDoko is a Doppelkopf-game, written by Borg Enders and Diether Knof. It is developed under and for the platforms Lin... |
|
|
From category: RTS |
| FreeRa 060716 is rts software developed by Joris Meijer. FreeRa is a Westwood red alert game engine (original .mix files required). This is a rebuild of the (westwood) red alert game engine (based... |
|
|
From category: Simulation |
| Fight Win Prevail 0.0.8 is simulation software developed by The FWP-Team. Fight Win Prevail (or FWP for short) is a hobbyist multiplayer first person shooter. Fight Win Prevail is set in an imagina... |
|
|
From category: Arcade |
| Rom Check Fail is an arcade mashup. Or perhaps it\'s a remix. An homage?... |
|
|
From category: RPG |
| CoC Character Generator Alpha 7 is rpg software developed by Markus Svensson. CoC ChaGen is a character generator for Chaousium Inc\'s rpg Call of Cthulhu.CoC CharGen is released under the GNU GPL.... |
|
|
From category: FPS |
| D2X-XL is a Descent 2 OpenGL port to Linux.... |
|
|
From category: Fortune |
| fortune-mod-ru 1.51 is fortune software developed by Pavel Maryanov. fortune-mod-ru is a collection of cookie files in Russian. It includes the following categories: armenian (questions to... |
|
|
From category: Action |
| Neverball is part puzzle game, part action game, and entirely a test of skill. Also found here is Neverputt, a hot-seat multiplayer miniature golf game using the physics and graphics of Neverball.... |
|
|
From category: RPG |
| Enrapture Beta 0.6 is rpg software developed by Jan Qvarnstrom. Enrapture project is a OpenGL-based space/RPG game. It takes its influences from the old master piece Elite. Enrapture... |
|
|
From category: RPG |
| Daimonin Beta3-v0.966 is rpg software developed by Michael Toennies. FREE isometric real-time massive multiplayer Online RPG. 2d/3d graphics, 3d sound effects, digital ambient music. Fast ex... |
Leave a comment