Freecell Solver Links
Resources
Freecell Solver Resources on the Net.
-
Freecell Solver's Mailing-List - a mailing-list dedicated to discussing the usage and development of Freecell Solver and general techniques for solving card solitaire games. Hosted by YahooGroups.
-
The Freecell Solver Blog - a blog dedicated to Freecell Solver, solving Freecell and other related issues.
-
Freshmeat.net's App-Index Record - the record for Freecell Solver at Freshmeat. You can find there a version history, a Freshmeat internal hit count, and other useful information.
-
Freecell Solver Lecture - A lecture I gave to the Haifa Linux Club about the development of Freecell Solver.
-
BerliOS' Project Page - contains instructions for checking out the source from its Subversion repository and other goodies.
-
ViewVC Repository Viewer - allows one to browse the repository online with convenience. See also this GreaseMonkey script to provide links back to the Subversion repository's URLs
Technologies
Technologies used by Freecell Solver or that aided in its development.
-
libavl - a very nice library which contains optimized C implementations of an AVL and Red-Black binary trees. It's GPLed, which means it can only be used by certain types of Open-Source software.
-
libredblack - an ANSI C implementation of a Red-Black tree. Takes some modifications to compile on Win32. LGPL, so can be used by a code of any license.
-
glib - a C library used by gtk+, which can also be used separately (as is the case with Freecell Solver). Contains implementations of a hash, and an unoptimized balanced binary tree. Both are slower than libavl/libredblack or the internal hash implmentation, and it is less programmer-friendly.
-
The A* scan - a states graph scan that uses a priority queue for determining which state to go to next. This page contains some source code, but the explanation is also very good.
-
The dmalloc malloc debugging library - a library to trace memory leaks. Freecell Solver used to have some of those in various stages of its development, and this library helped to remove them. It has a rather awkward output, and I had to use a debugger interactively to complement it, but it is still quite helpful. Now mostly superceded by Valgrind.
-
CMake - a cross-platform, open-source build system, which is used by Freecell Solver to portably build dynamically-linked libraries and facilitate the build process on different operating systems. It replaced GNU Autoconf, Automake and Libtool, which predate CMake and have gained popularity lacking any good competition, but are more error-prone and slow.
-
Valgrind - a sophisticated memory debugger for x86-linux. Helped trace a few hard-to-catch bugs in Freecell Solver.
-
Vim - Vi Improved - an excellent cross-platform text editor with many powerful features.
-
Subversion - an Open-Source version control management system that has been used in maintaining the Freecell Solver codebase. It replaced CVS which is older and much more limited.
-
Perl - Perl is a sophisticated, high-level, dynamic programming language. It is often considered a "scripting language", but can be easily used for writing large-scale and production code. Perl proved useful for writing a lot of code to automate many tasks in the development of Freecell Solver. Lately, it was also utilised as the foundation for its test suite, especially in writing the solutions' verification code.
-
GDB, the GNU Debugger - a powerful, cross-platform, scriptable, and open-source command-line debugger for binary programs (C, C++, Assembly, etc.). Made debugging and fixing many hard-to-catch bugs much easier.
-
AsciiDoc - a lightweight markup language (with open-source converters) that allows to write plain-text and convert it to XHTML, to DocBook/XML, and subsequently to other formats such as PDFs, or UNIX man pages. We use it for the distributed documentation.
Programs that use Freecell Solver
-
kpat - a Solitaire suite for the KDE desktop for UNIXes. Uses Freecell Solver to solve its Freecell boards, starting of the version that was shipped with KDE 2.1.
-
Freecell3D - a 3-Dimensional Direct-X Freecell Implementation for Windows. Shareware.
-
FreeCell Pro - a free Freecell implementation for Windows with many professional features. Integrated Tom Holroyd's Patsolve, and the original Don Woods' solver as well as my own. Source code is available.
-
PySolFC - a collection of more than 1,000 Solitaire card games originally based on PySol. Has optional support for playing using the Freecell Solver executable.
People
Links to the homepages of people who contributed in any way to Freecell Solver. Because of spamming issues, I don't put their E-mails here. In case you want their E-mail address, either go to their homepage or send me an E-mail.
-
Stephan Kulow - as the maintainer of kpat for a brief period, he contributed bug fixes, memory leaks reports, and general commentary to Freecell Solver. Stephan and I still hold discussions about FCS in the mailing-list or in private.
-
Justin Heyes-Jones - I learned about the A* scan through his webpage, and he allowed me to incorporate his binary heap code into Freecell Solver.
-
Markus FXJ Oberhumer - contributed some bug-fixes and bug-reports to Freecell Solver. He is the author of PySol, a very nice Solitaire suite which is written in Python. I used its code to write a script that automatically generates its initial boards.
-
Dr. Tom Holroyd - author of Patsolve and someone whom I discussed Freecell solving with for many E-mail transactions. He inspired or encouraged many features in Freecell Solver.
-
Interview with Adrian Ettlinger - an interview with Adrian Ettlinger, the maintainer of FreeCell Pro, who helped in adapting it to make use of Freecell Solver. Adrian also maintains a page about the American Railroad History Database.
Other Solvers
We have competition. But there's nothing wrong with competition. ;-)
-
patsolve - an ANSI C program that automatically solves games of Freecell and Seahaven Towers. Source code is available under the GPL. Its author, Tom Holroyd, and I discussed Freecell solving for quite a few E-mail transactions, before I established the mailing-list.
-
Freecell Pro - a Freecell implementation for Win32 that contains the solver by Don Woods. Very fast and relatively accurate solving. The Source code is available.
-
Gfreecell - an implementation of Freecell for Gtk+ with its own solver. Source code is available, but it's in French. %-)
-
Freecell Tool - a Win32 program that hijacks games out of Microsoft Freecell and displays their solution. Provided the inspiration for Freecell Solver's Random-DFS-based scans.
-
Berto's Freecell and Brain Jam Solvers - Two programs for Windows that solve Freecell and Baker's Game (which he refers to as Brain Jam). Source code is not available.
-
autofree - A freeware program by Lingyun Tuo that automatically solves Freecell.
-
A Solver for Mathematica - a Mathematica application by Luc Barthlet that solves Freecell games. Source code is available and is explained in detail.
-
William Tunstall-Pedoe's Solver - he mentions he wrote one in his C.V., which contains other interesting artificial intelligence musings. The source code and the binary are not available for free download online and may or may not be available upon request.
-
X11 Seahaven - contains C++ source code for a Seahaven Towers auto-solver.
-
Common LISP Solver - by Kevin Atkinson and Shari Holstege. Written in Common LISP and the source code is available under the GPL. It was written as part of an AI course project and contains a final report.
-
C++ Port of Freecell Solver by Michael Mann - Michael Mann ported FCS to C++ and used doxygen to cross-reference and document the code. Covers version 2.2.x of the program.
-
Dominic Veit's Freecell Solver - a solver written in Java that does not use back-tracking and is still able to win 85% of the games.
-
Gary Campbell's FCELL.COM - a solver for Freecell written in x86 assembler for DOS and compatible environments. Reportedly very fast and uses some interesting techniques. See some discussion of it in the fc-solve-discuss mailing list.
-
plspider.exe - a solver for Spider Solitaire - the site contains a Win32 binary, which, due to bad design decisions, is using many of the author's custom libraries, and is also multi-threaded. The author has sent me the source code, but I am unable to compile it because I lack the libraries that he used.
-
GUI FreeCell Solver 1.0rc5 for Mac OS X 10.2 by JCP Software - it's hard to know which solving library it uses and whether it is original. The web-site is short on details.
-
Algorithm to Solve FreeCell Solitaire Games - George T. Heineman's step-by-step tutorial on O'Reilly-Net about how to construct a solver for Freecell in Java.
-
Solver for "Black Hole" Solitaire - a solver for the solitaire "Black Hole" in Perl 5 by the same author as Freecell Solver.
Reviews of Freecell Solver
-
Sweet Code's Review (on the Internet Archive).
-
Senior Citizen - quite amusing, IMO.
-
A review by Mark Turnage of the "Group of Linux Users in Memphis" - also quite amusing.
General Freecell Links
-
The Freecell FAQ - contains a lot of interesting questions and answers regarding Freecell.
-
Card Games Wikia (Deckipedia) - a wiki about card games, including but not limited to Solitaire games such as Freecell.
-
An unsolvable instance of Freecell - a proof that not all initial Freecell instances are solvable.


