Page 10 of 98

Re: Life tag testing

Posted: September 23rd, 2015, 1:52 pm
by dvgrn
rowett wrote:Dave,
I believe I've got LifeHistory state 6 working in LifeViewer. Do you have some example patterns I can use to test it please?
Good Golly. I was perfectly happy with the way gray cells worked in the viewer already -- they do serve their intended purpose of separating subpatterns in a stamp collection, if you use them right, but they can also have ugly consequences if a gray cell accidentally gets copied to somewhere where it doesn't belong. On some monitors the gray can be hard to see, and it's possible to end up with maddening problems where a circuit is set up exactly the right way but stubbornly refuses to work.

Anyway, I would say that if you can run the following pattern in the viewer, and it does the same thing as it does in Golly, then you pretty definitely have things working correctly. This is a conglomeration of non-standard uses of gray cells from Extrementhusiast's thread on the subject.

Code: Select all

x = 457, y = 155, rule = LifeHistory
59.3B64.B125.B$58.BFBF2B60.4BF122.3B$58.6BF.B.F.F.B.F.F.B.F.F.B.F.F.B
.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F7B5.BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.
B.F.F.B.F.F.B.FBF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F
.F.B.F.F.B.F.F3BFBF.2B2F2.3B$57.F10B.5B.5B.A4B.5B.5B.5B.26BF2BF133B$
57.24B2A2BA129BA33B2A19B$56.23BA3B2A63B3A63BABA32B4A17B$55.F23BABA67B
2A66BA30BABA2BA16B$56.23BA3B2A63B3A63BABA31BAB4A14BF3B63.F3.BF$57.24B
2A2BA129BA33B4A20B3.B59.5B$56.12B.5B.5B.A4B.5B.5B.5B.28BF116BA23B.B2C
57.6B$57.7BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.
F.F7BF3.F2B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F
.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.FBF.2BFBF3BFBF8B3A8B2C
57.7B$58.6B61.7B125.10BA7B.B57.8B$56.F.5B.F59.9B125.7B3A7B58.10B$57.
7B61.7B125.15B61.10B$56.9B59.F.5B.F123.4B.5BA6B60.11B$57.7B61.7B123.
4B2.3B3A5B61.11B$56.F7BF59.F7BF121.4B3.B3A7B61.11B$57.7B61.7B121.4B3.
3B2A2B.3B55.F.B.F.2F11B$56.F.5B.F59.9B119.4B3.8B2.F43.B.F.F.B4.BF.6BA
BA9B2A32B2A32B2A32B2A6B$57.7B61.7B119.4B3.8B44.23BA2BA7B4A30B4A30B4A
30B4A6BF$56.9B59.F.5B.F117.4B3.9B42.F24BA3BA6B2AB2A29B2AB2A29B2AB2A
29B2AB2A5B$57.7B61.7B117.4B3.4B.6B42.28BA8B2A32B2A32B2A32B2A6B$56.F7B
F59.F7BF115.4B3.4B.7B42.24BA3BA117B$57.7B61.7B115.4B3.4B2.6B44.23BA2B
A5B$56.F.5B.F59.9B113.4B3.4B3.6B47.7B.2B.F2.6B3A6B$57.7B61.2B3A2B113.
4B3.4B4.6B46.9B.F2.BF.B.F.F9B$56.9B59.F.5B.F111.4B3.4B4.8B46.7B13.F8B
$57.7B61.2ABAB2A111.4B3.4B6.8B45.6B.F13.8B$56.F7BF59.FBA3BABF109.4B3.
4B6.9B45.F2BA3B14.8B$57.7B61.2BABA2B109.4B3.4B7.9B46.B3AB14.9B$56.F.
5B.F59.3BABA3B107.4B3.4B8.10B44.B2ABAB14.8B$57.7B61.BA3BAB107.4B3.4B
9.5B2A3B42.F2.5B14.8B$56.9B59.F.5B.F105.4B3.4B10.5B2A4B28.B6.F6.7B.F
11.10B$57.7B61.7B105.4B3.4B11.11B27.5BF.2B3.B.9B12.11B$56.F7BF59.F7BF
103.4B3.4B12.12BA.2A21.24B14.8B$57.7B61.7B103.4B3.4B15.8B2.2A.A19.26B
14.7B$56.F.5B.F59.9B101.4B2.5B16.7B26.F25B14.7B$18.3B4.B31.7B61.7B
101.4B3.4B17.5B29.24BF13.8B$17.BFBF6BF28.9B59.F.5B.F99.2A2B3.4B18.5B
30.23B14.6B$17.6B.5B28.7B61.7B99.2B2A3.4B18.6B31.8B2.B.F10B14.5B$16.F
13BF25.F7BF59.F7BF97.2BAB3.4B19.7B2.4B23.10B6.B.6BF12.F.4B$16.4BA12B
24.7B61.7B97.4B3.4B19.F7BF6BF21.9B9.5B16.F.B$15.4B2A5BA5BFB22.F.5B.F
59.9B95.4B3.4B21.14B21.11B5.3B2ABA6B$14.F3BA9BA5B23.7B61.7B95.4B3.4B
21.F14B20.7BA2BF2B4.4B3A6B$14.5B2A3BA3BA3BFB22.9B59.F7BF93.4B3.4B23.
15B19.6B3A4B4.2BF2BA7B$13.7BA12B24.7B61.7B93.4B3.4B23.16B19.6BAB2A3B
5.11B$14.11B2A6B23.F7BF59.F7BF91.4B3.4B25.15B24.5B9.9B$14.B.7BF7B.B
24.7B61.7B91.4B3.4B25.F14B23.F6B.B6.10B$14.19B23.F.5B.F59.9B89.4B3.4B
27.9B.3B25.10BF.B2.8B$14.20B23.BA3BAB61.7B89.4B3.4B27.F7BF31.23B$13.B
F18B23.3BABA3B59.F7BF87.4B3.4B27.10B30.F24B$13.19BF24.2BABA2B61.7B87.
4B3.4B29.9B30.25BF$13.BF17B24.FBA3BABF59.F7BF85.4B3.4B31.7B31.25B$14.
17B26.2ABAB2A61.7B85.4B3.4B31.F7BF30.BA22B$16.F13BF25.F.5B.F59.9B83.
4B3.4B33.7B31.BA7B.B3.2B.F5B$18.5B.6B27.2B3A2B61.7B83.4B3.4B33.F7BF
31.BA5B6.F6.B$19.F6BFBFB26.9B59.F7BF81.4B3.4B35.7B32.5B2.F$21.B4.3B
28.7B61.7B81.4B3.4B35.9B32.3B$56.F7BF59.F7BF79.4B3.BA2B37.7B34.F$57.
7B61.7B79.4B3.2A2B37.F7BF$56.F.5B.F59.9B77.4B3.2B2A39.7B$57.7B61.7B
77.4B3.4B39.F7BF$56.9B59.F7BF75.4B3.4B41.7B$57.7B61.7B75.4B3.4B41.9B$
56.F7BF59.F7BF73.4B3.4B43.7B$57.7B61.7B46.F2B2A2BF19.4B3.4B43.F3BA3BF
$56.F.5B.F59.9B45.3B2A2B19.4B3.4B45.2B3A2B$57.7B61.7B46.8B.F15.4B3.4B
45.FB5ABF$56.9B59.F7BF43.12B14.4B3.4B47.BA3BAB$57.7B61.8B42.F13B12.4B
3.4B47.2A5B2A$56.F7BF.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F
.F.B.F.F.B.F9B38.3B.13BF10.4B3.4B49.BA3BA2B$55.11B.5B.5B.5B.5B.5B.5B.
4BA.5B.5B.13B37.5B.11B11.4B3.4B49.FBA3BABF$55.48BA2B2A27B37.5B.8B2.F
9.4B3.4B50.8B$54.BF48B2A3BA24B40.13B10.4B3.4B52.F6B$54.53BABA23BF41.
8B.4B8.4B3.4B53.6BF64.F$54.BF48B2A3BA23B43.7B2.4B6.4B3.4B54.7BF.B.F.F
.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F2.B.3B$55.48BA2B
2A24B45.5B.F2.4B4.4B3.4B55.F10B.5B.5B.5B.5B.5B.5B.5B.5B.5B2.7BF$57.F
7B2.5B.5B.5B.5B.5B.5B.4BA.5B.5B.10BF45.4B6.4B2.4B3.4B56.33B2A42B$59.
3B.B2.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F7B
45.4B7.8B3.4B56.33BABA41BFB$60.F64.F6B44.4B9.6B3.4B56.F32B2A45B$125.
6BF43.4B11.4B3.4B57.34BABA41BFB$125.8B41.4B11.6B.4B57.36B2A42B$124.F
7BF40.4B11.11B59.13B.5B.5B.5B.5B.5B.5B.5B.5B.5B.11B$124.8B40.4B11.4B
2.5B60.9BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.
F7BF$124.9B38.4B11.4B4.5B60.8B61.7B$125.7B38.4B11.2A2B6.4B60.F7BF59.
9B$124.F7BF36.4B11.2B2A8.4B12.B47.7B61.7B$125.7B36.4B11.2BAB10.4B10.
3B45.9B59.F.5B.F$124.F7BF34.4B11.4B12.4B9.3B46.7B61.7B$125.7B34.4B11.
4B14.4B7.4B45.F7BF59.F7BF$124.9B32.4B11.4B16.4B5.4B.F45.7B61.7B$125.
7B32.4B11.4B18.4B3.4B.3B43.F7BF59.9B$124.F7BF30.4B11.4B20.9B.6B42.7B
61.7B$125.7B30.4B11.4B22.15BF40.9B59.F.5B.F$25.F98.F2BABA2BF28.4B11.
4B24.15B41.7B61.7B$125.2B3A2B28.4B11.4B26.16B38.F7BF59.F7BF$124.3B3A
3B26.4B11.4B29.10B2A2B39.7B61.7B$20.F104.7B26.4B11.4B31.9B2A2B38.F7BF
59.9B$124.F7BF24.4B11.4B31.F2.11B39.7B61.7B$125.7B24.4B11.4B34.11B39.
9B59.F.5B.F$124.F.5B.F22.4B11.4B34.9B.F41.7B61.7B$125.7B22.4B11.4B34.
3AB.4B43.F7BF59.F7BF$124.9B20.4B11.4B34.3BA2.4BF43.7B61.7B$31.F92.10B
18.4B11.4B34.3BA2.F.2B44.F7BF59.9B$124.F7BF18.4B11.4B34.4B5.F46.7B61.
7B$125.7B18.4B11.4B34.4B52.9B59.F.5B.F$20.F9.2A92.F.5B.F16.4B11.4B34.
4B54.7B61.7B$30.2A93.7B16.4B11.4B34.4B54.F7BF59.F3BA3BF$124.9B14.4B
11.4B34.4B56.7B61.2B3A2B$75.F49.7B14.4B11.4B34.4B56.F7BF59.2BA3BA2B$
7.F23.F35.F56.F7BF12.4B11.B2DB34.4B58.7B61.B2AB2AB$2.F17.3A101.8B12.
4B11.2B2D34.4B58.9B59.F.5B.F$22.A6.F94.F7BF10.4B11.4B34.4B60.7B61.7B$
F20.A2.F42.2A9.F46.7B10.4B11.4B34.4B60.F7BF59.F7BF$67.2A55.9B8.4B11.
4B21.B12.4B62.7B61.7B$119.2B4.7B8.4B11.4B21.3B10.4B62.F.5B.F59.9B$2A
116.5B2F7BF3B3.4B11.4B22.3B9.4B64.B2AB2AB61.7B$2A9.F55.F11.F38.24B11.
4B23.4B7.4B64.2BA3BA2B59.F.5B.F$117.24B11.4B23.F.4B5.4B66.2B3A2B61.7B
$69.F13.F33.23B11.4B23.3B.4B3.4B66.F3BA3BF59.F7BF$F117.21B11.4B22.6B.
9B68.7B61.7B$73.F11.F31.23B9.4B22.F15B68.F.5B.F59.9B$118.21B9.4B23.
15B70.7B61.7B$80.A38.19B9.4B22.16B70.9B59.F.5B.F$81.A2.2A37.B.10B11.
4B23.2B2A10B73.7B61.7B$74.F4.3A2.2A40.8B11.4B24.2B2A9B73.F7BF59.F7BF$
11.F115.6B11.4B25.11B2.F73.7B61.7B$11.F115.5B11.4B27.11B74.F.5B.F59.
9B$85.F41.6B9.4B29.F.9B74.7B61.7B$126.8B7.4B33.4B.4B72.9B59.F.5B.F$
125.4B.5B6.4B21.D.D8.F4B2.4B72.7B61.7B$124.4B4.4B2.F.5B19.D5.D8.2B.F
2.4B70.F7BF59.F7BF$123.4B6.4B2.BA5B34.F5.4B70.7B61.7B$79.F42.4B8.4B.A
B2A4B16.D3.C3.D15.4B68.F.5B.F59.9B$121.4B10.4BA3BA4B18.2C19.5B35.3B
30.7B61.7B$120.4B9.F2.4BA3B.5B13.D2.C.C2.D17.4B32.7B27.9B59.F.5B.F$
119.4B11.7BA3B.5B39.4B30.10B26.7B61.7B$118.4B10.F2BA6BA3B.3B14.D5.D
20.4B.F.F.B.F.F.B.F.F.B.F.F.B.F3.12B23.F7BF59.F7BF$118.3B12.B3A9BF19.
D.D23.28B3.14B23.7B61.7B$118.2B14.AB3A7B43.B2.4BA3BA36BF21.F.5B.F59.
9B$118.B15.F.B2A6B43.2AB.3BA4BA36BF22.7B61.7B$137.BA6B43.2A6B2A39B22.
9B59.F.5B.F$136.F2BA3BF45.2B.3BA4BA38B21.7B61.6B$137.BA3B50.4BA3BA23B
4.11BF.B.F.F.B.F.F.A.F3.F7BF.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.
F.F.B.F.F.B.F.F.B.F7B$138.A3B50.28B10.13B.5B.3BA4BF28B.5B.5B.5B.5B.5B
.5B.12B$191.BF2B.F.F.B.F.F.B.F.F.B.F.F.B.F9.21B2AB2A44B2A33B$229.21B
2A48BABA33B$229.20B3A50B2A32BF$230.20B2A48BABA33B$229.F21B2AB2A44B2A
33B$230.7B.5B.5B.3BA3BF2BF26B.5B.5B.5B.5B.5B.5B.10BF$229.7BF2.F.B.F.F
.B.F.F.A.FB5.7BF.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.F.B.F.
F.B.F6B$230.5B28.F4B60.2BFBFB$231.3B31.B64.3B$232.B.F!
Of course the first pattern on your LifeHistory test page is a fine example of the intended use of gray cells. If gliders in each square are cleanly absorbed and don't affect anything in adjacent squares, then you're doing pretty well.

