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.