Golly 4.2

For general discussion about Conway's Game of Life.
Post Reply
User avatar
Andrew
Moderator
Posts: 927
Joined: June 2nd, 2009, 2:08 am
Location: Melbourne, Australia
Contact:

Golly 4.2

Post by Andrew » August 15th, 2022, 7:05 am

Golly 4.2 is now available from sourceforge:

https://sourceforge.net/projects/golly/ ... golly-4.2/
Use Glu to explore CA rules on non-periodic tilings: DominoLife and HatLife

User avatar
LaundryPizza03
Posts: 2323
Joined: December 15th, 2017, 12:05 am
Location: Unidentified location "https://en.wikipedia.org/wiki/Texas"

Re: Golly 4.2

Post by LaundryPizza03 » August 21st, 2022, 10:52 pm

Golly's homepage still needs to be updated.

Code: Select all

x = 4, y = 3, rule = B3-q4z5y/S234k5j
2b2o$b2o$2o!
LaundryPizza03 at Wikipedia

User avatar
Andrew
Moderator
Posts: 927
Joined: June 2nd, 2009, 2:08 am
Location: Melbourne, Australia
Contact:

Re: Golly 4.2

Post by Andrew » August 22nd, 2022, 1:40 am

LaundryPizza03 wrote:
August 21st, 2022, 10:52 pm
Golly's homepage still needs to be updated.
Just done (I only update that page after a new version has been uploaded to sourceforge).
Use Glu to explore CA rules on non-periodic tilings: DominoLife and HatLife

User avatar
bibunsekibun
Posts: 345
Joined: April 17th, 2021, 7:58 pm
Location: Japan

Re: Golly 4.2

Post by bibunsekibun » November 19th, 2022, 12:07 am

How do I resolve the error "The specified rule does not match the rule name in the .rule file."?
sorry I can only speak Japanese, English is made by machine translation
I'm a fan of methuselahs

User avatar
dvgrn
Moderator
Posts: 10669
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Golly 4.2

Post by dvgrn » November 19th, 2022, 12:16 am

bibunsekibun wrote:
November 19th, 2022, 12:07 am
How do I resolve the error "The specified rule does not match the rule name in the .rule file."?
Well, first you have to find where that particular .rule file is stored. You could copy and File > Run Clipboard the following script:

Code: Select all

local g = golly()
g.note(g.getdir("rules"))
g.setclipstr(g.getdir("rules"))
Look in that folder -- the path will be copied to the clipboard for you -- and if you don't find the .rule file there, look in Golly's root directory in the Rules subfolder.

Once you find the file, open it in a text editor. You'll probably find that the name specified at the top of the file doesn't quite match the filename -- a difference in capitalization, for example. Fix that and save the file, and the error should go away.

hotdogPi
Posts: 1613
Joined: August 12th, 2020, 8:22 pm

Re: Golly 4.2

Post by hotdogPi » February 7th, 2023, 10:01 am

I tried to paste Python code into Golly, thinking it would run it, but it pasted as cells and somehow changed the rule to JvN29 as if that was the rule the cells were in. How did this happen?
User:HotdogPi/My discoveries

Periods discovered: 5-16,⑱,⑳G,㉑G,㉒㉔㉕,㉗-㉛,㉜SG,㉞㉟㊱㊳㊵㊷㊹㊺㊽㊿,54G,55G,56,57G,60,62-66,68,70,73,74S,75,76S,80,84,88,90,96
100,02S,06,08,10,12,14G,16,17G,20,26G,28,38,47,48,54,56,72,74,80,92,96S
217,486,576

S: SKOP
G: gun

User avatar
dvgrn
Moderator
Posts: 10669
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Golly 4.2

Post by dvgrn » February 7th, 2023, 10:23 am

hotdogPi wrote:
February 7th, 2023, 10:01 am
I tried to paste Python code into Golly, thinking it would run it, but it pasted as cells and somehow changed the rule to JvN29 as if that was the rule the cells were in. How did this happen?
That's pretty much what commonly happens when you try to paste text into Golly that can be interpreted as multistate RLE. I believe Golly finds a default rule with more states, when it sees what it thinks are more states than the current rule can support. JvN is the default, but for example if your rule is already LifeSuper then it won't change the rule.

There's a separate command, File > Run from Clipboard, that you're supposed to use when you have code in the clipboard rather than a pattern. However, whereas File > Open from Clipboard has a standard shortcut (Ctrl+Shift+O) there isn't a default shortcut assigned to Run from Clipboard.

For a long time I've had the backtick key (`) assigned to Run from Clipboard, and I find that extremely useful.

hotdogPi
Posts: 1613
Joined: August 12th, 2020, 8:22 pm

Re: Golly 4.2

Post by hotdogPi » February 7th, 2023, 10:26 am

dvgrn wrote:
February 7th, 2023, 10:23 am
There's a separate command, File > Run from Clipboard, that you're supposed to use when you have code in the clipboard rather than a pattern.
I'm aware of that and did immediately afterward (not that it worked, as "run from clipboard" doesn't support opening external files; the program I was trying to run was my stamp collection generator code modified for an INT rule at someone else's request). It's just that I thought pasting was a shortcut.
User:HotdogPi/My discoveries

Periods discovered: 5-16,⑱,⑳G,㉑G,㉒㉔㉕,㉗-㉛,㉜SG,㉞㉟㊱㊳㊵㊷㊹㊺㊽㊿,54G,55G,56,57G,60,62-66,68,70,73,74S,75,76S,80,84,88,90,96
100,02S,06,08,10,12,14G,16,17G,20,26G,28,38,47,48,54,56,72,74,80,92,96S
217,486,576

S: SKOP
G: gun

User avatar
dvgrn
Moderator
Posts: 10669
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Golly 4.2

Post by dvgrn » February 7th, 2023, 10:37 am

hotdogPi wrote:
February 7th, 2023, 10:26 am
I'm aware of that and did immediately afterward (not that it worked, as "run from clipboard" doesn't support opening external files; the program I was trying to run was my stamp collection generator code modified for an INT rule at someone else's request).
I would say that it does support opening external files -- it's just that any paths in your code would then have to be hard-coded full paths, not defined relative to the location where the script is saved, like

Code: Select all

open_file2('oscillators.txt')
Scripts run from the clipboard end up getting stuck in a temp directory, so if they're then looking around in the temp directory for some associated files that they're expecting to find, they're going to be disappointed.

User avatar
_zM
Posts: 186
Joined: June 26th, 2016, 3:07 pm

Re: Golly 4.2

Post by _zM » February 22nd, 2023, 10:58 am

LifeSuper wrongly canonicalizes any rule with transitions B3/S23 by replacing that substring with Life regardless of the rule's neighborhood, resulting in an invalid rulestring.
moment

User avatar
rowett
Moderator
Posts: 3814
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Golly 4.2

Post by rowett » February 22nd, 2023, 11:44 am

_zM wrote:
February 22nd, 2023, 10:58 am
LifeSuper wrongly canonicalizes any rule with transitions B3/S23 by replacing that substring with Life regardless of the rule's neighborhood, resulting in an invalid rulestring.
I've committed a fix for this. Thanks for reporting!

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

