Author: Shlomi Fish

# Freecell Solver’s Authors and Contributors

Shlomi Fish
shlomif@cpan.org

## Freecell Solver’s Authors and Contributors List

- Shlomi Fish ( http://www.shlomifish.org/ ) - doing most of the work on Freecell Solver.

- Eric Warmenhoven - sending a program that generates the board of GNOME Freecell.

- Hai Huang - noting several boards of Microsoft Freecell that could not be solved by Freecell Solver.

- Magnus Reftel - noting the correct procedure for calculating how many cards can be moved as a function of the free freecells and free stacks.

- Colin Plumb - writing the MD5 code.

- Ron Rivest - inventing the MD5 hashing algorithm.

- Jim Horne - supplying the shuffling algorithm for Microsoft Freecell/Freecell Pro.

- Tom Holroyd - sending several Seahaven Towers games which Freecell Solver was unable to solve, thus making me improve the algorithm.

- Markus F. X. J. Oberhumer - writing PySol, on whose code I based the board generation program for it. He also contributed some patches.

- Justin Heyes-Jones - wrote a nice introduction to the A* algorithm, and wrote the basis for the pqueue.c code.

- Stephan Kulow - integrated Freecell Solver into the kpat Solitaire suite for KDE 2.1 and onwards; reported several bugs and memory leaks.

- Michael Keller - Contributing some useful input about some minor features lacking and the Spades/Clubs mix-up.

- GeYong - He created Freecell Tool, whose randomized scan provided inspiration for the random-DFS scan of Freecell Solver.

- Adrian Ettlinger - Integrating Freecell Solver into "Freecell Pro", and contributing some input.

- The perl 5.x Hackers - I copied its hash function.

- Gergeley Kontra - wrote a Vim script to align text which I used.

- Bob Jenkins - wrote the lookup2 hash function, which was used as the primary hash until reverted back to the perl 5.x hash. (check http://burtleburtle.net/bob/hash/)

- Tzafrir Cohen - His "RPM" lecture provided help in creating the RPM `.spec` file and constructing RPMs (RPM Package Manager) for Freecell Solver.

- Yotam Rubin - Preparing an initial Debian Package.

- Risko Gergely - Maintaining the current Debian Package and contributing some patches to the CMake build system.

- Chris Moore - Pointing to an out-of-date comment regarding the `MAX_NUM_CARDS_IN_A_STACK` which I updated.

- Anonymous (on http://xrl.us/h6ex ) - for pointing out the malloc.h and leading double underscores problems.

- Con Radchenko - supplying a small patch, and reporting a bug with `--method dfs`, and supplying some other input. Integrated Freecell Solver into http://pysolfc.sourceforge.net/ .

- larrysan45 - reporting a problem with `--sequence-move unlimited` and `--empty-stacks-filled-by kings`, which resulted in a bug fix.

- Ido Kanner ( http://ik.homelinux.org/ ) - reporting a segfault when running freecell-solver-2.28.0 on x86-64, and allowing us to diagnose it.

- Gary Campbell ( http://numin8r.us/ ) - participating in the mailing list and inspiring some past (and possibly future) work on optimising the length of the resultant solutions. He was given the honour of naming the "sand-stone" and "slick-rock" "-l" presets. Has his own solver for Freecell for DOS on his homepage.

- LECA Dimitri (Pythack) ( http://pythack.com/ ) - tried to run the Freecell Solver test suite and benchmarks on Archlinux, reported some problems in the process. This in turn eventually made us simplify the process and also uncovered some bugs in the dependencies.

- http://commons.wikimedia.org/wiki/User:Stannered - created The stop sign that we use on the download page, which is under the Creative Commons Attribution ShareAlike licence. Thanks!

- David Stevenson - inspiring a documentation clarification for broken versions of CMake (e.g: cmake-2.6.2).

- Jurij Bortnik ( http://freecellgamesolutions.com/ ) - reported some broken links on the Freecell Solver homepage.

- Kaz Kylheku ( http://www.kylheku.com/~kaz/ ) - author and originator of kazlib ( http://www.kylheku.com/~kaz/kazlib.html ) whose BSDLed balanced binary search tree is included in the Freecell Solver distribution.

- Don Woods ( http://www.icynic.com/~don/ ) - wrote an early Freecell solver ( http://fc-solve.shlomifish.org/don_woods.html ), whose source code inspired the early “delta states” algorithm, which is currently used by the dbm_fc_solver.

- Michiel de Bondt ( http://www.math.ru.nl/~debondt/ ) - suggested a way to improve the delta states algorithm, so states will be stored more compactly. Currently implemented in the dbm_fc_solver. See https://groups.yahoo.com/neo/groups/fc-solve-discuss/conversations/topics/1115 .

- Alon Zakai ( http://github.com/kripken ) - maintainer of emscripten, which allows one to convert LLVM bitcode (and ergo code in C, C++ and other languages) into JavaScript. Inspired some changes to make Freecell Solver’s build-process more user-friendly and idiot-proof.

- Olaf van der Kruk - reported an issue with using the online JavaScript-based solver (which is mostly translated from the C source using emscripten), which uncovered several bugs.

- The Mayhem Team - ( Alexandre Rebert, Thanassis Avgerinos, Sang Kil Cha, David Brumley, and Manuel Egele from Cylab at Carnegie Mellon University ) for reporting some failures of Freecell Solver executables to handle malformed input in the Debian Bug Tracker, e.g: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=715914 with steps to reproduce.

- “Insane Coder” - providing the alternative vasprintf() and asprintf() implementation, that was placed under the `asprintf-1.0` directory and used in case the host system does not provide such a function.

- A. Sinan Unur - for writing the article “An Excellent Optimization Story” that motivated a similar optimisation in `var_base_int.h` (originally linked from this Perl Weekly issue).

- Scaleway for allowing us to rent an ARM Linux server to fix the production code and tests there.

- Mageia - its build-system caught some test failures.

- Participants on https://bugs.kde.org/show_bug.cgi?id=405187 ( Jonathan Ryshpan, coz, Dan Ciarniello, Clifford Snow ) - reporting some issues with kpat which inspired some bug fixes in Freecell Solver.

- Andreas Sturmlechner - contributed to converting the build system to GNU install dirs.

- Giuseppe Bilotta - Providing OpenCL C boilerplate and help.

- https://openclipart.org/detail/216137/mail-message graphics by https://openclipart.org/artist/deusinvictus .