-
start with a queue Q1 of all the live cells followed by a "end of live" tombstone
-
before tombstone reached:
-
pull cell C from queue
-
add C's dead non-queued neighbors to queue
-
add C to queue Q2 if it shall live
-
repeat
-
after "end of live" tombstone reached:
-
put "end of dead" tombstone on Q1
-
pull currently-dead cell C from queue
-
add C to queue Q2 if it shall live
-
repeat
-
after "end of dead" tombstone reached:
-
queue Q1 is finished, display and trash
-
put "end of live" tombstone on Q2
tombstones wait for any per-cell processing to finish
queues cannot be processed until previous queue is finished