Re: Life tag testing

Posted: September 23rd, 2015, 5:45 pm
by rowett
dvgrn wrote:Anyway, I would say that if you can run the following pattern in the viewer, and it does the same thing as it does in Golly, then you pretty definitely have things working correctly.
Looks good, see here.

Re: Life tag testing

Posted: September 23rd, 2015, 6:33 pm
by dvgrn
rowett wrote:Looks good, see here.
Nice work! I went through and ran the test cases, didn't see any problems at all.

It might make sense to remove the "LifeHistory state 6 test3" from the test collection, though. It looks as if it should be a clean Herschel conduit, but it isn't -- Extrementhusiast posted it as a "failed" example that "lasts a really long time" (he was kind of young and inexperienced back then.)

Do you have plans to tackle any other items from your backlog in the near future, or is it time for a break? Probably there's no great hurry to release just this new feature -- it could go in along with the next update, and I'll re-do the larger set of tests then. (?)

Re: Life tag testing

Posted: September 24th, 2015, 2:30 am
by rowett
dvgrn wrote:It might make sense to remove the "LifeHistory state 6 test3" from the test collection, though. It looks as if it should be a clean Herschel conduit, but it isn't
Will do.
dvgrn wrote:Do you have plans to tackle any other items from your backlog in the near future, or is it time for a break?
I've got a few minor fixes to do and some optimization work on some of the new functionality - get it working, then make it fast. Probably will tidy up the test set too. No hurry for a release.

