Thread for basic questions

For general discussion about Conway's Game of Life.
User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 15th, 2017, 4:57 pm

danny wrote:
muzik wrote:Approximately how long will it take to census all (2^256?) unique C1 soups on b3s23 on Catagolue?
blah blah blah calculations hard math blah blah blah
After a gigantic number of soups it can happen that the same soup appears twice. So the more soups you check, the smaller the chance that it did not appear before, but the chance shrinks very slowly. The calculations are correct, but they don't show how long would it REALLY take to census all possible random soups. It will be much, much longer.
I'm not sure about the calculations, but someone else could figure it out.
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
calcyman
Moderator
Posts: 2938
Joined: June 1st, 2009, 4:32 pm

Re: Thread for basic questions

Post by calcyman » December 15th, 2017, 5:20 pm

If you're randomly searching as opposed to systematically searching, there's an overhead of log(N) ~ 177.445, so it would take about 10 million years running on The Universe.
What do you do with ill crystallographers? Take them to the mono-clinic!

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 16th, 2017, 3:40 am

calcyman wrote:If you're randomly searching as opposed to systematically searching, there's an overhead of log(N) ~ 177.445, so it would take about 10 million years running on The Universe.
What do you mean by 'running on the Universe'?
Are there any oscillators with these stators?

Code: Select all

x = 32, y = 15, rule = B3/S23
4b2o$4bo2bo$5b3o17b2o$25b2o$5b3o$4bo3bo14b4o$bo2bo3bo2bo10bo4bo$obobo
3bobobo6bo2bo4bo2bo$bo2bo3bo2bo6bobobo4bobobo$4bo3bo10bo2bo4bo2bo$5b3o
14bo4bo$23b4o$5b3o$5bo2bo14b2o$7b2o14b2o!
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
dvgrn
Moderator
Posts: 10687
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Thread for basic questions

Post by dvgrn » December 16th, 2017, 8:55 am

gameoflifemaniac wrote:
calcyman wrote:If you're randomly searching as opposed to systematically searching, there's an overhead of log(N) ~ 177.445, so it would take about 10 million years running on The Universe.
What do you mean by 'running on the Universe'?
See previous post.
gameoflifemaniac wrote:Are there any oscillators with these stators?

Code: Select all

