Serendipitously, I just made the remarkable discovery that the usual Gray code can be approximately generated by a very simple linear iterated function system (“IFS”) with two transforms. I’m not yet sure if the inexactness is a result of a bug in my code, or if the approach just doesn’t work exactly, even mathematically. Here’s a graph of the Gray code generated as a million de Bruijn points by JS: