Partitioned Cellular Automata

For discussion of other cellular automata.
bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 15th, 2019, 9:40 am

An archive for rule PCA_8 patterns is here:

http://bprentice.webenet.net/PCA/PCA_8%20Ships.zip

This archive currently contains ships with the speeds tabulated below:

Code: Select all

Diagonal Ships

2c/2350  DS001.sqc
c/270    DS002.sqc
5c/2706  DS003.sqc
c/610    DS004.sqc
5c/9370  DS005.sqc
2c/904   DS006.sqc
4c/5688  DS007.sqc
c/954    DS008.sqc
3c/1978  DS009.sqc
c/1642   DS010.sqc
c/1170   DS011.sqc
c/90     DS012.sqc
3c/862   DS013.sqc
8c/28316 DS014.sqc
c/3222   DS015.sqc
c/194    DS016.sqc
3c/28550 DS017.sqc
c/870    DS018.sqc
c/1758   DS019.sqc

Orthogonal Ships

4c/1190  S001.sqc
2c/84    S002.sqc
2c/368   S003.sqc
8c/12544 S004.sqc

Rotating Oscillators

10752    O002.sqc
34204    O003.sqc
19908    O004.sqc
131260   O005.sqc
21588    O006.sqc
17460    O007.sqc
6148     O008.sqc
91840    O009.sqc
7248     O010.sqc
10216    O011.sqc
The archive and this post will be updated when more objects are found.

Brian Prentice
Last edited by bprentice on October 8th, 2019, 10:44 am, edited 2 times in total.

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 16th, 2019, 11:33 pm

Another reflector demonstration:

Code: Select all

x = 142, y = 148, rule = PCA_8:T150,150
115.2A3$81.2B3$119.2H5$17.2D3$80.2A$35.2B$30.2A2$22.2A34.2H4$74.2B53.
2H5$53.2A5$64.2H12.2A2$97.2B5$43.2D65.2H3$78.2D16.2H2$22.2A3$71.2B47.
2B$70.2A49.2B5$116.2A$123.2A$75.2B31.2A3$88.2H5.2A$13.2A125.2A$105.
2H2$76.2A$13.2B14.2B38.2H3$4.2A2.2D2$18.2B$67.2A4$23.2A$58.2H35.2A$
59.2D$56.2A4$88.2D2$48.2H47.2D$75.2H23.2H2$53.2D$84.2H$95.2H39.2H$38.
2D2$30.2B87.2B5$45.2B$90.2D$39.2H5$78.2H2$74.2B$91.2D2$2H$20.2A32.2A
2$54.2B3$99.2H$56.2A2$66.2H2.2B$67.2H2D$68.2D3$35.2D$72.2B12.2A$12.
2H5$94.2H17$124.2H2$79.2D!
This one starts with a single ship and generates a second ship. This suggests that perhaps guns can be constructed in PCA rules. After the second ship is generated, the two ships bounce on the reflectors changing direction and speed. They mostly move diagonally but occasionally move orthogonally. They are still moving around the world after 50,000,000 cycles.

Brian Prentice

wildmyron
Posts: 1544
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Partitioned Cellular Automata

Post by wildmyron » September 17th, 2019, 4:36 am

Do I understand correctly that these rules are inspired by the PCA scheme for creating reversible rules, but (some of) the rules posted in this thread are not actually reversible themselves? Asking because I was wondering about the fate of random starting patterns in reversible rules where gliders are emitted from the "soup". If the universe is infinite in extent then this would seem to imply that such patterns must indefinitely grow larger and have "infinite novelty". And then looking at this pattern posted on the previous page:
bprentice wrote:Try patterns like this:

Code: Select all

x = 23, y = 22, rule = PCA_4:T150,150
12.A5.G$2.I2.M$8.E2.A$16.N$10.G6.MF$11.M2.K$D15.EF4.O$10.E$2.G5.D2.
K.F7.E$5.I7.D$I.M11.F7.A$ME.J9.A$.B$.D5.M5.I4.F$6.E$7.J3.N$21.J$A$17.
G3.I$5.O7.I$15.F$.I17.B!
I found that the pattern evolves to an oscillator if placed in an unbounded universe. IIUC, this implies that the rule PCA_4 is not reversible.

Edit: Actually, I just realised that my thinking about this is all wrong - because the pattern evolves to an oscillator plus emitted gliders. And when evolved backwards the returning gliders collide with the oscillator and will evolve to the initial pattern. [/edit]

Then I got to thinking about glider guns in reversible rules and I couldn't quite figure out if they are allowed or not. The post above inspired me to search for other relevant papers and I found this conference paper:

Morita K. (2016) An 8-State Simple Reversible Triangular Cellular Automaton that Exhibits Complex Behavior. In: Cook M., Neary T. (eds) Cellular Automata and Discrete Complex Systems. AUTOMATA 2016. Lecture Notes in Computer Science, vol 9664. Springer, Cham.
https://link.springer.com/chapter/10.10 ... 39300-1_14
A glider gun is a pattern that generates gliders periodically as the one in Game-of-Life [5]. In the RETPCA T0347, it is very easy to create a three-way glider gun. As shown in Fig. 20, it is obtained by colliding a glider with a fin.

Image
Fig. 20. Three-way glider gun. It generates three gliders every 24 steps.
RETPCA: Reversible Elementary Triangular Partitioned Cellular Automata
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 17th, 2019, 11:11 am

wildmyron wrote:Do I understand correctly...
The rules (PCA_1 thru PCA_8) were inspired by section 2.2 of this paper:

http://bprentice.webenet.net/PCA/Two%20 ... e%20CA.pdf

I believe that they are all reversible but can't prove it. Rules PCA_1 and PCA_5 are definitely reversible if they interpret model 1 and model 2 correctly from this paper:

http://bprentice.webenet.net/PCA/16%20S ... tomata.pdf

In the PCA Square Cell program here:

http://bprentice.webenet.net/PCA/PCA.zip

a dialog can be used to display and change the rule table allowing exploration of other rule variants. Many of these variants are not reversible.

I have invited Professor Kenichi Morita to contribute to this thread but he did not answer my email. Perhaps if you also ask him, he will.

This thread:

viewtopic.php?f=11&t=1293#p10652

shows that guns can be constructed in reversible rules.

I will probably implement the 8 state PCA triangular version using Triangular Cell later. It has already been implemented as a 64 state Golly rule. See Reversible World here:

https://github.com/gollygang/ruletabler ... i/TheRules

Brian Prentice

wildmyron
Posts: 1544
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Partitioned Cellular Automata

Post by wildmyron » September 17th, 2019, 12:13 pm

Thank you for your comments Brian, and reminding me about the "Wireless Ant rules". I'm sure I commented on them earlier this year - can't seem to remember all the interesting things I learn.
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 17th, 2019, 3:42 pm

The first splitter in a PCA rule:

Code: Select all

x = 13, y = 8, rule = PCA_8
10.2I$11.2F$10.2A5$2B!
This one splits a domino c/270 diagonal ship into two regular c/270 diagonal ships.

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 17th, 2019, 10:05 pm

A period 91840 oscillator:

Code: Select all

x = 81, y = 71, rule = PCA_8
74.2F$73.2F$72.2F$71.2F$70.2F$69.2F$68.2F$67.2F$66.2F$65.2F$64.2F$17.
B45.2F$16.F45.2F$15.F45.2F$14.F4.C40.2F$13.F6.C38.2F$12.F8.C36.2F$11.
F10.C34.2F$10.F12.C32.2F$9.F14.C30.2F$8.F16.C28.2F$7.F18.C26.2F$6.F
20.C24.2F$5.F22.C22.2F$4.F24.C20.2F$3.F26.C18.2F$2.F28.C16.2F$.F30.
C14.2F$A32.C12.2F$34.C10.2F$H34.C8.2F$.L34.C6.2F$2.L34.C4.2F$38.C2.
2F$39.B.A2$39.D.H$38.2I2.L$37.2I4.L34.C$36.2I6.L34.C$35.2I8.L34.B$34.
2I10.L$33.2I12.L32.D$32.2I14.L30.I$31.2I16.L28.I$30.2I18.L26.I$29.2I
20.L24.I$28.2I22.L22.I$27.2I24.L20.I$26.2I26.L18.I$25.2I28.L16.I$24.
2I30.L14.I$23.2I32.L12.I$22.2I34.L10.I$21.2I36.L8.I$20.2I38.L6.I$19.
2I40.L4.I$18.2I45.I$17.2I45.I$16.2I45.H$15.2I$14.2I$13.2I$12.2I$11.
2I$10.2I$9.2I$8.2I$7.2I$6.2I$5.2I!
Notice the beautiful interchange of single and domino diagonal lines.

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 18th, 2019, 6:29 pm

Four oscillators in PCA_1:

Code: Select all

x = 78, y = 33, rule = PCA_1
15.ICIC41.ICIC$14.IOFLOC39.IOFLOC$13.IOF2.LOC37.IOF2.LOC$12.IOF4.LO
C35.IOF4.LOC$11.IOF6.LOC33.IOF6.LOC$10.IOF8.LOC31.IOF8.LOC$9.IOF10.
LOC29.IOF10.LOC$8.IOF12.LOC27.IOF12.LOC$7.IOF14.LOC25.IOF14.LOC$6.I
OF16.LOC23.IOF16.LOC$5.IOF18.LOC21.IOF18.LOC$4.IOF20.LOC19.IOF16.A3.
LOC$3.IOF22.LOC17.IOF22.LOC$2.IOF24.LOC15.IOF24.LOC$.IOF19.A6.LOC13.
IOF19.A6.LOC$IOF28.LF12.IOF28.LF$LF29.IC12.LF29.IC$IC28.IOF12.IC28.
IOF$LOC20.A5.IOF13.LOC20.A5.IOF$.LOC24.IOF15.LOC24.IOF$2.LOC22.IOF17.
LOC22.IOF$3.LOC20.IOF19.LOC20.IOF$4.LOC18.IOF21.LOC18.IOF$5.LOC16.I
OF23.LOC16.IOF$6.LOC14.IOF25.LOC14.IOF$7.LOC12.IOF27.LOC12.IOF$8.LO
C10.IOF29.LOC10.IOF$9.LOC8.IOF31.LOC8.IOF$10.LOC6.IOF33.LOC6.IOF$11.
LOC4.IOF35.LOC4.IOF$12.LOC2.IOF37.LOC2.IOF$13.LOCIOF39.LOCIOF$14.LF
LF41.LFLF!
Periods 944 and 16048.