Re: Golly 4.2

Post by muzik » March 4th, 2023, 8:41 am

Here's something I definitely did not overthink:

B3/S238's inverse rule is B123478/S01234678, so normal patterns in one rule work the same in the other rule if states 0 and 1 switch places. For [R]History and [R]Super, this property is broken, since the "killer" cell will always kill live cells around it regardless of what they represent. For example, these two patterns evolve very differently due to the presence of state 6, but removing all state 6 cells will result in them evolving the exact same.

Code: Select all

x = 13, y = 12, rule = B3/S238History:T20,20
F2$10.A$10.A.A$10.2A7$9.F!

Code: Select all

x = 20, y = 20, rule = B123478/S01234678History:T20,20
20A$20A$5AF14A$20A$15A.4A$15A.A.2A$15A2.3A$20A$20A$20A$20A$20A$20A$
14AF5A$20A$20A$20A$20A$20A$20A!
Golly emulates B0/Smax rules by effectively assuming that every "on" cell is actually "off" and every "off" cell is actually "on". This works perfectly for normal 2-state rules, but our assumption breaks down for state-6 cells. In reality, the second pattern below should have the gray cells setting every cell around them to the "alive" state if they detect any in the "dead" state, which would effectively be the only functional difference between Life and AntiLife. This, however, is not the case.

Code: Select all

x = 13, y = 12, rule = B3/S23History
F2$10.A$10.A.A$10.2A7$9.F!

Code: Select all

x = 13, y = 12, rule = B0123478/S01234678History
F2$10.A$10.A.A$10.2A7$9.F!

User avatar
confocaloid
Posts: 2933
Joined: February 8th, 2022, 3:15 pm

Re: Golly 4.2

Post by confocaloid » March 4th, 2023, 9:18 am

muzik wrote:
March 4th, 2023, 8:41 am
B3/S238's inverse rule is B123478/S01234678, so normal patterns in one rule work the same in the other rule if states 0 and 1 switch places. For [R]History and [R]Super, this property is broken, since the "killer" cell will always kill live cells around it regardless of what they represent. For example, these two patterns evolve very differently due to the presence of state 6, but removing all state 6 cells will result in them evolving the exact same.

Code: Select all

x = 13, y = 12, rule = B3/S238History:T20,20
F2$10.A$10.A.A$10.2A7$9.F!

Code: Select all

x = 20, y = 20, rule = B123478/S01234678History:T20,20
20A$20A$5AF14A$20A$15A.4A$15A.A.2A$15A2.3A$20A$20A$20A$20A$20A$20A$
14AF5A$20A$20A$20A$20A$20A$20A!
For the two patterns to be truly complementary (i.e. evolve the same way with 0 and 1 exchanged), you would need to replace the state-6 cells with another cellstate, that would behave in the complementary way (i.e. turn all adjacent "off" cells into "on" cells). There's no such cellstate in LifeHistory.

However, it seems like there is such a cellstate in StateInvestigator, where cellstate 3 is equivalent to LifeHistory's cellstate 6 and cellstate 8 is complementary to that:

Code: Select all

x = 20, y = 20, rule = B3S238Investigator:T20,20
4$4.C2$14.A$14.A.A$14.2A7$13.C!

@RULE B3S238Investigator
@TABLE
n_states:21
neighborhood:Moore
symmetries:rotate4reflect
var A1 = {1,2,4,6,8,10,12,15,16,17,19}
var A2 = {1,2,4,6,8,10,12,15,16,17,19}
var A3 = {1,2,4,6,8,10,12,15,16,17,19}
var A4 = {1,2,4,6,8,10,12,15,16,17,19}
var A5 = {1,2,4,6,8,10,12,15,16,17,19}
var A6 = {1,2,4,6,8,10,12,15,16,17,19}
var A7 = {1,2,4,6,8,10,12,15,16,17,19}
var A8 = {1,2,4,6,8,10,12,15,16,17,19}
var b1 = {0,3,5,7,9,11,13,18,20}
var b2 = {0,3,5,7,9,11,13,18,20}
var b3 = {0,3,5,7,9,11,13,18,20}
var b4 = {0,3,5,7,9,11,13,18,20}
var b5 = {0,3,5,7,9,11,13,18,20}
var b6 = {0,3,5,7,9,11,13,18,20}
var b7 = {0,3,5,7,9,11,13,18,20}
var b8 = {0,3,5,7,9,11,13,18,20}
var c1 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c2 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c3 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c4 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c5 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c6 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c7 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c8 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var d1 = {2,3,6,7,14,16}
var d2 = {8,9,12,13,14}
var E1 = {1,2,4,6,8,10,12,17,19}
var E2 = {1,2,4,6,8,10,12,17,19}
var E3 = {1,2,4,6,8,10,12,17,19}
var E4 = {1,2,4,6,8,10,12,17,19}
var E5 = {1,2,4,6,8,10,12,17,19}
var E6 = {1,2,4,6,8,10,12,17,19}
var E7 = {1,2,4,6,8,10,12,17,19}
var E8 = {1,2,4,6,8,10,12,17,19}
var F1 = {1,2,4,6,8,10,12,15,16,18,20}
var F2 = {1,2,4,6,8,10,12,15,16,18,20}
var F3 = {1,2,4,6,8,10,12,15,16,18,20}
var F4 = {1,2,4,6,8,10,12,15,16,18,20}
var F5 = {1,2,4,6,8,10,12,15,16,18,20}
var F6 = {1,2,4,6,8,10,12,15,16,18,20}
var F7 = {1,2,4,6,8,10,12,15,16,18,20}
var F8 = {1,2,4,6,8,10,12,15,16,18,20}
var g1 = {0,3,5,7,9,11,13,17,19}
var g2 = {0,3,5,7,9,11,13,17,19}
var g3 = {0,3,5,7,9,11,13,17,19}
var g4 = {0,3,5,7,9,11,13,17,19}
var g5 = {0,3,5,7,9,11,13,17,19}
var g6 = {0,3,5,7,9,11,13,17,19}
var g7 = {0,3,5,7,9,11,13,17,19}
var g8 = {0,3,5,7,9,11,13,17,19}

