It's fully backwards compatible with regular hensel notation/INT rules/such.
Each of the standard INT transitions has a canonical 0deg unmirrored form,
which is taken to be the angle it's at in THAT table. Yes, you know which one i mean.
m after a transition means it's mirrored.
# 0deg
! 90deg
~ 180deg
@ 270deg
B2a, for example, now consists of B2a#, B2a!, B2a~, B2a@, B2a#m, B2a!m, B2a~m and B2a@m.
You can use - and combine in the normal ways.
B2a-# for example is B2a without
Code: Select all
##.
.c.
...
Okay, so this is cool, but accounting for various permutations of cells can get tricky.
Introducing multiplication and division operations (* and %)
B1e!*7e! means B1e!, but it doesn't care about the cells in the shape of 7e!.
Effectively, if * can be any state, this means
Code: Select all
***
*c#
***
This means that b1e!%7e! is
Code: Select all
***
*c.
***
Code: Select all
##.
.c.
***
(this can happen after negation too)
This should maybe account for all cases in existence.
Please remind me to compile this to MAP strings sometime soon and inform me of problems or mistakes.
Example rules:
Everything unconditionally moves right: B1e!7e!/S1e!*7e!
CGOL but downright moving gliders implode: B35n#m/S23
Rule 90 (in place): B1e!@/S1e!@
Rule 90 (spacetime): B1c#!/S0*8