Code: Select all

x = 78, y = 33, rule = PCA_1
15.ICIC41.ICIC$14.IOFLOC39.IOFLOC$13.IOF2.LOC37.IOF2.LOC$12.IOF4.LO
C35.IOF4.LOC$11.IOF6.LOC33.IOF6.LOC$10.IOF8.LOC31.IOF8.LOC$9.IOF10.
LOC29.IOF10.LOC$8.IOF12.LOC27.IOF12.LOC$7.IOF14.LOC25.IOF14.LOC$6.I
OF16.LOC23.IOF16.LOC$5.IOF18.LOC21.IOF18.LOC$4.IOF20.LOC19.IOF16.A3.
LOC$3.IOF22.LOC17.IOF22.LOC$2.IOF.22A.LOC15.IOF24.LOC$.IOF26.LOC13.
IOF19.A6.LOC$IOF28.LF12.IOF28.LF$LF29.IC12.LF21.A7.IC$IC4.22A2.IOF12.
IC28.IOF$LOC26.IOF13.LOC20.A5.IOF$.LOC24.IOF15.LOC24.IOF$2.LOC22.IO
F17.LOC22.IOF$3.LOC20.IOF19.LOC20.IOF$4.LOC18.IOF21.LOC18.IOF$5.LOC
16.IOF23.LOC16.IOF$6.LOC14.IOF25.LOC14.IOF$7.LOC12.IOF27.LOC12.IOF$
8.LOC10.IOF29.LOC10.IOF$9.LOC8.IOF31.LOC8.IOF$10.LOC6.IOF33.LOC6.IO
F$11.LOC4.IOF35.LOC4.IOF$12.LOC2.IOF37.LOC2.IOF$13.LOCIOF39.LOCIOF$
14.LFLF41.LFLF!
Periods 944 and 281588.

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 19th, 2019, 3:46 pm

Just for fun:

Code: Select all

x = 59, y = 59, rule = PCA_1
17.IC5.IC7.IC5.IC$16.IOF5.LOC5.IOF5.LOC$16.LF2.B.B2.LF5.LF2.H.H2.LF
2$18.A5.D9.D5.A2$18.A5.D9.D5.A2$9.IC5.IC2.H.H2.IC5.IC2.B.B2.IC5.IC$
8.IOF5.LOC5.IOF5.LOC5.IOF5.LOC$8.LF2.H.H2.LF5.LF2.B.B2.LF5.LF2.H.H2.
LF2$10.D5.A9.A5.D9.D5.A2$10.D5.A9.A5.D9.D5.A2$.IC5.IC2.B.B2.IC5.IC2.
H.H2.IC5.IC2.B.B2.IC5.IC$IOF5.LOC5.IOF5.LOC5.IOF5.LOC5.IOF5.LOC$LF2.
B.B2.LF5.LF2.H.H2.LF5.LF2.B.B2.LF5.LF2.H.H2.LF2$2.A5.D9.D5.A9.A5.D9.
D5.A2$2.A5.D9.D5.A9.A5.D9.D5.A2$IC2.H.H2.IC5.IC2.B.B2.IC5.IC2.H.H2.
IC5.IC2.B.B2.IC$LOC5.IOF5.LOC5.IOF5.LOC5.IOF5.LOC5.IOF$.LF5.LF2.B.B
2.LF5.LF2.H.H2.LF5.LF2.B.B2.LF5.LF2$10.A5.D9.D5.A9.A5.D2$10.A5.D9.D
5.A9.A5.D2$.IC5.IC2.H.H2.IC5.IC2.B.B2.IC5.IC2.H.H2.IC5.IC$IOF5.LOC5.
IOF5.LOC5.IOF5.LOC5.IOF5.LOC$LF2.H.H2.LF5.LF2.B.B2.LF5.LF2.H.H2.LF5.
LF2.B.B2.LF2$2.D5.A9.A5.D9.D5.A9.A5.D2$2.D5.A9.A5.D9.D5.A9.A5.D2$IC
2.B.B2.IC5.IC2.H.H2.IC5.IC2.B.B2.IC5.IC2.H.H2.IC$LOC5.IOF5.LOC5.IOF
5.LOC5.IOF5.LOC5.IOF$.LF5.LF2.H.H2.LF5.LF2.B.B2.LF5.LF2.H.H2.LF5.LF
2$10.D5.A9.A5.D9.D5.A2$10.D5.A9.A5.D9.D5.A2$8.IC2.B.B2.IC5.IC2.H.H2.
IC5.IC2.B.B2.IC$8.LOC5.IOF5.LOC5.IOF5.LOC5.IOF$9.LF5.LF2.H.H2.LF5.L
F2.B.B2.LF5.LF2$18.D5.A9.A5.D2$18.D5.A9.A5.D2$16.IC2.B.B2.IC5.IC2.H
.H2.IC$16.LOC5.IOF5.LOC5.IOF$17.LF5.LF7.LF5.LF!
Choose a cross or part of a cross, isolate it, center it and run it. Do the same with other state 15 patterns.

Code: Select all

x = 78, y = 13, rule = PCA_1:T101,101
71.O$53.O17.O$37.O15.O17.O$23.O13.O15.O17.O$11.O11.O13.O15.O17.O$.O
9.O11.O13.O15.O17.O$3O6.5O6.7O6.9O6.11O6.13O$.O9.O11.O13.O15.O17.O$
11.O11.O13.O15.O17.O$23.O13.O15.O17.O$37.O15.O17.O$53.O17.O$71.O!
Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 19th, 2019, 8:05 pm

Colliding ships.

Each ship length 16, period 404.

Code: Select all

x = 101, y = 101, rule = PCA_1:T101,101
21$14.16B3.16H!
Each ship length 13, period 5050.

Code: Select all

x = 101, y = 101, rule = PCA_1:T101,101
21$14.13B6.13H!
One ship length 16 and the other ship length 15, period unknown.

Code: Select all

x = 101, y = 101, rule = PCA_1:T101,101
21$14.16B3.15H!
Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 20th, 2019, 3:14 pm

Juggling.

Code: Select all

x = 121, y = 23, rule = PCA_1
106.IC.B$106.LF.B$75.IC.B27.IC.B$75.LF.B27.LF.B$48.IC.B23.IC.B27.IC
.B$48.LF.B23.LF.B27.LF.B$23.IC.B21.IC.B23.IC.B27.IC.B$23.LF.B21.LF.
B23.LF.B27.LF.B$IC.B17.ICIC.B17.ICICIC.B17.ICICICIC.B19.ICICICICIC.
B$LF.B17.LFLF.B17.LFLFLF.B17.LFLFLFLF.B19.LFLFLFLFLF.B2$2D3.2A14.4D
3.4A12.6D3.6A10.8D3.8A10.10D3.10A2$3.H.IC19.H.ICIC19.H.ICICIC19.H.I
CICICIC21.H.ICICICICIC$3.H.LF19.H.LFLF19.H.LFLFLF19.H.LFLFLFLF21.H.
LFLFLFLFLF$26.H.IC21.H.IC23.H.IC27.H.IC$26.H.LF21.H.LF23.H.LF27.H.L
F$51.H.IC23.H.IC27.H.IC$51.H.LF23.H.LF27.H.LF$78.H.IC27.H.IC$78.H.L
F27.H.LF$109.H.IC$109.H.LF!
Oscillator periods are 40, 840, 5040, 55440 and 720720.

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 20th, 2019, 10:58 pm

More oscillators:

Code: Select all

x = 49, y = 47, rule = PCA_1
41.IC$26.IC13.MF$13.IC11.MF$2.IC9.MF$2.MF$IC2.KC4.IC4.KC4.IC6.KC4.I
C8.KC$LN2.LF4.LN4.LF4.LN6.LF4.LN8.LF$2.IG$2.LF9.IG$13.LF11.IG$26.LF
13.IG$41.LF6$41.IC$26.IC13.MF$13.IC11.MF$2.IC9.MF$2.MF$IC3.KC3.IC5.
KC3.IC7.KC3.IC9.KC$LN3.LF3.LN5.LF3.LN7.LF3.LN9.LF2$2.IG$2.LF9.IG$13.
LF11.IG$26.LF13.IG$41.LF5$41.IC$26.IC13.MF$13.IC11.MF$2.IC9.MF$2.MF
$IC2.KC4.IC4.KC4.IC6.KC4.IC8.KC$LN2.LF4.LN4.LF4.LN6.LF4.LN8.LF2$2.I
G$2.LF9.IG$13.LF11.IG$26.LF13.IG$41.LF!
Periods:

Code: Select all

06   10   14   18
08   12   16   20
24   60  112  180
Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 29th, 2019, 7:51 pm

A new version of the Square Cell implementation of Partitioned Cellular Automata called RPCA is here:

http://bprentice.webenet.net/PCA/RPCA.zip

This program can run a reversible PCA rule backwards or forwards using the 'V' key.

Using this program it was found that PCA_1 is reversible, but rules PCA_2, PCA_3, ... PCA_8 are not. This was surprising especially since this paper:

http://bprentice.webenet.net/PCA/16%20S ... tomata.pdf

states that PCA_5 is reversible.

The Java step code is:

Code: Select all

  private int rule[] = {0,4,8,3,1,10,6,14,2,9,5,7,12,11,13,15};

  public int step(int row, int column)
  {
    if (! reverse)
    {
      int S = squareCell.getNeighbor(row + 1, column    );
      int W = squareCell.getNeighbor(row    , column - 1);
      int N = squareCell.getNeighbor(row - 1, column    );
      int E = squareCell.getNeighbor(row,     column + 1);
      int state = 0;
      if ((S & 4) > 0)
        state = state | 1;
      if ((W & 8) > 0)
        state = state | 2;
      if ((N & 1) > 0)
        state = state | 4;
      if ((E & 2) > 0)
        state = state | 8;
      return rule[state];
    }
    else
    {
      int S = rule[squareCell.getNeighbor(row + 1, column    )];
      int W = rule[squareCell.getNeighbor(row    , column - 1)];
      int N = rule[squareCell.getNeighbor(row - 1, column    )];
      int E = rule[squareCell.getNeighbor(row,     column + 1)];
      int state = 0;
      if ((S & 4) > 0)
        state = state | 1;
      if ((W & 8) > 0)
        state = state | 2;
      if ((N & 1) > 0)
        state = state | 4;
      if ((E & 2) > 0)
        state = state | 8;
      return state;
    }
  }
 