After that back to Molly integration.

Re: Life tag testing

Posted: September 24th, 2015, 5:11 pm
by dvgrn
rowett wrote:I've got a few minor fixes to do and some optimization work on some of the new functionality - get it working, then make it fast. Probably will tidy up the test set too. No hurry for a release.
One minor item to add to the list. I'm traveling this week, and didn't bring my mouse along so I'm stuck with the track pad. When I hit "[" and "]" to zoom in and out, the zooming is centered around the cell at the middle of the viewer.

I think it would still be more useful for it to keep the cell under the mouse cursor invariant instead. It's kind of tricky to zoom in on one corner of a pattern if you don't have any control over which point is invariant.

Re: Life tag testing

Posted: September 24th, 2015, 5:24 pm
by rowett
dvgrn wrote:I think it would still be more useful for it to keep the cell under the mouse cursor invariant instead. It's kind of tricky to zoom in on one corner of a pattern if you don't have any control over which point is invariant.
OK good idea I'll add it to the list...

I've already implemented the following:
  • updated help text for step back and step forward hotkeys
  • implemented LifeHistory state 6 execution
  • added support for "life" as as rule name
  • shift and hotkey "." or "," will rotate left or right in 90 degree steps
  • shift and hotkey "[" or "]" will zoom in or out by a factor of 2
  • corrected generations rule decoding
  • rules without B or S prefixes were being read in the wrong order

Re: Life tag testing

Posted: September 25th, 2015, 2:25 pm
by rowett
rowett wrote:
dvgrn wrote:I think it would still be more useful for it to keep the cell under the mouse cursor invariant instead. It's kind of tricky to zoom in on one corner of a pattern if you don't have any control over which point is invariant.
OK good idea I'll add it to the list...
Updated zoom implemented in:

Build 161 - you can try it here.
  • updated help text for step back and step forward hotkeys
  • updated help text for hotkeys modified by shift
  • implemented LifeHistory state 6 execution
  • added support for "life" as as rule name
  • shift and hotkey "." or "," will rotate left or right in 90 degree steps
  • shift and hotkey "[" or "]" will zoom in or out by a factor of 2
  • zoom via hotkeys is now centered around cell under the mouse cursor
  • corrected generations rule decoding
  • rules without B or S prefixes were being read in the wrong order

Re: Life tag testing

Posted: October 3rd, 2015, 6:24 am
by rowett
Dave,
The LifeHistory rule is specific to the B3/S23 rule, with extra states. LifeViewer already adds the equivalent of state 2 to every rule it supports since it displays the fading colour history. Having implemented state 6 support recently for LifeHistory it occurred to me that it would be trivial to also support a state 6 equivalent for any LifeViewer supported rule.
Would there be any interest in this facility? Why hasn't anyone created a 2x2History, BugsHistory or GnarlHistory rule?

Re: Life tag testing

