Page 1 of 7

### Golly suggestions

Posted: November 26th, 2016, 9:05 am
A thread for suggestions for golly.
My suggestions:
--------
Python functions (sorry if some of these are already available):
-getapg(cell-list) Returns the apg code of the cell list pattern
-apgrle(apgcode) Gets the RLE of the apgcode
-convertcl(rle) Converts the RLE into cell list
-convertrle(cell-list) Converts the cell list into rle
-forcedeletelayer() Deletes the current layer without the save dialog
-getcenterx() Find the X of the current center cell
-getcentery() Find the Y of the current center cell
-randfillsym(symmetry) Makes the next randfills have a certain symmetry
--------
Triangular neighborhood and overlay (indicated by T at the end e.g. B2/S3T)
Moore+2 neighborhood: Moore neighborhood that extends an extra cells (2c ships!)

### Re: Golly suggestions

Posted: November 26th, 2016, 9:51 am
Extended Von Neumann neighbourhoods (So there could be a proper RuleLoader implementation of Logic Land). I don't see how it could be difficult to add.

### Re: Golly suggestions

Posted: November 26th, 2016, 1:51 pm
Extended neighbourhoods like for example a 5 by 5 area instead of 3 by 3, that would be cool

### Re: Golly suggestions

Posted: November 26th, 2016, 3:45 pm
A way to completely disable grid lines. Right now all you can do is partially disable them in file>preferences>view, but that still leaves a grid the colour of state 0, and you can't even do it fully; you can just make it require higher zoom levels.

### Re: Golly suggestions

Posted: November 26th, 2016, 6:54 pm
Saka wrote:convertcl(rle) Converts the RLE into cell list

There is a scripting command that does just this, called parse(). It takes in an RLE or Life 1.05 string, and returns an optionally transformed cell list.

Saka wrote:-getcenterx() Find the X of the current center cell
-getcentery() Find the Y of the current center cell

It's pretty easy to use the list returned by getrect() to find the center cell of a pattern. Say the list is [x, y, width, height]. If the coordinates (x + (width - 1)/2, y + (height - 1)/2) are integers, they represent the center cell. Otherwise, the center of the bounding box doesn't lie in the middle of a cell and "center cell" is an ambiguous term.

-----

As for Golly suggestions, I'd definitely like more things in the online archives, like being able to browse certain Catagolue pages, such as a minimal version of the Statistics page, where instead of links to object pages there would be links to download each object and a soup that produced it.

### Re: Golly suggestions

Posted: November 27th, 2016, 12:10 am
I have a pattern candidate!
`x = 61, y = 19, rule = shapeloop310DE2A5.13D5.3DC3.4D3.2DCD3.4D\$C11HA5.D11HD5.D2HD3.D2HD3.D2HC3.D2HD\$DH.9HA5.DH9.HD5.C2HC3.B2HD3.D2HD3.D2HB\$C2H10A5.DH9.HD5.D2HD3.D2HD3.D2H5D2HD\$D2HA14.DH9.HD5.B2HB3.D2HD3.DH.5H.HD\$D2HA14.DH9.HD5.D2HD3.D2HD3.D3H3.3HD\$D2HA14.DH9.HD5.D2HD3.D2HD3.4DH.H2DBD\$D2HA14.DH9.HD5.D2HB3.D2HD6.DH.HD\$D2HA3.7A4.DH9.HD5.D2HD3.B2HD6.DH.HD\$D2HA3.A5HA4.DH9.HD5.D2HC3.D2HC6.BH.HD\$D2HA3.A3H.HA4.DH9.HD5.D2HD3.D2HD6.DH.HD\$B2HA3.4A2HA4.DH9.HD5.D2HC3.D2HC6.DH.HD\$D2HA6.A2HA4.DH9.HD5.D2HD3.D2HD6.BH.HD\$D2HA6.A2HD4.DH9.HD5.D2HD3.D2HD6.DH.HD\$D2HA6.A2HD4.DH9.HD5.D2HD3.D2HD6.DH.HD\$D2H8A2H6DH9.H6DC2HDCDBD2H8DH.HD\$DH.8H2.6H11.7H2.5H2.8H2.HD\$D56HD\$4DB5DB2DBDCDC4DC5DB3DB13DC10DC!`