where the rule array is the rule table for PCA_5.

Could someone here please look at the code to see if it is implemented correctly.

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 29th, 2019, 8:23 pm

Rule PCA_9:

Code: Select all

  /* Put your state count, neighbor count, and function here */
  final static int numStates = 16;
  final static int numNeighbors = 4;
  private int rule[] = {0,2,4,12,8,10,9,13,1,6,5,14,3,7,11,15};

  /* order for nine neighbors is nw, ne, sw, se, n, w, e, s, c */
  /* order for five neighbors is n, w, e, s, c */
  int f(int[] a)
  {
    int s = 0;
    if ((a[3] & 4) > 0)
      s = s | 1;
    if ((a[1] & 8) > 0)
      s = s | 2;
    if ((a[0] & 1) > 0)
      s = s | 4;
    if ((a[2] & 2) > 0)
      s = s | 8;
    return rule[s];
  }

Code: Select all

@RULE PCA_9
@TREE
num_states=16
num_neighbors=4
num_nodes=31
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
2 3 3 3 3 4 4 4 4 3 3 3 3 4 4 4 4
3 2 2 5 5 2 2 5 5 2 2 5 5 2 2 5 5
1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
2 7 7 7 7 8 8 8 8 7 7 7 7 8 8 8 8
1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
1 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
2 10 10 10 10 11 11 11 11 10 10 10 10 11 11 11 11
3 9 9 12 12 9 9 12 12 9 9 12 12 9 9 12 12
4 6 6 6 6 6 6 6 6 13 13 13 13 13 13 13 13
1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
2 15 15 15 15 16 16 16 16 15 15 15 15 16 16 16 16
1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 18 18 18 18 19 19 19 19 18 18 18 18 19 19 19 19
3 17 17 20 20 17 17 20 20 17 17 20 20 17 17 20 20
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
1 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
2 22 22 22 22 23 23 23 23 22 22 22 22 23 23 23 23
1 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
2 25 25 25 25 26 26 26 26 25 25 25 25 26 26 26 26
3 24 24 27 27 24 24 27 27 24 24 27 27 24 24 27 27
4 21 21 21 21 21 21 21 21 28 28 28 28 28 28 28 28
5 14 29 14 29 14 29 14 29 14 29 14 29 14 29 14 29
Three orthogonal ships with periods c/39, c/71 and 3c/2213:

Code: Select all

x = 4, y = 3, rule = PCA_9
3.B$A.B$.H.D!

Code: Select all

x = 2, y = 4, rule = PCA_9
L$.D$A$.H!

Code: Select all

x = 5, y = 4, rule = PCA_9
A2$H3.I$3.L!
Three diagonal ships with periods c/270, 4c/1050 and 3c/2466:

Code: Select all

x = 3, y = 4, rule = PCA_9
.A$D$.I$2.H!

Code: Select all

x = 5, y = 5, rule = PCA_9
2.B$3.L$H3.D2$2.D!

Code: Select all

x = 5, y = 3, rule = PCA_9
4.D$.B.C$A3.H!
A nice reflector demonstration:

Code: Select all

x = 298, y = 148, rule = PCA_9:T300,150
141.A$293.A$279.A$103.A85.A2$201.A$120.A$122.A167.A$18.A153.A$16.A85.
A62.A$278.A2$273.A$259.A4.A$22.A61.A29.A117.A$293.A$173.A114.A3$30.
A197.A$61.A$134.A24.A2$110.A36.A22.A48.A$30.A$264.A2$160.A2$229.A58.
A$61.A206.A$.A245.A3$15.A27.A$22.A71.B109.A$61.A29.A.B$48.A43.H.D74.
A$50.A150.A$246.A$224.A38.A$253.A$25.A231.A7.A2$9.A286.A$94.A118.A3$
55.A148.A$63.A.A207.A2$186.A33.A$92.A153.A$51.A32.A134.A73.A3$12.A19.
A254.A$34.A187.A2$103.A2$57.A2$169.A35.A23.A$147.A$21.A171.A$14.A$233.
A2$274.A2$215.A81.A$70.A68.A$68.A149.A2$8.A64.A165.A31.A14.A$277.A2.
A$177.A$121.A134.A5.A$230.A$53.A111.A$168.A78.A2$191.A42.A$29.A$272.
A2$248.A28.A$58.A$192.A76.A$75.A$156.A$197.A$170.A13.A$5.A$44.A28.A
69.L$144.D74.A$132.A10.A$144.H28.A$75.A21.A$224.A22.A45.A$282.A$14.
A2$221.A35.A$229.A$71.A195.A$214.A72.A$257.A$192.A$29.A93.A$136.A42.
A3$A79.A79.A$59.A120.A.A10.A2$262.A$79.A125.A$184.A92.A$98.A24.A$75.
A$185.A$64.A133.A2$195.A25.A$116.A2$10.A158.A2$139.A2$26.A$100.A$73.
A$129.A$16.A178.A5.A82.A$130.A58.A$57.A28.A69.A135.A$51.A44.A143.A21.
A2$43.A58.A$62.A$166.A2$280.A$142.A62.A$50.A150.A!
Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 29th, 2019, 9:04 pm

Rule PCA_10:

Code: Select all

  /* Put your state count, neighbor count, and function here */
  final static int numStates = 16;
  final static int numNeighbors = 4;
  private int rule[] = {0,1,2,3,4,5,6,13,8,9,10,14,12,7,11,15};

  /* order for nine neighbors is nw, ne, sw, se, n, w, e, s, c */
  /* order for five neighbors is n, w, e, s, c */
  int f(int[] a)
  {
    int s = 0;
    if ((a[3] & 4) > 0)
      s = s | 1;
    if ((a[1] & 8) > 0)
      s = s | 2;
    if ((a[0] & 1) > 0)
      s = s | 4;
    if ((a[2] & 2) > 0)
      s = s | 8;
    return rule[s];
  }

Code: Select all

@RULE PCA_10
@TREE
num_states=16
num_neighbors=4
num_nodes=31
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
2 3 3 3 3 4 4 4 4 3 3 3 3 4 4 4 4
3 2 2 5 5 2 2 5 5 2 2 5 5 2 2 5 5
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
2 7 7 7 7 8 8 8 8 7 7 7 7 8 8 8 8
1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
1 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
2 10 10 10 10 11 11 11 11 10 10 10 10 11 11 11 11
3 9 9 12 12 9 9 12 12 9 9 12 12 9 9 12 12
4 6 6 6 6 6 6 6 6 13 13 13 13 13 13 13 13
1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
2 15 15 15 15 16 16 16 16 15 15 15 15 16 16 16 16
1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 18 18 18 18 19 19 19 19 18 18 18 18 19 19 19 19
3 17 17 20 20 17 17 20 20 17 17 20 20 17 17 20 20
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
1 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
2 22 22 22 22 23 23 23 23 22 22 22 22 23 23 23 23
1 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
2 25 25 25 25 26 26 26 26 25 25 25 25 26 26 26 26
3 24 24 27 27 24 24 27 27 24 24 27 27 24 24 27 27
4 21 21 21 21 21 21 21 21 28 28 28 28 28 28 28 28
5 14 29 14 29 14 29 14 29 14 29 14 29 14 29 14 29
Like rule PCA_1, this rule is reversible. Many interesting oscillators can be constructed. Some examples with periods 40, 200, 1291520, 73010168 and 269532480:

Code: Select all

x = 4, y = 3, rule = PCA_10
4G$GKMN$4G!

Code: Select all

x = 4, y = 4, rule = PCA_10
GNGN$4G$GKMN$4G!

Code: Select all

x = 4, y = 5, rule = PCA_10
GNGN$4G$GKMN$4G$KMKM!

Code: Select all

x = 5, y = 5, rule = PCA_10
GNGNM$4GM$GKMNM$4GM$KMK2M!

Code: Select all

x = 5, y = 5, rule = PCA_10
GNGNK$5G$GKMNG$5G$KMKMG!
Are there any oscillators with odd periods?

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 29th, 2019, 10:32 pm

Two more oscillators:

Code: Select all

x = 19, y = 11, rule = PCA_10
19M$M17OM$M17OM$M17OM$M17OM$M8OG8OM$M17OM$M17OM$M17OM$M17OM$19M!

Code: Select all

x = 64, y = 64, rule = PCA_10
64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O
$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O
$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O
$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O$64O!
Better with these colors:

Code: Select all

@RULE PCA_10
@TREE
num_states=16
num_neighbors=4
num_nodes=31
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
2 3 3 3 3 4 4 4 4 3 3 3 3 4 4 4 4
3 2 2 5 5 2 2 5 5 2 2 5 5 2 2 5 5
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
2 7 7 7 7 8 8 8 8 7 7 7 7 8 8 8 8
1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
1 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
2 10 10 10 10 11 11 11 11 10 10 10 10 11 11 11 11
3 9 9 12 12 9 9 12 12 9 9 12 12 9 9 12 12
4 6 6 6 6 6 6 6 6 13 13 13 13 13 13 13 13
1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
2 15 15 15 15 16 16 16 16 15 15 15 15 16 16 16 16
1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 18 18 18 18 19 19 19 19 18 18 18 18 19 19 19 19
3 17 17 20 20 17 17 20 20 17 17 20 20 17 17 20 20
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
1 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
2 22 22 22 22 23 23 23 23 22 22 22 22 23 23 23 23
1 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
2 25 25 25 25 26 26 26 26 25 25 25 25 26 26 26 26
3 24 24 27 27 24 24 27 27 24 24 27 27 24 24 27 27
4 21 21 21 21 21 21 21 21 28 28 28 28 28 28 28 28
5 14 29 14 29 14 29 14 29 14 29 14 29 14 29 14 29
@COLORS
0    0   0   0
1  255   0   0
2    0 255   0
3    0   0 255
4  255 255   0
5    0 255 255
6  255   0 255
7   92  36 110
8    0  99 140
9  176 196 222
10 115  61  26
11 189 183 107
12 205 133  63
13  47  79  79
14 255 128   0
15 255 255 255
Brian Prentice

wildmyron
Posts: 1544
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Partitioned Cellular Automata

Post by wildmyron » September 30th, 2019, 5:36 am

bprentice wrote:A new version of the Square Cell implementation of Partitioned Cellular Automata called RPCA is here:

http://bprentice.webenet.net/PCA/RPCA.zip

This program can run a reversible PCA rule backwards or forwards using the 'V' key.