Posted: October 3rd, 2015, 12:17 pm
by dvgrn
rowett wrote:The LifeHistory rule is specific to the B3/S23 rule, with extra states. LifeViewer already adds the equivalent of state 2 to every rule it supports since it displays the fading colour history. Having implemented state 6 support recently for LifeHistory it occurred to me that it would be trivial to also support a state 6 equivalent for any LifeViewer supported rule.
Yes, real extra-state support might be very interesting to quite a few people. Not state 6 so much, though -- it seems to me I'm just about the only one who ever uses state 6, and that's just because I wrote the original LifeHistory rule and got it added to Golly, so I know how to use it "correctly" (according to my original crackpot theory, anyway).

If state 6 gets used too often, it will start causing problems. For example, if a state-6 cell gets copied out of a conduit stamp collection, it could subtly change the behavior of the conduit in a useful way -- but the conduit wouldn't work when translated into "real" Conway's Life.
rowett wrote:Would there be any interest in this facility? Why hasn't anyone created a 2x2History, BugsHistory or GnarlHistory rule?
I think it would be really nice to add support for some equivalent of states 2 through 5 -- or at least 2 through 4... or at least state 2. In any rule that supports oscillators or guns or (especially) signal circuitry of any kind, it's really nice to have a T=0 pattern that shows all the signal tracks.

History cells automatically build a "usage map", so you know where you can safely add new mechanisms with them getting sideswiped by a stray spark. Sometimes in complex circuitry a spark can happen only very rarely, so you can build and test a circuit for quite a while before realizing that you've added something in a place where it really can't possibly fit.

There has been interest off and on over the past several years for Golly to support LifeHistory-type functionality for arbitrary rules. At the moment this has to be done with multiple layers and a Python script, envelope.py, which is just awkward enough that it doesn't seem to get very much use. For some reason I can't find the relevant discussions right now, but I'll post links later if I can find them.

The other way to do it is to write a custom Golly rule file for each rule R that you want [R]History support for. That's certainly the right way to do it, and it has been done for specific rules once or twice -- again, I'll keep looking for the links.

Re: Life tag testing

Posted: October 3rd, 2015, 12:18 pm
by dvgrn
It wouldn't be too hard to write a general script that will automatically create the appropriate [R]History rule table file for the current rule. Nobody has done this as far as I recall, though the job would be a lot easier now that Golly supports the "permute" symmetry type in rule tables.

It's still a little bit tricky, though. The more clauses you have in the rule, the more complicated the rule table becomes. I.e., B3/S23 has only three clauses, "B3", "S2", and "S3", so it was relatively easy to write the LifeHistory rule, even by hand.

Anyway, for any rule besides Life, the odds are quite low that a lot of people will be interested in any particular [R]History rule. So it wouldn't make sense to pre-install lots of other [R]History rules in Golly. That means that most such pattern files, when run in Golly, would give mysterious errors -- unless support was added in Golly to parse "[R]History" and create the new rule table on the fly.

At the moment that's probably a solution in search of a problem -- but that might change if the LifeViewer starts supporting an "[R]History" syntax.

It would take some careful design to make that really useful, though. Probably the first step would be to write that generalized [R]History rule-building script.

Several helper scripts should definitely be packaged along with the rule-building script, especially if [R]History rules all support states 3 and 4.

For example, you'd really want [R]History versions of "mark selection with state 3", "remove all state 2 from selection", "remove all marks from selection", and maybe a few others. I have these on my computer for LifeHistory, and included them in the old LifeHistory RuleTableRepository package, but I suspect a lot of people don't know they're there...! They could be made to work equally well for any [R]History pattern.

With those tools in hand, people would really easily be able to build [R]History RLE patterns that the LifeViewer could usefully support. Otherwise those helper scripts would probably end up getting re-written and re-posted for each specific rule -- and that would be unnecessarily awkwardnessful.

Re: Life tag testing

Posted: October 4th, 2015, 1:51 am
by rowett
dvgrn wrote:At the moment that's probably a solution in search of a problem -- but that might change if the LifeViewer starts supporting an "[R]History" syntax.
The mechanics to support it are already implemented since the extra state support was all built without changing the underlying two-state execution engine:
  • State 2 support has been there since the beginning
  • States 3-5 were added as a rendering overlay
  • State 6 was added as a fast pre and post processing step around the existing two-state next generation function (using bit masks and boolean operators)
All that would be needed is to modify the pattern reader to detect rules in the format "[R]History" and use "R" as the 2 state execution rule and "History" as the flag to enable states 3-6. This is a trivial change so I'll put it in an upcoming build.

Regarding state 6 and copy/paste - would it not be possible to have Golly ignore state 6 when copying? Are there other rules where it would be helpful not to copy a certain state?
I also noticed that Golly correctly counts cells of all states for the "Population", which for most rules is exactly what you want. For LifeHistory patterns you probably only want it to count cells in state 1 in the Population. LifeViewer accidentally gets this right because it only has a 2 state engine.

Re: Life tag testing

Posted: October 6th, 2015, 4:52 am
by dvgrn
rowett wrote:Regarding state 6 and copy/paste - would it not be possible to have Golly ignore state 6 when copying? Are there other rules where it would be helpful not to copy a certain state?
Very few. In LifeHistory there are other cases where it would be useful to skip the state-2 cells, or copy out a two-state version of the pattern -- but these tasks are traditionally done using Python scripts, which can be adjusted to handle whatever special cases are needed.

It's an interesting question. The Golly Gang has generally avoided special-case code, so that the base Golly engine behaves predictably as much as possible. The theory is that anything that can be handled by a script, should be. Otherwise the special cases tend to proliferate and make the code harder to maintain in the long run.

[I must admit to having sneaked in a few special cases when adding support for LifeHistory. One of Golly's predecessors (MCell) had a couple of LifeHistory-equivalent rules, e.g., "HistoricalLife". It made sense to open those patterns using the "correct" rule. I'm sure there are a few other items like that, but not many.]

For LifeHistory, I would say that state-6 cells are not currently a problem. If they're in a pattern, they're there for a reason. Maybe not a good reason, sometimes... I think I'll take them out of the next edition of Signal-Circuitry/Herschel-conduit-stamp-collection.rle, for example, since that's long overdue for an upgrade anyway.

But generally changing the copying behavior would cause more problems than it would solve, I think. If we add a feature to Golly to skip copying state-6 cells, then we'll have to add another feature to disable that feature and allow copying state 6 after all, since otherwise it's suddenly a real pain to create or edit patterns that include state 6.

Might as well just create CopyWithoutState6.py instead. That will work perfectly well for the three people that might ever actually need it. Most people will never have any reason to care about one way or another, because 99.9% of LifeHistory patterns have no state-6 cells in them.

-------------------------------------------

Now, there's an implicit bias built into this whole theory. There are a number of things about Golly that non-programmers may find difficult:

