B/S/N Rules

For discussion of other cellular automata.
Post Reply
User avatar
praosylen
Posts: 2449
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

B/S/N Rules

Post by praosylen »

While the preliminary discussion of these rules came from the Close Life Variants topic, I thought it would be best to make a new topic for them, as they are not "close life variants" in general. The notation means that the first number after N signifies the weight given to orthogonal neighbors, the second number after N signifies the weight given to diagonal neighbors, and the numbers after B and S are the birth and survival requirements for the weighted sum of neighbors, respectively. I have calculated that there are 2^50 = approximately 1.1259E15 essentially different such rules.
Here is one:

Code: Select all

@RULE B45_S034_N21
@TABLE
n_states:2
neighborhood:Moore
symmetries:none
var a={0,1}
var aa=a
var ab=a
var ac=a
var ad=a
var ae=a
var af=a
var ag=a
1,0,0,0,0,0,0,0,0,1
1,1,1,0,0,0,0,0,0,1
0,1,0,1,0,0,0,0,0,1
1,1,0,1,0,0,0,0,0,1
1,0,1,1,0,0,0,0,0,1
0,1,1,1,0,0,0,0,0,1
1,1,0,0,1,0,0,0,0,1
0,1,1,0,1,0,0,0,0,1
1,1,1,0,1,0,0,0,0,1
1,0,0,1,1,0,0,0,0,1
0,1,0,1,1,0,0,0,0,1
0,0,1,1,1,0,0,0,0,1
1,0,1,1,1,0,0,0,0,1
0,1,0,0,0,1,0,0,0,1
1,1,0,0,0,1,0,0,0,1
1,0,1,0,0,1,0,0,0,1
0,1,1,0,0,1,0,0,0,1
0,0,0,1,0,1,0,0,0,1
1,0,0,1,0,1,0,0,0,1
0,0,1,1,0,1,0,0,0,1
1,0,0,0,1,1,0,0,0,1
0,1,0,0,1,1,0,0,0,1
0,0,1,0,1,1,0,0,0,1
1,0,1,0,1,1,0,0,0,1
0,0,0,1,1,1,0,0,0,1
1,1,0,0,0,0,1,0,0,1
0,1,1,0,0,0,1,0,0,1
1,1,1,0,0,0,1,0,0,1
1,0,0,1,0,0,1,0,0,1
0,1,0,1,0,0,1,0,0,1
0,0,1,1,0,0,1,0,0,1
1,0,1,1,0,0,1,0,0,1
0,1,0,0,1,0,1,0,0,1
1,1,0,0,1,0,1,0,0,1
1,0,1,0,1,0,1,0,0,1
0,1,1,0,1,0,1,0,0,1
0,0,0,1,1,0,1,0,0,1
1,0,0,1,1,0,1,0,0,1
0,0,1,1,1,0,1,0,0,1
1,0,0,0,0,1,1,0,0,1
0,1,0,0,0,1,1,0,0,1
0,0,1,0,0,1,1,0,0,1
1,0,1,0,0,1,1,0,0,1
0,0,0,1,0,1,1,0,0,1
0,0,0,0,1,1,1,0,0,1
1,0,0,0,1,1,1,0,0,1
0,0,1,0,1,1,1,0,0,1
0,1,0,0,0,0,0,1,0,1
1,1,0,0,0,0,0,1,0,1
1,0,1,0,0,0,0,1,0,1
0,1,1,0,0,0,0,1,0,1
0,0,0,1,0,0,0,1,0,1
1,0,0,1,0,0,0,1,0,1
0,0,1,1,0,0,0,1,0,1
1,0,0,0,1,0,0,1,0,1
0,1,0,0,1,0,0,1,0,1
0,0,1,0,1,0,0,1,0,1
1,0,1,0,1,0,0,1,0,1
0,0,0,1,1,0,0,1,0,1
0,0,0,0,0,1,0,1,0,1
1,0,0,0,0,1,0,1,0,1
0,0,1,0,0,1,0,1,0,1
0,0,0,0,1,1,0,1,0,1
1,0,0,0,0,0,1,1,0,1
0,1,0,0,0,0,1,1,0,1
0,0,1,0,0,0,1,1,0,1
1,0,1,0,0,0,1,1,0,1
0,0,0,1,0,0,1,1,0,1
0,0,0,0,1,0,1,1,0,1
1,0,0,0,1,0,1,1,0,1
0,0,1,0,1,0,1,1,0,1
0,0,0,0,0,1,1,1,0,1
1,1,0,0,0,0,0,0,1,1
0,1,1,0,0,0,0,0,1,1
1,1,1,0,0,0,0,0,1,1
1,0,0,1,0,0,0,0,1,1
0,1,0,1,0,0,0,0,1,1
0,0,1,1,0,0,0,0,1,1
1,0,1,1,0,0,0,0,1,1
0,1,0,0,1,0,0,0,1,1
1,1,0,0,1,0,0,0,1,1
1,0,1,0,1,0,0,0,1,1
0,1,1,0,1,0,0,0,1,1
0,0,0,1,1,0,0,0,1,1
1,0,0,1,1,0,0,0,1,1
0,0,1,1,1,0,0,0,1,1
1,0,0,0,0,1,0,0,1,1
0,1,0,0,0,1,0,0,1,1
0,0,1,0,0,1,0,0,1,1
1,0,1,0,0,1,0,0,1,1
0,0,0,1,0,1,0,0,1,1
0,0,0,0,1,1,0,0,1,1
1,0,0,0,1,1,0,0,1,1
0,0,1,0,1,1,0,0,1,1
0,1,0,0,0,0,1,0,1,1
1,1,0,0,0,0,1,0,1,1
1,0,1,0,0,0,1,0,1,1
0,1,1,0,0,0,1,0,1,1
0,0,0,1,0,0,1,0,1,1
1,0,0,1,0,0,1,0,1,1
0,0,1,1,0,0,1,0,1,1
1,0,0,0,1,0,1,0,1,1
0,1,0,0,1,0,1,0,1,1
0,0,1,0,1,0,1,0,1,1
1,0,1,0,1,0,1,0,1,1
0,0,0,1,1,0,1,0,1,1
0,0,0,0,0,1,1,0,1,1
1,0,0,0,0,1,1,0,1,1
0,0,1,0,0,1,1,0,1,1
0,0,0,0,1,1,1,0,1,1
1,0,0,0,0,0,0,1,1,1
0,1,0,0,0,0,0,1,1,1
0,0,1,0,0,0,0,1,1,1
1,0,1,0,0,0,0,1,1,1
0,0,0,1,0,0,0,1,1,1
0,0,0,0,1,0,0,1,1,1
1,0,0,0,1,0,0,1,1,1
0,0,1,0,1,0,0,1,1,1
0,0,0,0,0,1,0,1,1,1
0,0,0,0,0,0,1,1,1,1
1,0,0,0,0,0,1,1,1,1
0,0,1,0,0,0,1,1,1,1
0,0,0,0,1,0,1,1,1,1
1,a,aa,ab,ac,ad,ae,af,ag,0
I explored this rule a while ago with a manually generated table, but it appears my manually generated table was wrong. Here are some objects:

