Freecell Solver is a program that automatically solves games of Freecell and similar Solitaire variants such as Eight Off, Forecell and Seahaven Towers, as well as Simple Simon boards.
Freecell Solver is free software distributed under the public domain. Freecell Solver is written in ANSI C and requires a C compiler to be built. Nevertheless, binaries for Windows 32-bit are available.
Included with the archive is source code for programs that can automatically feed it with the boards of several popular Solitaire Implementations.
Freecell Solver can also be built as a library for use within your own Solitaire implementations.
Product's homepage
Here are some key features of "Freecell Solver":
Usability Options:
· The stacks and freecells retain their position throughout the presented solution.
· Can present either the intermediate states (stepping at one move or sequence move) or the moves that are required for the solution.
· On UNIX: accepts some user signal combinations that turn some run-time debugging information on and off.
· Some configurations are very fast: can solve the Microsoft 32,000 in 22 minutes on a Pentium III 667 MHz machine.
· Option to use atomic moves which guarantee an accurate verdict. (non-atomic scans may report a false negative)
· Ability to read command line arguments from a file, or from a preset collection. Makes command lines much less verbose.
Development Features:
· Available as a library for use within third-party applications. The license is Public Domain, which means it can be used without any restrictions everywhere.
· The core library and program is written entirely in a portable ANSI C code.
· Compile-Time option for using either states of flat stacks ("Compact States") and states in which the stacks are stored as pointers, while each stack formation is allocated only once. The former is faster, but the latter consumes less memory.
· Full compatiblity between dynamically-linked third-party applications to the version of the library that is used.
Scan Options:
· Supports the DFS (= Depth-First Search), Randomized DFS and A* scans. Which one can be specified at run-time.
· The order of the tests to be conducted on a given state can be specified at the beginning of the scan. It is also possible to include only a subset of the available tests.
· With the A* scan, one can specify the weights of the different state evalutaion parameters.
· One can limit the scan to a certain number of checked states.
· It is possible to resume a scan from a pre-empted position.
· After a solution path was found it can be optimized using a BFS (= Breadth-First Search) scan on the intermediate states.
· There is an option to reparent states during a scan if their depth in the solution tree is higher than the one with which they were reached. This also tends to shorten the solution length.
· The Randomized DFS scan accepts a user-defined seed.
· Several scans can be played on the same states' collection (while switching from scan to scan) giving on average a faster solving time.
· It is possible to specify a static prelude of quotas to be played before the perpetual loop.
Game Types:
· Can solve games whose sequences are built by suit, by alternate colour or by rank regardless of colour.
· Can solve games whose sequence move is limited by the number of Freecells, or unlimited.
· Can solve games whose vacant stacks can be filled by any card, by kings only, or by no card whatsoever.
· Run-time choice of the number of Freecells and Stacks. (limited by a compile-time directive)
· Supports games of one and two decks.
List of PySol variants that can be solved:
· Baker's Dozen
· Baker's Game
· Beleaguered Castle
· Citadel
· Cruel
· Der Katzenschwanz
· Die Schlange
· Eight Off
· Forecell
· Freecell
· Good Measure
· Kings' Only Baker's Game
· Relaxed Freecell
· Relaxed Seahaven Towers
· Seahaven Towers
· Simple Simon
· Streets and Alleys
· More user-invented variants can be specified on the command-line using command-line options.
What's New in This Release: [ read full changelog ]
· Convert the references to the web-site and repository away from berlios.de, as it was announced it will become offline.
· Bug fix: correct the handling of foundations with values 0 (e.g: +H-0+,+S-0+ ).
· Bug fix: made the +-mi+/+--max-iters+ flag global for all instances.Previously, it affected only the last one.
· Add an experimental +delta_states.c+ implementation and +dbm_solver.c+ that uses it to drive a Freecell Solver scan with an on-disk database (currently Google LevelDB and Berkeley DB are supported). So far it seems that with a limited cache size, this does not scale too well.
· Add the experimental +pruner-main.c+ (not installed by default).
· Add support for generating "all_in_a_row" deals to +make_pysol_freecll_board.py+
· Many small optimizations and cleanups.