1) To fix some configuration issues, you have to go find and edit the GollyPrefs text file. No GUI is provided.
2) To write a new rule, you have to create a new text file and give it a .rule extension. No GUI is provided.
3) To get various add-on editor functionality, you have to download ZIP files of (usually) Python scripts, and decompress them and put them in the right places. No GUI is provided -- except the trick of opening ZIP files directly with File > Open, which is admittedly pretty cool and also works for .rule files.

Also you have to have Python installed before even any of the pre-packaged Python editor tools will work -- shift.py, goto.py, etc. And if you don't have a compatible 32- or 64-bit Python installed, the error messages are utterly cryptic for non-technical people. (I'll have to see what I can do to improve that, actually.)

So Golly is a tool written by Life hackers, with other Life hackers as the primary intended audience. That may not be an entirely deliberate decision, but definitely nobody is volunteering to design a GUI for creating rules or making changes to GollyPrefs, just to make things easier for non-programmers.
rowett wrote:I also noticed that Golly correctly counts cells of all states for the "Population", which for most rules is exactly what you want. For LifeHistory patterns you probably only want it to count cells in state 1 in the Population. [LifeViewer] accidentally gets this right because it only has a 2 state engine.
Here again, LifeHistory-specific behavior seems like not quite the right thing.

It might be generally useful to have an option in Golly that lets you turn on a second Population display to the right of the first one, showing the total count of state-N cells, where N is the current drawing cursor state. That would slightly slow Golly down for some large patterns, so the option would probably be off by default.

A Python script can't do anything quite equivalent to that. Run ToLife.py, read the population, then Undo, I guess. On the other hand, given the number of feature requests for this particular item so far, it probably won't be too high on the priority list.

Re: Life tag testing