Using this program it was found that PCA_1 is reversible, but rules PCA_2, PCA_3, ... PCA_8 are not. This was surprising especially since this paper:

http://bprentice.webenet.net/PCA/16%20S ... tomata.pdf

states that PCA_5 is reversible.

The Java step code is:

Code: Select all

  private int rule[] = {0,4,8,3,1,10,6,14,2,9,5,7,12,11,13,15};

  public int step(int row, int column)
  {
    if (! reverse)
    {
      int S = squareCell.getNeighbor(row + 1, column    );
      int W = squareCell.getNeighbor(row    , column - 1);
      int N = squareCell.getNeighbor(row - 1, column    );
      int E = squareCell.getNeighbor(row,     column + 1);
      int state = 0;
      if ((S & 4) > 0)
        state = state | 1;
      if ((W & 8) > 0)
        state = state | 2;
      if ((N & 1) > 0)
        state = state | 4;
      if ((E & 2) > 0)
        state = state | 8;
      return rule[state];
    }
    else
    {
      int S = rule[squareCell.getNeighbor(row + 1, column    )];
      int W = rule[squareCell.getNeighbor(row    , column - 1)];
      int N = rule[squareCell.getNeighbor(row - 1, column    )];
      int E = rule[squareCell.getNeighbor(row,     column + 1)];
      int state = 0;
      if ((S & 4) > 0)
        state = state | 1;
      if ((W & 8) > 0)
        state = state | 2;
      if ((N & 1) > 0)
        state = state | 4;
      if ((E & 2) > 0)
        state = state | 8;
      return state;
    }
  }
 

where the rule array is the rule table for PCA_5.

Could someone here please look at the code to see if it is implemented correctly.

Brian Prentice
Here is a version of the Golly rule table with some icons that correspond to diagrams in the referenced paper

Code: Select all

@RULE PCA_5
@TREE
num_states=16
num_neighbors=4
num_nodes=31
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
2 3 3 3 3 4 4 4 4 3 3 3 3 4 4 4 4
3 2 2 5 5 2 2 5 5 2 2 5 5 2 2 5 5
1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
2 7 7 7 7 8 8 8 8 7 7 7 7 8 8 8 8
1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 10 10 10 10 11 11 11 11 10 10 10 10 11 11 11 11
3 9 9 12 12 9 9 12 12 9 9 12 12 9 9 12 12
4 6 6 6 6 6 6 6 6 13 13 13 13 13 13 13 13
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
2 15 15 15 15 16 16 16 16 15 15 15 15 16 16 16 16
1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
1 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
2 18 18 18 18 19 19 19 19 18 18 18 18 19 19 19 19
3 17 17 20 20 17 17 20 20 17 17 20 20 17 17 20 20
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
1 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
2 22 22 22 22 23 23 23 23 22 22 22 22 23 23 23 23
1 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
2 25 25 25 25 26 26 26 26 25 25 25 25 26 26 26 26
3 24 24 27 27 24 24 27 27 24 24 27 27 24 24 27 27
4 21 21 21 21 21 21 21 21 28 28 28 28 28 28 28 28
5 14 29 14 29 14 29 14 29 14 29 14 29 14 29 14 29

@ICONS