Code: Select all

x = 87, y = 19, rule = B45_S034_N21
64b2o$65bo3b2obo$64bo4bob2o$64b2ob2o$44b3o19bo2bo$40bo25bo2bo$4bo3bo3b
o17b2o2b3o3bo4bo7bo13b2ob2o6bo4bo2bo$bo3bo2bo4bo6bo4b2o2bo9bobo3bo4bob
2o3bob2o2b2obo4bo5bo5bo2bo$8bo6bo2bo4bo2bo4bo3bo9bo4b3o4b2obo2bob2o3bo
12bo2bo$14bo3b2o3b2o4b2o8b3o28b2o3b4o4bo2bo$34b3o7b3o4$24bo$8bo2bo3b2o
$2bo2bo10bo7b2o$2bo2bo2bo2bo4bo4bobobo$3b2o4b2o4bo7b2o!
From left to right along the top: dot, checker, blinker, double checker, unnamed SL, carrier, 3 unnamed p2s, 2 unnamed p4s, snake, 5th-smallest SL that I can find, 2 unnamed p4s.
Along the bottom: c/2 ("Pulse"), c/2 ("Hammer"), c/4 ("Switchback"), unnamed (1,1)c/3.
Am currently running apgsearch to see what I can find.

EDITS:
A script that can generate these rules:

Code: Select all

import golly as g
def bits(n):
    l = []
    for i in xrange(8):
        l.append((n&2**i)/2**i)
    return l
rule = g.getstring("Enter rule in B_S_N format")
parsed = rule.replace("B","").replace("S","").replace("N","").split("_")
dict = {"0":0,
        "1":1,
        "2":2,
        "3":3,
        "4":4,
        "5":5,
        "6":6,
        "7":7,
        "8":8,
        "9":9,
        "a":10,
        "b":11,
        "c":12,
        "d":13,
        "e":14,
        "f":15,
        "g":16,
        "h":17,
        "i":18,
        "j":19,
        "k":20,
        "l":21,
        "m":22,
        "n":23,
        "o":24,
        "-1":-1,
        "-2":-2,
        "-3":-3,
        "-4":-4,
        "-5":-5,
        "-6":-6,
        "-7":-7,
        "-8":-8,
        "-9":-9,
        "-a":-10,
        "-b":-11,
        "-c":-12,
        "-d":-13,
        "-e":-14,
        "-f":-15,
        "-g":-16,
        "-h":-17,
        "-i":-18,
        "-j":-19,
        "-k":-20,
        "-l":-21,
        "-m":-22,
        "-n":-23,
        "-o":-24,
       }