....5x3 block, 5x4 block...
Definitely no for the 5x3 case. You can prove it either by logical analysis or by filling in all 2^15 possible patterns with a script -- no possible fill (EDIT: non-stable oscillating fill, that is -- see gameoflifemaniac's posts below) allows the stator to survive for more than a few ticks. For 5x4 I think the answer is also no, unless you count p1 oscillators:

Code: Select all

x = 14, y = 13, rule = B3/S23
7b2o$7b2o2$5b4o$4bo2bobo$bo2bo4bo2bo$obob2o2b2obobo$bo2bo4bo2bo$4bobo
2bo$5b4o2$5b2o$5b2o!
Here again, 2^20 is only a million patterns, so a script could be written to give a definite answer in a few minutes. Or you could maybe look for great-great-grandchildren with the same stator in JLS or WLS, but I'm not sure how that would work out exactly.

A quick hunt through old emails didn't find any complete proofs or negative search results for 5x4, but given the number of years people have been making billiard tables, I suspect the search has been done many times.

AforAmpere
Posts: 1334
Joined: July 1st, 2016, 3:58 pm

Re: Thread for basic questions

Post by AforAmpere » December 16th, 2017, 12:23 pm

How does width for spaceship searches translate to diagonal speeds? I don't really understand where those widths come from.
I manage the 5S project, which collects all known spaceship speeds in Isotropic Non-totalistic rules. I also wrote EPE, a tool for searching in the INT rulespace.

Things to work on:
- Find (7,1)c/8 and 9c/10 ships in non-B0 INT.
- EPE improvements.

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 16th, 2017, 1:46 pm

How to do a script that runs the pattern so that it's evolving, not instantly jumping to the specified number of generations?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
Majestas32
Posts: 549
Joined: November 20th, 2017, 12:22 pm
Location: 'Merica

Re: Thread for basic questions

Post by Majestas32 » December 16th, 2017, 1:50 pm

@gameoflifemaniac

Just use a for loop that repeatedly displays the image of the current matrix
Searching:
b2-a5k6n7cs12-i3ij4k5j8
b2-a3c7cs12-i

Currently looking for help searching these rules.

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 16th, 2017, 1:54 pm

I need this because I created a script called 'apgsearch-v.0'. It's straightforward, it clears the grid, fills randomly a 16x16 selection, and runs for 50000 generations. But to see if there are any orthogonal spaceships after I'm looking for rare still lifes, I have to press F every time I run the script. So to not need to fit the pattern, I want to see it evolving, so that I can see if there are any *WSS emitted. I tried 'for' loops and 'repeat until' loops, but it didn't work.
This could be a solution to my problem,

Code: Select all

local g = golly()
g.reset()
g.new("untitled")
g.select({0,0,16,16})
g.randfill(50)
while( true )
do
   g.run(16)

   if g.getgen() ~= 50000 
   then
      break
   end

end
g.setmag(1)
but instead running the pattern repeatidely for 16 generations until it runs 50000 gens total, it runs 16 generations and stops. What's wrong?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
Majestas32
Posts: 549
Joined: November 20th, 2017, 12:22 pm
Location: 'Merica

Re: Thread for basic questions

Post by Majestas32 » December 16th, 2017, 3:48 pm

@gameoflifemaniac
I don't know much python but try replacing ~= with ==
Searching:
b2-a5k6n7cs12-i3ij4k5j8
b2-a3c7cs12-i

Currently looking for help searching these rules.

User avatar
dvgrn
Moderator
Posts: 10687
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Thread for basic questions

Post by dvgrn » December 16th, 2017, 4:03 pm

Majestas32 wrote:@gameoflifemaniac
I don't know much python but try replacing ~= with ==
That's Lua, not Python, but the point is certainly valid. Stopping after 16 ticks is what the code is currently telling Golly to do. There's another subtle problem, which will come up if you start running a pattern at a generation count that isn't a multiple of 16, or change the multiple or the target value so that the latter isn't an exact multiple of the former.

It's not a problem as it stands, but when you notice that 50,000 is way too big and cut the number down to 5000, unless you use tonumber(g.getgen())>= 5000 you could go right past your stopping point without ever actually stopping.

You'll need tonumber(g.getgen()), or int(g.getgen()) in Python, to avoid another problem: getgen() returns the current generation count as a string, not an integer, so the comparison won't work as it's written.

The original problem could have been that you need to call g.update() optionally preceded by g.fit() every time you want to see what a script is doing while it's running. See the Lua or Python help for update(), and/or autoupdate() if you want to change that behavior.

A tiny technical issue: I think there's not much point in calling g.reset() if you're just going to call g.new() immediately afterward anyway.

Code: Select all

local g = golly()
g.setrule("B3/S23")
g.new("untitled")
g.select({0,0,16,16})
g.randfill(50)
while( true ) do
   g.run(16)
   g.fit()
   g.update()
   if tonumber(g.getgen()) >= 1600 
   then
      break
   end
end
... This is still going to be pretty irritating to run, though. If you want to find soups with *WSS outputs, here's a way to write a script that will do it much quicker:

1) Use the above code to make a soup.
2) Run it 50,000 ticks, but don't worry about watching it.
3) Find the bounding box -- g.getrect() -- and calculate left, right, top, and bottom edges L, R, T, B.
4) Run another 4 ticks.
5) Check the bounding box again. If any (or all) of the new L/R/T/B values are different from the previous ones by two cells, then

A) you've found a soup that makes an *WSS, or
B) (too unlikely to worry about) you've found something hugely more interesting than a *WSS.

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 17th, 2017, 4:53 am

dvgrn wrote: 1) Use the above code to make a soup.
2) Run it 50,000 ticks, but don't worry about watching it.
3) Find the bounding box -- g.getrect() -- and calculate left, right, top, and bottom edges L, R, T, B.
4) Run another 4 ticks.
5) Check the bounding box again. If any (or all) of the new L/R/T/B values are different from the previous ones by two cells, then

A) you've found a soup that makes an *WSS, or
B) (too unlikely to worry about) you've found something hugely more interesting than a *WSS.
So how do I do it?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
dvgrn
Moderator
Posts: 10687
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Thread for basic questions

Post by dvgrn » December 17th, 2017, 10:03 am

gameoflifemaniac wrote:
dvgrn wrote: 1) Use the above code to make a soup.
2) Run it 50,000 ticks, but don't worry about watching it.
3) Find the bounding box -- g.getrect() -- and calculate left, right, top, and bottom edges L, R, T, B.
4) Run another 4 ticks.
5) Check the bounding box again. If any (or all) of the new L/R/T/B values are different from the previous ones by two cells, then

A) you've found a soup that makes an *WSS, or
B) (too unlikely to worry about) you've found something hugely more interesting than a *WSS.
So how do I do it?
The nice numbered list above is fairly specific. Once you've gotten enough practice with Lua, writing code by following that outline won't take more than fifteen minutes, including trial runs and collecting typos.