XPM
/* width height num_colors chars_per_pixel */
"31 465 2 1"
/* colors */
". c #000000"
"B c #FFFFFF"
/* icon for state 1 */
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"...............B..............."
"..............BBB.............."
".............BBBBB............."
"............BBBBBBB............"
"...........BBBBBBBBB..........."
"..........BBBBBBBBBBB.........."
".........BBBBBBBBBBBBB........."
"........BBBBBBBBBBBBBBB........"
".......BBBBBBBBBBBBBBBBB......."
"......BBBBBBBBBBBBBBBBBBB......"
".....BBBBBBBBBBBBBBBBBBBBB....."
"....BBBBBBBBBBBBBBBBBBBBBBB...."
"...BBBBBBBBBBBBBBBBBBBBBBBBB..."
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
/* icon for state 2 */
"..............................."
"B.............................."
"BB............................."
"BBB............................"
"BBBB..........................."
"BBBBB.........................."
"BBBBBB........................."
"BBBBBBB........................"
"BBBBBBBB......................."
"BBBBBBBBB......................"
"BBBBBBBBBB....................."
"BBBBBBBBBBB...................."
"BBBBBBBBBBBB..................."
"BBBBBBBBBBBBB.................."
"BBBBBBBBBBBBBB................."
"BBBBBBBBBBBBBBB................"
"BBBBBBBBBBBBBB................."
"BBBBBBBBBBBBB.................."
"BBBBBBBBBBBB..................."
"BBBBBBBBBBB...................."
"BBBBBBBBBB....................."
"BBBBBBBBB......................"
"BBBBBBBB......................."
"BBBBBBB........................"
"BBBBBB........................."
"BBBBB.........................."
"BBBB..........................."
"BBB............................"
"BB............................."
"B.............................."
"..............................."
/* icon for state 3 */
"..............................."
"B.............................."
"BB............................."
"BBB............................"
"BBBB..........................."
"BBBBB.........................."
"BBBBBB........................."
"BBBBBBB........................"
"BBBBBBBB......................."
"BBBBBBBBB......................"
"BBBBBBBBBB....................."
"BBBBBBBBBBB...................."
"BBBBBBBBBBBB..................."
"BBBBBBBBBBBBB.................."
"BBBBBBBBBBBBBB................."
"BBBBBBBBBBBBBBB................"
"BBBBBBBBBBBBBB.B..............."
"BBBBBBBBBBBBB.BBB.............."
"BBBBBBBBBBBB.BBBBB............."
"BBBBBBBBBBB.BBBBBBB............"
"BBBBBBBBBB.BBBBBBBBB..........."
"BBBBBBBBB.BBBBBBBBBBB.........."
"BBBBBBBB.BBBBBBBBBBBBB........."
"BBBBBBB.BBBBBBBBBBBBBBB........"
"BBBBBB.BBBBBBBBBBBBBBBBB......."
"BBBBB.BBBBBBBBBBBBBBBBBBB......"
"BBBB.BBBBBBBBBBBBBBBBBBBBB....."
"BBB.BBBBBBBBBBBBBBBBBBBBBBB...."
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB..."
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
/* icon for state 4 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
"...BBBBBBBBBBBBBBBBBBBBBBBBB..."
"....BBBBBBBBBBBBBBBBBBBBBBB...."
".....BBBBBBBBBBBBBBBBBBBBB....."
"......BBBBBBBBBBBBBBBBBBB......"
".......BBBBBBBBBBBBBBBBB......."
"........BBBBBBBBBBBBBBB........"
".........BBBBBBBBBBBBB........."
"..........BBBBBBBBBBB.........."
"...........BBBBBBBBB..........."
"............BBBBBBB............"
".............BBBBB............."
"..............BBB.............."
"...............B..............."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
"..............................."
/* icon for state 5 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
"...BBBBBBBBBBBBBBBBBBBBBBBBB..."
"....BBBBBBBBBBBBBBBBBBBBBBB...."
".....BBBBBBBBBBBBBBBBBBBBB....."
"......BBBBBBBBBBBBBBBBBBB......"
".......BBBBBBBBBBBBBBBBB......."
"........BBBBBBBBBBBBBBB........"
".........BBBBBBBBBBBBB........."
"..........BBBBBBBBBBB.........."
"...........BBBBBBBBB..........."
"............BBBBBBB............"
".............BBBBB............."
"..............BBB.............."
"...............B..............."
"..............................."
"...............B..............."
"..............BBB.............."
".............BBBBB............."
"............BBBBBBB............"
"...........BBBBBBBBB..........."
"..........BBBBBBBBBBB.........."
".........BBBBBBBBBBBBB........."
"........BBBBBBBBBBBBBBB........"
".......BBBBBBBBBBBBBBBBB......."
"......BBBBBBBBBBBBBBBBBBB......"
".....BBBBBBBBBBBBBBBBBBBBB....."
"....BBBBBBBBBBBBBBBBBBBBBBB...."
"...BBBBBBBBBBBBBBBBBBBBBBBBB..."
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
/* icon for state 6 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB..."
"BBB.BBBBBBBBBBBBBBBBBBBBBBB...."
"BBBB.BBBBBBBBBBBBBBBBBBBBB....."
"BBBBB.BBBBBBBBBBBBBBBBBBB......"
"BBBBBB.BBBBBBBBBBBBBBBBB......."
"BBBBBBB.BBBBBBBBBBBBBBB........"
"BBBBBBBB.BBBBBBBBBBBBB........."
"BBBBBBBBB.BBBBBBBBBBB.........."
"BBBBBBBBBB.BBBBBBBBB..........."
"BBBBBBBBBBB.BBBBBBB............"
"BBBBBBBBBBBB.BBBBB............."
"BBBBBBBBBBBBB.BBB.............."
"BBBBBBBBBBBBBB.B..............."
"BBBBBBBBBBBBBBB................"
"BBBBBBBBBBBBBB................."
"BBBBBBBBBBBBB.................."
"BBBBBBBBBBBB..................."
"BBBBBBBBBBB...................."
"BBBBBBBBBB....................."
"BBBBBBBBB......................"
"BBBBBBBB......................."
"BBBBBBB........................"
"BBBBBB........................."
"BBBBB.........................."
"BBBB..........................."
"BBB............................"
"BB............................."
"B.............................."
"..............................."
/* icon for state 7 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB..."
"BBB.BBBBBBBBBBBBBBBBBBBBBBB...."
"BBBB.BBBBBBBBBBBBBBBBBBBBB....."
"BBBBB.BBBBBBBBBBBBBBBBBBB......"
"BBBBBB.BBBBBBBBBBBBBBBBB......."
"BBBBBBB.BBBBBBBBBBBBBBB........"
"BBBBBBBB.BBBBBBBBBBBBB........."
"BBBBBBBBB.BBBBBBBBBBB.........."
"BBBBBBBBBB.BBBBBBBBB..........."
"BBBBBBBBBBB.BBBBBBB............"
"BBBBBBBBBBBB.BBBBB............."
"BBBBBBBBBBBBB.BBB.............."
"BBBBBBBBBBBBBB.B..............."
"BBBBBBBBBBBBBBB................"
"BBBBBBBBBBBBBB.B..............."
"BBBBBBBBBBBBB.BBB.............."
"BBBBBBBBBBBB.BBBBB............."
"BBBBBBBBBBB.BBBBBBB............"
"BBBBBBBBBB.BBBBBBBBB..........."
"BBBBBBBBB.BBBBBBBBBBB.........."
"BBBBBBBB.BBBBBBBBBBBBB........."
"BBBBBBB.BBBBBBBBBBBBBBB........"
"BBBBBB.BBBBBBBBBBBBBBBBB......."
"BBBBB.BBBBBBBBBBBBBBBBBBB......"
"BBBB.BBBBBBBBBBBBBBBBBBBBB....."
"BBB.BBBBBBBBBBBBBBBBBBBBBBB...."
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB..."
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.."
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
/* icon for state 8 */
"..............................."
"..............................B"
".............................BB"
"............................BBB"
"...........................BBBB"
"..........................BBBBB"
".........................BBBBBB"
"........................BBBBBBB"
".......................BBBBBBBB"
"......................BBBBBBBBB"
".....................BBBBBBBBBB"
"....................BBBBBBBBBBB"
"...................BBBBBBBBBBBB"
"..................BBBBBBBBBBBBB"
".................BBBBBBBBBBBBBB"
"................BBBBBBBBBBBBBBB"
".................BBBBBBBBBBBBBB"
"..................BBBBBBBBBBBBB"
"...................BBBBBBBBBBBB"
"....................BBBBBBBBBBB"
".....................BBBBBBBBBB"
"......................BBBBBBBBB"
".......................BBBBBBBB"
"........................BBBBBBB"
".........................BBBBBB"
"..........................BBBBB"
"...........................BBBB"
"............................BBB"
".............................BB"
"..............................B"
"..............................."
/* icon for state 9 */
"..............................."
"..............................B"
".............................BB"
"............................BBB"
"...........................BBBB"
"..........................BBBBB"
".........................BBBBBB"
"........................BBBBBBB"
".......................BBBBBBBB"
"......................BBBBBBBBB"
".....................BBBBBBBBBB"
"....................BBBBBBBBBBB"
"...................BBBBBBBBBBBB"
"..................BBBBBBBBBBBBB"
".................BBBBBBBBBBBBBB"
"................BBBBBBBBBBBBBBB"
"...............B.BBBBBBBBBBBBBB"
"..............BBB.BBBBBBBBBBBBB"
".............BBBBB.BBBBBBBBBBBB"
"............BBBBBBB.BBBBBBBBBBB"
"...........BBBBBBBBB.BBBBBBBBBB"
"..........BBBBBBBBBBB.BBBBBBBBB"
".........BBBBBBBBBBBBB.BBBBBBBB"
"........BBBBBBBBBBBBBBB.BBBBBBB"
".......BBBBBBBBBBBBBBBBB.BBBBBB"
"......BBBBBBBBBBBBBBBBBBB.BBBBB"
".....BBBBBBBBBBBBBBBBBBBBB.BBBB"
"....BBBBBBBBBBBBBBBBBBBBBBB.BBB"
"...BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
/* icon for state 10 */
"..............................."
"B.............................B"
"BB...........................BB"
"BBB.........................BBB"
"BBBB.......................BBBB"
"BBBBB.....................BBBBB"
"BBBBBB...................BBBBBB"
"BBBBBBB.................BBBBBBB"
"BBBBBBBB...............BBBBBBBB"
"BBBBBBBBB.............BBBBBBBBB"
"BBBBBBBBBB...........BBBBBBBBBB"
"BBBBBBBBBBB.........BBBBBBBBBBB"
"BBBBBBBBBBBB.......BBBBBBBBBBBB"
"BBBBBBBBBBBBB.....BBBBBBBBBBBBB"
"BBBBBBBBBBBBBB...BBBBBBBBBBBBBB"
"BBBBBBBBBBBBBBB.BBBBBBBBBBBBBBB"
"BBBBBBBBBBBBBB...BBBBBBBBBBBBBB"
"BBBBBBBBBBBBB.....BBBBBBBBBBBBB"
"BBBBBBBBBBBB.......BBBBBBBBBBBB"
"BBBBBBBBBBB.........BBBBBBBBBBB"
"BBBBBBBBBB...........BBBBBBBBBB"
"BBBBBBBBB.............BBBBBBBBB"
"BBBBBBBB...............BBBBBBBB"
"BBBBBBB.................BBBBBBB"
"BBBBBB...................BBBBBB"
"BBBBB.....................BBBBB"
"BBBB.......................BBBB"
"BBB.........................BBB"
"BB...........................BB"
"B.............................B"
"..............................."
/* icon for state 11 */
"..............................."
"B.............................B"
"BB...........................BB"
"BBB.........................BBB"
"BBBB.......................BBBB"
"BBBBB.....................BBBBB"
"BBBBBB...................BBBBBB"
"BBBBBBB.................BBBBBBB"
"BBBBBBBB...............BBBBBBBB"
"BBBBBBBBB.............BBBBBBBBB"
"BBBBBBBBBB...........BBBBBBBBBB"
"BBBBBBBBBBB.........BBBBBBBBBBB"
"BBBBBBBBBBBB.......BBBBBBBBBBBB"
"BBBBBBBBBBBBB.....BBBBBBBBBBBBB"
"BBBBBBBBBBBBBB...BBBBBBBBBBBBBB"
"BBBBBBBBBBBBBBB.BBBBBBBBBBBBBBB"
"BBBBBBBBBBBBBB.B.BBBBBBBBBBBBBB"
"BBBBBBBBBBBBB.BBB.BBBBBBBBBBBBB"
"BBBBBBBBBBBB.BBBBB.BBBBBBBBBBBB"
"BBBBBBBBBBB.BBBBBBB.BBBBBBBBBBB"
"BBBBBBBBBB.BBBBBBBBB.BBBBBBBBBB"
"BBBBBBBBB.BBBBBBBBBBB.BBBBBBBBB"
"BBBBBBBB.BBBBBBBBBBBBB.BBBBBBBB"
"BBBBBBB.BBBBBBBBBBBBBBB.BBBBBBB"
"BBBBBB.BBBBBBBBBBBBBBBBB.BBBBBB"
"BBBBB.BBBBBBBBBBBBBBBBBBB.BBBBB"
"BBBB.BBBBBBBBBBBBBBBBBBBBB.BBBB"
"BBB.BBBBBBBBBBBBBBBBBBBBBBB.BBB"
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
/* icon for state 12 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
"...BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"....BBBBBBBBBBBBBBBBBBBBBBB.BBB"
".....BBBBBBBBBBBBBBBBBBBBB.BBBB"
"......BBBBBBBBBBBBBBBBBBB.BBBBB"
".......BBBBBBBBBBBBBBBBB.BBBBBB"
"........BBBBBBBBBBBBBBB.BBBBBBB"
".........BBBBBBBBBBBBB.BBBBBBBB"
"..........BBBBBBBBBBB.BBBBBBBBB"
"...........BBBBBBBBB.BBBBBBBBBB"
"............BBBBBBB.BBBBBBBBBBB"
".............BBBBB.BBBBBBBBBBBB"
"..............BBB.BBBBBBBBBBBBB"
"...............B.BBBBBBBBBBBBBB"
"................BBBBBBBBBBBBBBB"
".................BBBBBBBBBBBBBB"
"..................BBBBBBBBBBBBB"
"...................BBBBBBBBBBBB"
"....................BBBBBBBBBBB"
".....................BBBBBBBBBB"
"......................BBBBBBBBB"
".......................BBBBBBBB"
"........................BBBBBBB"
".........................BBBBBB"
"..........................BBBBB"
"...........................BBBB"
"............................BBB"
".............................BB"
"..............................B"
"..............................."
/* icon for state 13 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
"...BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"....BBBBBBBBBBBBBBBBBBBBBBB.BBB"
".....BBBBBBBBBBBBBBBBBBBBB.BBBB"
"......BBBBBBBBBBBBBBBBBBB.BBBBB"
".......BBBBBBBBBBBBBBBBB.BBBBBB"
"........BBBBBBBBBBBBBBB.BBBBBBB"
".........BBBBBBBBBBBBB.BBBBBBBB"
"..........BBBBBBBBBBB.BBBBBBBBB"
"...........BBBBBBBBB.BBBBBBBBBB"
"............BBBBBBB.BBBBBBBBBBB"
".............BBBBB.BBBBBBBBBBBB"
"..............BBB.BBBBBBBBBBBBB"
"...............B.BBBBBBBBBBBBBB"
"................BBBBBBBBBBBBBBB"
"...............B.BBBBBBBBBBBBBB"
"..............BBB.BBBBBBBBBBBBB"
".............BBBBB.BBBBBBBBBBBB"
"............BBBBBBB.BBBBBBBBBBB"
"...........BBBBBBBBB.BBBBBBBBBB"
"..........BBBBBBBBBBB.BBBBBBBBB"
".........BBBBBBBBBBBBB.BBBBBBBB"
"........BBBBBBBBBBBBBBB.BBBBBBB"
".......BBBBBBBBBBBBBBBBB.BBBBBB"
"......BBBBBBBBBBBBBBBBBBB.BBBBB"
".....BBBBBBBBBBBBBBBBBBBBB.BBBB"
"....BBBBBBBBBBBBBBBBBBBBBBB.BBB"
"...BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"..BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
/* icon for state 14 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"BBB.BBBBBBBBBBBBBBBBBBBBBBB.BBB"
"BBBB.BBBBBBBBBBBBBBBBBBBBB.BBBB"
"BBBBB.BBBBBBBBBBBBBBBBBBB.BBBBB"
"BBBBBB.BBBBBBBBBBBBBBBBB.BBBBBB"
"BBBBBBB.BBBBBBBBBBBBBBB.BBBBBBB"
"BBBBBBBB.BBBBBBBBBBBBB.BBBBBBBB"
"BBBBBBBBB.BBBBBBBBBBB.BBBBBBBBB"
"BBBBBBBBBB.BBBBBBBBB.BBBBBBBBBB"
"BBBBBBBBBBB.BBBBBBB.BBBBBBBBBBB"
"BBBBBBBBBBBB.BBBBB.BBBBBBBBBBBB"
"BBBBBBBBBBBBB.BBB.BBBBBBBBBBBBB"
"BBBBBBBBBBBBBB.B.BBBBBBBBBBBBBB"
"BBBBBBBBBBBBBBB.BBBBBBBBBBBBBBB"
"BBBBBBBBBBBBBB...BBBBBBBBBBBBBB"
"BBBBBBBBBBBBB.....BBBBBBBBBBBBB"
"BBBBBBBBBBBB.......BBBBBBBBBBBB"
"BBBBBBBBBBB.........BBBBBBBBBBB"
"BBBBBBBBBB...........BBBBBBBBBB"
"BBBBBBBBB.............BBBBBBBBB"
"BBBBBBBB...............BBBBBBBB"
"BBBBBBB.................BBBBBBB"
"BBBBBB...................BBBBBB"
"BBBBB.....................BBBBB"
"BBBB.......................BBBB"
"BBB.........................BBB"
"BB...........................BB"
"B.............................B"
"..............................."
/* icon for state 15 */
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"BBB.BBBBBBBBBBBBBBBBBBBBBBB.BBB"
"BBBB.BBBBBBBBBBBBBBBBBBBBB.BBBB"
"BBBBB.BBBBBBBBBBBBBBBBBBB.BBBBB"
"BBBBBB.BBBBBBBBBBBBBBBBB.BBBBBB"
"BBBBBBB.BBBBBBBBBBBBBBB.BBBBBBB"
"BBBBBBBB.BBBBBBBBBBBBB.BBBBBBBB"
"BBBBBBBBB.BBBBBBBBBBB.BBBBBBBBB"
"BBBBBBBBBB.BBBBBBBBB.BBBBBBBBBB"
"BBBBBBBBBBB.BBBBBBB.BBBBBBBBBBB"
"BBBBBBBBBBBB.BBBBB.BBBBBBBBBBBB"
"BBBBBBBBBBBBB.BBB.BBBBBBBBBBBBB"
"BBBBBBBBBBBBBB.B.BBBBBBBBBBBBBB"
"BBBBBBBBBBBBBBB.BBBBBBBBBBBBBBB"
"BBBBBBBBBBBBBB.B.BBBBBBBBBBBBBB"
"BBBBBBBBBBBBB.BBB.BBBBBBBBBBBBB"
"BBBBBBBBBBBB.BBBBB.BBBBBBBBBBBB"
"BBBBBBBBBBB.BBBBBBB.BBBBBBBBBBB"
"BBBBBBBBBB.BBBBBBBBB.BBBBBBBBBB"
"BBBBBBBBB.BBBBBBBBBBB.BBBBBBBBB"
"BBBBBBBB.BBBBBBBBBBBBB.BBBBBBBB"
"BBBBBBB.BBBBBBBBBBBBBBB.BBBBBBB"
"BBBBBB.BBBBBBBBBBBBBBBBB.BBBBBB"
"BBBBB.BBBBBBBBBBBBBBBBBBB.BBBBB"
"BBBB.BBBBBBBBBBBBBBBBBBBBB.BBBB"
"BBB.BBBBBBBBBBBBBBBBBBBBBBB.BBB"
"BB.BBBBBBBBBBBBBBBBBBBBBBBBB.BB"
"B.BBBBBBBBBBBBBBBBBBBBBBBBBBB.B"
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBB."

