So how can one force more complex patterns to occur?
The basic answer is that one must extend at least slightly the kinds of constraints that one considers. And one way to do this is to require not only that the colors around each cell match a set of templates, but also that a particular template from this set must appear at least somewhere in the array of cells.
The pictures below show a few examples of patterns determined by constraints of this kind. A typical feature is that the patterns are divided into several separate regions, often emanating from some kind of center. But at least in all the examples below, the patterns that occur in each individual region are still simple and repetitive.
So how can one find constraints that force more complex patterns? To do so has been fairly difficult, and in fact has taken almost as much computational effort as any other single result in this book.
The basic problem is that given a constraint it can be extremely difficult to find out what pattern—if any—will satisfy the constraint.
In a system like a cellular automaton that is based on explicit rules, it is always straightforward to take the rule and apply it to see