On a good day it would take me just a couple of minutes to get something working, much less time than writing up these answers. But if I just post the code you want, you'll probably use it without really looking at it, and then you'll keep asking questions like this one.

Step 1 is done already.
Step 3 you don't even need, if you use the gplus library. Check invert.lua to see how the gplus library works.
Steps 2 and 5 you just define variables to hold the two rectangles.

-- Like this, assuming you're using the gplus library, with the "require" line at the top of the script:

Code: Select all

local gp = require "gplus"
...
local r = gp.rect(g.getrect())
...
local r2 = gp.rect(g.getrect())
Then in Step 5 you need a four-part IF statement comparing

r.left-2, r.right+2, r.top-2, and r.bottom+2
with
r2.left, r2.right, r2.top, and r2.bottom

and report success if any of them match.

Then maybe put the whole thing in a while loop and keep retrying until a match is found. You may be surprised how nearly instantaneously Golly will find a *WSS-making soup for you.

Or instead you could just go look in Catagolue and use the hundreds of 16x16 soups that are already collected there.

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 17th, 2017, 12:06 pm

dvgrn wrote:
gameoflifemaniac wrote:
dvgrn wrote: blah blah blah instructions blah blah blah
So how do I do it?
--sample text--

Code: Select all

local gp = require "gplus"
...
local r = gp.rect(g.getrect())
...
local r2 = gp.rect(g.getrect())
Then in Step 5 you need a four-part IF statement comparing

r.left-2, r.right+2, r.top-2, and r.bottom+2
with
r2.left, r2.right, r2.top, and r2.bottom

and report success if any of them match.
--sample text--
How exactly would that part look like?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
dvgrn
Moderator
Posts: 10687
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Thread for basic questions

Post by dvgrn » December 17th, 2017, 12:50 pm

gameoflifemaniac wrote:
dvgrn wrote: blah blah blah instructions blah blah blah
So how do I do it?
dvgrn wrote:...blah blah blah blah if I just post the code you want, you'll probably use it without really looking at it, and then you'll keep asking questions like this one. Blah blah blah...
gameoflifemaniac wrote:
dvgrn wrote:... Then in Step 5 you need a four-part IF statement...
How exactly would that part look like?
It just doesn't seem like a good idea for me to answer that, but I can maybe provide a useful hint.

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 17th, 2017, 2:01 pm

dvgrn wrote:
gameoflifemaniac wrote:
dvgrn wrote: blah blah blah instructions blah blah blah
So how do I do it?
dvgrn wrote:...blah blah blah blah if I just post the code you want, you'll probably use it without really looking at it, and then you'll keep asking questions like this one. Blah blah blah...
gameoflifemaniac wrote:
dvgrn wrote:... Then in Step 5 you need a four-part IF statement...
How exactly would that part look like?
It just doesn't seem like a good idea for me to answer that, but I can maybe provide a useful hint.
Ahh, I just thought that IF is a abbreviation for some word...
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
gameoflifemaniac
Posts: 1242
Joined: January 22nd, 2017, 11:17 am
Location: There too

Re: Thread for basic questions

Post by gameoflifemaniac » December 19th, 2017, 11:51 am

Is this a strict still life?

Code: Select all

x = 10, y = 9, rule = B3/S23
b2o$bo$3bob2ob2o$2b2ob2obo$bo6bo$bob2ob2o$2ob2obo$8bo$7b2o!
By the way, what is the SS census?
I was so socially awkward in the past and it will haunt me for the rest of my life.

Code: Select all

b4o25bo$o29bo$b3o3b3o2bob2o2bob2o2bo3bobo$4bobo3bob2o2bob2o2bobo3bobo$
4bobo3bobo5bo5bo3bobo$o3bobo3bobo5bo6b4o$b3o3b3o2bo5bo9bobo$24b4o!

User avatar
cordership3
Posts: 129
Joined: August 23rd, 2016, 8:53 am
Location: Smome tomato
Contact:

Re: Thread for basic questions

Post by cordership3 » December 19th, 2017, 12:23 pm

Are there tools to make placement of components of useful patterns easier?
evil twin of cordership2

User avatar
Tom Mazanec
Posts: 32
Joined: December 18th, 2017, 5:22 pm

Re: Thread for basic questions

Post by Tom Mazanec » December 19th, 2017, 12:24 pm

Is there a sort of Idiot's Guide to Golly for Dummies? that would help a newbie like me download it to their system (Mac in my case), learn the notation, tips for finding good patterns, etc.?

