muzik wrote: ↑September 20th, 2017, 2:30 pmI was thinking more of something along the lines of extending the notation used for isotropic non-totalistic rules.
For example, if I wanted a non-isotropic rule including certain variations of B2a, they could be picked from a set of possible rotations:
One possible notation using this system would be B2a(0246)/S2a(1357), which would only allow for birth on the displayed B2a conditions marked as 0, 2, 4 and 6, and survival on those marked 1, 3, 5 and 7. Like with non-totalistic rules, a - to negate unwanted orientations could also be used.Code: Select all
x = 38, y = 11, rule = LifeHistory 3D3.D3.3D2.3D2.D.D2.3D2.3D2.3D$D.D3.D5.D4.D2.D.D2.D4.D6.D$D.D3.D3.3D 2.3D2.3D2.3D2.3D4.D$D.D3.D3.D6.D4.D4.D2.D.D4.D$3D3.D3.3D2.3D4.D2.3D2. 3D4.D4$2EB2.B2E2.2BE2.3B2.3B2.3B2.3B2.E2B$BCB2.BCB2.BCE2.BCE2.BCB2.BC B2.ECB2.ECB$3B2.3B2.3B2.2BE2.B2E2.2EB2.E2B2.3B!
This notation probably isn't optimal when it comes to the lengths of rulestrings, but at least it could be interpreted a bit easier, and understanding what a rulestring symbolises at a glance is what i'm really after.
Apple Bottom wrote: ↑September 20th, 2017, 5:16 pmI have several ideas for this.muzik wrote:One possible notation using this system would be B2a(0246)/S2a(1357), which would only allow for birth on the displayed B2a conditions marked as 0, 2, 4 and 6, and survival on those marked 1, 3, 5 and 7. Like with non-totalistic rules, a - to negate unwanted orientations could also be used.
All in all I prefer the third option, using "v(änster)" and "h(öger)" from Swedish for the southern diagonal compass directions. Alternatively I could get behind the fourth option, using the digits 1-8 for the compass directions.
- For the sake of easy understanding I'd avoid numbers -- which would require a publisher master list to interpret, as dvgrn points out --, and perhaps use compass directions instead, to wit:
"B1(n,w)" is more easily understood than "B1e(1,2)" or so.Code: Select all
nw n ne w - e sw s se
In cases like B1, this would also do away with the distinct subconditions that are separately encoded in Alan Hensel's notation, but it would be difficult to ALWAYS do this; you'd generally still want to keep them separate.
Figuring out how to match the possible orientations of a given isotropic subcondition with the compass direction might also be difficult / non-intuitive in general, so when doing this one would probably end up publishing lists again anyway, making this notation semi-mnemonic at best. (Kinda like Alan Hensel's, actually; I can never remember what exactly "4q", "4z" and all those mean without looking them up.)- It might actually be better to assign a single letter to each direction, and then directly specify which bits have to be set to satisfy a certain Bx or Sx condition. For example:
"l(eft)" and "r(ight)" for "nw" and "ne" are probably self-explanatory; I turned to Swedish for "v(änster)" and "h(öger)" for "sw" and "se".Code: Select all
l n r w - e v s h
One could try and find other mnemonics in English as well. "c(lockwise)" is tempting; unfortunately "w(iddershins)" clashes with "w(est)"...
In any case, any non-isotropic subcondition could then be expressed by putting together the respective letters. For instance, birth on 3 cells, those being either l, n and r, or alternatively l, e and v, could be expressed as "B3(lnr,lev)". Each non-isotropic subcondition would be represented by one group (which could be in any order, just like with Hensel's isotropic subconditions), and groups would be separated by commas, say.
Negation still works: "B3(-lnr,lev)" is easily understood to mean birth on three live neighbors, UNLESS those neighbors are either l, n and r, or alternatively l, e and v.
It would be possible to do away with the outer-totalistic B/S conditions in this notation and just write e.g. "B(w,e,l,lnr,lev,-nswe)" or so, but I think that's less readable overall. There's a lot of possible configurations that could be present (or negated), and parsing a long rulestring would be easier for humans if it's a organized according to overall neighbor count.- One could also stipulate that in this notation, for non-isotropic subconditions for 5 to 8 neighbors, the letters indicate dead cells rather than live ones. "B7(n,w)" is much shorter than "B7(lrwevsh,lnrevsh)", and should be intuitive and easy to understand.
- Finally, since (as I noted) the labels for the compass directions are essentially arbitrary again, it might actually make sense to use numbers for those after all:
...and write "B1(2,4)" instead of "B1(n,w)", and "B3(-123,156)" instead of "B3(-lnr,lev)", and so on. I think this is not quite as intuitive when you're not familiar with the notation at all -- it doesn't really get more intuitive than "B1(n,w)" --, but I think this would be a good alternative if noone can come up with good one-letter mnemonics for the diagonal compass directions. Remembering that the directions are 1 to 8, in order, is pretty easy.Code: Select all
1 2 3 4 - 5 6 7 8
One possible downside is that people might interpret the digit groups as numbers. OTOH that might not actually be downside, since there's probably value in mentally associating e.g. "nw,w,ne" with the number 123, and so on.
Thoughts?
EDIT: referring back to your example:
using the "Swedish style" notation, these would be, in order: B2(ln), B2(nr), B2(re), B2(eh), B2(hs), B2(sv), B2(vw) and B2(wl), all very intuitive, self-explanatory, and easy to both create and understand once you know about "v(änster)" and "h(öger)".muzik wrote:Code: Select all
x = 38, y = 11, rule = LifeHistory 3D3.D3.3D2.3D2.D.D2.3D2.3D2.3D$D.D3.D5.D4.D2.D.D2.D4.D6.D$D.D3.D3.3D 2.3D2.3D2.3D2.3D4.D$D.D3.D3.D6.D4.D4.D2.D.D4.D$3D3.D3.3D2.3D4.D2.3D2. 3D4.D4$2EB2.B2E2.2BE2.3B2.3B2.3B2.3B2.E2B$BCB2.BCB2.BCE2.BCE2.BCB2.BC B2.ECB2.ECB$3B2.3B2.3B2.2BE2.B2E2.2EB2.E2B2.3B!
I'd also like to christen this notation "Swedish notation" (in line with e.g. Polish notation).
EDIT 2: here's a write-up on the wiki (in my Incubator).