FreeCell Solver Changelog

What's new in FreeCell Solver 3.24.0

Feb 24, 2014
  • Handle board/layout inputs without a trailing newline character on the last line properly (thanks to someone who reported it via E-mail with respect to the JavaScript-based solver).
  • Add the +-l video-editing+ or +-l ve+ flare-based preset for shorter solutions (on average).
  • The distribution now contains the sources for the so-called split-fcc-solver, which was originally conceived as an attempt to determine whether the Windows Freecell deal No. 384,243 is solvable with two freecells or not. The attempt failed because the split-FCC-solver generated large intermediate outputs, but it may prove of some utility

New in FreeCell Solver 3.20.0 (Jun 27, 2013)

  • Major speedups to the Simple Simon code - including order of complexity
  • ones where a lookup is now O(1) instead of O(num_cards). The Simple Simon
  • code was in general heavily refactored and cleaned up.
  • Some bugs in the Simple Simon alogrithms were fixed, slightly modifying
  • the outputted solutions.
  • Add missing BuildRequires to the RPM .spec .
  • Add the +qualified-seed-improved+ preset.
  • Fix the run-time display of the iteration count during
  • +pkill -USR1 fc-solve+.
  • Some minor refactorings and optimizations.

New in FreeCell Solver 3.18.1 (May 31, 2013)

  • Fix "make install" - there were some problems with the generation of the man pages.
  • Fix the RPM .spec building.

