Scrap the LtL Formatting already!

For discussion of other cellular automata.
Post Reply
User avatar
muzik
Posts: 5648
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Scrap the LtL Formatting already!

Post by muzik » May 10th, 2021, 3:44 pm

2017 was the year in which we finally saw an implementation of the Larger than Life family of rules in Golly, eventually followed at the end of 2018 by LifeViewer. LifeViewer, at around the same time, implemented general outer-totalistic rules with ranges exceeding 1 due to lifelib (and therefore apgsearch/catagolue) supporting them as well. Due to the poor readability of the compressed rulestring format lifelib uses, a more readable format more akin to the original Larger than Life format was introduced. This new notation has now been implemented in Golly for all platforms, and as such is readily available to everyone.

Due to this implementation, not only do a number of outer-totalistic rules have a redundant equivalent expression using the old Larger than Life notation, but comparing the structures of both rulestrings together, one reveals a lot of flaws in the original MCell Larger than Life format that simply aren't present in the new format. Due to these flaws, which are listed below, I strongly recommend the deprecation of the old Parger than Life rulestring format by all applicable software and websites (Golly, LifeViewer, Catagolue-generated pattern and soup RLEs, the LifeWiki, and any other up-to-date sites).

My problems with the old formatting are as follows:
- Outright redundancy. I see no reason for a sufficiently large portion of range->1 outer-totalistic rules to be able to be described with two (or even three - see the M parameter section) equivalent rulestrings if simply using one is sufficient. Having multiple notations just makes things more confusing, especially for newcomers.
- Compression: it should be easy to see that any rule written in the Larger than Life format can be written equivalently in the general outer-totalistic format using fewer characters. To specify a range, the Larger than Life format uses two dots, whereas the outer-totalistic format instead uses a dash, saving two characters, and always two characters, as a result. Additionally, the M parameter (again, see section) is removed, bringing the total of completely redundant characters removed as a result up to five in most cases.
- The M parameter: Why does this thing even exist to begin with? Excuse my potential historical ignorance, but as I see it, there is absolutely no need for this thing to exist. When set to 0, survival transitions (and only survival transitions - never birth transitions) act like they would for the normal range-1 and new general-range notations, but if set to 1, they act as if one is subtracted from it. On several occasions when playing with LtL rules I have completely forgotten this was set to 1 and been horribly misled as a result of it. The general outer-totalistic format behaves as if M is 0, and lines up with the common range-1 outer-totalistic format. So for the sake of not having multiple redundant ways of describing the same rule, to shorten rulestrings, to ensure consistency and to avoid confusion on the part of forgetful regulars and those willing to learn and investigate big-range outer-totalistic rules for the first time, I say we do away with this wretched parameter for good.

The old Larger than Life notation would still be accepted as a valid rulestring format, just as Evans' original format is, and would be automatically converted by the program into its appropriate outer-totalistic equivalent.

The only significant problem I can see with deprecation is Catagolue's distinguishing between LtL and HROT, but since outer-totalistic rulestrings are easy enough to convert back into Larger than Life rulestrings (and then to Catagolue's version of it) if needed I doubt this will be of any significant concern.

Are there any further advantages/disadvantages not mentioned here?

User avatar
muzik
Posts: 5648
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: Scrap the LtL Formatting already!

Post by muzik » May 11th, 2021, 10:10 am

A couple of other things on the topic:

- Since the format also omits the neighbourhood parameter for Moore, we can frequently save on three more characters through this.
- For two-state rules, the canonical setting for the C parameter would be C2, as to be consistent with Generations. This is currently the case for LifeViewer, however Golly still has C0 as its default setting, and as such should change to C2 for consistency with both the Generations algorithm and LifeViewer, as well as to just not have confusing and illogical canonical rulestrings.
- The algorithm Golly uses would probably still continue to be called Larger than Life, as there's not really much reason to change it (possibly unless Adam's bigger range HashLife ever makes it into Golly).
- LifeViewer's alias categories would be merged accordingly. The current range-1 outer-totalistic aliases would probably be renamed as to specify range-1, and categories beginning with "Larger than Life" and "Higher-Range Outer-Totalistic" would be merged together into categories beginning with something like "General Outer-Totalistic" (after the rulestrings are converted accordingly).

Post Reply