JaimieVos / Elysium-Puzzle-Engine

🧩 | Simulation of Strategies for Variations of the 15-Puzzle Problem in C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

trello_1 trello_2 date version unreleased

About

This engine is being created with the purpose of simulating combinatorical strategies for variations of the 15-Puzzle problem in C++.

List of Features

Name Description Version Tests Status
User Interface Design A loop prompting user input. dev In Development Active
Puzzle Console Output Multiple valid puzzle configurations can be formatted and streamed to the console. dev In Development Active
Random Configuration Generation Up to 20,000 valid puzzle configurations can be generated. dev In Development Active
Writing Configurations To Files Possible to write configurations created directly into a file. dev In Development Active
Reading Configurations From Files Possible to read configuration files in order to process configurations further. dev In Development Active
Writing Solution Data To Files Possible to write correctly formatted solution files. dev In Development Active
Read/Write NxN Configurations Writing and Reading files containing arbitrarily sized puzzles is now possible. dev In Development Updating
Solution File for Arbitrary Sized Partials It is possible to create a solution file that contains any of the (N^2-1) partials. dev In Development Active
Puzzle Analysis for Continous Rows/Columns It is possible to analyse a puzzle configuration for the total number of continuous rows / columns + reverse. dev In Development Active
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). dev In Development Active

The current implementation of this system is not optimized, the following is a list of tasks which I plan to complete in the future.

List of Tasks:

  • 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.

References

Puzzle Research

Optimization Research

C++

Build Configuration

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.

Testing Framework

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.

About

🧩 | Simulation of Strategies for Variations of the 15-Puzzle Problem in C++

License:Apache License 2.0


Languages

Language:C++ 92.5%Language:Lua 6.1%Language:C 1.3%Language:Batchfile 0.1%