0, b1,E2,b3,E4,b5,E6,b7,b8, 1
0, b1,1,b3,A4,b5,A6,b7,b8, 1
0, b1,A2,b3,1,b5,A6,b7,b8, 1
0, b1,A2,b3,A4,b5,1,b7,b8, 1
0, E1,b2,E3,b4,E5,b6,b7,b8, 1
0, 1,b2,A3,b4,A5,b6,b7,b8, 1
0, A1,b2,1,b4,A5,b6,b7,b8, 1
0, A1,b2,A3,b4,1,b6,b7,b8, 1
0, E1,b2,E3,b4,b5,E6,b7,b8, 1
0, 1,b2,A3,b4,b5,A6,b7,b8, 1
0, A1,b2,1,b4,b5,A6,b7,b8, 1
0, A1,b2,A3,b4,b5,1,b7,b8, 1
0, E1,E2,E3,b4,b5,b6,b7,b8, 1
0, 1,A2,A3,b4,b5,b6,b7,b8, 1
0, A1,1,A3,b4,b5,b6,b7,b8, 1
0, A1,A2,1,b4,b5,b6,b7,b8, 1
0, E1,E2,b3,b4,b5,b6,b7,E8, 1
0, 1,A2,b3,b4,b5,b6,b7,A8, 1
0, A1,1,b3,b4,b5,b6,b7,A8, 1
0, A1,A2,b3,b4,b5,b6,b7,1, 1
0, E1,E2,b3,E4,b5,b6,b7,b8, 1
0, 1,A2,b3,A4,b5,b6,b7,b8, 1
0, A1,1,b3,A4,b5,b6,b7,b8, 1
0, A1,A2,b3,1,b5,b6,b7,b8, 1
0, E1,b2,b3,E4,b5,E6,b7,b8, 1
0, 1,b2,b3,A4,b5,A6,b7,b8, 1
0, A1,b2,b3,1,b5,A6,b7,b8, 1
0, A1,b2,b3,A4,b5,1,b7,b8, 1
0, E1,E2,b3,b4,b5,E6,b7,b8, 1
0, 1,A2,b3,b4,b5,A6,b7,b8, 1
0, A1,1,b3,b4,b5,A6,b7,b8, 1
0, A1,A2,b3,b4,b5,1,b7,b8, 1
0, E1,b2,E3,E4,b5,b6,b7,b8, 1
0, 1,b2,A3,A4,b5,b6,b7,b8, 1
0, A1,b2,1,A4,b5,b6,b7,b8, 1
0, A1,b2,A3,1,b5,b6,b7,b8, 1
0, E1,E2,b3,b4,E5,b6,b7,b8, 1
0, 1,A2,b3,b4,A5,b6,b7,b8, 1
0, A1,1,b3,b4,A5,b6,b7,b8, 1
0, A1,A2,b3,b4,1,b6,b7,b8, 1
1, g1,g2,g3,g4,g5,g6,g7,g8, 0
1, g1,F2,g3,g4,g5,g6,g7,g8, 0
1, F1,g2,g3,g4,g5,g6,g7,g8, 0
1, g1,F2,g3,F4,g5,F6,g7,F8, 0
1, F1,g2,F3,g4,F5,g6,F7,g8, 0
1, F1,g2,F3,F4,g5,F6,g7,g8, 0
1, F1,F2,F3,F4,g5,g6,g7,g8, 0
1, F1,F2,g3,F4,F5,g6,g7,g8, 0
1, F1,F2,g3,F4,g5,g6,g7,F8, 0
1, F1,F2,g3,F4,g5,F6,g7,g8, 0
1, F1,F2,F3,g4,g5,F6,g7,g8, 0
1, F1,g2,F3,g4,F5,F6,g7,g8, 0
1, F1,g2,F3,F4,F5,g6,g7,g8, 0
1, F1,F2,g3,g4,F5,g6,g7,F8, 0
1, F1,g2,F3,F4,g5,g6,g7,F8, 0
1, F1,F2,g3,g4,F5,F6,g7,g8, 0
1, F1,g2,F3,g4,F5,g6,F7,F8, 0
1, g1,F2,g3,F4,g5,F6,F7,F8, 0
1, g1,F2,g3,F4,F5,g6,F7,F8, 0
1, g1,g2,g3,F4,F5,F6,F7,F8, 0
1, g1,g2,F3,F4,F5,F6,F7,g8, 0
1, g1,g2,F3,g4,F5,F6,F7,F8, 0
1, g1,F2,F3,g4,F5,g6,F7,F8, 0
1, g1,g2,F3,F4,F5,g6,F7,F8, 0
1, g1,F2,g3,g4,F5,F6,F7,F8, 0
1, g1,g2,F3,F4,g5,F6,F7,F8, 0
1, F1,g2,F3,g4,F5,F6,F7,F8, 0
1, g1,F2,g3,F4,F5,F6,F7,F8, 0
1, g1,F2,F3,g4,F5,F6,F7,F8, 0
1, g1,g2,F3,F4,F5,F6,F7,F8, 0
1, g1,F2,F3,F4,g5,F6,F7,F8, 0
1, F1,g2,F3,F4,F5,g6,F7,F8, 0
1, F1,g2,F3,F4,F5,F6,F7,F8, 0
1, g1,F2,F3,F4,F5,F6,F7,F8, 0
1, d1,c1,c2,c3,c4,c5,c6,c7, 0
1, c1,d1,c2,c3,c4,c5,c6,c7, 0
0, d2,c1,c2,c3,c4,c5,c6,c7, 1
0, c1,d2,c2,c3,c4,c5,c6,c7, 1
6, c1,c2,c3,c4,c5,c6,c7,c8, 7
7, c1,c2,c3,c4,c5,c6,c7,c8, 6
10, c1,c2,c3,c4,c5,c6,c7,c8, 11
11, c1,c2,c3,c4,c5,c6,c7,c8, 10
12, c1,c2,c3,c4,c5,c6,c7,c8, 13
13, c1,c2,c3,c4,c5,c6,c7,c8, 12
19, c1,c2,c3,c4,c5,c6,c7,c8, 20
20, c1,c2,c3,c4,c5,c6,c7,c8, 19
@COLORS
1    0  236   91
2    0  192  254
3  254    0    0
4  254  254  254
5   75   75   75
6  233   41  254
7   64    0  128
8  254  230    0
9  150  128    0
10 130  200    0
11   0  120   40
12 254  140    0
13 140   70    0
14   0    0  254
15 192  192  192
16 128  128  128
17 254  112  140
18 174    0  168
19   0  152  127
20   0   73   59

Code: Select all

x = 20, y = 20, rule = B123478S01234678Investigator:T20,20
20A$20A$5AH14A$20A$15A.4A$15A.A.2A$15A2.3A$20A$20A$20A$20A$20A$20A$
14AH5A$20A$20A$20A$20A$20A$20A!