Posted: October 6th, 2015, 6:59 pm
by rowett
dvgrn wrote:At the moment that's probably a solution in search of a problem -- but that might change if the LifeViewer starts supporting an "[R]History" syntax.
I have a non-published build (because I'm on the road this week) of LifeViewer that supports the [R]History syntax. If you get a microsecond would you be so kind as to create me a test "[something-not-b3/s23]History" pattern?
dvgrn wrote:It's an interesting question. The Golly Gang has generally avoided special-case code, so that the base Golly engine behaves predictably as much as possible. The theory is that anything that can be handled by a script, should be. Otherwise the special cases tend to proliferate and make the code harder to maintain in the long run.
I support that sentiment.
However I believe there's a difference between special-case code and some better general-case features. For example, rather than building something that can copy-without-state6, it might be useful to have a facility in Golly where you can choose which states you'd like to copy.
Or perhaps a "Paste-Special" feature (like in Microsoft Excel) where at paste time you can filter what you'd like it to paste.

Re: Life tag testing

Posted: October 6th, 2015, 8:47 pm
by dvgrn
rowett wrote:
dvgrn wrote:At the moment that's probably a solution in search of a problem -- but that might change if the LifeViewer starts supporting an "[R]History" syntax.
I have a non-published build (because I'm on the road this week) of LifeViewer that supports the [R]History syntax. If you get a microsecond would you be so kind as to create me a test "[something-not-b3/s23]History" pattern?
Certainly. HighLife is a good test case:

Code: Select all

x = 179, y = 184, rule = B36S23History
131.4B$130.4B$129.4B$128.4B$127.4B$126.4B$125.4B$124.4B$123.4B$122.4B
$121.4B$120.4B$119.4B$118.4B$117.4B$116.4B$115.4B$114.4B$113.4B$112.
4B$111.4B$110.4B$109.4B$108.4B$107.4B$106.4B$105.4B$104.4B$103.4B$
102.4B$101.4B$100.4B$99.4B$98.4B$97.4B$96.4B$95.4B$94.4B$93.4B$92.4B$
91.4B$90.4B69.B$89.4B69.2B$88.4B69.3B$87.4B69.4B$86.4B2.B66.4B$85.4B
2.3B64.4B$84.4B2.5B62.4B$83.4B2.7B60.4B$82.4B2.9B58.4B$80.5B4.7B58.4B
$78.9B2.7B57.4B$77.19B56.4B$77.20B54.4B$77.2C20B51.4B$75.4BC16BC3B49.
4B$74.B2CB2C15B3C2B48.4B$74.B2C2B2C13B2CB2C2B46.4B$73.C6B3C10B2CB2C5B
43.4B$71.2BCBC5BCBC8B2CB2C7B41.4B$70.4B3C6BC9B3C8B40.4B$70.6B2C2B2C
12BC10B38.4B$69.2C6B2CB2C8B2.15B35.4B$67.4BC5BC4B.5B6.10BC3B33.4B$66.
B2CB2C6B2C15.8B3C2B32.4B$66.B2C2B2C6B16.7B2CB2C2B30.4B$65.C6B3C4B17.
5B2CB2C5B27.4B$63.2BCBC5BCBC2B20.2B2CB2C7B25.4B$62.4B3C6BC23.2B3C8B
24.4B$62.6B2C2B2CB24.3BC10B22.4B$61.8B2CB2CB25.15B19.4B$59.10BC4B28.
14B17.4B$58.12B2C31.13B16.4B$58.13B32.14B3.B10.4B$55.16B33.18B8.4B$
54.16B36.14BC2B6.4B$54.4C10B39.12BCBC2B4.4B$53.C2B2C9B40.18B2.4B$53.
2BC11B41.11B3C2B2.4B$52.C13B42.2BCBC10B2.4B$51.B3C5BCBC4B40.3BC2BC8B
2.4B$50.9BC4BC2B40.BC4BC4B2.B2.4B$49.4B.9B2C2B39.B2C4B2C3B4.4B$48.4B
2.5BC3B4C39.4C3BC5B2.4B$47.4B4.3B2C4B2CB39.2B2C9B.4B$46.4B2.B2.4BC4BC
B40.2BC4BC9B$45.4B2.8BC2BC3B40.4BCBC5B3CB$44.4B2.10BCBC2B42.13BC$43.
4B2.2B3C11B41.11BC2B$42.4B2.18B40.9B2C2BC$41.4B4.2BCBC12B39.10B4C$40.
4B6.2BC14B36.16B$39.4B8.18B33.16B$38.4B10.B3.14B32.13B$37.4B16.13B31.
2C12B$36.4B17.14B28.4BC10B$35.4B19.15B25.B2CB2C8B$34.4B22.10BC3B24.B
2C2B2C6B$33.4B24.8B3C2B23.C6B3C4B$32.4B25.7B2CB2C2B20.2BCBC5BCBC2B$
31.4B27.5B2CB2C5B17.4B3C6BC$30.4B30.2B2CB2C7B16.6B2C2B2CB$29.4B32.2B
3C8B15.2C6B2CB2CB$28.4B33.3BC10B6.5B.4BC5BC4B$27.4B35.15B2.8B2CB2C6B
2C$26.4B38.10BC12B2C2B2C6B$25.4B40.8B3C9BC6B3C4B$24.4B41.7B2CB2C8BCBC
5BCBC2B$23.4B43.5B2CB2C10B3C6BC$22.4B46.2B2CB2C13B2C2B2CB$21.4B48.2B
3C15B2CB2CB$20.4B49.3BC16BC4B$19.4B51.20B2C$18.4B54.20B63.E$17.4B56.
19B39.E21.3E$16.4B57.7B2.9B38.3E20.E$15.4B58.7B4.5B39.E23.2E$14.4B58.
9B2.4B41.2E19.5B$13.4B60.7B2.4B39.5B19.3B$12.4B62.5B2.4B40.3B20.5B$
11.4B64.3B2.4B40.5B19.2BC2B$10.4B66.B2.4B41.5B19.5B$9.4B69.4B42.5B19.
2BC2B$8.4B69.4B43.5B19.5B$7.4B69.4B30.E13.2BC2B19.2BC2B$6.4B69.4B31.
3E11.B3CB19.BCBCB$5.4B69.4B35.E10.2CB2C19.B3CB$4.4B69.4B35.2E10.2CB2C
15.2C2.6B2.10B$3.4B69.4B36.5B7.BCBCB15.C3.10B2C8B$2.4B69.4B39.BCB7.2B
CB13.BC.C4.4B.3BCB2C7B$.4B69.4B39.BCBCB7.3B2.C3B2C4B.B2C4.4B2.4B2C8B$
4B69.4B40.C3BC9.2BC2B5C5B5.A3B5.10B.B2E$3B69.4B41.BCBCB9.B3CBC4BC4B4.
A3B.2B14.BE.E$2B69.4B42.2BC2B7.4BC2B5C5B3.B3A.3B17.E$B69.4B43.BCBCB6.
5B.C3B2C4B4.4B.5B16.2E$69.4B44.5B5.A6B13.4B2.5B$68.4B45.B3CB4.B2AB.4B
11.4B3.2BC2B$67.4B46.5B3.BABA3.3BA9.A3B4.BCBCB$66.4B31.2E14.5B2.4B5.A
BAB7.A3B5.2CB2C$65.4B33.E14.5B.4B7.2A2B5.B3A6.2CB2C$64.4B34.E.EB12.3B
.4B9.11B7.BCBCB$63.4B36.2EB.9B2.3BA3B10.10B8.B3CB$62.4B39.4B2C10B2AB
11.10B8.5B$61.4B40.3BCB2C6B2.ABA13.3BA3B10.CBCBC$60.4B41.4B2C7B2.4B
13.BA4B11.3C$59.4B44.10B4.4B12.B3A3B10.B3CB$58.4B60.4B10.4B.4B12.2E$
57.4B62.4B8.4B3.4B11.E$56.4B64.4B6.4B5.4B11.3E$55.4B66.4B4.A3B7.4B12.
E$54.4B68.4B2.A3B9.4B$53.4B70.5B3A11.4B$52.4B58.2E12.6B13.4B$51.4B60.
E13.6B13.4B$50.4B61.E.EB11.4B.10B4.4B$49.4B63.2EB.10B.B3A5B3C4B3.4B$
48.4B66.4B2C7B.A7BCB2C3B4.4B$47.4B67.4BCBCBCBC3B.BA5B3C4B5.4B$46.4B
68.4B2C8B2.11B.B2E4.4B$45.4B71.10B5.2B9.BE.E4.4B$44.4B85.3B13.E5.4B$
43.4B86.3B13.2E5.4B$42.4B86.5B20.4B$41.4B87.5B21.4B$40.4B88.5B22.4B$
39.4B89.5B23.4B$38.4B90.2BC2B24.4B$37.4B91.BCBCB25.4B$36.4B92.C3BC26.
4B$35.4B93.BCBCB27.4B$34.4B94.B3CB28.4B$33.4B95.5B29.4B$32.4B97.3B31.
4B$31.4B98.5B30.4B$136.2E31.4B$136.E33.4B$137.3E31.4B$139.E32.4B$173.
4B$174.4B$175.4B$176.3B$177.2B$178.B!
I'm making up the rule name syntax here, just taking out the slash in the Bxx/Syy spec. Technically LifeHistory would become B3S23History.

Or how about this one? Maybe a little trickier because it's a B0 rule...?

Code: Select all

x = 71, y = 55, rule = B013568S01History
2.2B2.B.4B$2.10B2.4B$.17B$.17B$.18B$4BA4BA10B$4B2AB3A9B$3B2A3BA9B$.4B
ABA11B$2.17B2.4B$2.23B$2.23B$2.24B$3.24B$4.22B$4.21B$5.21B$5.21B2.4B$
6.26B$6.26B$6.2B.24B$6.2B2.24B$11.22B$11.21B$12.21B$12.21B2.4B$13.26B
$13.26B$13.2B.24B$13.2B2.24B$18.22B$18.21B$19.21B$19.21B$20.20B$20.
20B13.3D2.5D3.3D$20.2B.18B11.D9.D2.D3.D$20.2B2.8BC4BC3B4.D5.D10.D6.D$
25.7B2CB3C2B5.D5.D9.D7.D$25.6B2C3BC4B2.5D3.4D6.D6.D$26.7BCBC5B4.D5.D
3.D4.D6.D$26.15B4.D5.D3.D4.D5.D$27.14B10.D3.D3.D5.D$27.13B12.3D4.D5.
5D$27.2B.8B$27.2B$44.D14.D$44.D4.D9.D$44.D14.D$42.5D2.D3.3D3.D3.D3.3D
$44.D4.D2.D3.D2.D2.D3.D3.D$44.D4.D2.D6.3D4.D$44.D4.D2.D6.D.D5.3D$44.D
4.D2.D3.D2.D2.D7.D$44.D4.D3.3D3.D3.D3.3D!
rowett wrote:... I believe there's a difference between special-case code and some better general-case features. For example, rather than building something that can copy-without-state6, it might be useful to have a facility in Golly where you can choose which states you'd like to copy.
Or perhaps a "Paste-Special" feature (like in Microsoft Excel) where at paste time you can filter what you'd like it to paste.
Next time I win the lottery, I'm going to devote a few months to figuring out wxWidgets well enough to contribute a new programmable toolbar to Golly, where you can specify a button face for each button and assign a script to it, along the same lines as the keyboard shortcuts. (In fact it might even end up on the same Preferences tab.)

Some of these buttons might end up being new tools that sit next to the cursor-mode tools on the Edit bar. Maybe there would be a way to pick a location on any existing toolbar, to add these buttons to.

So then there could easily be a "Select/filter states" tool, or a "Select non-rectangular area" tool, or any number of other things... and it would all be based on Python scripts, so people could write new tools, and anyone who found them useful could (easily?) add them to their copy of Golly.

Most Golly users don't seem to have noticed a need for a "Paste Special" option yet. Maybe that's because LifeHistory is only really starting to get used in preference to plain-vanilla Life, just in the last year or two. Before that it was mostly just me, and Brice Due, and maybe a few people that we had corrupted over the years...!

Re: Life tag testing

Posted: October 7th, 2015, 5:10 am
by rowett
dvgrn wrote:
rowett wrote:If you get a microsecond would you be so kind as to create me a test "[something-not-b3/s23]History" pattern?
Certainly. HighLife is a good test case.
Or how about this one? Maybe a little trickier because it's a B0 rule...?
Perfect, both worked first time. Many thanks.
dvgrn wrote:I'm making up the rule name syntax here, just taking out the slash in the Bxx/Syy spec. Technically LifeHistory would become B3S23History.
The current implementation just looks for "History" at the end of the rule name. If found then it switches to "History" mode, removes the "History" postfix from the rule name and then processes the rule name as normal.
So based on that all of the following are valid for LifeHistory:
  • LifeHistory
  • B3/S23History
  • S23/B3History
  • B3S23History
  • S23B3History
  • 23/3History
  • History
  • lifeHistory
And similar names now apply for every other supported rule (HighLifeHistory, BugsHistory, B013568S01History, etc.)
dvgrn wrote:Next time I win the lottery...
I almost never win the lottery. Now I don't play so the previous sentence has been optimized by one word. Which I think is one better...
dvgrn wrote:... I'm going to devote a few months to figuring out wxWidgets well enough to contribute a new programmable toolbar to Golly
Nice idea! Good luck with the lottery :)
dvgrn wrote:Most Golly users don't seem to have noticed a need for a "Paste Special" option yet. Maybe that's because LifeHistory is only really starting to get used in preference to plain-vanilla Life, just in the last year or two. Before that it was mostly just me, and Brice Due, and maybe a few people that we had corrupted over the years...!
LifeViewer is now a fan of [R]History so perhaps that will help the infection...

Re: Life tag testing

Posted: October 7th, 2015, 5:44 am
by dvgrn
rowett wrote:So based on that all of the following are valid for LifeHistory:
  • LifeHistory
  • B3/S23History
  • S23/B3History
  • B3S23History
  • S23B3History
  • 23/3History
  • History
  • lifeHistory
And similar names now apply for every other supported rule (HighLifeHistory, BugsHistory, B013568S01History, etc.)
Sounds good. I can't think of any existing rules where that will cause overlap problems with already-named rules.

The only potential difficulty I can think of is that any of the above names that contain slashes are not valid as Golly rule names, because Golly wants to create a .rule file with that name, and that won't work on most OSes:

Code: Select all

---------------------------
Golly warning:
---------------------------
Could not open .rule file for writing:
C:\Users\Conweh\AppData\Roaming\Golly\Rules\B3/S23History.rule

can't open file 'C:\Users\Conweh\AppData\Roaming\Golly\Rules\B3/S23History.rule' (error 3: the system cannot find the path specified.)
I don't have a definite recommendation for a change to LifeViewer at the moment, but it seems possible that it might be worth throwing an error when a header line shows up like "x = 99, y = 99, rule = B36/S23History"... just because that rule can't be created or used in Golly 2.7.

Golly could obviously be changed to allow this syntax, basically by just stripping out any forward slashes. But again this isn't really a problem at the moment, because any Golly scripts that write this kind of RLE will be using a working non-embedded-slash version of the rule.

Anyway, I'll add this to my list of things to get opinions from the Golly Gang about, and maybe write a general script to Make History from the currently active Life-like rule... and just see what happens next.

Re: Life tag testing

Posted: October 7th, 2015, 8:38 am
by rowett
dvgrn wrote:The only potential difficulty I can think of is that any of the above names that contain slashes are not valid as Golly rule names, because Golly wants to create a .rule file with that name, and that won't work on most OSes
And what about case-sensitivity? Would Golly treat:

Code: Select all

rule = HighLife
and

Code: Select all

rule = highlife
the same?

Re: Life tag testing

Posted: October 7th, 2015, 10:51 am
by dvgrn
rowett wrote:
dvgrn wrote:The only potential difficulty I can think of is that any of the above names that contain slashes are not valid as Golly rule names, because Golly wants to create a .rule file with that name, and that won't work on most OSes
And what about case-sensitivity? Would Golly treat:

Code: Select all

rule = HighLife
and

Code: Select all

rule = highlife
the same?
No, those are potentially two different rules. Golly allows either capitalized or non-capitalized forms -- b3s23history or B3S23History -- but not both at once... unless the OS has case-sensitive filenames.

On Windows, or on Macs if you don't have case-sensitive filenames turned on apparently, if you create b3s23history.rule followed by B3S23History.rule, the second one will overwrite the first, but on Linux you'll get two separate rules, but also a warning from Golly:

---------------------------
Golly warning:
---------------------------
The specified rule (B3S23History) does not match the rule name in the .rule file (B3s23History).

This will cause problems if you save or copy patterns and try to use them on a case-sensitive file system.
---------------------------
OK
---------------------------

Now, Golly is actually case-sensitive. Your question about HighLife has a slightly different, because "HighLife" is just an alias for B36/S23, set up in GollyPrefs:

Code: Select all

named_rule=LifeHistory|LifeHistory
named_rule=3-4 Life|B34/S34
named_rule=HighLife|B36/S23
named_rule=AntiLife|B0123478/S01234678
...
So it's perfectly possible to save a rule named "highlife", which will work fine and not overwrite anything (I don't think) (but it still doesn't seem like such a good idea.)

I believe you can also save a rule called HighLife.rule, which will then become the default way to run rule = HighLife patterns -- even if the rule actually has fifty states and is doing something completely different.

Does that make everything infinitesimally clear?

Re: Life tag testing

Posted: October 7th, 2015, 4:58 pm
by rowett
dvgrn wrote:Does that make everything infinitesimally clear?
In the inverse sense of the word "infinitesimally", yes.

In conclusion I don't think it matters since LifeViewer is only a consumer of patterns and not a producer. The more flexibility it has to interpret a pattern file the better, regardless of the origin (Golly or otherwise).

Re: Life tag testing

Posted: October 7th, 2015, 5:26 pm
by dvgrn
rowett wrote:In conclusion I don't think it matters since LifeViewer is only a consumer of patterns and not a producer. The more flexibility it has to interpret a pattern file the better, regardless of the origin (Golly or otherwise).
I can see one possible reason to add some kind of visible warning if Golly will have trouble with the pattern header. It might even make sense to refuse to open non-Golly-standard [R]History patterns.

At the moment, Golly is the only other likely producer or consumer of [R]History, and that's a little way in the future. For a while at least the LifeViewer might be the only consumer of [R]History, and it might get a little painful if people start making [R]History patterns for use on the forums, and then it turns out that Golly isn't able to support them. Seems like a direct Ctrl+Shift+O into Golly is a good goal, with no possible painful side trips into a text editor.

Re: Life tag testing

Posted: October 7th, 2015, 5:37 pm
by rowett
dvgrn wrote:I can see one possible reason to add some kind of visible warning if Golly will have trouble with the pattern header. It might even make sense to refuse to open non-Golly-standard [R]History patterns.
One Golly to bind them all...

Which would you prefer, a warning or a refusal?

Re: Life tag testing

Posted: October 7th, 2015, 6:12 pm
by dvgrn
rowett wrote:
dvgrn wrote:It might even make sense to refuse to open non-Golly-standard [R]History patterns.
One Golly to bind them all...

Which would you prefer, a warning or a refusal?
Polite refusal, I think, with an explanation of exactly what's wrong -- unwelcome slashes, unwelcome lowercase, or both.

That's at least for rules of the form Bnn/Snn. I may be biased, or even a servant of Morgoth, but why leave open the possibility of annoying error messages in the One Golly later on? Might as well have one nice clear standard format, B[0-8]*S[0-8]*History, instead of letting all those nasssty little hobbitses get used to syntax that doesn't really work.

Let's see, that will mean that there will one amusingly named rule, BSHistory (didn't I take that in college?) which will instantly turn all ON cells blue. That seems okay.

