confocaloid wrote: ↑March 22nd, 2024, 11:55 pm
One other interesting (but not necessarily useful; see above) possibility is to convert instead from StateInvestigator to LifeHistory. Convert 0 to 0 and 1 to 1. Convert every "is treated as ON" cellstate >= 2 into "marked ON". Convert every "is treated as OFF" cellstate >= 2 into "marked OFF". For everything else, convert to LifeHistory state 6.
Hm, yes, that could be an argument for allowing a direct [Rule]Investigator -> [Rule]History conversion.
I'm thinking that the most common use case here is a situation where someone has experimentally gotten an oscillator or gun or what have you, working in [Rule]Investigator, by adding just a few cells -- and the goal becomes to find support for the same mechanism in plain [Rule]. Usually it won't be much help to convert higher Investigator states to either ON or OFF -- both would be misleading, because no matter whether cells are "treated as ON" or "treated as OFF" in the Investigator version of the rule, things just aren't going to work the same way in plain [Rule].
Another option might be to simply convert any Investigator state above 1 to state 4 (OFF, red) [Rule]History. That will show where the problem points are going to be in the [Rule]Standard pattern, without attempting an arbitrary conversion that's pretty definitely impossible to do "right" anyway.
To do a conversion to a rule that acts like plain [Rule] but still preserves information about what the Investigator states were, a direct conversion to [Rule]Super would work pretty well. There are enough ON and OFF states that a mapping to Super states could be done, with a few states left over.
Again, I'm not sure that the end result of this would be anything useful, so I'm hoping that someone who does more with Investigator cell states can advise about what might be useful.
The default behavior for attempting a conversion to Super, History, or Standard is what happens now: the various scripts refuse to do anything with Investigator patterns at all. If that's what we want, then we don't need to do anything. If some other behavior would be better, then we can adjust the scripts accordingly.
It looks like toStandard.lua doesn't error out on an Investigator pattern, at least, but it converts all odd states to ON states and all even states to OFF states -- which pretty definitely is not what we're going to want.
The other two, toHistory.lua and toSuper.lua, currently throw a complicated and inaccurate error message and then don't actually do anything, it seems:
"Conversion failed. This 'LifeInvestigator' rule is not supported by the Super algo.
To revert to the original rule, please click OK, then press Z to undo the rule change."
(...but then the rule name doesn't actually change, so hitting Z actually undoes the most recent edit to the pattern. Probably will have to do better than that also.)
EDIT Moved a side discussion about usability improvements to safeopenclip.lua to a
separate thread.