@RULE B123478S01234678Investigator
@TABLE
n_states:21
neighborhood:Moore
symmetries:rotate4reflect
var A1 = {1,2,4,6,8,10,12,15,16,17,19}
var A2 = {1,2,4,6,8,10,12,15,16,17,19}
var A3 = {1,2,4,6,8,10,12,15,16,17,19}
var A4 = {1,2,4,6,8,10,12,15,16,17,19}
var A5 = {1,2,4,6,8,10,12,15,16,17,19}
var A6 = {1,2,4,6,8,10,12,15,16,17,19}
var A7 = {1,2,4,6,8,10,12,15,16,17,19}
var A8 = {1,2,4,6,8,10,12,15,16,17,19}
var b1 = {0,3,5,7,9,11,13,18,20}
var b2 = {0,3,5,7,9,11,13,18,20}
var b3 = {0,3,5,7,9,11,13,18,20}
var b4 = {0,3,5,7,9,11,13,18,20}
var b5 = {0,3,5,7,9,11,13,18,20}
var b6 = {0,3,5,7,9,11,13,18,20}
var b7 = {0,3,5,7,9,11,13,18,20}
var b8 = {0,3,5,7,9,11,13,18,20}
var c1 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c2 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c3 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c4 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c5 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c6 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c7 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var c8 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}
var d1 = {2,3,6,7,14,16}
var d2 = {8,9,12,13,14}
var E1 = {1,2,4,6,8,10,12,17,19}
var E2 = {1,2,4,6,8,10,12,17,19}
var E3 = {1,2,4,6,8,10,12,17,19}
var E4 = {1,2,4,6,8,10,12,17,19}
var E5 = {1,2,4,6,8,10,12,17,19}
var E6 = {1,2,4,6,8,10,12,17,19}
var E7 = {1,2,4,6,8,10,12,17,19}
var E8 = {1,2,4,6,8,10,12,17,19}
var F1 = {1,2,4,6,8,10,12,15,16,18,20}
var F2 = {1,2,4,6,8,10,12,15,16,18,20}
var F3 = {1,2,4,6,8,10,12,15,16,18,20}
var F4 = {1,2,4,6,8,10,12,15,16,18,20}
var F5 = {1,2,4,6,8,10,12,15,16,18,20}
var F6 = {1,2,4,6,8,10,12,15,16,18,20}
var F7 = {1,2,4,6,8,10,12,15,16,18,20}
var F8 = {1,2,4,6,8,10,12,15,16,18,20}
var g1 = {0,3,5,7,9,11,13,17,19}
var g2 = {0,3,5,7,9,11,13,17,19}
var g3 = {0,3,5,7,9,11,13,17,19}
var g4 = {0,3,5,7,9,11,13,17,19}
var g5 = {0,3,5,7,9,11,13,17,19}
var g6 = {0,3,5,7,9,11,13,17,19}
var g7 = {0,3,5,7,9,11,13,17,19}
var g8 = {0,3,5,7,9,11,13,17,19}

0, b1,E2,b3,b4,b5,b6,b7,b8, 1
0, b1,1,b3,b4,b5,b6,b7,b8, 1
0, E1,b2,b3,b4,b5,b6,b7,b8, 1
0, 1,b2,b3,b4,b5,b6,b7,b8, 1
0, b1,E2,b3,E4,b5,b6,b7,b8, 1
0, b1,1,b3,A4,b5,b6,b7,b8, 1
0, b1,A2,b3,1,b5,b6,b7,b8, 1
0, E1,b2,E3,b4,b5,b6,b7,b8, 1
0, 1,b2,A3,b4,b5,b6,b7,b8, 1
0, A1,b2,1,b4,b5,b6,b7,b8, 1
0, E1,b2,b3,E4,b5,b6,b7,b8, 1
0, 1,b2,b3,A4,b5,b6,b7,b8, 1
0, A1,b2,b3,1,b5,b6,b7,b8, 1
0, E1,E2,b3,b4,b5,b6,b7,b8, 1
0, 1,A2,b3,b4,b5,b6,b7,b8, 1
0, A1,1,b3,b4,b5,b6,b7,b8, 1
0, E1,b2,b3,b4,E5,b6,b7,b8, 1
0, 1,b2,b3,b4,A5,b6,b7,b8, 1
0, A1,b2,b3,b4,1,b6,b7,b8, 1
0, b1,E2,b3,b4,b5,E6,b7,b8, 1
0, b1,1,b3,b4,b5,A6,b7,b8, 1
0, b1,A2,b3,b4,b5,1,b7,b8, 1
0, b1,E2,b3,E4,b5,E6,b7,b8, 1
0, b1,1,b3,A4,b5,A6,b7,b8, 1
0, b1,A2,b3,1,b5,A6,b7,b8, 1
0, b1,A2,b3,A4,b5,1,b7,b8, 1
0, E1,b2,E3,b4,E5,b6,b7,b8, 1
0, 1,b2,A3,b4,A5,b6,b7,b8, 1
0, A1,b2,1,b4,A5,b6,b7,b8, 1
0, A1,b2,A3,b4,1,b6,b7,b8, 1
0, E1,b2,E3,b4,b5,E6,b7,b8, 1
0, 1,b2,A3,b4,b5,A6,b7,b8, 1
0, A1,b2,1,b4,b5,A6,b7,b8, 1
0, A1,b2,A3,b4,b5,1,b7,b8, 1
0, E1,E2,E3,b4,b5,b6,b7,b8, 1
0, 1,A2,A3,b4,b5,b6,b7,b8, 1
0, A1,1,A3,b4,b5,b6,b7,b8, 1
0, A1,A2,1,b4,b5,b6,b7,b8, 1
0, E1,E2,b3,b4,b5,b6,b7,E8, 1
0, 1,A2,b3,b4,b5,b6,b7,A8, 1
0, A1,1,b3,b4,b5,b6,b7,A8, 1
0, A1,A2,b3,b4,b5,b6,b7,1, 1
0, E1,E2,b3,E4,b5,b6,b7,b8, 1
0, 1,A2,b3,A4,b5,b6,b7,b8, 1
0, A1,1,b3,A4,b5,b6,b7,b8, 1
0, A1,A2,b3,1,b5,b6,b7,b8, 1
0, E1,b2,b3,E4,b5,E6,b7,b8, 1
0, 1,b2,b3,A4,b5,A6,b7,b8, 1
0, A1,b2,b3,1,b5,A6,b7,b8, 1
0, A1,b2,b3,A4,b5,1,b7,b8, 1
0, E1,E2,b3,b4,b5,E6,b7,b8, 1
0, 1,A2,b3,b4,b5,A6,b7,b8, 1
0, A1,1,b3,b4,b5,A6,b7,b8, 1
0, A1,A2,b3,b4,b5,1,b7,b8, 1
0, E1,b2,E3,E4,b5,b6,b7,b8, 1
0, 1,b2,A3,A4,b5,b6,b7,b8, 1
0, A1,b2,1,A4,b5,b6,b7,b8, 1
0, A1,b2,A3,1,b5,b6,b7,b8, 1
0, E1,E2,b3,b4,E5,b6,b7,b8, 1
0, 1,A2,b3,b4,A5,b6,b7,b8, 1
0, A1,1,b3,b4,A5,b6,b7,b8, 1
0, A1,A2,b3,b4,1,b6,b7,b8, 1
0, b1,E2,b3,E4,b5,E6,b7,E8, 1
0, b1,1,b3,A4,b5,A6,b7,A8, 1
0, b1,A2,b3,1,b5,A6,b7,A8, 1
0, b1,A2,b3,A4,b5,1,b7,A8, 1
0, b1,A2,b3,A4,b5,A6,b7,1, 1
0, E1,b2,E3,b4,E5,b6,E7,b8, 1
0, 1,b2,A3,b4,A5,b6,A7,b8, 1
0, A1,b2,1,b4,A5,b6,A7,b8, 1
0, A1,b2,A3,b4,1,b6,A7,b8, 1
0, A1,b2,A3,b4,A5,b6,1,b8, 1
0, E1,b2,E3,E4,b5,E6,b7,b8, 1
0, 1,b2,A3,A4,b5,A6,b7,b8, 1
0, A1,b2,1,A4,b5,A6,b7,b8, 1
0, A1,b2,A3,1,b5,A6,b7,b8, 1
0, A1,b2,A3,A4,b5,1,b7,b8, 1
0, E1,E2,E3,E4,b5,b6,b7,b8, 1
0, 1,A2,A3,A4,b5,b6,b7,b8, 1
0, A1,1,A3,A4,b5,b6,b7,b8, 1
0, A1,A2,1,A4,b5,b6,b7,b8, 1
0, A1,A2,A3,1,b5,b6,b7,b8, 1
0, E1,E2,b3,E4,E5,b6,b7,b8, 1
0, 1,A2,b3,A4,A5,b6,b7,b8, 1
0, A1,1,b3,A4,A5,b6,b7,b8, 1
0, A1,A2,b3,1,A5,b6,b7,b8, 1
0, A1,A2,b3,A4,1,b6,b7,b8, 1
0, E1,E2,b3,E4,b5,b6,b7,E8, 1
0, 1,A2,b3,A4,b5,b6,b7,A8, 1
0, A1,1,b3,A4,b5,b6,b7,A8, 1
0, A1,A2,b3,1,b5,b6,b7,A8, 1
0, A1,A2,b3,A4,b5,b6,b7,1, 1
0, E1,E2,b3,E4,b5,E6,b7,b8, 1
0, 1,A2,b3,A4,b5,A6,b7,b8, 1
0, A1,1,b3,A4,b5,A6,b7,b8, 1
0, A1,A2,b3,1,b5,A6,b7,b8, 1
0, A1,A2,b3,A4,b5,1,b7,b8, 1
0, E1,E2,E3,b4,b5,E6,b7,b8, 1
0, 1,A2,A3,b4,b5,A6,b7,b8, 1
0, A1,1,A3,b4,b5,A6,b7,b8, 1
0, A1,A2,1,b4,b5,A6,b7,b8, 1
0, A1,A2,A3,b4,b5,1,b7,b8, 1
0, E1,b2,E3,b4,E5,E6,b7,b8, 1
0, 1,b2,A3,b4,A5,A6,b7,b8, 1
0, A1,b2,1,b4,A5,A6,b7,b8, 1
0, A1,b2,A3,b4,1,A6,b7,b8, 1
0, A1,b2,A3,b4,A5,1,b7,b8, 1
0, E1,b2,E3,E4,E5,b6,b7,b8, 1
0, 1,b2,A3,A4,A5,b6,b7,b8, 1
0, A1,b2,1,A4,A5,b6,b7,b8, 1
0, A1,b2,A3,1,A5,b6,b7,b8, 1
0, A1,b2,A3,A4,1,b6,b7,b8, 1
0, E1,E2,b3,b4,E5,b6,b7,E8, 1
0, 1,A2,b3,b4,A5,b6,b7,A8, 1
0, A1,1,b3,b4,A5,b6,b7,A8, 1
0, A1,A2,b3,b4,1,b6,b7,A8, 1
0, A1,A2,b3,b4,A5,b6,b7,1, 1
0, E1,b2,E3,E4,b5,b6,b7,E8, 1
0, 1,b2,A3,A4,b5,b6,b7,A8, 1
0, A1,b2,1,A4,b5,b6,b7,A8, 1
0, A1,b2,A3,1,b5,b6,b7,A8, 1
0, A1,b2,A3,A4,b5,b6,b7,1, 1
0, E1,E2,b3,b4,E5,E6,b7,b8, 1
0, 1,A2,b3,b4,A5,A6,b7,b8, 1
0, A1,1,b3,b4,A5,A6,b7,b8, 1
0, A1,A2,b3,b4,1,A6,b7,b8, 1
0, A1,A2,b3,b4,A5,1,b7,b8, 1
0, E1,b2,E3,E4,E5,E6,E7,E8, 1
0, 1,b2,A3,A4,A5,A6,A7,A8, 1
0, A1,b2,1,A4,A5,A6,A7,A8, 1
0, A1,b2,A3,1,A5,A6,A7,A8, 1
0, A1,b2,A3,A4,1,A6,A7,A8, 1
0, A1,b2,A3,A4,A5,1,A7,A8, 1
0, A1,b2,A3,A4,A5,A6,1,A8, 1
0, A1,b2,A3,A4,A5,A6,A7,1, 1

