Pseudo code:
+For each block
- Are any of its four neighbors of the same color?
- Check that block's adjacent block, that is in the same direction
> Mark these blocks for demolition
>When done checking all blocks, DEMOLISH! Then re-check all blocks until NONE are marked for demolition and wait for player's move.
Mipey's theory would absolutely work. But you probably wouldn't want to check all blocks. Just those that have been moved or rather the rows and columns of those blocks.
That's the stuff I added to mattdubs cap in the mentioned thread. It's just not destroying there, but changing opacity for testing.
It's not a whole lot different from what I'm doing anyway. I just happen to involve an array to a certain extent.