Really fun to figure out how to optimally solve this!
I go line by line (or row by row) to see if any stays. Works well as-is for the smaller levels, but for the bigger ones I need to finish all rows/columns first before being sure that the random wasn't just too random by staying on one place for too long, great idea!
I felt obliged to get a win under 20s after reading your reply to Daniel's comment 😅