0, b1,E2,E3,E4,E5,E6,E7,E8, 1
0, b1,1,A3,A4,A5,A6,A7,A8, 1
0, b1,A2,1,A4,A5,A6,A7,A8, 1
0, b1,A2,A3,1,A5,A6,A7,A8, 1
0, b1,A2,A3,A4,1,A6,A7,A8, 1
0, b1,A2,A3,A4,A5,1,A7,A8, 1
0, b1,A2,A3,A4,A5,A6,1,A8, 1
0, b1,A2,A3,A4,A5,A6,A7,1, 1
0, E1,E2,E3,E4,E5,E6,E7,E8, 1
0, 1,A2,A3,A4,A5,A6,A7,A8, 1
0, A1,1,A3,A4,A5,A6,A7,A8, 1
0, A1,A2,1,A4,A5,A6,A7,A8, 1
0, A1,A2,A3,1,A5,A6,A7,A8, 1
0, A1,A2,A3,A4,1,A6,A7,A8, 1
0, A1,A2,A3,A4,A5,1,A7,A8, 1
0, A1,A2,A3,A4,A5,A6,1,A8, 1
0, A1,A2,A3,A4,A5,A6,A7,1, 1
1, F1,g2,F3,g4,F5,g6,F7,F8, 0
1, g1,F2,g3,F4,g5,F6,F7,F8, 0
1, g1,F2,g3,F4,F5,g6,F7,F8, 0
1, g1,g2,g3,F4,F5,F6,F7,F8, 0
1, g1,g2,F3,F4,F5,F6,F7,g8, 0
1, g1,g2,F3,g4,F5,F6,F7,F8, 0
1, g1,F2,F3,g4,F5,g6,F7,F8, 0
1, g1,g2,F3,F4,F5,g6,F7,F8, 0
1, g1,F2,g3,g4,F5,F6,F7,F8, 0
1, g1,g2,F3,F4,g5,F6,F7,F8, 0
1, d1,c1,c2,c3,c4,c5,c6,c7, 0
1, c1,d1,c2,c3,c4,c5,c6,c7, 0
0, d2,c1,c2,c3,c4,c5,c6,c7, 1
0, c1,d2,c2,c3,c4,c5,c6,c7, 1
6, c1,c2,c3,c4,c5,c6,c7,c8, 7
7, c1,c2,c3,c4,c5,c6,c7,c8, 6
10, c1,c2,c3,c4,c5,c6,c7,c8, 11
11, c1,c2,c3,c4,c5,c6,c7,c8, 10
12, c1,c2,c3,c4,c5,c6,c7,c8, 13
13, c1,c2,c3,c4,c5,c6,c7,c8, 12
19, c1,c2,c3,c4,c5,c6,c7,c8, 20
20, c1,c2,c3,c4,c5,c6,c7,c8, 19
@COLORS
1    0  236   91
2    0  192  254
3  254    0    0
4  254  254  254
5   75   75   75
6  233   41  254
7   64    0  128
8  254  230    0
9  150  128    0
10 130  200    0
11   0  120   40
12 254  140    0
13 140   70    0
14   0    0  254
15 192  192  192
16 128  128  128
17 254  112  140
18 174    0  168
19   0  152  127
20   0   73   59
127:1 B3/S234c User:Confocal/R (isotropic CA, incomplete)
Unlikely events happen.
My silence does not imply agreement, nor indifference. If I disagreed with something in the past, then please do not construe my silence as something that could change that.

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

