Page 31 of 68

Re: Thread for basic non-CGOL questions

Posted: September 1st, 2023, 11:38 pm
by GUYTU6J
Chai wrote: September 1st, 2023, 12:54 pm When running a single dot in the rule B1/S012345678, at generations (2^n)-1, as n approaches infinity, the pattern's density *appears* to approach 1/3. Does it actually approach 1/3? If so, why? (if there's a meaningful answer to the second question)
hotdogPi wrote: September 1st, 2023, 1:53 pm I'm getting 4/9, not 1/3.
hotdogPi wrote: September 1st, 2023, 8:18 pm I am getting 1/3 for B1c rather than B1. Is that what you meant?
注意力集中

Code: Select all

x = 1, y = 1, rule = B1c/S012345678
o!
Apparently at generations 0, 1, 3, 7, ..., 2^n-1, the bounding box is 1^2, 3^2, 7^2, 15^2, ..., [2^(n+1)-1]^2 and the population is 1, 5, 21, 85, ..., [4^(n+1)-1]/3 with recurrence relation pop_(n+1) = 4*pop_n+1 suggested by a substitution rule of patterns. So the density is {[4^(n+1)-1]/3}/{[2^(n+1)-1]^2} ≈ {4^(n+1)/3}/{4^(n+1)} = 1/3.

Code: Select all

