Currently working on Level 83, and it isn’t going swiftly, even though I have a low flip (12 flip) board.
One thing I was thinking of last night is the concept of “solved” cells — cells you don’t expect will ever change again. For instance, a cell that starts out in the solved state, and is then flipped and several more pieces must be placed over it in order to return it to the solved state. After that, how unlikely would it be that it would be flipped AGAIN and have to be solved all over again? Perhaps more likely in the middle of the puzzle, but even then… I bet there’s a point at which you could say, a piece that covers a cell that has already been flipped once is less likely to lead to a correct solution than one that is not covering any flipped pieces?
Since flips can never increase in a solution, it could be that the algorithm I use already implicitly takes this into account. But looking at the puzzles I am getting now, the pieces rarely ever cover a solved portion of the board.
So maybe if I just sort the piece move permutations (an array of all possible piece moves, calculated in advance so I don’t have to spend time doing it in the inner loop) by the number of unsolved squares they cover… that would be better…
Gonna give it a shot. Level 83 looks like it’ll need to run while I am at work anyway.