-- It shouldn't make any difference what syntax you allow, really. The only near-future source of [R]History patterns will be from running patterns in [R]History rules in Golly, with rule files generated by a script that I probably won't be able to resist writing for much longer.

The interesting thing is going to be generating History rule tables for B0 rules -- I'm not sure yet if those are going to have to run at half-speed, or what. Can't use Golly's built-in B0 handling with a multi-state rule. Actually I don't see any even half-decent solution based on rule tables.

More B0-related special cases in Golly's source code? The RuleLoader never had to know about B0 before... No, that might just have to be a hole in Golly's [R]History support for now.

I'd also best think a little more about how aliases will work -- HighLifeHistory and SeedsHistory and so forth -- but I think that's an easier problem to solve.

Re: Life tag testing

Posted: October 9th, 2015, 5:55 pm
by rowett
Build 162 is now available on the lazyslug server.
You can try it out here.

Enhancements in this build:
  • added support for [R]History patterns
  • added a new button (top left) and hotkey (shift and "f") to toggle AutoFit [experimental]
  • added support for HTML5 colour names [[ COLOR ALIVE Red ]]
  • added [[ COLOR TEXT R G B ]] to set colour for waypoint messages
  • shift and hotkey "e" will set STEP to maximum (32)
  • shift and hotkey "d" will set STEP to minimum (1)
  • shift and hotkey [+] will set GPS to maximum (60)
  • shift and hotkey [-] will set GPS to minimum (1)
  • pattern decoder now accepts well known aliases (2x2, Bugs, Gnarl, etc.)
  • added some new pattern aliases
  • if help is open then hotkey "i" will move to the help information
  • help information now displays counts of cells in each state present at pattern load
  • a more helpful message is displayed when step back is attempted (hotkey "b") and step back disabled (with [[ NOSTEPBACK ]])