XPM
/* width height num_colors chars_per_pixel */
"15 225 2 1"
/* colors */
". c #000000"
"B c #FFFFFF"
/* icon for state 1 */
"..............."
"..............."
"..............."
"..............."
"..............."
"..............."
"..............."
"..............."
".......B......."
"......BBB......"
".....BBBBB....."
"....BBBBBBB...."
"...BBBBBBBBB..."
"..BBBBBBBBBBB.."
".BBBBBBBBBBBBB."
/* icon for state 2 */
"..............."
"B.............."
"BB............."
"BBB............"
"BBBB..........."
"BBBBB.........."
"BBBBBB........."
"BBBBBBB........"
"BBBBBB........."
"BBBBB.........."
"BBBB..........."
"BBB............"
"BB............."
"B.............."
"..............."
/* icon for state 3 */
"..............."
"B.............."
"BB............."
"BBB............"
"BBBB..........."
"BBBBB.........."
"BBBBBB........."
"BBBBBBB........"
"BBBBBB.B......."
"BBBBB.BBB......"
"BBBB.BBBBB....."
"BBB.BBBBBBB...."
"BB.BBBBBBBBB..."
"B.BBBBBBBBBBB.."
".BBBBBBBBBBBBB."
/* icon for state 4 */
".BBBBBBBBBBBBB."
"..BBBBBBBBBBB.."
"...BBBBBBBBB..."
"....BBBBBBB...."
".....BBBBB....."
"......BBB......"
".......B......."
"..............."
"..............."
"..............."
"..............."
"..............."
"..............."
"..............."
"..............."
/* icon for state 5 */
".BBBBBBBBBBBBB."
"..BBBBBBBBBBB.."
"...BBBBBBBBB..."
"....BBBBBBB...."
".....BBBBB....."
"......BBB......"
".......B......."
"..............."
".......B......."
"......BBB......"
".....BBBBB....."
"....BBBBBBB...."
"...BBBBBBBBB..."
"..BBBBBBBBBBB.."
".BBBBBBBBBBBBB."
/* icon for state 6 */
".BBBBBBBBBBBBB."
"B.BBBBBBBBBBB.."
"BB.BBBBBBBBB..."
"BBB.BBBBBBB...."
"BBBB.BBBBB....."
"BBBBB.BBB......"
"BBBBBB.B......."
"BBBBBBB........"
"BBBBBB........."
"BBBBB.........."
"BBBB..........."
"BBB............"
"BB............."
"B.............."
"..............."
/* icon for state 7 */
".BBBBBBBBBBBBB."
"B.BBBBBBBBBBB.."
"BB.BBBBBBBBB..."
"BBB.BBBBBBB...."
"BBBB.BBBBB....."
"BBBBB.BBB......"
"BBBBBB.B......."
"BBBBBBB........"
"BBBBBB.B......."
"BBBBB.BBB......"
"BBBB.BBBBB....."
"BBB.BBBBBBB...."
"BB.BBBBBBBBB..."
"B.BBBBBBBBBBB.."
".BBBBBBBBBBBBB."
/* icon for state 8 */
"..............."
"..............B"
".............BB"
"............BBB"
"...........BBBB"
"..........BBBBB"
".........BBBBBB"
"........BBBBBBB"
".........BBBBBB"
"..........BBBBB"
"...........BBBB"
"............BBB"
".............BB"
"..............B"
"..............."
/* icon for state 9 */
"..............."
"..............B"
".............BB"
"............BBB"
"...........BBBB"
"..........BBBBB"
".........BBBBBB"
"........BBBBBBB"
".......B.BBBBBB"
"......BBB.BBBBB"
".....BBBBB.BBBB"
"....BBBBBBB.BBB"
"...BBBBBBBBB.BB"
"..BBBBBBBBBBB.B"
".BBBBBBBBBBBBB."
/* icon for state 10 */
"..............."
"B.............B"
"BB...........BB"
"BBB.........BBB"
"BBBB.......BBBB"
"BBBBB.....BBBBB"
"BBBBBB...BBBBBB"
"BBBBBBB.BBBBBBB"
"BBBBBB...BBBBBB"
"BBBBB.....BBBBB"
"BBBB.......BBBB"
"BBB.........BBB"
"BB...........BB"
"B.............B"
"..............."
/* icon for state 11 */
"..............."
"B.............B"
"BB...........BB"
"BBB.........BBB"
"BBBB.......BBBB"
"BBBBB.....BBBBB"
"BBBBBB...BBBBBB"
"BBBBBBB.BBBBBBB"
"BBBBBB.B.BBBBBB"
"BBBBB.BBB.BBBBB"
"BBBB.BBBBB.BBBB"
"BBB.BBBBBBB.BBB"
"BB.BBBBBBBBB.BB"
"B.BBBBBBBBBBB.B"
".BBBBBBBBBBBBB."
/* icon for state 12 */
".BBBBBBBBBBBBB."
"..BBBBBBBBBBB.B"
"...BBBBBBBBB.BB"
"....BBBBBBB.BBB"
".....BBBBB.BBBB"
"......BBB.BBBBB"
".......B.BBBBBB"
"........BBBBBBB"
".........BBBBBB"
"..........BBBBB"
"...........BBBB"
"............BBB"
".............BB"
"..............B"
"..............."
/* icon for state 13 */
".BBBBBBBBBBBBB."
"..BBBBBBBBBBB.B"
"...BBBBBBBBB.BB"
"....BBBBBBB.BBB"
".....BBBBB.BBBB"
"......BBB.BBBBB"
".......B.BBBBBB"
"........BBBBBBB"
".......B.BBBBBB"
"......BBB.BBBBB"
".....BBBBB.BBBB"
"....BBBBBBB.BBB"
"...BBBBBBBBB.BB"
"..BBBBBBBBBBB.B"
".BBBBBBBBBBBBB."
/* icon for state 14 */
".BBBBBBBBBBBBB."
"B.BBBBBBBBBBB.B"
"BB.BBBBBBBBB.BB"
"BBB.BBBBBBB.BBB"
"BBBB.BBBBB.BBBB"
"BBBBB.BBB.BBBBB"
"BBBBBB.B.BBBBBB"
"BBBBBBB.BBBBBBB"
"BBBBBB...BBBBBB"
"BBBBB.....BBBBB"
"BBBB.......BBBB"
"BBB.........BBB"
"BB...........BB"
"B.............B"
"..............."
/* icon for state 15 */
".BBBBBBBBBBBBB."
"B.BBBBBBBBBBB.B"
"BB.BBBBBBBBB.BB"
"BBB.BBBBBBB.BBB"
"BBBB.BBBBB.BBBB"
"BBBBB.BBB.BBBBB"
"BBBBBB.B.BBBBBB"
"BBBBBBB.BBBBBBB"
"BBBBBB.B.BBBBBB"
"BBBBB.BBB.BBBBB"
"BBBB.BBBBB.BBBB"
"BBB.BBBBBBB.BBB"
"BB.BBBBBBBBB.BB"
"B.BBBBBBBBBBB.B"
".BBBBBBBBBBBBB."