New in FreeCell Solver 3.18.0 (May 31, 2013)

  • Add a JavaScript port that uses Emscripten ( https://github.com/kripken/emscripten ) to compile the C code into JavaScript. See +Makefile.to-javascript.mak+ and the contents of The +/fc-solve/site/wml+ directory of the repository.
  • Convert the CMake build system to the common +cmake/Shlomif_Common.cmake+ file, which will facilitate cross-project maintenance. It is included inside the archive.
  • Added a +--help+ flag for the summarize-fc-solve executable.
  • Got the test suite and the +dbm_fc_solver+ and the +depth_dbm_fc_solver+ to run properly on 32-bit architectures.
  • The default rpm spec now runs the test suite.
  • Add http://en.wikipedia.org/wiki/Const-correctness[const] annotations and moved declarations to where they are first assigned.

New in FreeCell Solver 3.16.0 (Dec 1, 2012)

  • Added the +-l micro-finance-improved+ preset (or +-l mfi+ for short),
  • which somewhat improves the length of the solutions of the +micro-finance+
  • preset.
  • Added the +--flares-choice+ option, which determines how the winning flare
  • is chosen.
  • Added the +--flares-iters-factor+ option (or +-fif+ for short), which
  • specifies a factor to multiply the flares quotas.
  • Added the +-l qualified-seed+ preset (or +-l qs+ for short),
  • which somewhat improves the length of the solutions of the
  • +-l micro-finance-improved+ preset.
  • The individual flares are now recycled and their memory is reused when
  • they are no longer needed. This is a RAM optimization, which is applicable
  • only for flares-based presets.

New in FreeCell Solver 3.14.0 (Nov 1, 2012)

  • Got the tests to pass with +cmake -DFCS_WITHOUT_DEPTH_FIELD=1+ by making the library behave the same as without it. This also affected the behaviour of +./fc-solve -l mo+ with attempting to solve Baker’s Dozen deals.
  • On UNIX platforms, +fc-solve+ now exits gracefully with the message “Iterations count exceeded.”, upon receiving a SIGABRT signal. Can be triggered by executing +pkill -ABRT fc-solve+.
  • The game states’ input routines now accept regular columns that start with a leading colon (":"). As a result, one can input the states as output from the solver with the +-p+ and +-t+ flags directly there.
  • Added a 6th BeFS weight (see the +-asw+ flag) of the inverse of the number of cards not above parents. Using +./freecell-solver-range-parallel-solve 1 32000 1 -p -t -sam --method a-star -to 0123467589 -asw 1,0,0,0,0,1 -sp r:tf -mi 100000+ appears to be interesting.
  • Allow test groups inside the +-to+ and +-dto+ flags to be ordered using the +=asw(…)+ function and its parameters, based on the BeFS (Best-first search) weights calculation.
  • Added the +-l amateur-star+ (or +-l as+ for short) preset, based on the +=asw(…)+ ordering that is the fastest preset yet.
  • Added the +-l micro-finance+ (or +-l mf+ for short) preset, based on the 6th BeFS weight.
  • Implement a Prune for games whose columns cannot be filled by any card (such as Baker’s Dozen), where moving the last card on a column to a different column is pointless. For more information, see http://tech.groups.yahoo.com/group/fc-solve-discuss/message/1121 .
  • In +dbm_fc_solver+ and +depth_dbm_fc_solver+, implement the “DeBondt” encoding method for Freecell and Baker’s Dozen, which allows for an even more compact representation of the encoded states.
  • The libfreecell-solver code is now 64-bit-enabled and many of the limits were converted to allow for 64-bit systems.
  • Dropped support for Microsoft Visual C++ (+CL.EXE+) and other compilers that don't support C99/gnu99.
  • Add +scripts/convert-dbm-fc-solver-solution-to-fc-solve-solution.pl+ to convert a solution output of the dbm_fc_solver to one compatible with fc-solve.

New in FreeCell Solver 3.10.0 (May 25, 2012)

  • This release fixes two bugs - one with the --max-iters affecting only the last instance, and one with reading foundations with 0, and implements many small optimisations and cleanups. It also adds some experimental code with the so-called delta-states, where states are compactly encoded based on the original state. This functionality is not available in the main solver yet, but it powers the experimental on-disk-key/value-databases-based solver, which end up not scaling very well during testing.

New in FreeCell Solver 3.6.0 (Mar 10, 2011)

  • Now installing the +fcs_dllexport.h+ header file. It is needed for use of libfreecell-solver in third-party programs, so previously including +fcs_user.h+ did not work.
  • Add the +--tracemem+ compile-time option for tracing the amount of RAM and time used by Freecell Solver as a function of the iterations count.
  • Bug fix for incrementall increasing the limits.
  • Add a modified version of kazlib's balanced binary search tree to the distribution so one will be available built-in. It can be used for both the states' storage and for the --rcs LRU cache.
  • Revamped the various range solvers, while extracting common functionality into header files, functions and macros.
  • Some relatively minor optimisations and code cleanups.

New in FreeCell Solver 3.2.0 (Sep 2, 2010)

  • This release implements the --depth-tests-order flag that allows varying the tests' order based on the depth which allows for interesting (and faster) searches. Several new presets : -l the-iglu-cabal , -l foss-nessy and -l tea-for-two have been added , the latter optimised for two freecell deals. There are also several bug-fixes, optimisations and code cleanups.

New in FreeCell Solver 2.32.1 (Jun 26, 2009)

  • This release fixes many build problems, especially on Windows (and MSVC), but also on Linux.

New in FreeCell Solver 2.32.0 (Jun 25, 2009)

  • A large code cleanup was done, which also resulted in a substantial speed boost. Several bugfixes were done to the CMake-based build system.
  • Support for Google's tcmalloc was added.
  • Internal identifiers in the DLL/shared-library were hidden.
  • The inline keyword is now supported on more compilers.
  • More functions and macros have been converted to inline functions

New in FreeCell Solver 2.28.1 (May 18, 2009)

  • An off-by-one error that caused a segfault on x86-64 systems was fixed.

New in FreeCell Solver 2.28.0 (May 17, 2009)

  • Several significant optimizations. Many other cleanups and tweaks to the internals. Makefiles have been added for many alternative compilers, and the code was adapted to compile... on TenDRA. The "configure" script was renamed to "Tatzer", so it won't be used by end-users who are used to Autoconf conventions