### Re: Golly suggestions

Posted: November 29th, 2016, 7:08 pm
Something I've always wanted is mod+ and mod- pasting, i.e. represent both the clipboard and the area to be pasted over as matrices, then add or subtract them, taking the result modulo n, the number of cellstates. Makes it a hell of a lot easier to, using Catagolue, count t-gen predecessors to an object (in order to identify commonalities) than the current method, which is this:
1. Advance and rotate/flip all soups as needed, so that they produce the designated object at time t in the same orientation. (This will still have to be done.)
2. In a new layer using rule //256, create a large rectangle of state 1, large enough to encompass all predecessors, if they are all positioned so that the designated object would form in the same place.
3. In the first layer, invert all predecessors, using a bounding box at least as large as that large rectangle.
4. Switch to rule //256, and advance by 254 generations, so that the cells are of state 255.
5. For each inverted predecessor:
1. Copy it from the old layer, and paste it at the appropriate position on the new layer.
2. Advance the new layer by one, and copy all of the result.
3. Undo to just before the predecessor was pasted, and paste the above result in the same place you copied it from.
This will create a grid where a cell of state k was present in k-1 of the predecessors. Using mod+ pasting, the same task, excluding the first step, would take O(log(p)) steps, instead of O(p) steps.

### Re: Golly suggestions

Posted: November 30th, 2016, 5:38 am
Looks like you could write a script that could do that...

### Re: Golly suggestions

Posted: December 8th, 2016, 4:39 am
More things:
-Triangular Moore neighborhood without emulator
-Triangular Von Neumann neighborhood without emulator
-Margolus without emulator
-Custom neighborhoods, this is how you do it:
`@NEIGHBORHOOD NeighborhoodName#This will use the Moore+2 neighborhood#All neighborhoods created will have "none" or "permute" symmetry only#Specify the cells using 0 for out-of-neighborhood cell or 1 for inside-of-neighborhood cell#Use a "o" for the "origin" cell@NEIGHBORSx:5 #Widthy:5 #Height111111111111o111111111111@ORDER#Optional, this is for the order when creating rule tables#Default is c, N, NN, NE... c'#o for origin0,1,2,3,45,6,7,8,910,11,o,12,1314,15,16,17,1819,20,21,22,23`

### Re: Golly suggestions

Posted: December 8th, 2016, 6:43 am
Non-totalistic generations seem quite trivial to implement once the QuickLife standard non-totalistic rules are there (already).

### Re: Golly suggestions

Posted: December 8th, 2016, 4:06 pm
blah wrote:A way to completely disable grid lines. Right now all you can do is partially disable them in file>preferences>view, but that still leaves a grid the colour of state 0, and you can't even do it fully; you can just make it require higher zoom levels.

This is implemented in Golly 2.9b2.

Drawing cell borders when zoomed in > 2x is now controlled by a View Preference: "Zoomed cells have borders".

### Re: Golly suggestions

Posted: December 8th, 2016, 4:07 pm
Rhombic wrote:Non-totalistic generations seem quite trivial to implement once the QuickLife standard non-totalistic rules are there (already).

This is implemented in Golly 2.9b2.

The Generations algorithm now supports Hex, Von Neumann and non-totalistic Moore neighborhoods.

### Re: Golly suggestions