XPM
/* width height num_colors chars_per_pixel */
"7 105 3 1"
/* colors */
". c #000000"
"B c #FFFFFF"
"C c #A0A0A0"
/* icon for state 1 */
"......."
"......."
"......."
"...C..."
"..CBC.."
".CBBBC."
"CBBBBBC"
/* icon for state 2 */
"C......"
"BC....."
"BBC...."
"BBBC..."
"BBC...."
"BC....."
"C......"
/* icon for state 3 */
"C......"
"BC....."
"BBC...."
"BBBC..."
"BBBBC.."
"BBBBBC."
"BBBBBBC"
/* icon for state 4 */
"CBBBBBC"
".CBBBC."
"..CBC.."
"...C..."
"......."
"......."
"......."
/* icon for state 5 */
"CBBBBBC"
".CBBBC."
"..CBC.."
"...C..."
"..CBC.."
".CBBBC."
"CBBBBBC"
/* icon for state 6 */
"BBBBBBC"
"BBBBBC."
"BBBBC.."
"BBBC..."
"BBC...."
"BC....."
"C......"
/* icon for state 7 */
"BBBBBBC"
"BBBBBC."
"BBBBC.."
"BBBC..."
"BBBBC.."
"BBBBBC."
"BBBBBBC"
/* icon for state 8 */
"......C"
".....CB"
"....CBB"
"...CBBB"
"....CBB"
".....CB"
"......C"
/* icon for state 9 */
"......C"
".....CB"
"....CBB"
"...CBBB"
"..CBBBB"
".CBBBBB"
"CBBBBBB"
/* icon for state 10 */
"C.....C"
"BC...CB"
"BBC.CBB"
"BBBCBBB"
"BBC.CBB"
"BC...CB"
"C.....C"
/* icon for state 11 */
"C.....C"
"BC...CB"
"BBC.CBB"
"BBBCBBB"
"BBBBBBB"
"BBBBBBB"
"BBBBBBB"
/* icon for state 12 */
"CBBBBBB"
".CBBBBB"
"..CBBBB"
"...CBBB"
"....CBB"
".....CB"
"......C"
/* icon for state 13 */
"CBBBBBB"
".CBBBBB"
"..CBBBB"
"...CBBB"
"..CBBBB"
".CBBBBB"
"CBBBBBB"
/* icon for state 14 */
"BBBBBBB"
"BBBBBBB"
"BBBBBBB"
"BBBCBBB"
"BBC.CBB"
"BC...CB"
"C.....C"
/* icon for state 15 */
"BBBBBBB"
"BBBBBBB"
"BBBBBBB"
"BBBBBBB"
"BBBBBBB"
"BBBBBBB"
"BBBBBBB"
These icons can alternatively be placed in a file named PCA-shared.rule and if the rules are named PCA-0 ... PCA-8 the icons will be reused for all those rules. Considering the number of rules and patterns already posted here, making this change may not be worthwhile.

In any case, it makes it easy to see that the correspondence of Golly state bits to partition states is: {0, 1, 2, 3} -> {D, L, U, R} and it is also apparent that the rule PCA_5 has the opposite chirality to Model 2 from the paper. This is demonstrated in the following pattern, where according to Figure 17 the pattern on the left should be a reflector, but instead the pattern on the right is the reflector:

Code: Select all

x = 6, y = 5, rule = PCA_5
IC2.IC$LF2.LF$D4.D2$D4.D!
By my reckoning, the correct rule table for Model 2 is:

Code: Select all

  private int rule[] = {0,4,8,3,1,10,6,11,2,9,5,13,12,14,7,15};
This is incidental to the question of reversibility though. From what I can see, PCA_5 is implemented correctly (aside from having the opposite chirality) and should be reversible. Here's a pattern corresponding to Figure 16 (the local function of Model 2)

Code: Select all

x = 15, y = 38, rule = PCA_5
11.A$10.H.B.O$11.D3$.A$4.A5.H.B.M$11.D3$11.A$2.B.B5.H3.K$11.D3$11.A$
4.D5.H.B.G$.D3$11.A$H3.H7.B.N$11.D3$.A$2.B.L5.H3.C$11.D3$11.A$2.B.I5.
H3.F$.D3$.A$4.J5.H.B.E$.D!
Note that configurations with three active neighbours result in the wrong states.

Additionally, I tested a number of patterns on small tori and confirmed that they are all oscillators as expected, e.g. this p153797 oscillator:

Code: Select all

x = 5, y = 5, rule = PCA_5:T9,9
3.A$HOCO$.IOF$.OLOB$.D!
(Although some random patterns ran for longer under oscar than I was prepared to wait.)

Looking at the step code, I believe that the logic in the "reverse == False" branch is correct, but not so for "reverse == True". For example consider this transition in the rule PCA_5 (the one actually implemented, not Model 2 from the paper), (neighbourhood on the left, resulting cell on the right)

Code: Select all

x = 6, y = 3, rule = PCA_5
$H.B.G$.D!
When reversed, a state 7 cell by itself should result in an empty cell to the North. But looking at the Java step code for the cell to the North of a state 7 cell, I get:

Code: Select all

S = rule[squareCell.getNeighbor(row + 1, column    )]; -> S = rule[7] -> S = 14
then

Code: Select all

if ((S & 4) > 0)
  state = state | 1; -> state = 1
which is incorrect. Apologies for the poor formatting, hopefully the problem is clear.

I'm not sure how reversing PCA rules is implemented, but I think this means that PCA_5 when run backwards would behave the same as Model 2, which means that some patterns when stepped forward and then backward would not result in the starting pattern.
Last edited by wildmyron on September 30th, 2019, 9:52 pm, edited 1 time in total.
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 30th, 2019, 2:47 pm

wildmyron,

Thank you for your analysis on reversible partitioned cellular automata (RPCA) rules. I would welcome any further insights that you may have on this matter. I think we need help from Professor Kenichi Morita.

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » September 30th, 2019, 3:25 pm

It is easy to generate non symmetric PCA rules. Rule PCA_11 is such a rule:

Code: Select all

  /* Put your state count, neighbor count, and function here */
  final static int numStates = 16;
  final static int numNeighbors = 4;
  private int rule[] = {0,4,8,3,1,10,6,11,2,9,5,11,13,12,14,15};

  /* order for nine neighbors is nw, ne, sw, se, n, w, e, s, c */
  /* order for five neighbors is n, w, e, s, c */
  int f(int[] a)
  {
    int s = 0;
    if ((a[3] & 4) > 0)
      s = s | 1;
    if ((a[1] & 8) > 0)
      s = s | 2;
    if ((a[0] & 1) > 0)
      s = s | 4;
    if ((a[2] & 2) > 0)
      s = s | 8;
    return rule[s];
  }

Code: Select all

@RULE PCA_11
@TREE
num_states=16
num_neighbors=4
num_nodes=30
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
2 3 3 3 3 4 4 4 4 3 3 3 3 4 4 4 4
3 2 2 5 5 2 2 5 5 2 2 5 5 2 2 5 5
1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
2 7 7 7 7 8 8 8 8 7 7 7 7 8 8 8 8
1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
1 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
2 10 10 10 10 11 11 11 11 10 10 10 10 11 11 11 11
3 9 9 12 12 9 9 12 12 9 9 12 12 9 9 12 12
4 6 6 6 6 6 6 6 6 13 13 13 13 13 13 13 13
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
2 15 15 15 15 16 16 16 16 15 15 15 15 16 16 16 16
1 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
2 18 18 18 18 19 19 19 19 18 18 18 18 19 19 19 19
3 17 17 20 20 17 17 20 20 17 17 20 20 17 17 20 20
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
2 22 22 22 22 11 11 11 11 22 22 22 22 11 11 11 11
1 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
2 24 24 24 24 25 25 25 25 24 24 24 24 25 25 25 25
3 23 23 26 26 23 23 26 26 23 23 26 26 23 23 26 26
4 21 21 21 21 21 21 21 21 27 27 27 27 27 27 27 27
5 14 28 14 28 14 28 14 28 14 28 14 28 14 28 14 28
An example gun:

Code: Select all

x = 15, y = 14, rule = PCA_11
.C11.IC$M12.MF$5.B7.A$A3.B8.A$3.B9.A$A.B10.A$.B11.A$L12.A$.H11.A$2.
H10.A$3.H9.A$4.H8.A$5.H$6.H!
Brian Prentice

wildmyron
Posts: 1544
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Partitioned Cellular Automata

Post by wildmyron » October 1st, 2019, 5:55 am

A collection of small guns (including some already known) in the rule PCA_11. There are many larger variations on the theme. I suspect it should be possible to completely suppress the southward stream(s), but I haven't managed to do so yet.

Code: Select all

x = 59, y = 24, rule = PCA_11
I4.I4.I4.I4.I4.I9.IC$.F13.I4.I4.I9.MF$7.F8.2F$13.F8.2F$28.2F$41.IC$
41.MF$40.IK$40.MF2$47.C$46.M$45.ICH$45.MF2$51.IC$51.MF$51.K$50.MA2$
57.IC$57.MF$56.KAH$55.M.F!
Utilising a signal travelling through a stream of particles

Code: Select all

x = 20, y = 22, rule = PCA_11
I$.F$A$.I$A.F$.A$A$.A$A$.A$A$.A$A$.A$A$.A$A$.A$A$.A$2.B15.I$19.F!
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

wildmyron
Posts: 1544
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Partitioned Cellular Automata

Post by wildmyron » October 2nd, 2019, 4:01 am

bprentice wrote:
September 30th, 2019, 2:47 pm
wildmyron,

Thank you for your analysis on reversible partitioned cellular automata (RPCA) rules. I would welcome any further insights that you may have on this matter. I think we need help from Professor Kenichi Morita.

Brian Prentice
After thinking about this a bit more and manually working through a few cases for Model 2, I believe I have come up with some Java code to correctly run reversible 2PCA(4) rules backwards. I've tested the reverse step code with an online compiler (tio.run) for the same cases I worked through manually, but I don't have a full JDK available to test this code in Square cell. The variable "reversible" can be used to determine whether Square Cell should attempt to run the rule in reverse. In case it's not clear from the code - reversing a PCA rule is not equivalent to running a complementary PCA rule forwards. This is because each partition of a cell affects all the partitions of it's corresponding neighbour cell (when running forwards), therefore to determine the previous state of a cell the full state of all its neighbours is required, not just the partitions which affect the cell in the forward direction. Please note that the rule array used here is the corrected rule for Model 2, not the rule for PCA_5. Edit: this assertion is false - I seem to have made a copy error somewhere because this is the incorrect rule table originally used for PCA_5 earlier in this thread. Sorry for the confusion

