Thus I make a Golly feature request here:

- Add support for .mcl files using an MCell "general binary" rule
- Convert them to MAP rules
- Reduce them to isotropic/totalistic rules if possible

Code: Select all

`#MCell 4.00`

#GAME General binary

#RULE C0,NM,Sa6ba3bab3a3bab3ab7a3bab3ab7ab15a3bab3ab7ab15ab31a3bab3ab7

#RULE ab15ab31ab63a,B5ab3abb6abbab12abbab3ab24abbab3ab7ab49abab3ab7ab1

#RULE 5ab95a

#BOARD 100x100

#SPEED 0

#WRAP 0

#CCOLORS 2

#D The rule is caled "Just Friends" because new cells are born from a pair

#D of parents, but not from ones which are "too intimate" with each other.

#D A cell stays alive only if it has 1 or 2 live neighbors (in any position).

#D A cell is born only if it has exactly two live neighbors which are not

#D adjacent vertically or horizontally.

#D

#D So in the following figure, the central cell is born if there are live

#D cells at any two cells marked ac, ad, ae, af, ag, bd, be, bf, bg, bh,

#D ce, cf, cg, ch, df, dg, dh, eg, eh, or fh.

#D abc

#D hid

#D gfe

#D

#D The rule has two small period 6 diagonal gliders, an interesting period

#D 236 cyclic oscillator, and a small c/3 orthogonal wickstretcher which

#D show up from random soups. Lines of cells are stable. Random soups tend

#D to quickly settle down into small clumps of lines. But there are lots of

#D spaceships, wickstretchers, rakes, and glider guns which have been built.

#D

#D Here is a glider loop whose period is not a multiple of the turning

#D oscillator's period! (Is this the first such reaction known in any

#D Life-like rule?) Here are four gliders circulating with period 408.

#D

#D David I. Bell, June 2000

#L 20.7A$$23.A$23.A$$21.A3.A$$23.A13$51.A$48.A..A$47.A.A.A$46.A4.A$47.A.A

#L .A$A47.A..A$A3.A36.A9.A$A5.A$A.A38.AA$A5.A$A3.A$A$$34.A$35.AA5$22.AA4.

#L A$28.3A$22.A6$27.A.A$27.A.A$27.A.A$$25.7A

The explanation of the general binary rule format on the MCell page is as follows:

The notation of General binary rules has the "C/N/S/B" form, where:

C - specifies the count of states in the rule (0..C-1).

N - specifies the neighborhood type: NM stands for Moore, NN for von Neumann.

S - specifies the compressed string defining the configurations where a cell survives.

B - specifies the compressed string defining the configurations where a cell is born.

Strings defining S and B parts specify the 0/1 state for every possible configuration. For enumerating all possible neighborhood configurations the "N,NE,E,SE,S,SW,W,NW" order is used. For example S010000...0 means "Survival on an alive N neighbor", B1100...0 means "Birth on no neighbors or on a single N neighbor". To make the S/B strings shorter a simple compression is used. 0s are represented as "a", 1s as "b". 3 and more occurrences of the same character are shortened by specifying the count of occurrences and a character.

Example

"Fallski" rule is defined as follows: "C48,NM,Sb255a,Babb189ab63a".

It has 48 states (0..47) and uses the Moore neighborhood. "Sb255a" means 1 and 255 0s (survival only on no alive neighbors). "Babb189ab63a" means 0,1,1, 189 0s, 1, 63 0s (birth on a single N or NE neighbor, or on W and NW neighbors).

Since Golly supports Generations MAP rules and von Neumann neighbourhoods, we can handle all parameters.

The "LogicRule" in MCell, defined by its general binary rule string

Code: Select all

`C0,NM,S256a, B3ababb5abaab4ab3ab23ab16ab14ab15ab32ab62ab63a`

is, with one stray transition, equivalent to the isotropic rule B2ae/S.