Posted: December 9th, 2016, 9:36 am
I had an idea:a searching script.
For example,I select a piece of cells in a soup like this(selection box is marked blue)
`x = 50, y = 50, rule = LifeHistory.A.A.A2.A3.5A7.3A4.A2.2A4.2A3.3A.A\$4.2A5.4A4.2A.2A.2A2.A.A4.2A3.A2.2A.2A\$.4A2.A2.A2.A.A2.A6.A.A.A2.2A.A.A2.A.A2.A2.A\$2.A3.A.A2.A.A.2A.A.2A8.A.A3.2A3.A3.A2.2A\$A3.2A2.A.2A3.A2.2A2.A3.A2.A2.A.A2.A.A.A2.2A.A\$2.A.A4.A.2A.A.2A.2A.A.A.A3.2A2.A3.A4.A.A.2A\$4.A2.2A.A4.2A2.A.2A.3A3.A.A7.2A.2A.A.2A\$.2A.3A3.A2.A.2A9.A3.A.2A10.A2.A\$2A6.A.2A.A2.A.2A2.A.2A2.A3.3A3.A9.2A\$A2.A2.A3.2A.2A2.3A.2A3.A.A3.2A2.2A4.2A.2A\$6.2A5.4A3.2A3.5A.A.A5.A.2A6.A\$A2.2A.A2.3A2.A4.A.A2.A.A.A.2A6.3A7.2A\$2A.3A2.5A2.A2.4A3.A.A.A4.2A3.A3.2A.2A.A\$2.2A.A8.A3.A.A.5A7.A2.2A3.A6.A\$.4A.A.2A.3A7.2A5.A3.A.3A.3A.A.2A\$2.3A5.2A2.2A9.4A.2A2.A7.2A2.A\$2A7.2A2.A2.A.2A2.A3.3A.A3.A5.2A.2A.A.A\$4.2A.2A.A2.A.3A2.A9.A.2A2.3A.A2.A.2A.2A\$3.A6.2A4.A3.A3.4A5.3A2.3A\$2A.A.2A4.2A2.A.2A4.4A5.A3.A.A.A.2A2.A.2A\$3.2A2.A3.A.4A6.A6.A.A8.3A.2A\$.2A.2A.A.A5.A5.3A5.A.A5.3A3.6A\$2A2.A.2A.2A.A5.3A2.2A3.2A.A3.A.A.3A.2A2.A.A\$2A10.A6.A.A2.2A3.3A7.A5.2A.2A\$2A.2A2.A.3A2.A3.2A6.3A.2A3.4A.2A.A.A2.A\$2.3A.2A9.A7B3A3.4A3.2A2.A.A.A\$17.B2.2A.2A.3A.A3.A3.A3.A2.A.A\$.A.A.A.A.3A4.AB.A6.A2.A4.A4.A3.3A3.A\$A3.3A.2A.4A2.A.A.2A3.B5.A.2A8.A.A\$.A7.2A3.A2.B.2A2.A2.B4.2A7.2A4.2A\$2A.A2.A6.3A.2A.2A.A.AB7.4A.2A3.2A.A.A\$2A4.A5.A.2A.A2.A.2A.3A2.A3.2A.A.2A2.A5.A\$.2A8.A4.2A8.BA6.A3.A2.A.A.A3.A\$A.A3.2A3.A2.A2.A.2A2.A.2A.A5.A2.4A.3A.3A\$2.A.A4.A.A3.2AB3AB2A3B2.2A.A2.2A.A3.A2.A2.A\$2A3.A.5A15.A.A.A2.A.2A.3A.A5.A\$4A.4A3.A3.9A9.A2.3A.A4.A.A\$.2A.2A.A7.A.A2.A16.2A2.A2.A4.A\$3.A4.A.2A.A4.A4.2A2.A2.A5.A.A5.A\$26.2A3.A4.A2.A3.4A.A\$3.2A2.A4.A2.A4.3A2.A3.2A4.3A5.4A.2A\$4.A4.A2.6A.2A2.A3.2A2.A11.A4.A\$4.2A.2A6.A3.A7.A4.2A11.A.A.A\$2.A.2A.A3.A4.A.A4.6A.2A5.A2.A6.2A\$A3.2A.A.4A10.A.A6.A.A.3A4.A\$A5.A.A.2A3.A.A2.A.A6.A.3A.3A2.2A3.A.A.A\$.2A2.2A3.A2.A6.A5.A.A2.A.A3.A2.A.3A\$2.A.A10.A2.2A3.A4.A.A.2A4.2A6.A2.A\$.A5.2A.A3.2A.A2.A5.2A9.A.3A\$2.A5.A.A6.A7.2A4.A.3A5.3A.3A!`

