1. Shlomi Fish
  2. shlomi-fish-homepage


shlomi-fish-homepage / t2 / project_spec.html

        <title>Freecell Solver - Project Specification</title>
        <h1>Freecell Solver - Project Specification</h1>

        <a href="http://vipe.technion.ac.il/~shlomif/freecell-solver/">Freecell Solver</a> 
            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:
        <h2>An Abstract Way to Determine the Order of the Derived States</h2>

        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

        <h2>Integrating Patsolve's State Ordering</h2>

        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.

        <h2>Integrating Patsolve's Mixed DFS/BFS Scan</h2>

        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.

        <h2>Thread Enabling</h2>

        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.

        <h2>Writing an Architecture Document</h2>

        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.

        <h2>A Command Line Analysing Class</h2>

        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.