Re: Golly 4.2

Post by muzik » March 4th, 2023, 9:48 am

confocaloid wrote:
March 4th, 2023, 9:18 am
For the two patterns to be truly complementary (i.e. evolve the same way with 0 and 1 exchanged), you would need to replace the state-6 cells with another cellstate, that would behave in the complementary way (i.e. turn all adjacent "off" cells into "on" cells). There's no such cellstate in LifeHistory.
I don't see why another state needs to be added to [R]History - state 6's behaviour would just need to change for B0/Smax rules.

User avatar
confocaloid
Posts: 2933
Joined: February 8th, 2022, 3:15 pm

Re: Golly 4.2

Post by confocaloid » March 4th, 2023, 9:58 am

muzik wrote:
March 4th, 2023, 9:48 am
confocaloid wrote:
March 4th, 2023, 9:18 am
For the two patterns to be truly complementary (i.e. evolve the same way with 0 and 1 exchanged), you would need to replace the state-6 cells with another cellstate, that would behave in the complementary way (i.e. turn all adjacent "off" cells into "on" cells). There's no such cellstate in LifeHistory.
I don't see why another state needs to be added to [R]History - state 6's behaviour would just need to change for B0/Smax rules.
How to deal with rules without B0 and with S8, like B3/S238? Then neither the rule nor its inverse has B0, so it is not clear how a state-6 cell would "know" how to behave.
127:1 B3/S234c User:Confocal/R (isotropic CA, incomplete)
Unlikely events happen.
My silence does not imply agreement, nor indifference. If I disagreed with something in the past, then please do not construe my silence as something that could change that.

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

Re: Golly 4.2

Post by muzik » March 4th, 2023, 10:00 am

confocaloid wrote:
March 4th, 2023, 9:58 am
muzik wrote:
March 4th, 2023, 9:48 am
confocaloid wrote:
March 4th, 2023, 9:18 am
For the two patterns to be truly complementary (i.e. evolve the same way with 0 and 1 exchanged), you would need to replace the state-6 cells with another cellstate, that would behave in the complementary way (i.e. turn all adjacent "off" cells into "on" cells). There's no such cellstate in LifeHistory.
I don't see why another state needs to be added to [R]History - state 6's behaviour would just need to change for B0/Smax rules.
How to deal with rules without B0 and with S8, like B3/S238? Then neither the rule nor its inverse has B0, so it is not clear how a state-6 cell would "know" how to behave.
Nothing would change for either of them, since neither the rule nor its inverse needs to be emulated and therefore the behaviour is automatically correct.

Only rules with B0 and Smax are affected, since in those rules dead cells represent alive cells and alive cells represent dead cells.

User avatar
confocaloid
Posts: 2933
Joined: February 8th, 2022, 3:15 pm

Re: Golly 4.2

Post by confocaloid » March 4th, 2023, 11:16 am

Would this suggestion change the visible behaviour of the following pattern, and if yes, what would happen here? (According to the Golly help, cellstate 6 is "boundary OFF" and the original intent was to use it for barriers between subpatterns.)

Code: Select all

x = 27, y = 40, rule = B0123478/S01234678History
10.F$10.F$10.F$10.F$10.F$10.F$10.F11.A$.A8.F10.A$2.A7.F10.A3.A$3A7.F
10.4A$10.F$10.F$10.F$10.F10.A$10.F9.A$10.F9.A3.A$10.F9.4A$10.F$10.F$
10.F$10.F$10.F11.A$10.F10.A$10.F10.A4.A$10.F10.5A$10.F$10.F$10.F$10.F
$10.F$10.F10.A$10.F9.A$10.F9.A4.A$10.F9.5A$10.F$10.F$10.F$10.F$10.F$
10.F!
muzik wrote:
March 4th, 2023, 8:41 am
Golly emulates B0/Smax rules by effectively assuming that every "on" cell is actually "off" and every "off" cell is actually "on". This works perfectly for normal 2-state rules, but our assumption breaks down for state-6 cells. In reality, the second pattern below should have the gray cells setting every cell around them to the "alive" state if they detect any in the "dead" state, which would effectively be the only functional difference between Life and AntiLife. This, however, is not the case.

Code: Select all

x = 13, y = 12, rule = B3/S23History
F2$10.A$10.A.A$10.2A7$9.F!

Code: Select all

x = 13, y = 12, rule = B0123478/S01234678History
F2$10.A$10.A.A$10.2A7$9.F!
muzik wrote:
March 4th, 2023, 8:41 am
Only rules with B0 and Smax are affected, since in those rules dead cells represent alive cells and alive cells represent dead cells.
127:1 B3/S234c User:Confocal/R (isotropic CA, incomplete)
Unlikely events happen.
My silence does not imply agreement, nor indifference. If I disagreed with something in the past, then please do not construe my silence as something that could change that.

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

Re: Golly 4.2

Post by muzik » March 4th, 2023, 11:30 am

confocaloid wrote:
March 4th, 2023, 11:16 am
Would this suggestion change the visible behaviour of the following pattern, and if yes, what would happen here? (According to the Golly help, cellstate 6 is "boundary OFF" and the original intent was to use it for barriers between subpatterns.)
Yes, the behaviour would change and state 6 would create on cells. However, in this specific case, there isn't much of a need to use a B0/S8 type rule anyway, since the pattern would still act the same as it always does in B3/S23:

Code: Select all

x = 27, y = 40, rule = B3/S23History
10.F$10.F$10.F$10.F$10.F$10.F$10.F11.A$.A8.F10.A$2.A7.F10.A3.A$3A7.F
10.4A$10.F$10.F$10.F$10.F10.A$10.F9.A$10.F9.A3.A$10.F9.4A$10.F$10.F$
10.F$10.F$10.F11.A$10.F10.A$10.F10.A4.A$10.F10.5A$10.F$10.F$10.F$10.F
$10.F$10.F10.A$10.F9.A$10.F9.A4.A$10.F9.5A$10.F$10.F$10.F$10.F$10.F$
10.F!
This is effectively equivalent to the following situation: a row of state 6 cells would act as a spaceship-proof wall in B3/S238, but would not in B123478/S01234678, which ultimately isn't really preventing you from doing anything since if you wanted to show anti-spaceships being blocked in the latter rule, you could just use the former rule and use a line of them to kill non-anti-spaceships:

Code: Select all

x = 20, y = 20, rule = B3/S238History:T20,20
7.F$7.F$7.F$7.F$7.F$7.F$7.F7.A$7.F6.A$7.F6.A3.A$7.F6.4A$7.F$7.F$7.F$
7.F$7.F$7.F$7.F$7.F$7.F$7.F!

Code: Select all