Then I run the script,its output may be something like this
`x = 50, y = 50, rule = LifeHistory.A.A.A2.A3.4AE7D2EA4.A2.2A4.2A3.3A.A\$4.2A5.4A.3D2ED2EDEA2.A.A4.2A3.A2.2A.2A\$.4A2.A2.A2.A.A2DE6DE.A.A2.2A.A.A2.A.A2.A2.A\$2.A3.A.A2.A.A.AEDED2E4D4.A.A3.2A3.A3.A2.2A\$A3.2A2.A.2A3.A2D2E2DE3DA2.A2.A.A2.A.A.A2.2A.A\$2.A.A4.A.2A.A.2ED2EDEDEDA3.2A2.A3.A4.A.A.2A\$4.A2.2A.A4.AE2DED2ED2EA3.A.A7.2A.2A.A.2A\$.2A.3A3.A2.A.AE9DA3.A.2A10.A2.A\$2A6.A.2A.A2.ED2E2DED2E2.A3.3A3.A9.2A\$A2.A2.A3.2A.2A.D3ED2E3DA.A3.2A2.2A4.2A.2A\$6.2A5.4A3.2A3.5A.A.A5.A.2A6.A\$A2.2A.A2.3A2.A4.A.A2.A.A.A.2A6.2AE7D2E\$2A.3A2.5A2.A2.4A3.A.A.A4.2A3.A3D2ED2EDE\$2.2A.A8.A3.A.A.5A7.A2.2A.2DE6DE\$.4A.A.2A.3A7.2A5.A3.A.3A.2AEDED2E4D\$2.3A5.2A2.2A9.4A.2A2.A5.2D2E2DE3D\$AE7D2E2.A2.A.2A2.A3.3A.A3.A5.2ED2EDEDED\$.3D2ED2EDE2.A.3A2.A9.A.2A2.3A.E2DED2ED2E\$.2DE6DEA4.A3.A3.4A5.3A2.2AE9D\$AEDED2E4D2A2.A.2A4.4A5.A3.A.A.ED2E2DED2E\$.2D2E2DE3DA.4A6.A6.A.A7.D3ED2E3D\$.2ED2EDEDED4.A5.3A5.A.A5.3A3.6A\$AE2DED2ED2E.A5.3A2.2A3.2A.A3.A.A.3A.2A2.A.A\$AE9D.A6.A.A2.2A3.3A7.A5.2A.2A\$AED2E2DED2EA2.A3.2A6.3A.2A3.4A.2A.A.A2.A\$.D3ED2E3D6.E7D2EA3.4A3.2A2.A.A.A\$17.3D2ED2EDE2A.A3.A3.A3.A2.A.A\$.A.A.A.A.3A4.A2DE6DE2.A4.A4.A3.3A3.A\$A3.3A.2A.4A2.EDED2E4D5.A.2A8.A.A\$.A7.2A3.A2.2D2E2DE3D4.2A7.2A4.2A\$2A.A2.A6.3A.2ED2EDEDED7.4A.2A3.2A.A.A\$2A4.A5.A.2A.E2DED2ED2EA2.A3.2A.A.2A2.A5.A\$.2A8.A4.AE9DA6.A3.A2.A.A.A3.A\$A.A3.2A3.A2.A2.ED2E2DED2E.A5.A2.4A.3A.3A\$2.A.A4.A.A3.2AD3ED2E3D2.2A.A2.2A.A3.A2.A2.A\$2A3.A.5A15.A.A.A2.A.2A.3A.A5.A\$4A.4A3.A3.9A9.A2.3A.A4.A.A\$.2A.2A.A7.A.A2.A16.2A2.A2.A4.A\$3.A4.A.2A.A4.A4.2A2.A2.A5.A.A5.A\$26.2A3.A4.A2.A3.4A.A\$3.2A2.A4.A2.A4.3A2.A3.2A4.3A5.4A.2A\$4.A4.A2.6A.2A2.A3.2A2.A11.A4.A\$4.2A.2A6.A3.A7.A4.2A11.A.A.A\$2.A.2A.A3.A4.A.A4.6A.2A5.A2.A6.2A\$A3.2A.A.4A10.A.A6.A.A.3A4.A\$A5.A.A.2A3.A.A2.A.A6.A.3A.3A2.2A3.A.A.A\$.2A2.2A3.A2.A6.A5.A.A2.A.A3.A2.A.3A\$2.A.A10.A2.2A3.A4.A.A.2A4.2A6.A2.A\$.A5.2A.A3.2A.A2.A5.2A9.A.3A\$2.A5.A.A6.A7.2A4.A.3A5.3A.3A!`

