Contents
Up
Prev
Next
Freecell Solver - Evolution of a C Program
Freecell Solver - Evolution of a C Program
1. Introduction
1.1. Rules of the Game
1.1.1. Common Strategies
1.2. Copyrights and Disclaimer
2. Freecell Solver 0.2's Architecture
2.1. The Scan that was used
3. Evolution of the States' Collection
3.1. Initial Perl Version - Flat List
3.2. First C Version - Sorted Array
3.3. Binary-Search-Based Merge to Add the Sort Margin
3.4. Array of Pointers
3.5. A Balanced Binary Tree
3.6. A Hash Table
3.6.1. The Choice of a Hash Function
3.6.2. Hash Optimizations
4. Moves Management
4.1. Meta-Moves (instead of Atomic ones)
4.2. Stack to Stack Moves
4.3. More Moves Generalization
4.4. Non-Solvable Deals
5. Scanning
5.1. Specifying the Order of Tests
5.2. Best-First Search
5.3. Soft DFS
5.4. The BrFS Optimization Scan
6. The State Representation
6.1. Reducing the Data Type Bit-Width
6.2. Pointers to Stacks
6.3. Remembering the Original Stack and Freecell Locations
6.3.1. Solution
7. Board Auto-Generators
8. Why not C++?
9. The fc-solve-discuss flame-war
10. The story of the user API
11. Auto-confisication and Friends
12. The Freshmeat Effect (and how to avoid it)
13. Finale
13.1. Links and References
13.2. Freecell Solver - EoaCP - The Book
Contents
Up
Prev
Next
Written by
Shlomi Fish
Made with Quad-Pres