x = 20, y = 20, rule = B123478/S01234678History:T20,20
7AF12A$7AF12A$7AF12A$7AF12A$7AF12A$7AF12A$7AF7A.4A$7AF6A.5A$7AF6A.3A.
A$7AF6A4.2A$7AF12A$7AF12A$7AF12A$7AF12A$7AF12A$7AF12A$7AF12A$7AF12A$
7AF12A$7AF12A!
If you want to use state-6 cells as a "wall" in a rule with B0/Smax, you can just change to the equivalent rule which doesn't have B0 and they'll work as "killer cells" as expected.

----

Side note: this thread is making me really want a generalized [R]Extended/[R]Ultra protocol again. Maybe I should start work on one...

User avatar
confocaloid
Posts: 2933
Joined: February 8th, 2022, 3:15 pm

Re: Golly 4.2

Post by confocaloid » March 4th, 2023, 9:17 pm

muzik wrote:
March 4th, 2023, 11:30 am
confocaloid wrote:
March 4th, 2023, 11:16 am
Would this suggestion change the visible behaviour of the following pattern, and if yes, what would happen here? (According to the Golly help, cellstate 6 is "boundary OFF" and the original intent was to use it for barriers between subpatterns.)
Yes, the behaviour would change and state 6 would create on cells. However, in this specific case, there isn't much of a need to use a B0/S8 type rule anyway, since the pattern would still act the same as it always does in B3/S23:
...
I think I understand how you would not need any changes to be able to use LifeHistory cellstate 6 for its original intended purpose: if the rule has both B0 and S8, just switch to the inverse rule without B0/S8.

What I do not yet understand is what are the cases where the proposed changes would be (a) visible and (b) useful enough to count as arguments in favour of changing how the rule currently works. Why exactly the way LifeHistory currently works should be considered incorrect?
muzik wrote:
March 4th, 2023, 11:30 am
Side note: this thread is making me really want a generalized [R]Extended/[R]Ultra protocol again. Maybe I should start work on one...
This goes off-topic, but if your ultimate aim is to reach some kind of standard that would have any chance to eventually become supported by the standard tools without ruletables (in the way LifeHistory/LifeSuper are supported), then why not support something that already exists? As far as I can tell, StateInvestigator already solves many relevant problems, and there is already a working Python script to support alien isotropic rules.

(Even if a generalised ruletable combining all cellstates of every existing extension possible in theory, I doubt it would be very convenient/easy to use, because of way too many cellstates to remember, and way too many interactions between features.
There are reasons why a software tool that is designed to solve one relatively narrow specific problem has much better chances to do that one thing well.)
127:1 B3/S234c User:Confocal/R (isotropic CA, incomplete)
Unlikely events happen.
My silence does not imply agreement, nor indifference. If I disagreed with something in the past, then please do not construe my silence as something that could change that.

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

Re: Golly 4.2

Post by muzik » March 7th, 2023, 8:18 am

confocaloid wrote:
March 4th, 2023, 9:17 pm
What I do not yet understand is what are the cases where the proposed changes would be (a) visible and (b) useful enough to count as arguments in favour of changing how the rule currently works. Why exactly the way LifeHistory currently works should be considered incorrect?
To understand why it's incorrect, we need to understand how B0/Smax (in our specific case, B0/S8) emulation works. Since there's no strobing, it's the simplest case to understand. You probably know all of this already but I'd prefer to explain it anyway so we know exactly why this is justified.

Any rule containing both B0 and S8 is functionally identical to another rule which does not have B0. For example, the rule that we have been discussing, B0123478/S01234678, is functionally the same as the rule B3/S23. The only functional difference between these two rules is that the behaviour of alive cells on an infinite background of dead cells in one rule is the same as the behaviour of dead cells on an infinite background of alive cells in the other rule. In our case, the rule with B0 is the "dead cells on an alive background" rule, and the rule without B0 is the "alive cells on a dead background" case. This is the simple concept of black-white reversal.

However, cellular automaton simulation programs which have an "infinite" background cannot handle an infinite number of alive cells, since the population wouldn't make any sense (and tracking each alive cell would take a comical amount of memory). So, for B0/S8 rules, most programs just switch to using the "inverse rule that doesn't have B0" behind the scenes, since in a 2-state context, the behaviours of patterns do not change at all. So, when asked to run a pattern in the rule B0123478/S01234678, the program just uses B3/S23 instead. All cells which would actually be dead are represented with alive cells and all cells which would actually be alive are represented by dead cells, but that's ultimately a minor detail.

Note, however, that I said that the behaviour of patterns doesn't change in a 2-state context. If you tuned out for the last paragraphs since I was needlessly patronisingly explaining stuff probably everybody knows (unless you didn't know that, or there was something you knew of but didn't know why it was the way it was - in which case, congratulations on being one of today's lucky 10000! (Not a factorial.)), then this is the time to tune back in: when we have more than two states, the assumption that patterns behave the same under black-white reversal breaks down.

The following two points are important here:
- B0123478/S01234678 and B3/S23 are two completely different rules, even if they act the same if you invert the cell states. The former takes place in an infinite sea of alive cells, whereas the latter takes place in an infinite sea of dead cells.
- State 6 in [R]History and [R]Super, by definition, turns alive cells into dead cells. Any "alive" cell which has a state-6 cell in its neighbourhood will become a "dead" cell immediately in the next generation, regardless of its other neighbours.

The incorrect behaviour arises because B0123478/S01234678 is a rule that takes place in an infinite sea of alive cells, and state 6 forces all cells around it to be dead. Since B0123478/S01234678 takes place on an infinite grid of alive cells, any state-6 cells in that infinite grid of alive cells must turn any alive cells that touch it into dead cells. Since Golly inverts alive and dead cells in B0/S8 rules, this would mean that state 6 cells would turn any dead cells touching them into alive cells. This, however, does not happen.

As for how these changes would be "visible", it's quite clear - to my understanding at least. Any isolated state 6 cell in B0123478/S01234678 would immediately turn all of the eight "dead" cells touching it into "alive" cells - because it's actually turning all of the "alive" cells touching it into "dead" cells and Golly is just flipping the roles of alive cells and dead cells.

As for how they would be "useful", that's a far more subjective question. Nothing would change for rules without B0. Every B0/S8 rule has an equivalent rule without B0, and Golly's Super algorithm doesn't support rule with B0 and without S8. So this correction in behaviour at least wouldn't interfere with existing patterns - unless for some strange reason you saved LifeHistory patterns as B0123478/S01234678LifeHistory, which is pointless before this proposed change since there's no difference between LifeHistory and B0123478/S01234678History, and a bad idea after this change since B0123478/S01234678History does behave differently. Ultimately, I don't think "usefulness" is really that good of a justification for keeping incorrect behaviour, especially if we're talking about incorrect behaviour that would adversely affect nobody if fixed.

----