Code: Select all

  private int rule[] = {0,4,8,3,1,10,6,14,2,9,5,7,12,11,13,15};
  private int inv_rule[] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
  for (int i = 0; i < 16; i++) {
    inv_rule[rule[i]] = i;
  }
  private boolean reversible = true;
  for (int i = 0; i < 16; i++) {
    if (inv_rule[i] < 0)
      reversible = false;
      break;
  }

  public int step(int row, int column)
  {
    if (! reverse)
    {
      int S = squareCell.getNeighbor(row + 1, column    );
      int W = squareCell.getNeighbor(row    , column - 1);
      int N = squareCell.getNeighbor(row - 1, column    );
      int E = squareCell.getNeighbor(row,     column + 1);
      int state = 0;
      if ((S & 4) > 0)
        state = state | 1;
      if ((W & 8) > 0)
        state = state | 2;
      if ((N & 1) > 0)
        state = state | 4;
      if ((E & 2) > 0)
        state = state | 8;
      return rule[state];
    }
    else
    {
      int S = inv_rule[squareCell.getNeighbor(row + 1, column    )];
      int W = inv_rule[squareCell.getNeighbor(row    , column - 1)];
      int N = inv_rule[squareCell.getNeighbor(row - 1, column    )];
      int E = inv_rule[squareCell.getNeighbor(row,     column + 1)];
      int state = 0;
      if ((S & 4) > 0)
        state = state | 1;
      if ((W & 8) > 0)
        state = state | 2;
      if ((N & 1) > 0)
        state = state | 4;
      if ((E & 2) > 0)
        state = state | 8;
      return state;
    }
  }
Edit: a 2c/156 orthogonal spaceship in PCA_4

Code: Select all

x = 6, y = 2, rule = PCA_4
H$.D.I.D!
Last edited by wildmyron on October 2nd, 2019, 12:09 pm, edited 1 time in total.
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » October 2nd, 2019, 10:59 am

wildmyron,

Thank you for your help. Your code is now in RPCA and tests show that the rules PCA_1, PCA_2, ... PCA_10 are all reversible. Only the non symmetric rule PCA_11 is not.

I plan to edit the post related to rule PCA_5 so that it implements Model 2. Is the following rule table correct?

{0,4,8,3,1,10,6,11,2,9,5,13,12,14,7,15}

A nice example of a soup generating ships of various speeds and reversing back to the soup will be published later.

Brian Prentice
Last edited by bprentice on October 3rd, 2019, 10:26 am, edited 1 time in total.

wildmyron
Posts: 1544
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Partitioned Cellular Automata

Post by wildmyron » October 2nd, 2019, 12:05 pm

bprentice wrote:
October 2nd, 2019, 10:59 am
wildmyron,

Thank you for your help. Your code is now in RPCA and tests show that the rules PCA_1, PCA_2, ... PCA_10 are all reversible. Only the non symmetric rule PCA_11 is not.
I'm glad to hear that it is working.
I plan to edit the posts related to rule PCA_5 so that it implements Model 2. Is the following rule table correct?

{0,4,8,3,1,10,6,11,2,9,5,13,12,14,7,15}
Oh, my apologies, after responding to this query the first time (now deleted) I realise I have confused the two rule tables somewhere along the line. My understanding is still that the table quoted here is the correct table for Model 2, as opposed to the table in the step code posted above. This puts me in some doubt about the manual checking I did, but seeing as you have successful implemented reversing RPCA rules it would seem to be correct. I presume I've made a mistake whilst copying the code snippets to the forum, but checking that will have to wait until tomorrow. There is however no doubt about which rule table corresponds to Model 2 - it's definitely this one. This can be verified by testing the two reflector orientations in the rule with this pattern which I posted previously:

Code: Select all

x = 6, y = 5, rule = PCA_5
IC2.IC$LF2.LF$D4.D2$D4.D!
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » October 2nd, 2019, 8:22 pm

Rule PCA_7R runs PCA_7 patterns in reverse:

Code: Select all

  /* Put your state count, neighbor count, and function here */
  final static int numStates = 16;
  final static int numNeighbors = 4;
  private int rule[] = {0,8,1,12,2,5,9,11,4,6,10,13,3,14,7,15};

  /* order for nine neighbors is nw, ne, sw, se, n, w, e, s, c */
  /* order for five neighbors is n, w, e, s, c */
  int f(int[] a)
  {
    int s = 0;
    if ((rule[a[3]] & 4) > 0)
      s = s | 1;
    if ((rule[a[1]] & 8) > 0)
      s = s | 2;
    if ((rule[a[0]] & 1) > 0)
      s = s | 4;
    if ((rule[a[2]] & 2) > 0)
      s = s | 8;
    return s;
  }

Code: Select all

@RULE PCA_7R
@TREE
num_states=16
num_neighbors=4
num_nodes=31
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 1
1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
2 3 3 3 4 3 4 3 3 4 4 3 4 3 4 4 4
3 2 2 2 2 5 2 2 5 2 5 5 2 5 5 5 5
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
2 7 7 7 8 7 8 7 7 8 8 7 8 7 8 8 8
1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
1 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
2 10 10 10 11 10 11 10 10 11 11 10 11 10 11 11 11
3 9 9 9 9 12 9 9 12 9 12 12 9 12 12 12 12
4 6 13 6 13 6 6 13 13 6 6 13 13 6 13 6 13
1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
2 15 15 15 16 15 16 15 15 16 16 15 16 15 16 16 16
1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
1 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
2 18 18 18 19 18 19 18 18 19 19 18 19 18 19 19 19
3 17 17 17 17 20 17 17 20 17 20 20 17 20 20 20 20
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 22 22 22 23 22 23 22 22 23 23 22 23 22 23 23 23
1 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
2 25 25 25 26 25 26 25 25 26 26 25 26 25 26 26 26
3 24 24 24 24 27 24 24 27 24 27 27 24 27 27 27 27
4 21 28 21 28 21 21 28 28 21 21 28 28 21 28 21 28
5 14 14 29 14 14 29 29 29 14 14 14 29 29 14 29 29
Run the following pattern for 5000 steps.

Code: Select all

x = 9, y = 9, rule = PCA_7
.7F$H7OG$H7OG$H2O3A2OG$H2OABA2OG$H2O3A2OG$H7OG$H7OG$.7C!
Save the resulting pattern and edit it to use rule PCA_7R. Run that pattern for 5000 steps to see the original pattern.

As a bonus, a new 2c/92 diagonal ship was discovered by this exercise.

Brian Prentice

bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Partitioned Cellular Automata

Post by bprentice » October 3rd, 2019, 2:40 pm

Another example of reversible PCA rules.

Rule PCA_3R runs PCA_3 patterns in reverse:

Code: Select all

  /* Put your state count, neighbor count, and function here */
  final static int numStates = 16;
  final static int numNeighbors = 4;
  private int rule[] = {0,2,4,3,8,5,6,7,1,9,10,11,12,13,14,15};

  /* order for nine neighbors is nw, ne, sw, se, n, w, e, s, c */
  /* order for five neighbors is n, w, e, s, c */
  int f(int[] a)
  {
    int s = 0;
    if ((rule[a[3]] & 4) > 0)
      s = s | 1;
    if ((rule[a[1]] & 8) > 0)
      s = s | 2;
    if ((rule[a[0]] & 1) > 0)
      s = s | 4;
    if ((rule[a[2]] & 2) > 0)
      s = s | 8;
    return s;
  }

Code: Select all

@RULE PCA_3R
@TREE
num_states=16
num_neighbors=4
num_nodes=31
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1
1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
2 3 3 4 3 3 4 4 4 3 3 3 3 4 4 4 4
3 2 5 2 5 2 2 5 5 2 2 5 5 2 2 5 5
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
2 7 7 8 7 7 8 8 8 7 7 7 7 8 8 8 8
1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
1 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
2 10 10 11 10 10 11 11 11 10 10 10 10 11 11 11 11
3 9 12 9 12 9 9 12 12 9 9 12 12 9 9 12 12
4 6 6 6 6 13 6 6 6 6 13 13 13 13 13 13 13
1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
1 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
2 15 15 16 15 15 16 16 16 15 15 15 15 16 16 16 16
1 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
1 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
2 18 18 19 18 18 19 19 19 18 18 18 18 19 19 19 19
3 17 20 17 20 17 17 20 20 17 17 20 20 17 17 20 20
1 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6
1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
2 22 22 23 22 22 23 23 23 22 22 22 22 23 23 23 23
1 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
2 25 25 26 25 25 26 26 26 25 25 25 25 26 26 26 26
3 24 27 24 27 24 24 27 27 24 24 27 27 24 24 27 27
4 21 21 21 21 28 21 21 21 21 28 28 28 28 28 28 28
5 14 14 14 29 14 29 14 29 29 29 14 29 14 29 14 29
Run the following pattern for 3000 steps.

Code: Select all

x = 31, y = 32, rule = PCA_3
15.A$14.B2A$13.A2B2A$12.B2A2B2A$11.A2B2A2B2A$10.B2A2B2A2B2A$9.A2B2A
2B2A2B2A$8.B2A2B2A2B2A2B2A$7.A2B2A2B2A2B2A2B2A$6.B2A2B2A2B2A2B2A2B2A
$5.A2B2A2B2A2B2A2B2A2B2A$4.B2A2B2A2B2A2B2A2B2A2B2A$3.A2B2A2B2A2B2A2B
2A2B2A2B2A$2.B2A2B2A2B2A2B2A2B2A2B2A2B2A$.A2B2A2B2A2B2A2B2A2B2A2B2A
2B2A$B2A2B2A2B2A2B2A2B2A2B2A2B2A2B2A$2B2A2B2A2B2A2B2A2B2A2B2A2B2A2B
A$.2B2A2B2A2B2A2B2A2B2A2B2A2B2AB$2.2B2A2B2A2B2A2B2A2B2A2B2A2BA$3.2B
2A2B2A2B2A2B2A2B2A2B2AB$4.2B2A2B2A2B2A2B2A2B2A2BA$5.2B2A2B2A2B2A2B2A
2B2AB$6.2B2A2B2A2B2A2B2A2BA$7.2B2A2B2A2B2A2B2AB$8.2B2A2B2A2B2A2BA$9.
2B2A2B2A2B2AB$10.2B2A2B2A2BA$11.2B2A2B2AB$12.2B2A2BA$13.2B2AB$14.2B
A$15.B!
Save the resulting pattern and edit it to use rule PCA_3R. Run that pattern for 3000 steps to see the original pattern.

All of this can be done in RPCA:

http://bprentice.webenet.net/PCA/RPCA.zip

without managing and loading rule tables or editing patterns and directing the simulation to run backward or forward by simply toggling the 'v' key .

Brian Prentice

Post Reply