User avatar
Majestas32
Posts: 549
Joined: November 20th, 2017, 12:22 pm
Location: 'Merica

Re: Thread for basic questions

Post by Majestas32 » December 19th, 2017, 12:54 pm

gameoflifemaniac wrote:Is this a strict still life?

Code: Select all

x = 10, y = 9, rule = B3/S23
b2o$bo$3bob2ob2o$2b2ob2obo$bo6bo$bob2ob2o$2ob2obo$8bo$7b2o!
By the way, what is the SS census?
Yes, and SS is randomly generated slow salvos.
Searching:
b2-a5k6n7cs12-i3ij4k5j8
b2-a3c7cs12-i

Currently looking for help searching these rules.

User avatar
Majestas32
Posts: 549
Joined: November 20th, 2017, 12:22 pm
Location: 'Merica

Re: Thread for basic questions

Post by Majestas32 » December 19th, 2017, 1:00 pm

Tom Mazanec wrote:Is there a sort of Idiot's Guide to Golly for Dummies? that would help a newbie like me download it to their system (Mac in my case), learn the notation, tips for finding good patterns, etc.?
Just click the download links. Then we have:

- Set Algorithm and Set Rule in the Control menu
- Next gen (Tab key)
- Hyperspeed (Control menu)
- Clear (Edit menu)
- Select an area; Ctrl-5 for random fill (Preferences - Edit for fill percentage)
- Ctrl-C and Ctrl-V work converting back and forth from RLE.

Tbh I prefer Lifeviewer's interface for a lot of things. I just use Golly for ruletables and huge patterns
Searching:
b2-a5k6n7cs12-i3ij4k5j8
b2-a3c7cs12-i

Currently looking for help searching these rules.

User avatar
dvgrn
Moderator
Posts: 10687
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Thread for basic questions

Post by dvgrn » December 19th, 2017, 1:21 pm

Majestas32 wrote:
Tom Mazanec wrote:Is there a sort of Idiot's Guide to Golly for Dummies? that would help a newbie like me download it to their system (Mac in my case), learn the notation, tips for finding good patterns, etc.?
Just click the download links. Then we have:

- Set Algorithm and Set Rule in the Control menu
- Next gen (Tab key)...
Technically "Next gen" would be the Space key, and Tab is "Next step" -- where the step size is 8^N by default, or various delay lengths once you get down below 8^0.

For years now I've made sure to change Preferences > Control to use a base step of 2 instead of 8, and a minimum delay of 10 milliseconds -- that gives you much more fine-tuned control of how fast a pattern is running, by changing the step setting (with the + and - keys, or the + and - popup buttons in the upper left corner).

Another Golly default that it seems like most people change is under Preferences > View, unchecking "Reset/Undo will restore view". That way you can run a pattern, watch it, zoom in on an area of interest, and hit Ctrl+R to reset to T=0 to see what that area started out looking like. With the default setting you jump annoyingly back to the initial view.

For other hints and tips, maybe try the work-in-progress Tutorials area on the LifeWiki. There's a lot more to be written there, but it's a place to start anyway.

User avatar
Tom Mazanec
Posts: 32
Joined: December 18th, 2017, 5:22 pm

Re: Thread for basic questions

Post by Tom Mazanec » December 19th, 2017, 1:49 pm

I had a little trouble opening it. Perhaps you could put Golly on the App Store?

User avatar
Tom Mazanec
Posts: 32
Joined: December 18th, 2017, 5:22 pm

Re: Thread for basic questions

Post by Tom Mazanec » December 19th, 2017, 6:19 pm

What's the best density for a soup? I know 1 and 0 are pessimal, would 0.5 be optimal?

User avatar
Majestas32
Posts: 549
Joined: November 20th, 2017, 12:22 pm
Location: 'Merica

Re: Thread for basic questions

Post by Majestas32 » December 19th, 2017, 6:22 pm

Somebody did experiments and it turned out to be 37.5% for Life. For Highlife or 2x2 and related it's more like 40%
Searching:
b2-a5k6n7cs12-i3ij4k5j8
b2-a3c7cs12-i

Currently looking for help searching these rules.

User avatar
Tom Mazanec
Posts: 32
Joined: December 18th, 2017, 5:22 pm

Re: Thread for basic questions

Post by Tom Mazanec » December 19th, 2017, 8:17 pm

Majestas32 wrote:Somebody did experiments and it turned out to be 37.5% for Life. For Highlife or 2x2 and related it's more like 40%
I suspect that the somebody tried 20 densities from 25% to 75%.

Post Reply