The rule is that an isolated lit square in a grid of squares must be paired in the x-direction (either immed. left or right of it) AND y-direction. That is, from surrounding cells, the closest lit or on square moves to the isolated square to join it in the x or y-direction, and the isolated square moves to the one moving towards it, in the most efficient manner, and also another surrounding one must pair in the y-direction if paired first in the x-direction, so that an isolated square must be paired in the x and y-direction.
Also, say you have a large square of many completely lit squares, and an isolated square to the left at some distance. Then a small square of 4 squares pops out and moves (all at once, because in the rule there is an additional rule that when choosing to pair in the x or y-direction of an isolated lit cell, the ones to pair do so to maximize both x and y pairing, so here, one small square would pop out, then the one immediately behind it joins the first behind it (because if only the one above moved to join in the y-direction, it would not be paired in the x). And you can see that as squares move to the one isolated, they too must be paired from surrounding as they move in the most efficient way. When the small square of 4 leave the large square, there will be a small indention in the large square.
This is a programming where the closest lit squares move together to pair isolated squares, and wonder if it would be any more computationally intensive than a regular automata where there is no "movement" like this, but rules on turning on or off cells. No cells are born or die here.