For an example of how state-6 cells should work in B0/S8 rules, CAViewer gets it completely right. If you set the rule to B0123478/S01234678History and place down one state-6 cell in an otherwise empty universe, the result is a period-871 oscillator. I'd invite you (and anyone else interested) to download it if you haven't already and try it for yourself to verify this. (For [R]History, CAViewer represents the "alive-but-really-meant-to-represent-dead" cells with the blue history trail color, which is another technical detail of B0 [R]History we won't get into right now and I don't think is worth changing Golly to match, but I'll point it out anyway since it might make patterns hard to see against the dark background.)

This means that for B0/S8 rules, state-6 [R]History cells act the same as how state-8 cells do in StateInvestigator. This makes sense: for normal [R]History patterns, state-6 cells not only force adjacent alive cells into the dead system but they aren't counted as alive for cell births or dead-cells-stating-dead either. If we flip the roles of "dead" and "alive", then state 6 would be a cell which forces dead cells around it to be alive, and would also count as alive for birth and survival - which is exactly what StateInvestigator state 8 does. Indeed, we can see that the provided pattern below is also a period-871 oscillator predecessor. So ultimately, were this behaviour fixed, the following two patterns would behave identically in Golly:

Code: Select all

x = 1, y = 1, rule = B0123478/S01234678History
F!

Code: Select all

x = 1, y = 1, rule = StateInvestigator
H!
(If I got anything wrong in the above paragraphs, please do correct me. I'm very confident about all of these details, so do point out anything that seems incorrect, This goes for all readers.)
confocaloid wrote:
March 4th, 2023, 9:17 pm
muzik wrote:
March 4th, 2023, 11:30 am
Side note: this thread is making me really want a generalized [R]Extended/[R]Ultra protocol again. Maybe I should start work on one...
This goes off-topic, but if your ultimate aim is to reach some kind of standard that would have any chance to eventually become supported by the standard tools without ruletables (in the way LifeHistory/LifeSuper are supported), then why not support something that already exists? As far as I can tell, StateInvestigator already solves many relevant problems, and there is already a working Python script to support alien isotropic rules.

(Even if a generalised ruletable combining all cellstates of every existing extension possible in theory, I doubt it would be very convenient/easy to use, because of way too many cellstates to remember, and way too many interactions between features.
There are reasons why a software tool that is designed to solve one relatively narrow specific problem has much better chances to do that one thing well.)
I've been playing around with StateInvestigator in private recently just to check that all of the cell states supported by Life extensions that came before it are indeed accounted for. So far, they do all seem to work as expected, so I'm on the hunt for the most minor details. StateInvestigator, as it currently stands, does seem like an excellent candidate for a general [R]Extended. An implementation in Golly's Super algorithm to obviate the need for a script would be fantastic, but that's a suggestion for later.

I'm becoming less fond of the idea of [R]Ultra for the reasons you stated.

Cyclotrons
Posts: 129
Joined: January 26th, 2021, 12:19 am

Re: Golly 4.2

Post by Cyclotrons » September 12th, 2023, 9:45 pm

However Golly handles pasting for patterns in rulefiles, it needs a serious rework.

Step 1: Load the following rulefile into Golly.

Code: Select all

@RULE B1.;7;0.;5;1.;0,4;2.;2;3.;3;5_B2.;1,2;1.;3;2.;4;3.;1,3;4.;1;5_1T2.;3,5;0.;0,1,3,6;1.;0;3,7_2T1.;0,7,

Full Rulestring:
B1.;7;0.;5;1.;0,4;2.;2;3.;3;5/B2.;1,2;1.;3;2.;4;3.;1,3;4.;1;5/1T2.;3,5;0.;0,1,3,6;1.;0;3,7/2T1.;0,7,8;0.;5;2.;3;4.;0;7/S1.;6,8;0.;4,5,7;1.;5;2.;1;3.;4;4/S2.;1,2;0.;2;1.;3;3

@TREE
num_states=3
num_neighbors=8
num_nodes=132
1 0 0 1
1 0 0 2
1 0 2 0
2 0 1 2
1 2 2 0
2 1 1 4
1 1 0 0
2 2 4 6
3 3 5 7
1 2 0 2
2 1 2 9
1 0 0 0
2 4 9 11
3 5 10 12
2 6 11 2
3 7 12 14
4 8 13 15
2 2 11 2
2 9 2 11
3 10 17 18
1 0 1 0
2 11 11 20
3 12 18 21
4 13 19 22
2 2 20 11
3 14 21 24
4 15 22 25
5 16 23 26
2 11 2 20
1 2 0 0
2 2 20 29
3 17 28 30
2 11 29 6
3 18 30 32
4 19 31 33
2 20 6 29
3 21 32 35
4 22 33 36
5 23 34 37
2 11 29 11
3 24 35 39
4 25 36 40
5 26 37 41
6 27 38 42
1 1 1 0
2 2 20 44
2 20 44 6
3 28 45 46
2 29 6 1
3 30 46 48
4 31 47 49
2 6 1 11
3 32 48 51
4 33 49 52
5 34 50 53
2 29 11 29
3 35 51 55
4 36 52 56
5 37 53 57
6 38 54 58
3 39 55 39
4 40 56 60
5 41 57 61
6 42 58 62
7 43 59 63
1 1 0 1
2 20 65 2
1 0 1 1
2 44 2 67
3 45 66 68
2 6 67 29
3 46 68 70
4 47 69 71
1 2 0 1
2 1 29 73
3 48 70 74
4 49 71 75
5 50 72 76
2 11 73 11
3 51 74 78
4 52 75 79
5 53 76 80
6 54 77 81
2 29 11 11
3 55 78 83
4 56 79 84
5 57 80 85
6 58 81 86
7 59 82 87
1 0 2 1
2 11 11 89
3 39 83 90
4 60 84 91
5 61 85 92
6 62 86 93
7 63 87 94
8 64 88 95
2 65 67 20
3 66 97 24
2 67 11 11
3 68 24 99
4 69 98 100
2 29 11 20
3 70 99 102
4 71 100 103
5 72 101 104
2 73 20 6
3 74 102 106
4 75 103 107
5 76 104 108
6 77 105 109
2 11 6 11
3 78 106 111
4 79 107 112
5 80 108 113
6 81 109 114
7 82 110 115
2 11 11 11
3 83 111 117
4 84 112 118
5 85 113 119
6 86 114 120
7 87 115 121
8 88 116 122
2 89 11 11
3 90 117 124
4 91 118 125
5 92 119 126
6 93 120 127
7 94 121 128
8 95 122 129
9 96 123 130
Step 2: Observe that pasting doesn't work under any circumstance. This is different from the usual behavior of pasting when a rulefile is loaded, where it doesn't work only under most circumstances.
I wrote a stdin script that generates random soups of a provided number of a given spaceship. It works for all (non-B0) spaceships in the INT rulespace!
A Multistate INT notation + script.

User avatar
_zM
Posts: 186
Joined: June 26th, 2016, 3:07 pm

Re: Golly 4.2

Post by _zM » October 22nd, 2023, 11:16 am

oscar.lua (and probably oscar.py also) attempts to account for the possibility that patterns in B0 rules can spuriously match after an odd number of generations, but erroneously only discards them if the pattern hasn't moved, e.g.:

Code: Select all

x = 3, y = 2, rule = B01c23-a45678/S3a
b2o$3o!
which is incorrectly identified as a spaceship with speed c if oscar.py is run in an even generation, and correctly identified as a c/2 ship in odd generations.
moment

Post Reply