[x] Better hash function for the board to prevent checking the same board multiple times
Hash board to int (adjustment needed)
[ ] Improve beam search algorithm to produce the same result every time
This makes sure the search is stable
[x] Cut off parent states and save current states only to greatly reduce memory consumption
[x] Save routes in new states in a long long list (max 100 or 150 steps) This will be replaced with unsigned char array instead, max size will be 100 or 150 depending on the usage but 50 should be enough
[x] Use unsigned char instead of int whenever possible to greatly reduce memory consumption
[x] Board analysis before running the algorithm, very important for early return
[x] Early return, auto rewind and speedy mode (QuickSearch)
[ ] Improve the efficiency of board manipulation
[ ] Experiment with more algorithms (Stochastic Beam Search, Simulated Annealing, Monte Carlo algorithm)
The algorithm should allow bad moves at the beginning
Consider improvement over the previous step
Look a few steps ahead (consider the future)
[ ] Better Profiles
leader/required parameter (-65536 if not found)
NConnectedProfile (4, 5, 6, or more)
OneRowProfile
ColourComboProfile (2, 3, 4, or more)
[x] Write tests for the core logic to prevent hidden but critical bugs
Save routes in new states in a long long list (max 100 or 150 steps)This will be replaced with unsigned char array instead, max size will be 100 or 150 depending on the usage but 50 should be enoughdoc
folder so the root README is not so crowded