Is it possible?

### Re: Golly suggestions

Posted: February 20th, 2017, 11:40 am
Is a "lasso" select option possible? (The select option some image-type programs have where you can select blob shaped areas instead of rectangles.)

### Re: Golly suggestions

Posted: February 20th, 2017, 4:32 pm
Alternate select options would be a great addition. Whenever working with large patterns with skewed-repeating sections like the waterbear or currently-backburnered (27,1)c/72 ship, it's been a real pain to only be able to select rectangular regions.

### Re: Golly suggestions

Posted: February 21st, 2017, 12:28 am
Mr. Missed Her wrote:Is a "lasso" select option possible? (The select option some image-type programs have where you can select blob shaped areas instead of rectangles.)

Don't know if it's too likely for a lasso select to make it into Golly native functionality any time soon. Selections, and all the related Python and Lua script operations, are based on nice simple rectangles and would kind of have to be re-invented from the ground up to support arbitrary shapes.

That said, there's chris_c's EditLife script toolkit, which includes lasso select functionality -- of a sort, anyway. Might be worth getting used to, for some projects.

It might be worth revisiting this lasso-via-script idea, now that Golly 2.9's overlay functionality is an option -- it's no longer necessary for the lasso line to consist of otherwise unused cells in the same universe as the selected pattern (or cells in an overlapping stacked layer, which creates other problems).

### Re: Golly suggestions

Posted: February 25th, 2017, 1:40 pm
GUYTU6J wrote:I had an idea:a searching script.
For example,I select a piece of cells in a soup like this(selection box is marked blue)

Is it possible?

Conceptually I think it is possible.

The way I would do this:
a. Hash method
1. Get the hash value of your selection as v.
2. Find hash value of all possible selections of the same sizes
3. Detect positions with hash values of v.
4. Project postions back into selections.

b. convolution method:
1. Get the size of selection S as [wd,ht];
2. Generate a convolution filter F of size wd x ht (Depending the symmetry you want to incorporate, you might want to rotate or reflect the F. i.e. rotate4reflect should have 8 copy of F.) The elements of F should be 1,2,4,8,16,....,2^n.
3. Convolve F with the original picture (C=conv(F,pic)), store the value of V=conv(F,S).
4. In array C, find other positions with a value V.
5. Project these positions back into selections.
6. Recolour these selections.

In both case you need to handle the symmetries carefully. I suggest restrict the selection to squares to ease the whole process.

### Re: Golly suggestions

Posted: July 30th, 2017, 7:47 pm
Few more I thought of:

