Freecell Solver
This is Freecell Solver - a program that automatically solves layouts of Freecell and similar variants of Card Solitaire such as Eight Off, Forecell and Seahaven Towers, as well as Simple Simon boards. Freecell Solver is free and open source software freely available under the MIT/X11 License. It is written in ANSI C and requires a C compiler to be built. Nevertheless, binaries for Microsoft 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. A more detailed list of features can be found in the Features List.
News
27-Jan-2010: Freecell Solver 2.40.0 was Released
Freecell Solver version 2.40.0 has been released. It is available in the form of a source tarball from the download page.
This release contains a fix to a string overflow with processing the command line arguments, and an optimised command-line preset that can be invoked as -l blue-yonder (or -l by for short) that solves the Microsoft 32,000 deals in under 100 seconds on a Pentium 4 2.4GHz machine. It also contains some more minor changes: there is now a Scan: header with the name of the current soft thread, when debugging under -s -i, an off-by-1 iterations count was fixed and the iteration handling callback is now applied globally to all the instances. Finally, make_pysol_freecell_board.py has support for generating PySol's and PySolFC's "Black Hole" Solitaire deals, intended for my newly released Black Hole Solitaire Solver.
Enjoy!
See comments and comment on this.
29-Dec-2009: Freecell Solver 2.38.0 was Released
Freecell Solver version 2.38.0 has been released. It is available in the form of a source tarball from the download page.
This is a minor release which makes sure one can build Freecell Solver outside the source distribution (e.g: mkdir build ; cd build ; cmake ..) without AsciiDoc, adds a --pysfolfc (or an -F for short) flag to make_pysol_freecell_board.py and fixes one of the help displays.
See comments and comment on this.
27-Nov-2009: Freecell Solver 2.36.0 was Released
Freecell Solver version 2.36.0 has been released. It is available in the form of a source tarball from the download page.
The main highlight of this release is that the plaintext documentation that was part of the source distribution were converted to AsciiDoc, a lightweight markup language that allows the plaintext and human-readable sources to be converted to HTML, to DocBook/XML, to PDF and to other formats. As a result, they are now also available online in HTML formats.
Furthermore, the process for getting the test suite and benchmarking process up and running were considerably simplified, thanks to the input received by Dimitri Leca (Pythack).
Finally, there are some other more minor improvements. This release has been delayed quite a bit due to some neglect on the part of the main maintainer, but we hope you find what's new satisfying enough. Happy solving!
See comments and comment on this.
23-Jul-2009: Screencast of Freecell Solver in Action
Yesterday, I spent some time on preparing a screencast of PySolFC auto-solving a deal of Freecell using Freecell Solver . Here's an embedded player:
I remember the first time I saw KDE's KPatience automatically solving a deal of Freecell, while using Freecell Solver as its back-end. Seeing the cards move on their own was very cool, and brought me a lot of joy. Now that PySolFC has built-in support for Freecell Solver, I was able to use it to prepare the screencast. I hope you'll enjoy seeing this screencast, and would be interested in trying out PySolFC and Freecell Solver.
I'm going to blog about how I prepared the screencast on my tech blog, which may prove instructive to other people wanting to prepare screencasts on Linux. This was the first video I ever prepared and producing it proved to be a pleasant experience, even though some tasks did not work right away.
See comments and comment on this.
11-Jul-2009: Freecell Solver 2.34.0 was Released
Freecell Solver version 2.34.0 has been released. It is available in the form of a source tarball from the download page.
Back in the abandoned 2.10.x branch a programmer called Michael Mann contributed a new Simple Simon move function that allowed it to solve more games. In 2.34.0 this move function was restored, and made optional. We now have a theme called "the-last-mohican" (or "tlm" for short), after the movie "The Last of the Mohicans" by a different Michael Mann, which I have watched and enjoyed, that is capable of solving over 90% of the first 5,000 PySol Simple Simon deals. (Incidentally "The Last Mohican" is the direct translation of the book and movie's name in Hebrew). The solutions of the solver were verified to be correct using Games-Solitaire-Verify.
Working on this theme uncovered a bug in the solver where the --next-instance flag was removed by accident, and it is now fixed.
Aside from that, there's now an improved atomic moves theme - "toons-for-twenty-somethings", which can solve all of MS Freecell's 32,000 deals. It is still much slower than the meta-moves-based theme.
There are also some other more minor changes, which can be found at the NEWS file in the distribution.
See comments and comment on this.
26-Jun-2009: Maintenance Freecell Solver 2.32.1 Release
Hot on the heels of Freecell Solver 2.32.0, there's now a 2.32.1 maintenance release available from the download page. This release fixes several important build bugs, especially on Windows, but also on UNIXes.
Please test it to see if any other problems remain.
See comments and comment on this.
24-Jun-2009: Freecell Solver 2.32.0 was Released
Freecell Solver version 2.32.0 has been released. It is available in the form of a source tarball from the download page.
This version features a large code cleanup which also resulted in a substantial speed boost. The code cleanup was guided by a script that was written to list all occurences of identifiers with the same name, in order to find uncommon identifiers.
There were several bug-fixes done to the CMake-based build system, and there's now suppot for Google's tcmalloc and hidden internal identifiers in the DLL/shared-library. The inline keyword for definining inline functions is now supported on more compilers and more functions or macros have been converted to inline functions.
We hope you enjoy this release.
See comments and comment on this.
Previous News Items
Links
- Freecell.org - a web-site dedicated to the game.
- Michael Keller's Freecell site - contains the Freecell FAQ (Frequently Asked Questions) and other stuff.
- FC-Pro - a Freecell implementation for Windows which gives a choice of several solvers, including Freecell Solver.
- An unsolvable instance of Freecell - why not all possible initial Freecell boards can be solved.
- Justin-Heyes Jones' A* page - a page about the A* scan.
- patsolve - a program by Dr. Tom Holroyd that solves Freecell and Seahaven Towers games. There are some fundamental differences between its architecture and that of Freecell Solver, so it might be worthwhile to take a look.
- Freecell Solver's Freshmeat App-Index Record
- Freecell Solver's Mailing-List (at YahooGroups).
- The Freecell Solver Blog
- A Presentation about Freecell Solver


