Freecell Solver's Features List
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: can solve the first Microsoft Freecell 32,000 deals in 74 seconds on a Pentium 4-2.4 GHz computer. (432 layouts per second). On a Core i3 computer, these deals are solved in 11.5 seconds ( 2,781 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.
Development Features
- Available as a library for use within third-party applications. It is licensed under the MIT/X11 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 compatiblity 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.
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 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 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.
-
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
- 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.