- Oloid bounded grid
- Sphericon bounded grid
- Mobius strip bounded grid
- Support for "Snoitareneg" rules

### Re: Golly suggestions

Posted: August 1st, 2017, 3:27 am
Support for BSFKL rules (Golly and LifeViewer)

### Re: Golly suggestions

Posted: August 1st, 2017, 7:05 pm
AbhpzTa wrote:Support for BSFKL rules (Golly and LifeViewer)

Example rule:

`@RULE B13456S0357F1256K048L0123678@TREEnum_states=3num_neighbors=8num_nodes=1061 0 0 01 0 1 02 0 0 11 1 2 02 0 0 32 1 3 13 2 4 51 0 2 02 0 0 72 3 7 33 4 8 93 5 9 54 6 10 111 0 0 21 1 1 02 0 13 142 7 14 73 8 15 162 3 7 73 9 16 184 10 17 192 1 7 03 5 18 214 11 19 225 12 20 231 1 2 22 13 13 252 14 25 143 15 26 273 16 27 164 17 28 292 7 7 03 18 16 314 19 29 325 20 30 333 21 31 24 22 32 355 23 33 366 24 34 371 1 1 22 13 0 392 25 39 253 26 40 412 14 25 13 27 41 434 28 42 442 7 1 03 16 43 464 29 44 475 30 45 483 31 46 44 32 47 505 33 48 516 34 49 524 35 50 65 36 51 546 37 52 557 38 53 562 39 3 393 40 4 581 0 2 22 25 39 603 41 58 614 42 59 622 1 60 03 43 61 644 44 62 655 45 63 663 46 64 84 47 65 685 48 66 696 49 67 704 50 68 105 51 69 726 52 70 737 53 71 745 54 72 126 55 73 767 56 74 778 57 75 782 3 1 33 4 2 801 0 1 22 39 3 823 58 80 834 59 81 842 60 82 133 61 83 864 62 84 875 63 85 883 64 86 154 65 87 905 66 88 916 67 89 924 68 90 175 69 91 946 70 92 957 71 93 965 72 94 206 73 95 987 74 96 998 75 97 1006 76 98 247 77 99 1028 78 100 1039 79 101 104`

Example irregular gun:

`x = 6, y = 5, rule = B13456S0357F1256K048L01236784.A\$.3A.A\$5.B\$A3.B\$A2B!`

Brian Prentice

### Re: Golly suggestions

Posted: August 24th, 2017, 4:33 pm
The ability to simulate higher-range one-dimensional cellular automata would definitely be pretty nice, especially since some of them have multiple spaceships.

### Re: Golly suggestions

Posted: August 29th, 2017, 11:47 am
Also, how about odd Wolfram rules?

### Re: Golly suggestions

Posted: August 29th, 2017, 1:05 pm
muzik wrote:Also, how about odd Wolfram rules?

A surprisingly appropriate response from four years ago seems to be within reach of a quick search. Doesn't seem like the answer is likely to have changed. Is there something wrong with the script?

### Re: Golly suggestions

Posted: August 29th, 2017, 3:24 pm
Accidentally posted this in the wrong thread, but what about support natively for 'History' rules, i.e. B3/S23-eHistory would give you a version of LifeHistory but with B3/S23-e instead.

### Re: Golly suggestions

Posted: August 29th, 2017, 9:06 pm
drc wrote:what about support natively for 'History' rules

I can't see such rules ever being supported by QuickLife or HashLife. Those algos are highly optimized for 2-state rules, so would presumably require major changes to support extra history states.

A simpler solution might be to write a new History algorithm to support such rules. It could use the ghashbase class (like the Generations algo) and so should be reasonably simple to implement. I'm not all that interested in History rules (I just run envelope.lua on the rare occasions when I want to see a pattern's history), but maybe you can persuade one of the other Golly developers to give it a go in a future version.