Jason Cawley
Wolfram Science Group
Phoenix, AZ USA
Registered: Aug 2003
Posts: 712 
SortedCA function
We can readily investigate the question by writing our own function based on the CellularAutomaton function, like this.
SortedCA[rl_, init_, steps_] := Module[{rawdata = CellularAutomaton[rl, init, steps], trimmed}, trimmed = Flatten[#] & /@ (Drop[Drop[Split[#], 1], 1] & /@ rawdata); IntegerDigits[Sort[FromDigits[#, 2] & /@ trimmed], 2] ]
Then e.g. one can store the results in a variable, data 
data = SortedCA[30, {{1}, 0}, 20]
And we can ArrayPlot the result (note that the modern, 6.0 version of ArrayPlot happily accepts ragged lists  if you are using 5.1 you may need to PadRight with zeros etc) 
ArrayPlot[data]
Some preliminary comments looking at them  they are interesting.
The following show complex patterns from the simplest initial condition  rules 30, 45, 73, 75, 86, 89, 101, 110, 124, 135, 137, 149, 193.
The following are slow growers but potentially interesting  169, 225.
The following show various sorts of nesting, occasionally intricate  18, 22, 26, 60, 82, 90, 102, 105, 126, 129, 146, 150, 153, 154, 161, 165, 167, 181, 182, 195, 210, 218.
The following show regular patterns but structured enough that they might do something nontrivial with more complex initial conditions  54, 57, 62, 70, 78, 92, 94, 99, 109, 118, 131, 145, 150, 158, 214.
Of course, one can also generalize the idea beyond the ECAs.
My method of stripping the zeros above is kind of hacky and might give trouble in some cases. Some patterns will also just die out, "coughing" when you try to convert an empty list to a number and back, and the like. So the code could be cleaned up, made more robust and general.
I hope this helps.
Report this post to a moderator  IP: Logged
