A script could certainly be written to find periods for these kinds of constructions, but I'm not sure there's any kind of general-purpose script out there at the moment. The general idea would be togmc_nxtman wrote:Is there some way of running a script to tell me the period for this? Does it even have a period?
1) let the pattern run for a good while until it settles into a predictable "orbit". In the above case the settling happens pretty much instantly, but often something a little different will happen as the pattern is first getting started up. Let's say the script just runs until T=10000 -- that will usually be plenty.
2) Have the script step the pattern one tick at a time, and for each generation, record a hash value for the leading 1000 lines (let's say) of the pattern: g.hash(g.getrect()[:2]+[1000])
3) As soon as the hash value for T=10000+N matches the hash value for T=10000, stop and report N.
Here's a sample script that works for me on the pattern you posted. To make it work for other similar patterns, it might be necessary to change the SPEED setting at the top to match the speed of the northward-traveling collision point (which will be different if the rake period is different).
Code: Select all
import golly as g
HASH_WIDTH, HASH_HEIGHT = 1000, 1000
INIT_T = 10000
SPEED = 1.0/6
g.show("Running " + str(INIT_T) + " ticks...")
g.run(INIT_T)
inithash = g.hash([-HASH_WIDTH/2,-int(INIT_T*SPEED),HASH_WIDTH, HASH_HEIGHT])
newhash, T = 0, 0
while newhash != inithash:
g.run(1)
newrect=[-HASH_WIDTH/2,-int((INIT_T+T)*SPEED),HASH_WIDTH, HASH_HEIGHT]
newhash = g.hash(newrect)
T+=1
if T%100==0:
g.select(newrect)
g.fitsel()
g.update()
g.show(str([T, inithash, newhash]))
g.note("Period of first "+str(HASH_HEIGHT)+" rows: " + str(T))The script reports a temporal periodicity of 28,440 ticks. Spatial periodicity is 4740 cells -- that seems to be where Extrementhusiast's number is coming from ( 18960/4 = 4740 ).
To manually calculate the periodicity of this kind of pattern, just run it for a long time and locate an obvious repeating element by inspection. For example, there's a collision on the right side that produces a century. The first century finishes settling at 17990 ticks; the second one settles at 46430 ticks. 46430 minus 17990 = 28440.