x = 1, y = 1, rule = B1/S012345678
o!
Apparently at generations 0, 1, 3, 7, ..., 2^n-1, the bounding box is 1^2, 3^2, 7^2, 15^2, ..., [2^(n+1)-1]^2 and the population is 1, 9, 33, 121, ..., [4^(n+2)+24*n-7]/9 with recurrence relation pop_(n+1) = 4*pop_n-8*n+5 suggested by a substitution rule of patterns. So the density is {[4^(n+2)+24*n-7]/9}/{[2^(n+1)-1]^2} ≈ {4^(n+2)/9}/{[4^(n+1)} = 4/9.

Re: Thread for basic non-CGOL questions

Posted: September 2nd, 2023, 1:26 am
by Chai
I did mean B1c - sorry for the mistake.

Re: Thread for basic non-CGOL questions

Posted: September 2nd, 2023, 2:11 am
by unname4798
GUYTU6J wrote: September 1st, 2023, 11:38 pm 注意力集中
I don't understand this.

Re: Thread for basic non-CGOL questions

Posted: September 2nd, 2023, 8:53 am
by Haycat2009
Is Rules W75, W89, W124, W137 and W193 turing-complete?

Re: Thread for basic non-CGOL questions

Posted: September 5th, 2023, 9:33 pm
by MEisSCAMMER
Haycat2009 wrote: September 2nd, 2023, 8:53 am Is Rules W75, W89, W124, W137 and W193 turing-complete?
Rules 124, 137, and 193 are all variants (under black/white reversal and reflection) of 110, which is Turing-complete, so by extension these are too. I don't believe the others have been proved either way.

Re: Thread for basic non-CGOL questions

Posted: September 5th, 2023, 11:11 pm
by Haycat2009
MEisSCAMMER wrote: September 5th, 2023, 9:33 pm
Haycat2009 wrote: September 2nd, 2023, 8:53 am Is Rules W75, W89, W124, W137 and W193 turing-complete?
Rules 124, 137, and 193 are all variants (under black/white reversal and reflection) of 110, which is Turing-complete, so by extension these are too. I don't believe the others have been proved either way.
Then why does everyone talk about W110? Why not W124, W137 or W193?

Re: Thread for basic non-CGOL questions

Posted: September 6th, 2023, 9:45 am
by MEisSCAMMER
Haycat2009 wrote: September 5th, 2023, 11:11 pm
MEisSCAMMER wrote: September 5th, 2023, 9:33 pm
Haycat2009 wrote: September 2nd, 2023, 8:53 am Is Rules W75, W89, W124, W137 and W193 turing-complete?
Rules 124, 137, and 193 are all variants (under black/white reversal and reflection) of 110, which is Turing-complete, so by extension these are too. I don't believe the others have been proved either way.
Then why does everyone talk about W110? Why not W124, W137 or W193?
Because 110 was found first. No one really cares about B0123478/S01234678 even though it's the black/white reversal of Life, and the same reasoning applies to W110.

Re: Thread for basic non-CGOL questions

Posted: September 9th, 2023, 12:06 pm
by confocaloid
AlbertArmStain wrote: May 13th, 2022, 6:31 pm Is there any reflectors based on this reaction?

Code: Select all

x = 3, y = 8, rule = B34nq/S234q
o$b2o$2o4$2o$2o!
I also wonder if there’s a rule where the block is a reflector and a splitter.
The block can be made into a sparky statorless glider eater:

Code: Select all

x = 28, y = 38, rule = B34nq5c6in/S234qz
27bo$25b2o$26b2o8$17bo$15b2o$16b2o18$bo$2bo$3o4$2o$2o!
This seems promising:

Code: Select all

x = 3, y = 8, rule = B34nq5c7c/S234q
o$b2o$2o4$2o$2o!

Code: Select all

x = 3, y = 8, rule = B34nq5c8/S234q6n
o$b2o$2o4$2o$2o!

Code: Select all

x = 3, y = 8, rule = B34cnq5c/S234q6n
o$b2o$2o4$2o$2o!
What are known examples of small statorless stable spaceship reflectors?

Re: Thread for basic non-CGOL questions

Posted: September 9th, 2023, 6:37 pm
by toroidalet
Here's a splitter, though it's maybe not in the direction you hoped for:

Code: Select all

x = 3, y = 8, rule = B34nq5ce6in7c8/S23-e4cqz5e6in7e8
o$b2o$2o4$2o$2o!
This is the awful script I used to find it, an ugly hack of Rulesrc. (I had designed it hoping to find a spaceship like the tlife puffer, but it works here):

Code: Select all

# Glidersrc.py
#
# Arie Paap, Aug 2017
# Nathaniel Johnston (nathaniel@nathanieljohnston.com), June 2009.
# Updated by: Peter, NASZVADI (), June 2017.
# Grafted by Rhombic, Aug 2017.
# Ruined by toroidalet, Sep 2021, Sep 2023.

import golly as g
import itertools
import random

# Search parameters

# Stop if pattern is a ship with this minimum period
minShipP = 1
# Stop if pattern is an oscillator with this minimum period
minP = 3
# Maximum period to test the pattern for
maxGen = 1000
# Maximum population in any phase
maxPop = 300
# Allow search for oscillators
bOsc = False


import golly as g
from glife import validint
from string import replace

Hensel = [
    ['0'],
    ['1c', '1e'],
    ['2a', '2c', '2e', '2i', '2k', '2n'],
    ['3a', '3c', '3e', '3i', '3j', '3k', '3n', '3q', '3r', '3y'],
    ['4a', '4c', '4e', '4i', '4j', '4k', '4n', '4q', '4r', '4t', '4w', '4y', '4z'],
    ['5a', '5c', '5e', '5i', '5j', '5k', '5n', '5q', '5r', '5y'],
    ['6a', '6c', '6e', '6i', '6k', '6n'],
    ['7c', '7e'],
    ['8']
]
if g.numlayers() == g.maxlayers():
    g.exit("no layers")
# Python versions < 2.4 don't have "sorted" built-in
try:
    sorted
except NameError:
    def sorted(inlist):
        outlist = list(inlist)
        outlist.sort()
        return outlist

# --------------------------------------------------------------------

def chunks(l, n):
    for i in range(0, len(l), n):
        yield l[i:i+n]

# --------------------------------------------------------------------

def rulestringopt(a):
    result = ''
    context = ''
    lastnum = ''
    lastcontext = ''
    for i in a:
        if i in 'BS':
            context = i
            result += i
        elif i in '012345678':
            if (i == lastnum) and (lastcontext == context):
                pass
            else:
                lastcontext = context
                lastnum = i
                result += i
        else:
            result += i
    result = replace(result, '4aceijknqrtwyz', '4')
    result = replace(result, '3aceijknqry', '3')
    result = replace(result, '5aceijknqry', '5')
    result = replace(result, '2aceikn', '2')
    result = replace(result, '6aceikn', '6')
    result = replace(result, '1ce', '1')
    result = replace(result, '7ce', '7')
    return result

clist = []
rule = g.getrule().split(':')[0]

fuzzer = rule + '9'
oldrule = rule
rule = ''
context = ''
deletefrom = []
for i in fuzzer:
    if i == '-':
        deletefrom = [x[1] for x in Hensel[int(context)]]
    elif i in '0123456789/S':
        if deletefrom:
            rule += ''.join(deletefrom)
            deletefrom = []
        context = i
    if len(deletefrom) == 0:
        rule += i
    elif i in deletefrom:
        deletefrom.remove(i)
rule = rule.strip('9')

if not (rule[0] == 'B' and '/S' in rule):
    g.exit('Please set Golly to a Life-like rule.')

if g.empty():
    g.exit('The pattern is empty.')

s = g.getstring('How many generations to remain unchanged:', '', 'Rules calculator')
if not validint(s):
    g.exit('Bad number: %s' % s)

w = g.getstring('final population', g.getpop(), '')
if not validint(w):
    g.exit('Bad number: %s' % s)

n = g.getstring('Number of results', "1", '')
if not validint(n):
    g.exit('Bad number: %s' % s)

numsteps = int(s)
if numsteps < 1:
    g.exit('Period must be at least 1.')

nresults=int(n)
results=[]

g.select(g.getrect())
g.copy()
s = int(s)

for i in range(0,s):
    g.run(1)
    clist.append(list(chunks(g.getcells(g.getrect()), 2)))
    mcc = min(clist[i])
    clist[i] = [[x[0] - mcc[0], x[1] - mcc[1]] for x in clist[i]]

g.show('Processing...')

ruleArr = rule.split('/')
ruleArr[0] = ruleArr[0].lstrip('B')
ruleArr[1] = ruleArr[1].lstrip('S')

b_need = []
b_OK = []
s_need = []
s_OK = []

context = ''
fuzzed = ruleArr[0] + '9'
for i in fuzzed:
    if i in '0123456789':
        if len(context) == 1:
            b_need += Hensel[int(context)]
            b_OK += Hensel[int(context)]
        context = i
    elif context != '':
        b_need.append(context[0] + i)
        b_OK.append(context[0] + i)
        context += context[0]
context = ''
fuzzed = ruleArr[1] + '9'
for i in fuzzed:
    if i in '0123456789':
        if len(context) == 1:
            s_need += Hensel[int(context)]
            s_OK += Hensel[int(context)]
        context = i
    elif context != '':
        s_need.append(context[0] + i)
        s_OK.append(context[0] + i)
        context += context[0]

for i in [iter2 for iter1 in Hensel for iter2 in iter1]:
    if not i in b_OK:
        b_OK.append(i)
        execfor = 1
        # B0 and nontotalistic rulestrings are mutually exclusive
        try:
            g.setrule(rulestringopt('B' + ''.join(b_OK) + '/S' + ruleArr[1]))
        except:
            b_OK.remove(i)
            execfor = 0
        for j in range(0, s * execfor):
            g.run(1)
            try:
                dlist = list(chunks(g.getcells(g.getrect()), 2))
                mcc = min(dlist)
                dlist = [[x[0] - mcc[0], x[1] - mcc[1]] for x in dlist]
                if not(clist[j] == dlist):
                    b_OK.remove(i)
                    break
            except:
                b_OK.remove(i)
                break
        g.new('')
        g.paste(0, 0, 'or')
        g.select(g.getrect())
        b_OK.sort()

    if not i in s_OK:
        s_OK.append(i)
        execfor = 1
        # B0 and nontotalistic rulestrings are mutually exclusive
        try:
            g.setrule(rulestringopt('B' + ruleArr[0] + '/S' + ''.join(s_OK)))
        except:
            s_OK.remove(i)
            execfor = 0
        for j in range(0, s * execfor):
            g.run(1)
            try:
                dlist = list(chunks(g.getcells(g.getrect()), 2))
                mcc = min(dlist)
                dlist = [[x[0] - mcc[0], x[1] - mcc[1]] for x in dlist]
                if not(clist[j] == dlist):
                    s_OK.remove(i)
                    break
            except:
                s_OK.remove(i)
                break
        g.new('')
        g.paste(0, 0, 'or')
        g.select(g.getrect())
        s_OK.sort()

    if i in b_need:
        b_need.remove(i)
        g.setrule(rulestringopt('B' + ''.join(b_need) + '/S' + ruleArr[1]))
        for j in range(0, s):
            g.run(1)
            try:
                dlist = list(chunks(g.getcells(g.getrect()), 2))
                mcc = min(dlist)
                dlist = [[x[0] - mcc[0], x[1] - mcc[1]] for x in dlist]
                if not(clist[j] == dlist):
                    b_need.append(i)
                    break
            except:
                b_need.append(i)
                break
        g.new('')
        g.paste(0, 0, 'or')
        g.select(g.getrect())
        b_need.sort()

    if i in s_need:
        s_need.remove(i)
        g.setrule(rulestringopt('B' + ruleArr[0] + '/S' + ''.join(s_need)))
        for j in range(0, s):
            g.run(1)
            try:
                dlist = list(chunks(g.getcells(g.getrect()), 2))
                mcc = min(dlist)
                dlist = [[x[0] - mcc[0], x[1] - mcc[1]] for x in dlist]
                if not(clist[j] == dlist):
                    s_need.append(i)
                    break
            except:
                s_need.append(i)
                break
        g.new('')
        g.paste(0, 0, 'or')
        g.select(g.getrect())
        s_need.sort()

g.setrule(oldrule)
ruleres = 'B' + ''.join(sorted(b_need)) + '/S' + ''.join(sorted(s_need)) + \
    ' - B' + ''.join(sorted(b_OK)) + '/S' + ''.join(sorted(s_OK))
g.show(rulestringopt(ruleres))

ruleB="B"+''.join(sorted(b_need))
ruleS="S"+''.join(sorted(s_need))
isotropiclistB = sorted(b_OK)
isotropiclistS = sorted(s_OK)

# Remove B0 and B1 conditions
for wrongvalues in ["0","1c","1e"]:
    if wrongvalues in isotropiclistB:
        isotropiclistB.remove(wrongvalues)

# Generate a random isotropic rule which is likely to allow spaceships to exist
def randIsoRule():
    # Birth conditions
    prob = random.random()*0.55+0.05 # Random number between 0.05 and 0.6
    rulestr = ruleB
    for elem in isotropiclistB:
        if random.random()<prob: rulestr+=elem
    # Ensure rule has a chance of supporting ships
    if len(rulestr) == 1:
        # Add a random rule element
        rulestr+=random.choice(isotropiclistB)
    if not rulestr[1] in '23':
        # Add two random 2x or 3x rule elements
        rulestr+=random.choice(isotropiclistB[:16])
        rulestr+=random.choice(isotropiclistB[:16])
    
    # Survival conditions (force S0 for dot survival)
    prob = random.random()*0.55+0.05 # Random number between 0.05 and 0.6
    rulestr+='/'+ruleS
    for elem in isotropiclistS:
        if random.random()<prob: rulestr+=elem
    return(rulestr)
    
# ----------------------------------------------------------

# Return the minimum and maximum of the absolute value of a list of numbers
def minmaxofabs(v):
    v = map(abs, v)
    return min(v), max(v)

# Test a pattern in the given rule to determine if it reappears
def testRule(rulestr):
    r = g.getrect()
    if r:
        g.select(r)
        g.clear(0)
    g.putcells(testPatt)
    g.setrule(rulestr)
    for ii in xrange(maxGen):
        g.run(1)
        pop = int(g.getpop())
        if (pop < minPop or pop > maxPop):
            break
        elif (pop == testPop):
            w=g.getrect()
            for b in xrange(20):
                g.run(1)
                if (int(g.getpop()) == testPop):
                    k=1
                else:
                    k=0
                    break
            if k==1:
                if (g.getrect() == w):
                    k=0
                else:
                    w=g.getrect()
                    g.run(8)
                    if w != g.getrect():
                        rule=g.getrule()
                        if len(results)==0 or rule!=results[-1]:
                            results.append(g.getrule())
                        if len(results)==nresults:
                            return "p"
    return ()
    
# Set up the search with the current pattern
testRect = g.getrect()
testPop = int(w)
testPatt = g.transform(g.getcells(testRect),-testRect[0],-testRect[1])

if bOsc: minPop = 2 # Patterns with 0, or 1 cells can not be oscillators
else: minPop = 3 # Patterns with 0, 1, or 2 cells can not be ships

g.new('spRulesrc')

for ii in itertools.count(0,1):
    if bOsc==False:
        while 1:
            j=randIsoRule()
            if "2a" in j: break
            if "2c" in j: break
            if "3i" in j: break
    else:
        j=randIsoRule()
    result = testRule(j)
    if result:
        # Interesting pattern found
        break
    if (ii % 1000 == 0):
        g.select([])
        g.show('%d candidate rules tested for interesting patterns' % (ii))
        g.update()
        g.new("")
        
g.new('Search result')
if result:
    g.putcells(testPatt)
    if (len(result) == 1):
        # Pattern is an oscillator
        description = ""
        g.getstring("Rules",str(results),"")
    elif (len(result) == 3):
        dx, dy, period = result
        dy, dx = minmaxofabs( (dx, dy) )
        if dy == 0:
            description = 'Found orthogonal spaceship with speed = %dc/%d' % (dx, period)
        elif dy == dx:
            description = 'Found diagonal spaceship with speed = %dc/%d' % (dx, period)
        else:
            description = 'Found knightship with speed = (%d, %d)c/%d' % (dx, dy, period)
    else:
        g.exit('Unrecognised pattern')
    g.show(description)
else:
    g.show('No results found')
Plug in a given number of generations to match, a target population and the number of results to find, and it looks for expanding patterns that stabilize at that constant population. You need to have space for one layer.
I used 20 generations and 5 results. The target population was 14.
It can generate a lot of false positives, which, in this case, were mainly (glider+blinker+beehive) and (different block+2 gliders). Just for fun, here is the best one:

Code: Select all

x = 3, y = 8, rule = B34cenq5ce8/S23-e4q5e6in
o$b2o$2o4$2o$2o!
EDIT: A better splitter, but still in the worst direction:

Code: Select all

x = 3, y = 8, rule = B34enq5ce7c8/S234q6i
bo$2bo$3o4$2o$2o!
It has enough clearance that you can send another one after it:

Code: Select all

x = 31, y = 47, rule = B34enq5ce7c8/S234q6i
3b2o$3b2o10$bo$2bo$3o26$29bo$30bo$28b3o4$28b2o$28b2o!
90° reflector!

Code: Select all

x = 3, y = 8, rule = B34enq6i8/S023-e4ceqz5e7e
bo$2bo$3o4$2o$2o!

Re: Thread for basic non-CGOL questions

Posted: September 10th, 2023, 9:28 am
by GUYTU6J
toroidalet wrote: September 9th, 2023, 6:37 pm This is the awful script I used to find it, an ugly hack of Rulesrc.
I can get it working after cleaning up some "from string import replace" and "xrange" things for python 3. One of the search results is this growing pattern somewhere near Harvest Moon:

Code: Select all

x = 18, y = 10, rule = B3-ckr5j/S2-i3-aekq4acqt5ac
3bo$2bobo$bobobo$obobobo7bo$bobobo7bobo$2bobo7bobobo$3bo3bo3bobobobo$
6b2o4bobobo$6bobo4bobo$14bo!
It is reminiscent of this pattern of yours...
toroidalet wrote: September 5th, 2017, 10:50 am What would this be called?

Code: Select all

x = 13, y = 5, rule = B3-y4q5a/S23-e
5bo4b2o$5bobobo2bo$b2o2b2o3b2o$o2bo$b2o!
Would it be called some arcane term like "Empty space unary counting shuttle™" or is there a simpler term for it?
... but the expanding loop can accommodate two gliders at once.

Code: Select all

x = 19, y = 11, rule = B3-ckr5j/S2-i3-aekq4acqt5ac
3bo$2bobo$bobobo4bobo$obobobo4b2o$bobobo5bo3bo$2bobo9bobo$3bo3bo5bobob
o$6b2o4bobobobo$6bobo4bobobo$14bobo$15bo!
There is certainly a huge number of glider + 4×4 checkerboard → glider + 4×4 checkerboard reactions under the rules in close proximity to Harvest Moon. Here comes the real question: what is the criterion for a reaction to be applicable to construct glider-based adjustable slope spaceships? (Oh wait, there are older examples for that.) If it is an oscillator made of gliders instead of a still life, it would be easier to build adjustable spaceships.

Re: Thread for basic non-CGOL questions

Posted: September 10th, 2023, 5:32 pm
by AforAmpere
Why is this called the 'logarithmic replicator'?

Code: Select all

x = 19, y = 3, rule = B36/S245
6o7b6o$o4bo7bo4bo$b4o9b4o!
As far as I can tell, the population hangs at a constant at the minima (approximately), and sqrt(t) at the maxima. Also, the bounding box follows sqrt(t) as well, so that's not it. I don't understand where the logarithmic part actually is. You can pick phases that align with log growth (2^t seems to align with logarithmic pop growth for one of the emulators I found), but that's cheating.

Re: Thread for basic non-CGOL questions

Posted: September 13th, 2023, 12:16 pm
by affamatodidio
From b3-ky5is23-k to b34ckqtyz5-aek6ace7cs23-k4cyz5eknr6-ce, both of the following things are true:
  • The teardrop evolves into a Figure Eight
  • The Pentadecathlon still exists

Code: Select all

x = 25, y = 4, rule = B34ckqtyz5-aek6ace7c/S23-k4cyz5eknr6-ce
b3o$o2bo$o2bo11b10o$b2o!
In a similar vein to Pentadecathlife, is there a sub-rulespace in this rulespace where the figure eight forms from the teardrop and the pentadecathlon is significantly more common than it is in regular life?


(oh, also... s8 can allow for a p9 figure eight that evolves from the traffic light + pentadec exists from B3-ky4kt5i/S23-k4q8 to B3-y4ckqtyz5-aekr6ace7/S23-k4qyz5eknr6-ce7c8... but I'm fairly certain that all of these rules are explosive)

Re: Thread for basic non-CGOL questions

Posted: September 13th, 2023, 2:57 pm
by silversmith
affamatodidio wrote: September 13th, 2023, 12:16 pm In a similar vein to Pentadecathlife, is there a sub-rulespace in this rulespace where the figure eight forms from the teardrop and the pentadecathlon is significantly more common than it is in regular life?
Sure, B3-ky5iy/S23-k6k to B34cktyz5-aek6ae7c/S23-k4cyz5knr6ikn is one such rulespace.

Code: Select all

x = 21, y = 4, rule = B3-ky4ct5iy/S23-k6k
b3o$o2bo15b2o$o2bo15b2o$b2o16b2o!

Re: Thread for basic non-CGOL questions

Posted: September 13th, 2023, 3:34 pm
by confocaloid
p8, p15, p38

Code: Select all

x = 21, y = 22, rule = B3-ky4c5iy/S23-k4c6ik
b3o$o2bo15b2o$o2bo15b2o$b2o16b2o10$8b6o8$8b6o!
Puffers

Code: Select all

x = 12, y = 19, rule = B3-ky4c5iy/S23-k4c6ik
4bo$ob4o$o7b2o$10bo$b3obo5bo$10bo$o7b2o$ob4o$4bo2$4bo$ob4o$o7b2o$10bo$
b3obo5bo$10bo$o7b2o$ob4o$4bo!

Code: Select all

x = 12, y = 25, rule = B3-ky4c5iy/S23-k4c6ik
4bo$ob4o$o7b2o$10bo$b3obo5bo$10bo$o7b2o$ob4o$4bo8$4bo$ob4o$o7b2o$10bo$
b3obo5bo$10bo$o7b2o$ob4o$4bo!

Re: Thread for basic non-CGOL questions

Posted: September 13th, 2023, 7:03 pm
by get_Snacked
silversmith wrote: September 13th, 2023, 2:57 pm ...
Sure, B3-ky5iy/S23-k6k to B34cktyz5-aek6ae7c/S23-k4cyz5knr6ikn is one such rulespace.

Code: Select all

x = 21, y = 4, rule = B3-ky4ct5iy/S23-k6k
b3o$o2bo15b2o$o2bo15b2o$b2o16b2o!
apgsearch seems to be going quite slow, which i think is because of long-lasting soups. is there a way to:
  1. make it shorter-lasting, and
  2. allow the R to evolve into a figure eight, like this:

    Code: Select all

    x = 3, y = 3, rule = B3-ky5i/S23-eky
    b2o$2o$bo!
    ? (note that this [most likely] requires removal of B5y, which makes the pentadecathlon substantially less common but probably still common enough.)

Re: Thread for basic non-CGOL questions

Posted: September 13th, 2023, 9:08 pm
by silversmith
get_Snacked wrote: September 13th, 2023, 7:03 pm apgsearch seems to be going quite slow, which i think is because of long-lasting soups. is there a way to:
  1. make it shorter-lasting, and
  2. allow the R to evolve into a figure eight, like this:

    Code: Select all

    x = 3, y = 3, rule = B3-ky5i/S23-eky
    b2o$2o$bo!
    ? (note that this [most likely] requires removal of B5y, which makes the pentadecathlon substantially less common but probably still common enough.)
Well, there is a rule which is shorter lasting, or at least enough to be searchable:
silversmith wrote: September 13th, 2023, 2:57 pm ...

Code: Select all

x = 21, y = 4, rule = B3-ky4ct5iy/S23-k6k
b3o$o2bo15b2o$o2bo15b2o$b2o16b2o!
https://catagolue.hatsya.com/census/b3-ky4ct5iys23-k6k

As for a rule which allows the R to evolve into a figure eight...probably? I don't know of one, but you could:
- start with a rule where an r evolves into a figure eight
- change it in a way that pentadecathlon is more common
- change it some more to make it non explosive

In any case, it would almost certainly be outside the previous rulespace, and so I will leave it as an exercise for the reader.

Re: Thread for basic non-CGOL questions

Posted: September 17th, 2023, 8:31 am
by pzq_alex
Haycat2009 wrote: September 5th, 2023, 11:11 pm
MEisSCAMMER wrote: September 5th, 2023, 9:33 pm
Haycat2009 wrote: September 2nd, 2023, 8:53 am Is Rules W75, W89, W124, W137 and W193 turing-complete?
Rules 124, 137, and 193 are all variants (under black/white reversal and reflection) of 110, which is Turing-complete, so by extension these are too. I don't believe the others have been proved either way.
Then why does everyone talk about W110? Why not W124, W137 or W193?
Being equivalent under black/white reversal and reflection forms an equivalent relation on the set of Wolfram rules. By convention, the one with smallest Wolfram number gets picked out of each equivalence class as the canonical representative.

Re: Thread for basic non-CGOL questions

Posted: September 30th, 2023, 8:58 am
by haaaaaands
how was it to make the rules?

just asking

Re: Thread for basic non-CGOL questions

Posted: September 30th, 2023, 9:01 am
by hotdogPi
haaaaaands wrote: September 30th, 2023, 8:58 am how was it to make the rules?

just asking
This explains it:

https://en.wikipedia.org/wiki/Elementar ... _automaton

As for how to run it: just put in "W110" (with any even number below 255) in Golly. Golly doesn't support odd numbers.

Re: Thread for basic non-CGOL questions

Posted: September 30th, 2023, 5:58 pm
by MEisSCAMMER
hotdogPi wrote: September 30th, 2023, 9:01 am Golly doesn't support odd numbers.
It does under "1D.lua" in the scripts folder.

Re: Thread for basic non-CGOL questions

Posted: October 6th, 2023, 2:34 pm
by muzik
Can someone figure out the period of this object? oscar.lua gave up after 500 million generations plus:

Code: Select all

x = 54, y = 2, rule = MarBlocks-5-rep
o49bobo$bo48bo2bo!

Re: Thread for basic non-CGOL questions

Posted: October 7th, 2023, 1:02 am
by toroidalet
According to this script, the period is a factor of (5^21 -1)/2=238,418,579,101,562 (222,222,222,222,222,222,222 in base 5). I think it's exactly that number, but I can't prove it. Either way, it seems unlikely you could find it with oscar.

Code: Select all

onestep=[[-1,1],[1,1]]

length=98
mod=5

#Because it's a mod replicator, we can advance a pattern by n generations by advancing each replicator n generations and adding them all up.

def apply_steps(unit1,unit2):
    tape=[]
    for i in unit1:
        for j in unit2:
            tape.append([(i[0]+j[0])%length,(i[1]*j[1])%mod])
    tape.sort()
    curr=0
    for i in range(len(tape)):
        curr=(curr+tape[i][1])%mod
        if i==len(tape)-1 or tape[i][0]!=tape[i+1][0]:
            tape[i][1]=curr
            curr=0
        else:
            tape[i][1]=0
            curr=(curr+tape[i][1])%mod
    return [i for i in tape if i[1]]

def five_times(unit):
    return apply_steps(apply_steps(apply_steps(unit,unit),apply_steps(unit,unit)),unit)

def n_times(unit,n):
    curr=[[0,1]]
    for i in range(n):
        curr=apply_steps(curr,unit)
    return curr

curr=onestep
curr2=[[0,1],[2,4]]
curr3=[[0,1],[2,4]]
for i in range(22):
    print(i)
    print(curr2)
    curr2=apply_steps(curr,apply_steps(curr,curr2))
    curr3=apply_steps(curr,curr3)
    curr=five_times(curr)
I ran this script directly on the terminal. It might require some fiddling for other lengths or mods.

Re: Thread for basic non-CGOL questions

Posted: October 9th, 2023, 3:52 pm
by TYCF
Are there cellular automata with this neighbourhood(The red part)?

Code: Select all

x = 72, y = 82, rule = B3/S23Super
20.12F$20.12F$20.2F8.2F$20.2F8.2F$20.2F8.2F$20.2F8.2F$20.2F8.2F$20.2F
8.2F$20.2F8.2F$20.2F8.2F$10.12F8.32F$10.12F8.32F$10.2F8.2F8.2F18.2F8.
2F$10.2F8.2F8.2F18.2F8.2F$10.2F8.2F8.2F18.2F8.2F$10.2F8.2F8.2F18.2F8.
2F$10.2F8.2F8.2F18.2F8.2F$10.2F8.2F8.2F18.2F8.2F$10.2F8.2F8.2F18.2F8.
2F$10.2F8.2F8.2F18.2F8.2F$12F8.32F8.2F$12F8.32F8.2F$2F8.2F8.2F18D2F8D
2F8.2F$2F8.2F8.2F18D2F8D2F8.2F$2F8.2F8.2F18D2F8D2F8.2F$2F8.2F8.2F18D2F
8D2F8.2F$2F8.2F8.2F18D2F8D2F8.2F$2F8.2F8.2F18D2F8D2F8.2F$2F8.2F8.2F18D
2F8D2F8.2F$2F8.2F8.2F18D2F8D2F8.2F$2F8.32F8D22F$2F8.32F8D22F$2F8.2F18D
2F8B2F8D2F18.2F$2F8.2F18D2F8B2F8D2F18.2F$2F8.2F18D2F8B2F8D2F18.2F$2F8.
2F18D2F8B2F8D2F18.2F$2F8.2F18D2F8B2F8D2F18.2F$2F8.2F18D2F8B2F8D2F18.2F
$2F8.2F18D2F8B2F8D2F18.2F$2F8.2F18D2F8B2F8D2F18.2F$32F8B32F$32F8B32F$
2F18.2F8D2F8B2F18D2F8.2F$2F18.2F8D2F8B2F18D2F8.2F$2F18.2F8D2F8B2F18D2F
8.2F$2F18.2F8D2F8B2F18D2F8.2F$2F18.2F8D2F8B2F18D2F8.2F$2F18.2F8D2F8B2F
18D2F8.2F$2F18.2F8D2F8B2F18D2F8.2F$2F18.2F8D2F8B2F18D2F8.2F$22F8D32F8.
2F$22F8D32F8.2F$10.2F8.2F8D2F18D2F8.2F8.2F$10.2F8.2F8D2F18D2F8.2F8.2F
$10.2F8.2F8D2F18D2F8.2F8.2F$10.2F8.2F8D2F18D2F8.2F8.2F$10.2F8.2F8D2F18D
2F8.2F8.2F$10.2F8.2F8D2F18D2F8.2F8.2F$10.2F8.2F8D2F18D2F8.2F8.2F$10.2F
8.2F8D2F18D2F8.2F8.2F$10.2F8.32F8.12F$10.2F8.32F8.12F$10.2F8.2F18.2F8.
2F8.2F$10.2F8.2F18.2F8.2F8.2F$10.2F8.2F18.2F8.2F8.2F$10.2F8.2F18.2F8.
2F8.2F$10.2F8.2F18.2F8.2F8.2F$10.2F8.2F18.2F8.2F8.2F$10.2F8.2F18.2F8.
2F8.2F$10.2F8.2F18.2F8.2F8.2F$10.32F8.12F$10.32F8.12F$40.2F8.2F$40.2F
8.2F$40.2F8.2F$40.2F8.2F$40.2F8.2F$40.2F8.2F$40.2F8.2F$40.2F8.2F$40.12F
$40.12F!




Re: Thread for basic non-CGOL questions

Posted: October 9th, 2023, 4:38 pm
by MEisSCAMMER
TYCF wrote: October 9th, 2023, 3:52 pm Are there cellular automata with this neighbourhood?
Did you mean the 8x18 unit cell with single-cell padding that is shown, or a domino unit cell?

edit: replaced "spacing" with "padding", more clear that way. By the way, does anyone know how you format strikethrough?

Re: Thread for basic non-CGOL questions

Posted: October 9th, 2023, 5:05 pm
by TYCF
MEisSCAMMER wrote: October 9th, 2023, 4:38 pm
TYCF wrote: October 9th, 2023, 3:52 pm Are there cellular automata with this neighbourhood?
Did you mean the 8x18 unit cell with single-cell padding that is shown, or a domino unit cell?

edit: replaced "spacing" with "padding", more clear that way. By the way, does anyone know how you format strikethrough?
A cellular automation with cells that are dominos arranged in this way.