b-engine wrote: May 9th, 2025, 9:51 am
One of B134 only occurs if a cell survives one of S14 for two generations: [...]
I don't think that's either accurate or clear enough to be implemented.
Without additional clarifications,
- B1, B3, B4, S1, S4 can be seen as cell conditions (telling something about current states of cells),
- or they can be seen as rules ("if the cell is in such-and-such condition, then it will have such-and-such state in the next generation").
The wording "One of B134 only occurs if..." suggests that you are talking about cell conditions, which indeed may or may not
occur in the pattern. However, that doesn't seem to be compatible with the idea that whether or not it "occurs" could depend on the past history of cells. Whether or not a cell condition occurs in a given pattern, only depends on that pattern, and doesn't depend on how the pattern evolved before.
I think one of several possible interpretations could be:
> "One of rules B1, B3, B4 is only followed, if a cell survived because of one of rules S1, S4 twice in a row"
but it is hard to tell whether or not it captures the intended meaning (which wasn't explained well enough), and even if an accurate guess of what was intended, it sounds incomplete (missing further details that would be needed to tell how the implementation should work; for example, is this intended to be an "exception"-type rule from some general ruleset that would apply by default? Also, in what sense a birth rule (B1, B3, B4) is supposed to be followed for a cell that survived and hence is currently alive?)
See also my breakdown of the ruletable you posted, in comments below.
Code: Select all
# Source for the rules: https://conwaylife.com/forums/viewtopic.php?p=211596#p211596
# (comments added)
@TABLE
n_states:3
neighborhood:Moore
symmetries:permute
# Here, variables named "a*" are used for "any cellstate",
# and variables named "b*" are used for "any nonzero cellstate".
var a={0,1,2}
var a1=a
var a2=a
var a3=a
var a4=a
var a5=a
var a6=a
var a7=a
var a8=a
var b={1,2}
var b1=b
var b2=b
var b3=b
# This rule says that,
# if a state-0 cell has precisely one state-2 neighbour (and no other nonzero neighbours),
# then the cell becomes state-1 one tick later:
0,0,2,0,0,0,0,0,0,1
# This rule says that,
# if a state-0 cell has at least three state-2 neighbours and at least four state-0 neighbours,
# then the cell becomes state-1 one tick later:
0,2,2,2,a,0,0,0,0,1
# This rule says that, if a state-1 cell has precisely one nonzero neighbour,
# then the cell becomes state-0 one tick later:
1,0,b,0,0,0,0,0,0,0
# This rule says that, if a state-1 cell has at most one nonzero neighbour,
# then the cell becomes state-2 one tick later.
# However, due to the preceding rule (whose "if" part matches
# the cell condition "a state-1 cell with precisely one nonzero neighbour"),
# the effect of this rule is that a state-1 cell without any nonzero neighbours becomes state-2 one tick later:
1,a,0,0,0,0,0,0,0,2
# This rule says that, if a state-1 cell has precisely four nonzero neighbours,
# then the cell becomes state-2 one tick later.
1,b,b1,b2,b3,0,0,0,0,2
# This rule says that,
# in all other cases not covered by preceding rules,
# the cell's state in the next generation will be zero.
a,a1,a2,a3,a4,a5,a6,a7,a8,0