parsed2 = []
for i in xrange(3):
    parsed2.append([])
    c = 0
    while c < len(parsed[i]):
        if parsed[i][c] == "-":
            parsed2[i].append(dict[parsed[i][c]+parsed[i][c+1]])
            c += 2
        else:
            parsed2[i].append(dict[parsed[i][c]])
            c += 1
parsed = parsed2
table = "@RULE "+rule+"""
@TABLE
n_states:2
neighborhood:Moore
symmetries:none
var a={0,1}
var aa=a
var ab=a
var ac=a
var ad=a
var ae=a
var af=a
var ag=a"""
for i in xrange(256):
    b = bits(i)
    b2 = [str(n) for n in b]
    ws = 0
    for i in xrange(len(b)/2):
        ws += b[2*i]*parsed[2][0]
        ws += b[2*i+1]*parsed[2][1]
    if ws in parsed[0]:
        table += "\n0,"+",".join(b2)+",1"
    if ws in parsed[1]:
        table += "\n1,"+",".join(b2)+",1"
table += "\n1,a,aa,ab,ac,ad,ae,af,ag,0"
g.setclipstr(table)
1-3-16: Updated script to allow rules >9 and negative rules by using a-o for 10-24 and dashes before negative conditions.
Last edited by praosylen on January 3rd, 2016, 2:08 pm, edited 2 times in total.
former username: A for Awesome
praosylen#5847 (Discord)

The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...
drc
Posts: 1664
Joined: December 3rd, 2015, 4:11 pm

Re: B/S/N Rules

Post by drc »

Ant-like structure:

Code: Select all

x = 35, y = 11, rule = B45_S034_N21
2o$2bob2o$2o4bob2o$4b2o4bob2o$8b2o4bob2o$12b2o4bob2o$16b2o4bob2o$20b2o
4bob2o$24b2o4bob2o$28b2o4bo$32b2o!
User avatar
praosylen
Posts: 2449
Joined: September 13th, 2014, 5:36 pm
Location: Pembina University, Home of the Gliders
Contact:

Re: B/S/N Rules

Post by praosylen »

Two more oscs:

Code: Select all

x = 12, y = 5, rule = B45_S034_N21
2o7bo$o9bo$obo$3bo6bo$3bo7bo!
Edit: An additional five:

Code: Select all

x = 58, y = 5, rule = B45_S034_N21
3bo9b2o11bo12b3o13b3o$2ob2o10bo10bobo23bo$b2ob2o8bo12bo2bo9bobo9bo$2bo
13bo12bobo9bo10bo$14b2o15bo9bo13b3o!
former username: A for Awesome
praosylen#5847 (Discord)

The only decision I made was made
of flowers, to jump universes to one of springtime in
a land of former winter, where no invisible walls stood,
or could stand for more than a few hours at most...
User avatar
BlinkerSpawn
Posts: 1993
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: B/S/N Rules

Post by BlinkerSpawn »

The last p6 is extensible:

Code: Select all

x = 33, y = 5, rule = B45_S034_N21
3b3o5b3o5b3o5b3o$o7bo7bo7bo7bo$o7bobobobobo3bo3bo7bo$o7bo7bo7bo7bo$3b
3o5b3o5b3o5b3o!
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image
User avatar
Saka
Posts: 3626
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: B/S/N Rules

Post by Saka »

I don't get the meaning of The Number After N
jarring cyan
User avatar
BlinkerSpawn
Posts: 1993
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: B/S/N Rules

Post by BlinkerSpawn »

"/Nab" denotes the weights of the adjacent cells. Orthogonal neighbors have weight a, diagonal neighbors have weight b.
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image
User avatar
Saka
Posts: 3626
Joined: June 19th, 2015, 8:50 pm
Location: Indonesia
Contact:

Re: B/S/N Rules

Post by Saka »

BlinkerSpawn wrote:"/Nab" denotes the weights of the adjacent cells. Orthogonal neighbors have weight a, diagonal neighbors have weight b.
I don't get the meaning of weight. (That's what I meant, sorry!)
jarring cyan
User avatar
BlinkerSpawn
Posts: 1993
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: B/S/N Rules

Post by BlinkerSpawn »

Saka wrote:I don't get the meaning of weight. (That's what I meant, sorry!)
Does this help?
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image
Post Reply