Freecell Solver Links

Resources

Freecell Solver Resources on the Net.

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 used to be GPLed but is now LGPLed, which means it can be used in open-source and proprietary code.

  • 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. The page contains some source code, but the explanation is also very good. Note that in Freecell Solver, we ended up implementing a Best-first search instead due to a misunderstanding.

  • 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.

  • MinGW-w64 - a port of the GNU build tool-chain (including GCC) to Windows 32-bit and Windows 64-bit. Used for preparing Microsoft Windows packages.

  • DWIM Perl for Windows - a comprehensive and open-source distribution of Perl 5 for Windows. Based on Strawberry Perl.

  • ctypes - an advanced foreign function interface (FFI) for Python. Used for automated testing.

  • Inline::C - Inline::C allows one to write Perl subrourtines in C. Freecell Solver uses it for automated testing and for wrapping some of the internal and external C APIs.

Programs that use Freecell Solver

  • kpat - a Solitaire suite for the KDE desktop for UNIXes. It used to use Freecell Solver to solve its Freecell boards, starting of the version that was shipped with KDE 2.1. After KDE 4.0, it converted to use a modified version of Tom Holroyd’s patsolve.

  • 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. Open source under version 3 of the GPL. Has optional support for playing using the Freecell Solver executable. Note that Shlomi Fish maintains several branches with enhancements for it on GitHub.

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. The open source code is available - originally under the GPL, but later converted into the MIT/X11 licence, in hope of future integration with Freecell Solver. 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 - an original solver written in C++ (with a GUI). The web-site is short on details, but I was contacted about it by the author, Julian Pellico, who informed me that he has made the source available as open-source software under the GPLv3.

  • 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 patience games “Black Hole” and “All in a Row” in C (originally in Perl 5) by the same author as Freecell Solver.

  • FreeCell Java Solver - a solver for Freecell written in Java on Sourceforge.net. Open source under the restrictive GPLv3 licence.

  • Solitairey online patience game - contains a Freecell solver written in JavaScript. The source code for it is available on github, under the open source FreeBSD licence.

  • ShootMe's Klondike Solver - a solver for Klondike Solitaire (known as the “Solitaire” game from Windows) written in C++ and available under the permissive MIT/X11 Licence.

  • “FreeCell puzzles solver API” by rengolin - a blog post about some C++ code on GitHub for solving Freecell. Under the GPL version 3 open source (but restrictive) licence.

  • A Solver for Freecell written in Java by Shirl Hart (on GitHub) - produces very short solutions.

Reviews of Freecell Solver

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.

  • "FreeCell" on the Wikipedia.

  • Short FreeCell Solutions - contains solutions to the first 1 million Microsoft deals. The first 32,000 require JavaScript to be viewed, but those above 32,000 can be read using a form submission. The solver that generated these solution does not appear to be available.

    The maintainer of this site has reported some broken links here, so it's only fair that we will link back to him.

  • Solitairey - play Freecell and other Patience games online. The source code is available on GitHub.

  • “World of Solitaire” - another attractive online implementation of various Patience games, including Freecell, and Baker's Game.



Share/Bookmark