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 non-trivial 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
|