This is related to my recreation of MENACE
I want to know if my theory will work.
If MENACE moves first there are 305 unique rotations or reflections of the gameboard. Here is my theory.
Take the current gameboard, as a matrix. X=1, O=2, Blank = 0
concatenate the numbers of the matrix such as Row1,Row2,Row3, which will yield a number (Eg: 012002010)
Take that number as an expression, and store it to a temporary list
Take the next rotation, concat the numbers, and append to the list
Repeat for all 8 rotations or reflections.
This yields a list of all the possible rotations or reflections of the gameboard, stored as a number
Take the min of that list, and find its position in the list. Example, if the min is 12 (gameboard 000000012 after reflection/rotation), its location may be 5.
Store the location temporarily
Check if that min gameboard is in the list of gameboards already stored
If it is already stored, recall the data for it
If it isnt already stored, create the data for it
Any spot which is a 0 stores as 5, any spot which was a 1 or 2 stores as 0
Once the data is recalled, check which location in the list the min was
Based on the location, call the inverse reflection-rotation sequence for the given location
Make a selection based on the recalled data.
I know this may seem a bit complex, but if there are any questions just ask. My plan is to store 35 gameboards in a string, with the exception of STR9 and STR0. Str9 will contain 25 gameboards and STR0 will hold the base conversion string. Each gameboard will be 9 characters long, and the data will be stored in base 62 (0-9, A-Z, and a-z).