Fixes in this build:
  • only allocate [R]History overlay for [R]History rule patterns that contain cells in states >= 2
  • only allocate [R]History state 6 bitmaps when pattern contains cells in state 6
  • [R]History pattern fit zoom was failing after grid growth
  • moved stars further away for better depth
  • fixed a crash after failing to decode an invalid multi-state pattern
  • failing to decode an invalid RLE pattern (e.g. illegal number of states) could be then marked valid by another decoder
  • only one non-library rule name was being allowed when multiple viewers were present
  • performance increase for next generation computation

Re: Life tag testing

Posted: October 11th, 2015, 8:38 am
by dvgrn
rowett wrote:Build 162 is now available on the lazyslug server.
Looks good so far! I haven't come close to trying out all the options yet, though -- seems as if there must be some strange behavior lurking somewhere.

There's one discrepancy between LifeHistory and LifeViewer [R]History. In LifeHistory, state 5 was set up as a "start position" marker state -- cells could be that state at T=0, but once they change color there was no transition path to get them back to state 5.

You've upgraded state 5 to be a full second marked-ON state, like state 3. LifeViewer turns both state 3 and state 5 into state 4 when it's off, but then changes it back to its original state when it turns on again. Golly actually couldn't simulate this behavior if it tried -- the rule would need another separate marked-OFF state to store that information.

Now, state 5 is not heavily used in actual LifeHistory patterns, and in some ways your way of handling them is nicer than LifeHistory's way -- for example, the eaters in the first test pattern get to stay all the same color, whereas in Golly cells are permanently demoted to white if they turn off during the eating process.

I guess if it's trivial to change LifeViewer to get an exact match with Golly LifeHistory behavior, then maybe you should do it, but otherwise don't worry about it. There are advantages to displaying state 5 this way anyway -- you can usefully color periodic components yellow.

Re: Life tag testing

Posted: October 12th, 2015, 6:56 am
by rowett
dvgrn wrote:I guess if it's trivial to change LifeViewer to get an exact match with Golly LifeHistory behavior, then maybe you should do it, but otherwise don't worry about it. There are advantages to displaying state 5 this way anyway -- you can usefully color periodic components yellow.
Ironically it would be more work in LifeViewer to make the state 5 cells not remember that they started as state 5. This is because states 3 to 6* just work as a modifier to the rendering pass (i.e. when picking colours to draw each display pixel). They're not computed as part of the next generation calculation on the cell grid.

* State 6 is also not computed as part of the next generation calculation on the cell grid but is used as a pre and post generation mask.