I'm writing a casual connect-three type game that uses a square grid. The player slides a row or column around (essentially rotating it in 1D) to put at least three blocks of the same type together to make a match.
Because the level of difficulty will increase as play goes on, there will come a point (I have checked, it is possible) for there to be no moves that will result in a new match.
Aside from using the brute-force method (which is at least O(N^2) time), is there a faster method of looking for possible moves?