Freecell Solver's Features List
Note to Freecell Solver’s Users
Shlomi Fish - the core developer of Freecell Solver, and the webmaster of this website - has been experiencing reliability problems with incoming and outgoing E-mail (such as legitimate messages being dropped or classified as spam). They also affect his GMail-dot-com account.
Therefore, one should preferably contact him using other electronic means.
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, or both.
On UNIX-like operating systems: accepts some user signal combinations that turn some run-time debugging information on and off.
Some configurations are very fast: the solver was able to solve the first Microsoft Freecell 32,000 deals in 74 seconds on a Pentium 4-2.4 GHz computer (432 layouts per second), before that computer was decommissioned. On a Sandy Bridge Core i3 computer, these deals are now solved in 2.934 seconds (10,904 layouts per second).
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.
An optional
--hint-on-intractable
flag which presents the moves to the intermediate reached state, if the maximal number of iterations was reached without a conclusion (= "intractable").
Development Features
Available as a library for use within third-party applications. It is licensed under the MIT/Expat License, which means it can be used without any restrictions.
The core library and program is written in C code supported by modern C compilers such as GCC and LLVM/clang.
Full compatibility between dynamically-linked third-party applications to the version of the library that is used.
Compile-time options for hard-coding several game-types parameters, that can make the solver faster. There's a combined FCS_FREECELL_ONLY mode.
A test suite is included as part of the distribution.
The git repository contains Continuous Integration (CI) configurations and scripts, including Docker-using ones.
Scan Options
Supports the DFS (= Depth-First Search), Randomized DFS and Best-First-Search scans. Which one can be specified at run-time.
The order of the move functions 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 move functions.
With the A* scan, one can specify the weights of the different state evaluation 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 BrFS (= 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.
With the random-DFS scan, it is possible to specify a different moves selection for each depth in the DFS stack.
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 and empty columns, or unlimited.
Can solve games whose vacant columns can be filled by any card, by kings only, or by no card whatsoever.
Run-time choice of the number of freecells and columns. (limited by a compile-time directive)
Supports games of one and two decks.Support for 2 decks game variants was removed in recent versions given it added complexity to the code.List of PySol (PySolFC version) variants that can be solved:
- American Canister
- Baker’s Dozen
- Baker’s Game
- Bath
- Beleaguered Castle
- Box Fan
- British Canister
- Canister
- Castles in Spain
- Cat's Tail
- Challenge Freecell
- Citadel
- Cruel
- Deep
- Eight Off
- Exiled Kings
- Fan
- Fastness
- Forecell
- Free Fan
- Freecell
- Good Measure
- Kentish
- King Only Baker’s Game
- KingCell
- Kings
- Lightweight
- Ocean Towers
- Opus
- Penelope's Web
- Penguin (NOTE! This variant is only supported by PySol FC with some magic wrappers. It is not supported directly by Freecell Solver. Please do not ask us about it.)
- Portuguese Solitaire
- Relaxed Freecell
- Relaxed Seahaven Towers
- Repair
- Retinue
- Seahaven Towers
- Seven by Five
- Seven by Four
- Simple Simon
- Snake
- Somerset
- Spanish Patience II
- Streets and Alleys
- Stronghold
- Super Challenge Freecell
- Tuxedo
More user-invented variants can be specified on the command-line using command-line options.