Freecell Solver - Evolution of a C Program

     1 Introduction
          1.1 Rules of the Game
          1.2 Disclaimer
     2 Freecell Solver 0.2's Architecture
          2.1 The Scan that was used
          2.2 The Tests used by the Program
          2.3 The Data Types
     3 The States' Collection Implementation
          3.1 Binary-Search-Based Merge to Add the Sort Margin
          3.2 Vector of Pointers instead of Vector of Structs
          3.3 A Balanced Binary Tree
          3.4 A Hash Table
               3.4.1 XOR hash function vs. MD5
               3.4.2 Hash Optimizations.html
          3.5 Benchmarks
     4 The State Representation
          4.1 Reducing the Data Type Bit-Width
          4.2 Pointers to Stacks
          4.3 Remembering the Original Stack and Freecell Locations
               4.3.1 Solution
     5 Adding more scans
          5.1 The Original Hard-DFS Scan
          5.2 A*
          5.3 Soft DFS Rev. 1
          5.4 Soft DFS Rev. 2
          5.5 The BFS Optimization Scan
          5.6 Abstracting the Scans through the Derived States List
     6 The Move Stacks

