I wanted to take a university project for hacking on Freecell Solver.
Eventually, the idea did not materialize because I could not find a
suitable supervisor (and because I realized I did not really need the
project). In any case, the specification I wrote for the project may probe
to be of a roadmap for the next releases. So here goes. Please comment and
flame away:
Freecell Solver - Project Specification
Introduction
Freecell Solver is a feature-rich library and stand-alone command line
program for solving games of Freecell, and similar Solitaire games.
Freecell Solver is already mature software and is currently at version
2.8.0. The project in question will enhance it in several ways:
An Abstract Way to Determine the Order of the Derived States
In a Depth-First-Search Scan, each state gives way to several derived
states. Freecell Solver has various tests, each generating different
states. These tests can be grouped together and then the tests generated
by the entire group can be ordered.
At the moment only a random ordering is supported. The project will create
an abstract way to sequence the tests in a group with several supported
back-ends.
Integrating Patsolve's State Ordering
Patsolve is a competing open-source Freecell Solver by Dr. Tom Holroyd.
The project will incorporate Patsolve's test-ordering logic (which gives
way to a very fast atomic-moves based ordering) into Freecell Solver based
on the framework proposed in the aforementioned change.
That way it would be possible to run several Patsolve scans on one state
collection using the Freecell Solver framework.
Integrating Patsolve's Mixed DFS/BFS Scan
At the moment, Freecell Solver supports a DFS scan and a Best-First
Search scan. The project will also add the Mixed
Depth-First-Search/Breadth-First-Search scan from Patsolve which gives
near minimal solutions.
Thread Enabling
Freecell Solver as of now distinguishes between "Hard Threads" - so
called system threads that operate on the same states collection. However,
no locks are available to make sure they don't interfere with each other.
Shlomi Fish, a Freecell Solver developer, has already proposed a model to
thread enable Freecell Solver. This model will be implemented as part of
the project.
Writing an Architecture Document
Freecell Solver has a relatively complex architecture with 20 modules but
still has no up-to-date architecture document. One will be written as part
of the project to aid external developers to take part in it should they
desire to do so.
A Command Line Analysing Class
Due to the fact that Freecell Solver can read options from a file and can
process presets, a new command line analysing mechanism is needed. This
will be implemented as part of the project and will sport nested
doubly-linked lists for manipulating the arguments list.
------------
Regards,
Shlomi Fish
----------------------------------------------------------------------
Shlomi Fish shlomif_at_vipe.technion.ac.il
Home Page:
http://t2.technion.ac.il/~shlomif/
He who re-invents the wheel, understands much better how a wheel works.
Received on Sat Oct 26 2002 - 04:09:13 IST