This engine is being created with the purpose of simulating combinatorical strategies for variations of the 15-Puzzle problem in C++.
Name | Description | Version | Tests | Status |
---|---|---|---|---|
User Interface Design | A loop prompting user input. | |||
Puzzle Console Output | Multiple valid puzzle configurations can be formatted and streamed to the console. | |||
Random Configuration Generation | Up to 20,000 valid puzzle configurations can be generated. | |||
Writing Configurations To Files | Possible to write configurations created directly into a file. | |||
Reading Configurations From Files | Possible to read configuration files in order to process configurations further. | |||
Writing Solution Data To Files | Possible to write correctly formatted solution files. | |||
Read/Write NxN Configurations | Writing and Reading files containing arbitrarily sized puzzles is now possible. | |||
Solution File for Arbitrary Sized Partials | It is possible to create a solution file that contains any of the (N^2-1) partials. | |||
Puzzle Analysis for Continous Rows/Columns | It is possible to analyse a puzzle configuration for the total number of continuous rows / columns + reverse. | |||
Puzzle Analysis for Partial Continous Rows/Columns | It is possible to analyse a puzzle configuration for the total number of partial continuous rows / columns + reverse, for any partial N, s.t. N <= M (M = puzzle size). |
The current implementation of this system is not optimized, the following is a list of tasks which I plan to complete in the future.
- Implement Threading to speed up puzzle processing.
- Implement machine code augmentation for exploration purposes.
- Optimize loop processing, currently there is quite abit of wasteful looping and conditioning within the logic of this project.
- Replace the BigInteger parameter passing and return values from pass-by-value, to pass-by-references or pointers.
- Research Papers
- Blogs
- Wikipedia
- Finite Set Theory
Premake is the build system tools used for this repository, I prefer it to CMake as I have experience with Lua, and have used this framework previously.
GoogleTest is the Testing framework used for this repository. The main advantages of using this framework is that it is portable, reusable and based on the xUnit architecture.