Transformations

You can make rules symmetrical in various ways. These keywords transform rules to achieve this.

Any

The any keyword randomly transforms rules in specified symmetry:

any(x) {
    @_ => _@
}

The above rule has a x symmetry. It will randomly reflect itself in the x-axis. In other words, it might move right, or it might move left.

For

The for keyword loops through all transformations of a symmetry (in a random order):

for(xy) {
    @_ => @@
}

The above rule will loop through all possible transformations of xy in a random order, until it finds a match.

All

The all keyword works similarly to the for keyword, but it doesn't randomise the order of transformations.

all(xyz.directions) {
    @_ => @@
}

Last updated