Sphenocorona's WolfVN

For discussion of other cellular automata.
Post Reply
EricG
Posts: 199
Joined: August 19th, 2011, 5:41 pm
Location: Chicago-area, USA

Sphenocorona's WolfVN

Post by EricG »

Sphenocorona proposed a hybrid of Wolfram's elementary CA rules and semi-totalistic von Neumann rules. The full idea is described here, along with a script:
viewtopic.php?f=7&t=1080&start=25

But what about rules like B1x2/S23V?
Here's a modified version of the script that generates Bx2 rules

Code: Select all

# Sphenocorona's WolfVN but using Bx2 this time.

# Author:  Eric Goldstein, June 17, 2013, eric at goldstein dot net
# This was thrown together in a hurry from spare parts.

# Sphenocorona's WolfVN rulefamily proposal:
#  1. taking the states of its neighbors NW-N-NE
#  2. applying an elementary 1-dimensional rule (e.g. rule 110) to those cells, 
#     and returning the value of the center cell (in this case north)
#  3. repeating step 2 with the sets NE-E-SE, SE-S-SW, and SW-W-NW, and finally
#  4. taking the four returned values and using them to determine the state of cell C through
#     an outer-totalistic Von-Neumann neighborhood CA such as B1/S23V.

# The solution below starts with the observation that Stephen Wolfram's "Elementary" CA rules
# can be expressed in MCell's Weighted Life format.
# For example, Rule 110 can be expressed as 
# NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 
# If you're not familiar with Weighted Life, see the discussion here:
# http://www.conwaylife.com/forums/viewtopic.php?f=11&t=935&start=0&hilit=weighted+life
# and also see the script listed here:
# http://www.conwaylife.com/forums/viewtopic.php?f=9&t=933#p6814 

import golly
from glife.RuleTree import *

rulestring = golly.getstring('''Create one of Sphenocorona's WolfVN rules using Bx2.
Enter a Wolfram elementary CA rule (even numbered rules only), and a semi-totalistic rule in the Von Neumann neighborhood.
Use the form Wnnn_Bnnn/SnnnnV:''', "W110_B1/S23V")

if "S" not in rulestring:
  golly.exit("The von Neumann neighborhood Bnn/Snnn rule must include the letter S") 

rulestring = rulestring.replace(" ", "")
rulestring = rulestring.upper()
rulestring_parts = rulestring.split("_")
rulestring_wolfram_part = rulestring_parts[0]
rulestring_vn_part = rulestring_parts[1]

VN_B_rulestring = rulestring_vn_part.split("S")[0]
VN_S_rulestring = rulestring_vn_part.split("S")[1]


VN_birth_rule = []
VN_survival_rule = []
VN_birth_canonical = ""
VN_survival_canonical = "" 

valid_neighbors = ["0","1","2","3","4"]

for i in valid_neighbors:
    if i in VN_B_rulestring:
       VN_birth_rule.append(int(i))
       VN_birth_canonical = VN_birth_canonical + i
    if i in VN_S_rulestring:
       VN_survival_rule.append(int(i))
       VN_survival_canonical = VN_survival_canonical + i

name = "WolfVN-Bx2-" + rulestring_wolfram_part + "_" + "B" + VN_birth_canonical + "_S" + VN_survival_canonical + "V"


# Wolfram rules are converted into Weighted Life rules here.   
# Survival rules in Weighted Life have the RS prefix, and 
# Birth rules in Weighted Life have the RB prefix.

RS = []
RB = []

Wolfnum = int(rulestring_wolfram_part.split("W")[1])

if (Wolfnum >> 7) & 1:
         RS.append(3)
if (Wolfnum >> 6) & 1:
         RS.append(2)
if (Wolfnum >> 5) & 1:
         RB.append(3)
if (Wolfnum >> 4) & 1:
         RB.append(2)
if (Wolfnum >> 3) & 1:
         RS.append(1)
if (Wolfnum >> 2) & 1:
         RS.append(0)
if (Wolfnum >> 1) & 1:
         RB.append(1)
if (Wolfnum >> 0) & 1:
         RB.append(0)


n_states = 3
n_neighbors = 8

def transition_function(a):
    # order for 8 neighbors is NW, NE, SW, SE, N, W, E, S, C
    nw_cell, ne_cell, sw_cell, se_cell, n_cell, w_cell, e_cell, s_cell, me_cell = a

    # Rule 110 for the central cell (unused, but I'm including it for reference)
    # NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 

    # Calculate an elementary CA rule on the North cell
    NW_weight = 2
    NE_weight = 1
    north_sum = NW_weight*(nw_cell == 2) + NE_weight*(ne_cell == 2)  + (n_cell == 2)
    if n_cell == 2 and north_sum in RS:
       north_wolf = 1
    elif n_cell == 0 and north_sum in RB:
       north_wolf = 1
    else:
       north_wolf = 0

    # Calculate an elementary CA rule on the East cell
    NE_weight = 2
    SE_weight = 1
    east_sum = NE_weight*(ne_cell == 2)  + SE_weight*(se_cell == 2)  + (e_cell == 2) 
    if e_cell == 2 and east_sum in RS:
       east_wolf = 1
    elif e_cell == 0 and east_sum in RB:
       east_wolf = 1
    else:
       east_wolf = 0

    # Calculate an elementary CA rule on the South cell
    SE_weight = 2
    SW_weight = 1
    south_sum =   SW_weight*(sw_cell == 2) + SE_weight*(se_cell == 2) +  (s_cell == 2) 
    if s_cell == 2 and south_sum in RS:
       south_wolf = 1
    elif s_cell == 0 and south_sum in RB:
       south_wolf = 1
    else:
       south_wolf = 0

    # Calculate an elementary CA rule on the West cell
    SW_weight = 2
    NW_weight = 1
    west_sum = NW_weight*(nw_cell == 2)  + SW_weight*(sw_cell == 2) + (w_cell == 2) 
    if w_cell == 2 and west_sum in RS:
       west_wolf = 1
    elif w_cell == 0 and west_sum in RB:
       west_wolf = 1
    else:
       west_wolf = 0

    # Now lets calculate the VN rule from the four WolframRule-derived values

    final_sum = north_wolf + east_wolf + south_wolf + west_wolf

    if me_cell == 0 and final_sum in VN_birth_rule:
        return 1

    if me_cell == 1 and final_sum  in VN_birth_rule:
        return 2
         
    if  me_cell == 2 and final_sum in VN_survival_rule:
        return 2 
      
    return 0


##########################################################
# The code below this line is copied from make-ruletree.py 
##########################################################

try:

    MakeRuleTreeFromTransitionFunction( n_states, n_neighbors, transition_function,
                                        golly.getdir("rules")+name+".tree" )
    
    # use name.tree to create name.rule (with no icons);
    # note that if name.rule already exists then we only replace the info in
    # the @TREE section to avoid clobbering any other info added by the user
    ConvertTreeToRule(name, n_states, [])
    
    golly.setalgo("RuleLoader")
    golly.setrule(name)
    golly.show("Created "+golly.getdir("rules")+name+".rule and switched to that rule.")

except:
    import sys
    import traceback
    exception, msg, tb = sys.exc_info()
    golly.warn(\
'''A problem was encountered with the supplied rule:'''+ '\n'.join(traceback.format_exception(exception, msg, tb)))
    golly.exit()
Sphenocorona
Posts: 549
Joined: April 9th, 2013, 11:03 pm

Re: Sphenocorona's WolfVN

Post by Sphenocorona »

Thanks! With the x2 versions, I found that patterns in the rule WolfVN-Bx2-W58_B2_S12V tend to last for a decent amount of time without exploding, and from a 249x168 random soup I generated there arises one large sparky natural spaceship and a natural rake that spits out smaller spaceships:

Code: Select all

x = 249, y = 168, rule = WolfVN-Bx2-W58_B2_S12V
2.B2.B.2B2.A2.2A3.2A.2B.B.ABA7.2B5.A.B5.B.2A.2A.A4.2A.BA2.B.3B8.A2.B.
A4.2BA3.A8.B.B3.AB2.2A.B.B.B.2BA3B.A5.A.3BA.2A.B2A.AB2.B2.BAB.2A3.2A
2B.AB2.A2.A2.B2.ABA2B.B4.2B.ABAB4.B7.ABA.B.2A.A2.A4.AB4.3B2A$B.A4.2A.
B.B2.A2.BAB5.B3A7.2BA2.A.3A6.BAB2.2A.B2.A.2B.AB3.A2.A2.2A3.AB.B2.B5.
2A2.2A3B3.B.BA.BA3B.A.B2A2B.2A.A2.A3.B2.A.A4.B2.A2.B2.B.B3A2.A2.A2.A
2.A2.B.2B.2A.B2.2A4.4ABA.B2.2AB.2A.2ABA.2BA.B.B.B2.B6.A2.2A.B2.B2.A2B
$.2A3.2A.B2.A.2A3.B2.B.B.2A4.A5BA2.B.2BA.A2B.A2.A.A2.3BA2.BA7.2A3.A.A
4.BA2.BAB3.B4.B2.2B3.A2BABA.B.ABA2.B.B2.A2.B3A3.2AB.3AB2.A.BA4.BA.A2.
2AB.A4.A.A.A.2A.A2.A2.A.AB3.A3.B.B.3B3A.B6.2A2.BAB2.2BA.2B3.2B3.A2B2.
B2.3B$.ABA3.BA2.B2A3.A3B.2A.A3.A3.A.A3.AB.A.3B4.A.BAB.2A2.B.B.2AB.AB.
A2B.BA2.2A.B.B.BA2.A.2B.A.3B2AB.2BA.3AB.BAB.B.B2.A3.B6.3A.A3.B.B2.A3.
BA.AB.2A3.A.B2.B2A.2B2.BA3.BA.BA2.A2.B.AB5.2B2A2B.B2.B.AB3A.A3.B.AB3.
BABABA2.B.A.B.B2.ABAB$B2A2.BA.B.A.AB.A.B.B4.2B2AB.B2.B3.B.A3.B4.A.BAB
2.B2.4A.BA.B.A.2B4.2AB.BAB5.B3.2B2.2AB.A3.B4.A3.2B.2BA4.B.B.BA.AB3.B
2.BA.B2.A4.A2B2.A3.2B.B.B.2BA4.A5.A2.A.BA2.A3.4BA2.AB3.A2.A5.2B2A5.BA
B4.BA3.AB3.A.B.4A2B$BA.AB2A3.B.A.A.B.A.ABA.B5.ABAB6.A2.A.3AB2.A3.B3.B
A6.A3.A.2B3.A.BA.A3.ABA.B.2A2.B.A.BAB.2B.AB2.A.2A2B4.ABA.A5.ABA2.ABA.
B.ABAB2.B3.B2.3A2.B2.BA3.3A3.A.B3.A2B2.B.3B2A2.A.B3.B2.A.B.3AB.BA2.2B
10.2A4B2A2.A2.AB2.2A$.2B.2ABA3.B4.AB.ABA.B.A.B2ABAB.B.B.B2.B.2A2.B2A
4B3.2AB2.3A.B.B.2B.B4.B2AB2.B3.BA2.A2.B2A3.B2.A2.2A2.AB2.B.B2AB.A.BA.
A.BA.AB7.AB7.A.B3.A2.A2.B3.BABA.B.BAB4.B.A3B.A3B2.AB3A2.A2.B2.A.B.B2.
2A.B.B.BABA.B2.2A4.A.2BA.B2AB.A$B4.3AB.AB2.AB2.B2.A3B.B3.B2.2ABA.B.A
4B2.A.2B.3AB2.3B3.A2B.A5B2.B3.2BA.A.B3A2.B2.2B3ABA.B4.2A3B.B2.B3A.B.A
.A2BA.B.B.A4.A2.A.A2.A3.B.BA4.A.B2.A.BA2.2A2.A2.BAB.AB2.A3BA5.A.A2.AB
AB2.B.2A.3B.2A2B.2B2.ABA4.B.A.3A.B.A.B.2BA$B2A2.A2.3B2.B2A.B3.BAB.BA.
AB2.A2B3.BAB.A.2A.A2.B.B5.A2.3B2.BAB4.B2.B.A.A.BA.B2.2A4.AB3A4.A.B3.B
2.2B.A.ABABA2.A2BA3.AB2.A.A.2B.A2.A2.BA3.A.B.2A2.B.AB2.B3.B.B2.AB4.AB
.BA.3A.AB.B2A6.A.2A.2BA.3A2B5.A2.A.B2.A3.B.A.B4.2BA$.3BA5.4A2B.3BA.B.
B2A5.B6.4B.A.B.2B.B.A.B2.B3.2A3.BA2.B2.BA4.BA2.B2A.2B2.A.2A2.BA3.AB3.
ABA3B.2B4.2B.AB2.A.B2.2A3.A2.BA4.A8.AB2.A2.A3B2.B2.B2.BAB2.ABA3B2.3B.
A.A3.B2.B.B2.3B.AB2.3A2.4BA.2B3.B2A.AB.3A.3B4.A$B4.B3.2A2.BA.2B.2B.2A
.BA2.B.B.A.A6.2ABA2.A.2A.B2A3.2B3.ABA.3AB.2B2.B5.B2.A.B5.BAB3.B.AB.AB
2.A2.2A2.B2.BABA.A.AB.BAB2.AB2AB3.B3.B2A.A.B.A2.A.A3.A3.3B2.2A.2A.3B
4.A2.B4.B.B2.A.3AB2AB2.A2.B2.2A4.2B3.2BA.B2.B2.2B2.3B.3A.A$A.AB2AB2.B
A8.A2.A.A7.BA3.A.A.B2A.B2.BAB4.B.2A.A.3AB.A2B3.2A.AB.3B4.A5.B5.B3A2.B
2.BA2.2ABA.B2.A2.B2A2.A2.B.3BAB3.4A2.B3.A.3B2A.A2B.B3.A3.B.A3.B.BA.BA
.B2.B2A3.BA6.A2.2AB.B.B.2A.AB.A.AB4.ABAB.B.4A5.B.A.3B$B3.AB.BAB2.BA2.
ABA.B.BAB.A.AB.AB.2BAB.3B2A.3B.B.2A.A2.3A2.B3.A2.3BAB5.BAB4.B2.BAB3.
2A.A.A.A.A.2B2AB.BA.B5.B2.B3.2A3.A5.A.BA.2B2.BAB3.A4.B2.3B2.3A.A3.2A.
4A2.A.B.B.A.AB2.BA.A2B.B3.A.BA3B.B.A.2B3.2BA4.A3B.A3.B4.B.A$BA7.2BA2.
B2.A4.B.2B3A4.B.2B.B.BA4.AB5.A.A3.2BA.2BA3.A2.B2.B.AB2.2B.A.B2.B2.B.
2B.B3.2B3.3A.A2.A2.A3.B3.2A2.B.BA.B.B.B3.A.B4A2BA5.B3.B.A2.B.A2.BA.2A
.B2AB.B2A2.A.B.BA2.3A6.A.A4.A3.A2.B.B2.B4ABABA2.A.ABAB.B3.B2.A$2A3.A
4.A.2B3.3A2B2.B.BA.A2.B3.B3A.2AB.A.A.AB.2B.B3.B3.A2B3.A.BA2.2AB3.2BA
2.A3.BA2.B2A.A2.3A.A.ABA.A2.2B.2AB2.A.2BAB2.2A7.2A3B2.2A3B2.B4.AB3.B.
A2.A.3A.4ABA.BA2.B2.2A.ABAB.BA3.3AB3.B.2A.A2.B.B2.B.ABA3.A2.A3.B.A.B
2.B.B2A$2BA.2B2.BA2B.3B2.BA.B2.2BA.2AB2.AB.AB.B.B.AB.2A2.3BA.AB2.BABA
.A4.A.A.A.A2.2B.B.A8.BA.A2.2B.BA4BA2BAB.2A.BAB.A4.A2.2B4.B.BA2B2.A2.B
.BA4.A.AB2A2B.B2A2B.B.A2.B.B.BA.A3.2B2A.BA.BA2B3.B4.A2.A.A.A.A.B.A3.B
4.3A.B3.A.3B4.A3.AB$2BAB.2B.A3B2.B3.A.B2.A3.A2.A.BAB.A.2B3.A2.A.A.2B.
2B2.3BA2.AB2.AB2A2B3.A2.AB.B2.A3.B.2B.A3.B.B2.AB.2A.2B4.B.A2.A2B.B3.A
.2A.ABAB2.BA4.A.B2A3.AB3.A4.A2B.2BA3.A4.2A2.4B4.2A3.2A.B3.A.BAB2.A.A
4.B4.A.BA.B2.2A.A.BA5.B.A.A$2.A.A.B2.A.2B.5B3.B2.A3.BA2.A3.BAB3.B.BAB
.3BA2.2A2BA.3A.B2.A4.A.A.2A4.2B4.2A3.2A2.AB.B.A2.A.AB3.AB2.A4.B4.A4.B
2.BABA6.B.2A.B3.A2B2.B.2A.A2B.B.BAB.A.AB2.BABA.2B.3A.A2.2A.A2.BA.3B.
2B3.B3.B.B3A2.BA.B2.6A3.B3.BAB.A$3.4B.A.B4.B5.2A3.2A2B2A6.AB5.B2.A2.B
A3.2A.2B3.A.A2.2A2.A.B2.BA2B3.A2.2B4.A2B7.A2.A2.A.B.B3ABABA2.A.2A.A4.
B3.BA2.BA.BA3.B4.ABABAB.2A2.2AB2.A.BA2B2.2A2.B.BAB2.2AB.2B.2A3.B.BA2.
2A.2A2B.2B2.A2BAB2.2B2.A.A.A4.2A.A.AB.A$.2B2.BA2.4A3.4B.2A.A.A2B3.BA
2B2.BAB4.2A.A2.B.A2.2A.2B3A2.2B2.A.A2.B.BAB3.2ABA.2BA2.A4.2BA4.A2.B2.
B.A.A2.AB4.B2.AB.A.B2A.A3.B.B.AB.2B2.A.AB3.3BA.A2B.A2.2A.BA.3AB2AB.2B
.AB2A.A3.2A.B2.B.A2B2.AB.B3.A.B2A.B2.B5.2AB2.A6.2A3BA$A2.B2.A3.BA.BA.
B.BA2B.A.2B2.BA2B2.A.BA.A2.3B3ABABA2.BA4.AB3.A5.ABAB.A2B2.A5.B2A.2B
11.A.AB3.A.A3.2A.AB.A2.2A.A4.B2.A.A.2A2.BA.2BA.B2.2B2.2A.B.3A2.AB2.B.
AB.A.A2BA5.B2AB4.B2ABAB.BA2.AB2.A6.A4.B.2B.2A.A.B2.A2B2A.BA.B$B2.B.BA
.AB.AB.B2.B4.BA2.BA2.2A.BAB4.B.BAB.2B3.2A2.2B.A.A.2B.B.B2.B6.AB2.A2.B
3.B5.AB.B.B4.A.A.2B.B2.B2.BA2.B2.A.AB2A2BA.2BA2B.B2.BA.B.B2.A2B.2A2B.
A5.AB2.B.3B4.A2.4A2.B.A.A.B2.A2.2AB2ABA.AB2.2A.A6.A2.BA.A.3B7.B.A4.2B
$B.BA.2BA3.B4.3B.ABA3.2B2.A3.B2.ABA.A2.3A.BA.2BA3.A3.BA.A2B5.2BA2.AB
4.A2.A.B2.A.2B.B2ABA2.A3.A3.B2.A2.A.A.B.B.B2.B2.AB2A5.A2B.A2B.A3.B2.
3A2.A.2BA.AB.A3.A3.ABA.ABA.B2.2BA3.B2.2A3.BA2.AB.2BA.BAB.3A4.B.A4.A.B
2.AB.2BA.2B.B$.3BA7.A2.2A2B2.AB.2B2.B2.3A2.B3.2BA.B2A.B5.3AB2.2B.B.2A
.A.BA2.B4.4AB.A3.B2.B2.ABA2.A.2AB2.A2.A2.3B2.AB.B.2A.B.A3.B.3A.A2.BA
4.2B2.A.A2B2A5.2AB2A.A5.3A2.B2A2B2A3.BA.B2.AB.A3.BA4.2A3.B.B.BAB3.A2B
2.B5.B3.BA4.B2A$2.B2.A.ABA.A5.A4.AB.B.B.B.AB.B3.A3.B4.BA3.BA5.B.A.B.A
3.2B.B.B2.A.B3AB.AB.B.2A3.BA3.A.ABA.AB.2A5.B2.B.2BA.AB.2B2.B2A3.BA2.
2A.2AB2.A.2A2.A.B.AB.B2ABA.A.A.A3.2A2.2B.2BAB.A2.A.A.B3A.B2.A2B.B.A.A
2.2AB.B.3A2.2A4.ABAB2AB.B3.A.3A$.BA.B2.A.A3.B.BABA2.B2A.2A2.2A.B.A2.A
B.BA4.3A.AB.BA2.B.B2.A.A2.ABA.B.B.2B.B.B7.A2.B2.AB3.A2B2ABA2.BA.2B.A
2.B2AB.B2A3.A2.A.B.A3.2B.B.BA.2B6.2AB2A3BAB8.AB.B.A2.B2A3.BAB3.A.B.A
2BA.AB.BABA3.A2B4.A.4A3.B4.A2.2A2.2A3.A.B$A3.B.B.A.AB2.BA.B4.A2B.A3.
3B.A4.A.AB.A.A2.A2.A.B2.B.2A5.BA2.B.3B.BA.A.B5.B2.ABA.2B2.3B.A7.2A4.B
.A3.2B.BAB2.A2.AB4.B5.BAB2.B.BA.A.3B2A.A2BAB.AB2.B2.2A6.AB.A3.B2.A.2B
A4.2BABAB.A.A2.2B.B2.B2A2.A4B8.2B.2A4.A$A.AB4.2A.B2.A2B2.A2.B3.BA3.A
3.2B2A3B2A2.2B2.A.B.3A.B.4AB.A3.2A.B.B2.2B5.2BA.BA2B.B.2A.AB.B.4B3.2A
B2.2B2ABAB3.B.A.A.A2.2A.A10.AB.B.B.A3.BA5.ABABA2.A3B5.A.A.B2.A.A.BABA
5.2B3.A5.A2.2A2.A.ABAB.B3.ABA3.2B.3B2.A$.3B.A.2B.AB.2BA2.B2.2B6.2B.A
2BA.B.2AB.2B3.2A4.ABAB2A.3B.A.ABAB.A.A5.B.B.B5.B2.A.A3.BA3.2B.A5.B.BA
4.2B.BA6.B3.2A2.2A.A.B.A4.2B.B2A.B.A2.BA3B.A2BA2.BA6.AB2A.3BA2.A.A.AB
3A.B2A2.2A.B.B.AB.B2.2ABA.BA2.BA2.B3.A.A.B2.B$2.B3.2BA.BA2.A.A8.2A.2A
5.2B.A4.2BA.2B.2A3.A.B2ABA3.B3.2B2AB3.B.2A3.B2.2A.BA.AB3.A2.2B3A2BA2B
AB2A2.3A2.B.A2.2BAB3AB.BA.BA.AB2.A.B.2B3.2AB2.A2B2.B4.2B2.A2B2.5B.AB.
A4.BA2.B.B3.B2A2.A.A5.B5.B2A.A.BA.3BA2.A.2A6.BA$.A.2B.2AB3.BA2B2.2B5.
2A2B.B2.B2.B2.3B4.AB.B2A2BA.A3.B.A.A.A.B2AB4.2A.AB3.BAB2A2.A3.A.A.AB.
A2BAB.B2.B5.B3.B.AB.B.BA2.A3.A.B2.B.B.BA2.BAB.2B2ABA.A4.3A.B.A2.A.A4.
2B3.B3AB2.AB3.2B4.A.2B2A.B.B.A2.B5.4B3.A.A2.A.2A2.A.2B2.A$B.B.B2A2.B
2.B5.AB2.B.A.2B4.2A6.A6.2A.A3.A2.4ABA4BAB.A.B.B.B2.ABA.A6.BA3.2A4.A.B
2.2AB5.BA3.A2B2.AB2.BA.B3ABA.B.ABAB.B2.4B3.B.2B2A.BAB.B2.B2.A4.A2.2A
2.A2.3B.ABA2.A2.BA.2B4.AB3.B.BA3.A3.2AB3A.B3.BA3.A2.ABA2.B$2AB2.B.A2.
B.2BA3.A.A2.2B.A.B2.2A2.B3.2AB.2A.B.A.B2.A2B2A2BA.A3.2A.A.2A6.B3.BA3.
AB2.B2AB.ABA2BAB4.A2.A2.2B5.B.A4.AB.BABA3.BA.ABA.2A.B2A.B2.B5.A.B3AB.
B2AB.2A.A2.BAB.AB.B.3A.AB.3A2.BA3.A2.B2.B3.B.BA.2ABAB7.A3.2A.A.2BA.3A
$2.2A.BA.A.A.A.3A6.A.AB4.B.B2.A.A2B.B.B4.ABA.BAB2ABA2.3A.2A2BABA.A.6B
4.B.2BA2.B3.A2B.A.BA.B.AB2.BA6.BA2.A3B.A.2A.B2.A.A2.A4.2A2.B2A2BA4.AB
2.4AB.B.BA.A.ABAB.A2.BA2.B.B.BA2.B.A2.A2.3BAB.A.2BA2.2BA3B7.2BA.A2.AB
AB3A2.B$.A2BA.2A.2BAB3.A.2BA7.A.B.A.2B3.B3.AB2.A2.B2A4B2.A.A.2A4.B2.
2BA.2B.3AB2.B.B.B3.ABA.A.A.A.A.A2.B.A.B2.A.A.B2.3B4.A.B.BA2B5.A.B.A2.
2B2.2B3.2AB2.B.A.2A.2BA5.A.A.B.BA3.A3.A2.A2.B4.B.A2.A2.B2.AB.B5.A2.B
5.A.A.2A2.A.2A2.AB$4.B2.2B3.2A.B.A.B.A2.B.2A.2A.2ABA.2B.BA3.B3.AB.B2.
B.B3.A3BA.B2.2AB2.B6.2A6.A2.BA4.B.A2.2B4.2A3.3AB.A2B.AB.2B3.2B2.B5.2B
2.B.BABA.B.B2.2B.A.2B2.A.A.B.A.AB.2AB4.BA.A6.A4.B.B.A.BA2.2B.B.A.A.A.
AB.2BA3.A2.AB.2A5.A3.B$.2A.A2.A.A2B2.2AB2.A2B2A3.B2A4.B2A5.BA.3A2.A.B
A6.BA.BAB.2B.2BA.B3.A.BA2.B5.B2.B2.A3.A4.2BA.B.A.A3.B.B2.BA2.3A2.2B2.
A.BA5.B2.3B2A2.B.2B5.A.2A3.4B.AB.BA5.BA4.ABA.B.A2.B3.A2.A2.AB.A2.B.2B
.A7.3AB2.B.B3.A2BA.A.B$AB3.BABA.2ABA5.B.2B3.B2AB.B.2ABA.2A.B2.2B.B3.B
2.2A3.2B2.B4.A.A.B2AB.BABA3.2A5.B.A.2BA.A.BA3B.B2.2A6.3B5.A.3B2ABA.AB
.AB2.BA2.A2B2A.4AB5.A.AB.A2.A.2A3.A.3AB.A.A2.A7.B.B.B5.A.A4.AB.2A.3BA
2B2.AB.B2AB.B.2B.A.B2.BA$2A.B2.B.AB2AB.A.A2.2B2.AB.A.BA3.2BABA3.B4A.B
A.3A2B.2ABABA2.B.A.3A5.B.A3.A2.AB.B.B2A.A3.2A.A.2B2.B.A.2B2AB2.2A.A.B
3.A4.AB2.2B.AB2.A.A3.A5.BAB8.3B.B.B2.B.4A2.BA2.B2.B.B.A2.2A.A2.B.A.A
2.B.BAB.B.2A3BA4.2B3.B.B.B.2AB.2B.B2A$3.A.2A.A.B2.2A.A.A.BA.ABA2.A.B.
A2.2BA.A2B3.A3.A.B2.A.B.2B3.ABA5.3B.3BA2.A3.A.2BA.A4.A.BA4.A.ABA5.B.A
2.B3.AB3A2.B.BA3B.ABABAB2.B.3A3.B5.A.B.B.A2.A7.A.2B4.2B.A.BA.A.A3.B.A
2.AB2AB.B2A2B2.B.A.A4.B2A3.A.B3AB.2ABA3.2A$2.B2AB2.2A2B.A2.A2.A5B6.B
5.A2.B.B2A.A2.A2.B.BA.B.BA3.B2.B3.BA.ABA.B.AB2.A.AB2.A2.B3.A2.2B.AB3.
2B4.ABA.B.2B.2B.2A.B.A4.BAB.A.2A.B.A3.2AB2.2BA2.B2.A.B.B4.A2.2ABA5.A.
B.B.B3.A.BAB2.A.A6.A2.A.BABA.B3.AB.A.A.AB2AB2A2B2.A.A.A$.2B2.2B2.BA.B
.3AB3.A.5ABA2BA.2A2BA5.BA4.2B2AB.B3A4.B2.A3.2A2.B2AB2.2AB8.A.A2.4A2.B
.2BA.B.2A.B2A.A8.B2.AB2A3.B5ABA.2B4.2B.BAB4.B.B.A.AB3A.A2B.B2A.BA4.A
2.B.B.BA2.A2.2A2.ABA2.B3.B5.2B.B2.A.B3.2B3.A.A2.B3A.A$.2B.A5.A2.AB2.A
BA.A.AB3.B4.2BA2.BA.2AB2.3A3.B.A.B.3A2.A4.B.BA2.2B2.B2A.B.2B4AB7.A4.A
4.B.2B3.AB.B.AB2.A2.A2.B.B.2A2.A.A.A.2A2B2A2.BAB4.3B.A.2B4.A.BABA2.B.
A2B4.2AB.B2.2B3.B4.BAB.A4.2B2.B.2ABA2BAB2A.AB.B3.B2.B2.2B$6.B2.A.B.A
2.2B2.BA2BAB.A3.3B2.BA2B5.BA2.ABA.BAB4.A.ABAB3.B.AB.B.A2B2.A2B2.A2BA.
B4.BA7.B4.A2B2.2BA2.BA4.A8.AB2.A2.A.B2.A.B.A.A2.A.3BA.B.A.2A5.B2A.BA
2.A3BAB3.A2.BA2BA2.B.A4.B.3A.A2B.3B.A.A2.A2B3A2.3A2.4ABA.2B$B.B2.B.B.
A3B3A2.B2.BA2.B.2B.BA.B3.A4B.A.3A7.B2.A4B3.A.B2.A2.A8.B.AB2A.B3.3A.B
2A4.BAB2.AB.AB.B2.B5.B3.A.2AB.BA.A4.2AB.B.3A2.A2B5.B4.A2BAB3AB.B5.5BA
.B4.B.B.3A2B.A.2AB5.A.B.2B2A.A.A2.2A.B.A.B2.AB3.BA.AB$B.2A2.B2.B3.B2A
BA.B3.BAB.2B.B.2A.2A2.BABA2.2B.A2B3.A2.AB.3B.2B.BA2.B.BA5.B.B3.A2B.B
2.2B2A2.A2.BABA4.B.A.A2B.B6.B3.A2BAB3.A.2B.B.A3.B.2AB.A2.BAB3.3A7.2A
2.B9.2BAB2A.B.B.BA3.2A.B3.B.B3.B2.2BA.2B.AB.2A3.B.2A2.BAB.A$3.AB4.A.A
B.B2.BA.A7.2A5.A2.BAB2.2A.BA.A.BAB2A2B4.B.2B4.BABAB3.2B.B3.2BA.BA2.2A
.B.2A.BA5.A3.2A2.A8.BA2.B3A.A2.A.A.AB2.2B.B2.B4.A.A2.B.B.2B3.2A2BA2.A
.B2.2AB4.B2A.2B.A.B.3B3.B.2A2.2A5.AB.B2.A.B.B3.BAB.B.2A3.A2.2A$2A3.B.
B2.2AB2.A.B5.A5.A2.A2.2AB2.3B.B.2A5.2BA2.A3.2B.B3.A3B.A6.2A2B3.A.2AB
4.A3.A6.BA2B.ABABA3.B3.2A.B2.B.4B.B.B2.B6.B.AB4.B3A2.BA.A3.B4A2.B2.BA
.3BA2.2AB3.B2.B.A4.A3.B.B2A3.2A.BAB.A.B2.3A.4AB.3BA2.BAB$A.2A2B.BA.BA
B.BA2.AB2.BA2.AB.A3.A2.B2.4A3.2A.A.4AB.BAB2.BA.BA.A.3A.2A.A.2BA.ABA3.
2BA8.A.B2A2B3.A2.A.B2.AB2.ABA.BA.A2B.A.B.3BA3.3A2.B.2B.A3B2.A.B.B5.B.
A2B5.A3.A2B2.4B3.B2.2BA4.A2.2A.A.B.AB.AB2.B.AB2A2.B.4A3B.3A.2BA$A.A.
4A2.BA.3A3.2ABA.A2.A.B2.A2.B.BA.A.B.B.B.B2.B.BA8.AB2.2AB4.A3.A4.A.B2A
B4.B2.B2.BAB2.2A2.BA4B4.2BA3.AB.A.A3.B.4AB.2B3.B4.BA2B.B3.2AB4.A.AB2A
B.B2.A2B4.BA.A2.B.B.A.2BA.BA4.B2.2BABAB.A.AB.B.A.2B5.B.BA2.A4.A.A2B$B
.B.A2.ABAB.A3.ABA5.A5.3ABA11.2BA.B.BAB.A2.AB4.A.B7.A5.2BA2.A2.B4A.2B.
A.B.B3.3AB2.4A3B2A2.B.B2.2AB.AB4.A2.A.B2.B5.A.2AB2.B2.AB3.A.B2A2.AB2.
B.3AB.2A.AB.2A2B.AB3.B5.2B.A.2AB4.2A.2B.AB3.2A4.AB2.B.A.2A$A5.A.2B.A.
B.BA7.AB7.B.B2.B3.A2.BA2.A4.A.B3.A2.2ABA2.B10.BA2B.B2.A2.A2.A2.A3.3A.
2B2.2B3.B.3B.A.A.AB.A3.B2.2B.2BA5.BAB2.2A2.B2A3.2A3.AB2.AB.B7.BA2.B.B
2A2.A.A3.BA5.AB.A2B.2B2.B2.3A2.2A2.BAB.BA.A3.BAB6.AB$BA.B2.2A.BA.B.B.
2B.A2B3.B2ABA.A3.B2A.B.3A.A.A3.ABA.A3.A2B.ABA2.2B2.B.B2A3.BA2.A2.BAB.
A2BA.A2B2.B6.2B.B2.A5.2A3.A.B3A.BA2.A5.A.B.2A.B.A.AB.B2.AB.B4.B.A.ABA
2.BA6.4B3.2B2.AB4.B.A2.A.B2.B4.B2.B.A.A.2B.B2.B.AB3.A.B.B.B2.B$2.B7.A
2B.2B.AB.ABAB.2AB.AB2.BA.AB.BA2.B3.A4.B.BAB.B3.A2BA2.2A.A2.AB.2AB.B3.
7A2.4A2.A3.2B.2B.A3.A3.2B.B.ABA.A.2BA2.A.2A5.A3.B3.2A3.3B.B.A6.B.2AB.
AB2A.A.AB.A.B2ABA5.A2.A.A.3AB3A4.3A.ABA4.B4.B2.2A2.3B2.2A.B2A$2.AB2.A
3.2A5.A2.B3.B2ABAB.BA.BABA2.B2.3A.A2.B3.A2B.A2.A2.B2A.B4.BA2.B3.B2A2B
.A.2BA8.A.B3.2A2.B.AB2.BA.B.B.B.B.BA.2AB2.BA.B.AB.B3AB.2B3.2A2.A.3A2.
AB2ABABA.A.2A2.BA2B.B.B2.A.ABA2.2AB.A3.ABA.2B.A.BA.B.AB3A.B2A4.B2.2B
2.3B.BA2.2B$B.2BA.A2.AB.B.AB.BA.A3.AB2.B2A2.B2.A2B4.A.B2.ABA.2A3.B.AB
A.A3.BA.B4.2BA2.AB2.B2A.A2.BA.A6.A.BAB2.A2.AB.B.2A2B.A.2BA4.AB.A.B.B
2.BA.A2BA3.ABA2.2B5.BAB.2A.2B3.ABA3.ABA.BA.A.BAB3.3B2.A.A.A.A.B2.A.B.
A.B.2A2.B2.A.B3.BA2.B2.B.A.A.B.AB$2.B.B2A3.B.2B3A3.2ABA4.BA4.BA.2A2.A
B.BA4.A3.AB2.2B.B2A5.3BABA3.AB3.A2.A4.2A.2A.A2.B2.3A4.AB3.B.BA3.B2.B
2.3A.3A2.B4A4.BA.AB.A.A2BA.A.AB.B4.A.B.B.B.A2B2.A2.3BAB.B.B2.2A2.2B5.
B.2B2A2BA3.BA.3A.B4A3.ABA.2A3.2BA$.B2A.A3.2A.2B.A3.B3.AB2.B2A.B2A.B.B
ABA3.A5.2A.AB2.A3.BA2B2.AB.2A2.B.B3.2A.B2.2A2B.B.B3.2AB.B2.A2B2.AB.BA
2.BA3.B.A5.ABA.B.A3.A.B3.A3B2.A3.BA.A.BAB.2B6.A.A2.AB.A.B.A2B3.B.2ABA
3.B2.2B.A3.A.B.B.B.B3ABA.B3.ABA3.2B2.A2.AB3.A.B$5.B.2A.2A.A.B4.ABA.B
4.2B.BA4.3B.B.BA3.2A.A2.A3.BA.2A4.B.B.B.B2.2A.BA2.3AB.A.B5A.4BA.B3A.A
BA.B.BA.2B5.3A.ABAB2A2B.A3.A.A.B3.A2.B2.B.4A.3A3.2B2.A.A2.3A3.4B2AB3.
A3.A2.A.BAB2A8.B.BA2.A.B2.A.A2.2A2.B.AB.2A3.A.A$A4.A2.A2.A6.A4.AB.B2.
2B4A.BA2B2A.B.B2.B2.2B.B.2A.BAB2.B5.B.2AB3.3B4.BA.2A3.3A.B2A.BAB.B.3B
.2ABA5.B.B2A.B3.2AB4.3BA2B3.6B3.AB2.A2.B2.B.AB.2B2.BA.AB.B2A.B.BAB2.A
.B4.2B4.B.AB.BAB.B.B.AB2.BA.2A2.A.B2.2A3.BA.ABA4.B$A2.BA.B.2B3.A4.B2.
A4.BA.2B3.BA2.A3B.A.B.BA.B2.A.B4.B.B2A.A.2BA2B3.2AB.A2.2B2.AB.BAB.B.A
2.B.B5.2B3AB3.BA2.B3.BA.B2.B.2A.2B2.B2.B2.A3.2B3.A3B.BA3B3.ABA3BA.B3.
B2.A.A4.BAB.A.2ABAB2.B.BA2.BA.B2A5.B.2A.2A.B3.B6.B2AB.3B.2A$A3.3A.2A.
B.A.2B2.BA.AB2.A2.A.2BA5.A2.B2.A.B2.AB2.A.B2.2B6.2A.A.A.B2A2.2B2A.B.
2AB3.2A.2A.2B.B3.2A.A4B.B3.B.A.B.ABAB2.B4.B3.B.B.B3AB3.BA2B3.BA2.A4.B
.A.B2A.A.3B2.A2.A.2BAB.2BA2BA.2AB2.2A5.A.B.A2.AB.A2B2AB4.B.3A2B2.B.B
5.B$2.A6.BA.B2.2A.3AB.B2.B2A2.BA2.AB3ABAB.A.AB2.A.A2.B3AB3.2BA.B4.B.A
.2AB2A2.B3.B.B4AB4.B2A2.9B.A.2B.2A.2A5.A2.AB2.A2BA.A3.2AB2.A.2BAB3.A.
2BA5.A.A.B4.B.A3B2A.BA3.4B2.A.2B3.B3.A.B2.B.BA2B2.2A.A3B2A.A7.B2.AB$B
AB.B2.B2.B2ABA2.B2.AB2.2ABA2.A.4A.BAB.B.A.B.2BA3.2BA2.2B.2A2.A5.2B.2B
.A2.A4.ABA.AB.3B.BA2.B3A5.4B2.3A.B3.BA3.A3B3.BA4.A.B.B.B.2AB.B.2A2B.B
AB2.BAB.5A2.A.B.BA2.BA.2A.AB.B2.2A.BA.B.2BA2.2B.A.B2.B.BA5.B2.A2.B2.
2AB3.2B.B.A$A4.A3.A3.B.A.ABA2B.B.2ABA.2A.2B2A2BA.A.A2B3A.2BA.B.A2.BAB
3AB.B3.A3.B.B2.BABA3.AB5.AB.B2.AB.BA3.B.B.2AB.B5.A2.2BA.A.2B2.A4.AB.B
2.AB.B4.A2B5.2B.2B2.A2.B.AB.2AB.AB3.AB4.B2A6.A4.B4.B.BA.2B3AB.B.A6.2A
B3.AB3.AB3.B$5.B2ABA.B.2B2.A3.B3.AB2.2A.A.B6.A5.AB3A2.A.A3.A.B2.AB.BA
2.B.A2.BAB.A2.A2B5.2B3.B2ABA5BA2B.B2.2A.ABA.B.B.A2.B.2B.AB4.B.A2.BA.A
B2A.AB.BA.2A3.3A.2A.B2.B.B2.B.BAB2.B4.B2A.ABA.2A.A4.B4.BAB.BA4.A.4B3.
A4.3B.3AB.A2.2A$2.B3.B2A3.B3.3A.B2A.B.A3B2.BA2B.A.B.A.B3.2A3B3.B.A2B
3ABA2.B2.2B.A2.B.A.B3.BA.B2A.B3.A.B.AB2.2B3.2ABA.4B2.A.A2B.2BA.A.A.B.
2A.A.A.AB.A.AB2.2B7.B2.B2.B2.BA2.B.BA3.BA.B.BA2.A2.AB.B3.AB4.A2.AB.2B
A3.BA3.B3.3B.AB2.BAB.BA3.BAB$3.AB4.B.A2BA2.2B2AB2.B.A.B.B3.A.B.AB8.BA
.B.2A2.BA3B.A.AB2A2.A.A3.4B.B.A.2B.A.A.2B3.B4A2.2B5A3.B2.B5.2B3.A.A.B
AB2.2B5.B2.A2.B3.B2.B.A2.2ABA.ABA6.B3.ABAB6.AB2.A5.AB.A2B2AB.2B.2B3.B
3.B2.2B.2B.2AB.A.B2.B2A2.B.B$B2.A4.A.2A2.B.BABA2.A.A3.2BA.B3.BA2B8.2A
2B.B.BAB3ABAB5A2BA.A3.B2.B2.3A.2AB2.A3.BA2.B2.B3.A.2AB6.A2.2B.A4.2A2B
.B5.B5.AB4A6.B4A.B2.A3.B2.BA.B.B.B.BAB.2A2.AB.B4.A3.B2A.B2.2A2.B.AB2.
B2.B.BA.2B.BA2.B.A2.BA.B.AB$B7.A2.B2.AB.A.3A6.ABA.B2.A2B.3A.2A2.B.BA
3.2B2.2ABA2.B.A2B2A2B2A.BA.AB3.B.A2.2A2B2.2BA2B2.2A5.A4B.B.B2A.AB.2AB
2.AB2.A2.AB3.B.AB8.A.A4.B.B2A.3A4.A.A.B4.2BA.2A.A.BABA2.B2.B.2AB2.A.
2A2.AB4.6B3.A3.A3B.B.B2.AB.A2B$BA.2B5.A2.3A3.B.A.2A2.AB.B3.2B4.B2AB2.
A2.A2.AB.3A.B5.B.B.B3.B.AB.2A.B.2BA.B.AB3.A5.B.BA2.B2A.2BA3BA.3B.BA.B
A.A2.A.A.2BA.B2.B.2BA.B.A2.A2B3.A2.B5.AB.2A.B2.ABAB.A2.2B2.B.2A.B2.2B
A2.A.B.AB.B2.4B.A.A.2A.ABAB3.A.B.A.A.B4A2.B.A$.AB2.B.B2A.B3.A2B.B.BAB
AB4.2B2A7.A.B.A.3B2A2.B2.AB.AB2.B2A.A4B4.2B.BA3.A4.2B.A4.2A2.ABA2.AB
2.A6.A2B2.2B2AB2A2.B.A4.2B2.B5.ABA.B2.B2A3.AB2A3.3A3.2B2.A2.B.2A2B.B.
A4.2BA3.2A.B.A2B.A.A.A.B.A7.A2.2BA2.B3.B4.A3B$.B2A4.B.A.B2.BA2.B4.2A
3.A6.A4.B3.BABA2B7.B3.A.AB.A.BA.BAB3.3A.2BA.A.2B2.A2B.BA.2A2.B2A2BA.A
3.2A.B2.A.3B.2A2.2A3B.A.B.ABA.B2.2B4.2A2.AB2.A.2BAB4.BA2B3.B2.A.B3.B
2.2B.A.B2.A.A2.A2B.BA.A3.A3B.B3.2BA.B2.AB2.B.A2.B.3B2.BAB$2.A2.BABA.B
4.A.A.A.3B.AB2.B2A.BA.2A3.B.2A.3B.B3.B.4BA2B2.2A5.B2.A3B2.2B2.A3.BAB
2.A6B.BAB3.2A.B2AB.BAB.A5.A.ABA2B2A4.B2.B2.A.2B3.B4.A3.A.2B.BAB4.AB.
2B2.2BA.B.AB2.2AB.3A.A11.2AB4.2B2A2.2A.B3A2.2A3.A4.ABA3.B$2B.B2A2B.B
6.BA2.B.2AB.B.BA.2B8.2AB4.B.A3.B.A2.A2.A2.AB.B.B.B7.3A.A.2A4.2B.B.ABA
B.B.2A.A.A.3BA.B.B.2B2A.A.3A.B3.B3.2B9.B.B.ABA2BAB2.ABA2B2A.2A3.B.B2.
B3.A.B3.ABA2.BA3.B2A2B2ABA2.3B2ABA6.AB.2A4.2BA.2BA4.2B.B$2.BA.BA.3A4B
2.B2.B.BA.A2.A2.B.A.A2.3A3.2A2B.A.B2A2.ABA2.A.2A2.B2A.ABA3B.2AB.B.B.B
A2.2BA2.2A3.B4.B.B2.B.BA2.A.2AB2.2B2.BA2.3A2.2BA.B2.B2.B6.2B.A2BA3B4.
2ABA2.B3.AB.A.2B.B2.ABA3.A.BA.A3.3B2.3A3.A.A.2A.A.AB5.B2.A3.A2.B.B.A.
A.B$2B.B2.A.A.AB4.2B2A.A3.4BA2.B2.2A.AB.A5.A2.A2.3B2.B2.3A.2A3.2B6.A
2.A.A2.4B.B.A3.2ABA.BA.2A.A2.B2A2.A.2BA.A4.3B.2A2B5.A2B3.B.B.A.B.B3A.
BA.2A4.BA3.3A4B2.A2.BA.A2.A2B.A3B2AB.A2.A4.3BA.BA.A2.2BABA.2A.5AB2.BA
B2A.3AB$.A.A3.2B2.2B2.A.BABA4B2.ABA.B2.2A.A.2A.ABA.AB.2A.AB.B2.B4.2B
2A.4BA2.2A.3A2.B.B.2A.A.AB.B.AB.B.A2.2A3.4BA2BAB.2A2B6.B2.A.2A.A.2B.
2A3.3B.2A.B2.B4.A4.ABA3.2A2.A3B.AB2.B.B.AB.B.3AB14.3A2.2A.A.2B.A.2BA.
A.B.4B.A2.B2.A$ABA.A.A.ABA2.B3.BAB.A.ABA2.3BA2.3B2.2BAB2.A2.A3.B.B2.B
.A3.B.B2.B2.2A4.A.BABA.A.3B2.A.A2B.B.A2.A.2A3.A3.A.BABA.AB9.AB2.BA.AB
.B3.A2.2A4.A.B6.A3.B2A2.B5.A2.A2BA.A2.2A2.2B.A2.B.B.2BA.B.BAB3.A.B.A.
B2.2A2BA3B3.2ABA2B2.4B$.4B7.A3.A3B.B2.AB4.2AB2.A3B2A.3B6.4B.3B.B.AB3.
2B2.B.2A.BA.A.A2B2.A.3B.B2.B.2A.B2.B2.2B5.B2.AB3.ABA2.BA.B2.BA.B3.2B
3.BA.BA.B2A2B3.AB.BA6.B.AB5.A2.A3BAB2AB3.BA3.B.2AB.AB3.3A.B.2A2.A7.3A
B3.B.2A3.2A3.A$2BAB2.A3.A4.2B.B2.ABAB2.AB5.BA3.2B.B.BA.BA.AB.BA.3A2.A
.AB.AB2ABA.2A6.A2.BA.ABAB2.2A2B2.2B.B5.B.B.2B2A.A.BA2B.A.A.B2.AB.3A.B
3.B2.A2BA2.A.3A3.B2.A7.A2B.2BA4.2A.BA.2A3.A2.B5.A.B.A.2A.2A.B2A4.A.AB
.B.AB.2BA2.B.3A5.A2BA$A.BA2B.BA.A.A2B6.A.A.B2.A3B.2B2A.2B.2B.AB.2A2.B
.A.B2.B.ABA.A3.B.A.2B.2AB.B.B3.BAB2AB7.A4.A.BA.B4.4BA2.AB2.B3A.2AB.BA
4.A.AB3A2B.B2.A.A2.B.AB2A.A4.2A3.B2.B2A.BA.B2.BA.2A3.A2.B2A3.3A2B3.2B
2.BA.A7.2BA.2ABAB7.BA2.2A$A.B.B2.BA.3AB.2B.2A2.ABA.B2.A2.BA3.B.B.A.AB
A.2B3.BAB.B4.B.2BAB2AB2.2A5.A2.2BA4.B4.AB.B.ABA.B2A2.B3.A2BA2B2.3B2.
2B2.A.2AB4.B.B2A6.AB.2A.A.B3.A4.2A.A.A.3A3.ABA2.BAB2.AB.2A2B3.A2.A.AB
.2BA.2AB.AB.B.3A3.AB.BA7.B3.B2.A.B$B3.2A3.B3.BA2.B2.A.A2B.2A.2B.B.B.A
B.2B2.ABAB4A2.BABA2.A2.ABAB2A.3A.A2BAB.B.A3.A2.BAB.ABA.A.B2.A2BA.ABA
2.BA.2A2.A.A4.AB.AB3.2A9.2A2.B.A.AB.2A4B2.BA2.2A.B3.A3.BA3.B.B5.A3.A
2.2B.BA.3B.2A.AB.A2.2B4.BA.B.2A.A4.2B2ABA.A$B3.B.B2.3B.A.3A.2A2.A.B.
2ABABAB.ABA.2B.2A3.A.2A3.AB2.2B2.B5.2B.B2.A3.2A2B.2A2.B.B3.A6.2BAB.B
3.A2.A2BABA3.B2.B4.4A.A3.B2A3B.A.A3B2.B.ABA2B.A.B2.2B.4BA4.B3.B7.A3.
2BA3.B4.2AB.BA3B2.A.A2.2A3.B2A.AB.AB3.A4.2B.B2A$B.A.A.BA2.B.A.A.B.3B
4A.A2.2B2.A.B3.2B.A.ABA2.AB.2B2A4.BA2.2AB.B.A.AB3.BAB.2A.B2.A.A4.A.3B
2.AB2.BA2.A.ABA2.BA.B3.AB2.B3.A.2A3.AB.A.B5.B.A.A.B.2BA5.AB2.ABABA2.B
2A.B2.4B.A.A.A2.AB3.B2A.BA2.AB2.B4.2B.AB2A3.B.5B2.2BA.2A2.2A$B.ABA.2A
.3B2A.A.A2B.AB3.2B.A2.A.2BA.B.2A.B2.B.A3.A2.2A2.2B2.B.A.2A.BA2.3AB.B
9.B2A.ABAB3.A2.AB.B.2B2.A2BA.2A.A2.A.B3.B2.A3.A3BAB2.2B7.B.A4.BA.A.2A
.3B2.AB3.B.A4.BAB2AB.BA.A.3A.B2A.B.ABA2.2A.B5.B3.BA3.A.B2.B2.AB2.A.BA
$2.AB.A3.B3.A3B3.BA3.A.3A2.B.B.A.B2A4.4AB.BA.2AB.A.BA.BA5.A5.AB2.B.BA
2B.A.B2.2A.B2.BA.B.2B2.AB2.A.ABA.B.B2AB.2A.A2.A2B2A.2B.B3.B.AB4.A5.BA
.B.AB3.2AB2.2B.AB.BA2.A.A2B3.A2B3.AB3.A4.2B.B.A2.2A.BA4.B.AB3.2BAB.A
2.A.A.BAB.A$2.A.B.BA.A3.BAB.B.2B.BA.2A3.B.2A.B.BA.B.ABA4.2A2.A.2B3.A
2.A5.A.BA.AB2.2BA3.2BABA2.B.B2AB.A.2B.A2.B.BA.A3.B.2A.AB.3B2.4A2BA3.B
2.B.3B.AB4.A.A2.2BA.BA2B.BA.A.AB2.2A.2AB.A2BAB2.B3.B.B.A2.2AB3.BA8.B.
A2.3A.BA3.A3.B3.A3.BA.2B$A.A2.ABAB2.2A.B5.B.BA.B.A.B2.A2B.B7.A3.2B.B
6.ABA2.BA.A3B5.B.A2.B2.A2B3.A2.3B.A2.A.B.B4.B4A.B2A.B3.A7.A2B.B2A2.B
3.A2.ABA7.A.BA2B.B2A2B.A.A.A3.A.A.2B3.AB.B.2A3.2AB.2B.A4BA2.2A.A.A2.A
.B2.B.B3.AB.3B.B2.A.BA.2BAB$.BA.A4.B.B2A2.B2.A2.BAB.ABAB5.ABA3.AB2.A.
A.BA.3A.BA2B3.AB3.AB.B.3B2A2B.A.3B.3AB2.A5.A4.AB.2A2.A7.2B2.B.A.A.BA
2.BAB2A.A2.B.BA2.2ABA5.B.3A.B.BA2.A2.2A.A.B2.A3.A.A3.AB.A5.A4.A2.B3.B
2A.BAB2.A3.B.A.2BA2.2B4.B.B.BA2.2B$.2B.B.2AB2.2B3.A2BA.2B.BA2BA.2B.A.
B2A2.2AB3.2A.B4.BA.AB6.A.B.B.A.A.B.BA.B2.B2.ABA2B.B.B2.2A2.B5.BA2.AB
2.AB.BA2.B2A.B3.AB3.B.2B2.A4.A4.2BA4B.AB2.BA.ABA.AB4.A2.B2.B2.A.A.A2.
BA2.AB3.A.A2.B2A.ABA.2BAB6.2B.B.A3.B2.B.3A2BABA.A$A.2AB.BA.ABA3B.2A.B
5.B.B3.A.A.ABA3.A4BA3.A2.3A5.BA2.3AB2.2A.3B.B3.3BAB.B2ABA.A3.AB.A.A3.
2B4A2.B.AB2.A2.BA.A6.BA2B2.A2.A.B.B.B.2B2A3.BA2B2.B.2ABABAB2A2.A2.AB
2.A2B5.B3.2A.B2.B2.AB.3AB2AB.2B.2A2.2A.A.ABA8.BA.B2A2.B$3BA.3A4.B.B2.
B3.B.B2.B3.B2.B.A4.2B.B.2AB7.A2.A8.BA3.B2.2B.B3A.A.B2.BAB.A.3B.B.2AB
6.B3A5.A4.A2.BAB.BA3BAB.B3.BA.2BA3.A5.B2.B.BA2.A.B2A6.B3A2.B4AB.AB3.B
2.A3.A2.B2.BA.A.AB.A3BA2.B.2A3.AB3A2.3B.A.3B$B2ABA3BA5.A.B.5BA2.A.AB.
5BAB3.A3.B4.B2.3AB2.2BA2.A3.A.2B2.BA.B.B2ABA.3A7.B2AB.2AB3.2A.B.A4.A.
ABA2.2ABA.B.A.A2B.2B2A.B2.ABA3.2A2.A.A.B.B3.AB.A.2A.B2.ABABA.B2.A.B.B
.A3.B.A.2B6.B3.B2.AB.2B2A2.A2.B3.AB3.AB3.BAB4.B$.A2B.A2.A3B2AB3A3.2AB
2.A.BAB.B3.2B.AB2.A.A6.BA.BA2.ABA7.B.A.B2.B2.A2.B3.A.B2.2B2.B.3AB2AB
4.AB2.AB.A.A.AB2.A2.BAB2.B3AB4A.B6.2A.2ABA.A.B2.2A4.2B2.B.B2A.A2B.B.A
3.2A.2B.A.AB2ABAB.A3.A2.A2.BA3.B3.A2.AB2.B.B3.2B2A.B2A$.3A2.B2.2A3.AB
AB.AB2.B2A2B.B.A.B2.2B4.2B.B9.2B2A2BABA.2A.2AB3.B.BA2.A.A5.BA.A3B3.3A
B3.2B.ABA2.AB3.2B.A.2B.B.2BAB.B.BA3.A.B3.B.2BA2B.B3.AB.BA.B.2B3.A3.A.
B.BAB3.B2.B3A4.ABA.2B.BA2B5.3B.B4.B.A2.BA3.A7.B2A3.B$B2.B5.A.4A.B.2AB
2.B.BA4.BAB.B.AB2A3.B.2B.A3.B7.B.B4.A3.2B.A2.A.A.A.B4.2B.2A.AB.A.B.3B
3A.ABA.B.B2A2.A.A3.B4.A2.A.AB.A2.2A.A2.3BAB3.2A2.AB2.ABA.B2.2A.A.A2.A
2.3B.B.A2.4B.2A.A.2AB.2A4.3A4.3A2.A4.A3.A2.A2.B3.2A.B2A$BA.2B.B.ABA2.
B2A.B2.B5.2A4.A2.AB.B.A.2B2A4.A5.AB.3BA3.2B.A2.B.B3A3B.B4.A.AB.B3A.A
3B4.B4.A4.B.3A.2BA2.BA4.A2.B3.BA3.A.A.2B2.2AB3A.A.4B2.B.B.A.2B2.2A2B.
B4.2B2AB.2B.B.2BA.6A.B2A10.A3.B.B4.2A.B2.2B2.2B2A$BA.B3A3.3A.2B.AB.B
3.B3A.A2BA.2B2.BA.2A.B.A.2A.2BA2.B2A.2B3A3.B.2B.A.B.2B2.AB.B2.2A.B.A
2BAB.B.2B2ABA2.2A2.A4.B.BA.A5.3B3.A.2A.2A.A.3B.AB2.B2.A3B2.A.3B4.B.A.
B.A2.B2A.B2.2BA2.2A4.2B.A.2A2.2A2.2B.B.2A.B2A.2A.A3.3A.BABA.AB.BA$A.B
3.2A2.B.2AB2.B.3BAB.BA4.A.AB.2B.2B2A2B.BA.A3.A4.2B3.A2.2B2.ABA.A2.A3.
2B.BAB3.A2.B.2B2A2.B.A3.B3.3A.A2BA.AB4A3.B2.A.AB.2A3.5B.B.A.2A.2A2BAB
ABABA2B2.A2.B.ABAB.A.A8.2B.AB2A.A.BA2.AB3.A3.A2.2B2.2B2.2B.A.2B8.A3.B
.2A$4.2A.B.B3.B2.2B.B2.A2.2A.B.A4.3A.B.A2B.B.3AB.A.BA2.A4.B3.ABA2B2A
5.B.A3.A.B.B.AB.BA3.2B2.A2.AB.A3.B2.BA3BAB2.BAB4.A2.3A2B2.A.2A2.A2.BA
3.2A.AB.2B2.A2BA2.AB.B.AB.AB3.A.BAB3.B3.A3B.2A.A.2BA.A.2BAB2.B.B.B.B.
B.2BA3B5.A$4.A2B2.3A2.2B4.A.B2.A2.A3.A.A.A3.B2.AB2.2A7.BA2.B.A2B2.4B
4.BA.2B2.A.2A.B.B.A2.A2B2.B.B3ABA.B2.B3.B3.3A.2A2B.3B4.B2.ABABA.2B3.B
A.2BA2.B2.2B.2BA.A3.2A2BA4.A2B.5A.B.A.B3.2A3.A6.2B2AB3.A3.B.B.B.B2.A
3B.2BABA2B.2AB2A$A2.AB.B.A2.A.B.A4.3B2.A.AB2.3A2.ABA.A.2B5.3AB3.ABA6.
3A2B.BA.A.2A3.A2B.AB2.ABA3.B.A2B.B5.BA3.4BAB.2BA3.A.4AB3.A.BA7.2B2.BA
3.BA.2A.2AB.2BA.BA2.A2.A.2A3.B.BA2B3.A5.2A.A.2A2.B2A.2AB.B4.A3.BA.AB
4A.A2B.A3.B2.A2BA$2AB3.2A2.B.B.A.2A3B9.B.A.A2.2A.3B.BA3.B.3B.2A2.BAB.
B2.B2A2.2A.B3.A4.A2.BA.BA2.B.4B3AB3.3A.A.BA2.BAB2.A2.ABA5.2A.2A2.B.B
2A2.A2B3.A.BAB2A3.BA.BA2.3B2A.B3.B2A2.3A2.B3A4.A3.B.ABA.2A.B2.A.BA.2A
2.B.B2.2B2.A2.2AB2.A.BA.BA.2B$5.B2A.B.B.B5.A2.B3.A.2B2.A.AB2.2B.B.A3.
3B.2A.AB2.4AB2.B2A2B2.3B2.A6.B3.B2A2B3.BA2.A.3A.B2A.B.A2.2AB2.B.2A.B
3.AB.A2BA7.B.B2A.AB.A5.A.B.BA.2B.B.B3.3AB2A.B2.A.BABA2.A5.B3.2A4.A.A.
BA7.3A.3A5.3AB3A.A2.B.B$B.A4B.A3BAB3.2B3.2A.AB.B3.3ABABA.B4.B5.A2.A.
2A2.A.B2.2B2.BABA.3AB.BA.B.A3.A4B2.2B3.B.B2A2.2B2A3.2B2.A7.A4B.4B2AB
2.BABA.B.A.B4.2A2.B2.B5.B.A2.B.AB.B4.B2.A2B.BA.AB3.A3.A.B4.4BA4.A.A3.
AB2.AB.A2.B2A5.A3.A.A$2AB2A.2ABAB2.2B2.2B.2B.A.A5.2A2.B.2B.2A2.B4.B2.
B.B2AB2.2B2.A.B3A.BA2.2B.A3.A5.A2.2A2.2B.2B.B2.2A.B2.2B.A6.A.4A.2B3.A
B2AB6.A.2AB4.ABA.B.A7.B2.B.A5.2A9.B8.B.2A.AB.A.A2B3.A.BA.BA.A2.A3.A2.
2A2B.B.B2.AB.B2.AB$.B4.BA3.BA.A6.AB3.A2.BAB3.A.ABA.B2.AB2.AB3.A4.AB2.
ABABA4.B.B2AB2.ABA2.B.ABA.B2.B2.B2.B2.A.A4.B4.BA2B2A2B.2B.B2.B.AB2A.
2B2AB.AB2.2B.A.AB.A2.B4.A2.B2A2B2.B.AB.B2.B2.3AB.2A.A.2B.B.ABA.A2.ABA
2B.B5.A.2B3.2A.B2.BA.B7.B.2A2B.B$4.A3B2.3AB4.A2.A6.A.2A.A.2A3.2BA.AB
2.B5.A3B.2B.A.A.B.A3.B.B3.BA4.2A.B.B2.4B.BA.2AB2A3.AB3.B.A.A2BA11.A.A
2.2A3B.BA3.B3.2A.2AB7.2B.B2.B.B2.B.A3.B.B.BA.B.B.A.3ABA2.A.B.AB3.B3.A
2.BA2.A6.B.B2.A.3A.BAB.3A.A$3B2.A.BABA3.B4.B4.2A4BA.B6.3B3.A2B3.BAB.
2B.2B.B3AB.A.3B2.BA4.2AB.B2.2AB.2A2B.B.2ABA2.A.BA5.2B.B6.B.2AB.B.AB4.
A.A4.B2.B2A.2AB3A.B2.2B.A.B2.BA4.A2.A.2B.B2.2A.B3.B2.B2.A3.2A.A.A3.BA
BA2.BA.A.A2.3B2.A3B2.B.B4.A2.A$B.2A.B2.A2.B4.B.ABA2.B5.A.A.A.B2.AB3AB
4.B.2A8.B.A4.2A.BABA2.B.4AB.B.2BA2.B.A.A.A.ABA4.2AB3.AB3.2B2.ABA2.B.B
2.BA2.AB.B.2AB2.2BA4.B.A4.3A2.A2.B.A5.2B.2B2A.AB.2A2B.BA2B.B.3B2A2BA
2.A3.2B2.B.A2B8.A.3AB3.2A2.B5.B$2.BA4.B7.2A.BAB2.B.B.2B.3A.A.A4BA2.3B
.BA.A6.A3.BA.A.B.2B2.2A3.BA4.BA2.2BA.2AB4.A.2B3.B3A.2A3.A4.BABA2B.BA.
AB6.B.3B2A2.B.B2.B.B2.B3.B2.B3.2BA2.B2.BA4.B.AB2.A2B3.A5.B2.A.A.B.B2.
A2B.B6.2A3.A.BAB.B.A.A2.A.A.A$.A2BAB.A3B.A.A4.A2.A2.2BA.B.2B.B2.AB3.A
B3.2B.AB6.A.3A2.B.AB.A4.3B.B2.2A2.A3.A2.B3.2B4.A6.A.B3.A.2BA2.A2.B4.B
AB.A.ABA2.B.BA.2B2.B3.B2.A5.B.BA.B.2ABA.2A.A8.B.2B.B.A.2B.3B6.A.3B2AB
3.BA.2B3.BA2.B2.BA2B4.A.B$2.B.3A.A.BA.B3.BA.BA3.AB.B2.A2B.B.2B5.A2.AB
3.A4.B5.BAB2A.A2B2.AB.B5.A2.A.AB3.2B2A2.2A2.B2.3AB2.2BA2.B.2BA2B3.A.B
.B2.BAB.2A.B.BA3.BAB.2AB6.B.AB2.2A2.A2.2BA2B3.2B2.2AB2A3.A.2A.A.B.AB.
2AB.BA.B.4BAB2A.2BABABA.B.B.2AB3.ABA3.B$3.2A5.BA3.BABA2.B2.AB.BA.A2.B
A.A2B.A2.B.B4.A.B.A.B2.2B2.BABA2.3A4.BA.2A2.A3B2.BA.BAB4.B.A2.3AB5.B
2ABA2.BA2.2A3.AB.2A.A.B.AB2.BA.A5.B6.B.B.B2.A3.BA2.BA.3B.2B2.A.AB.A3.
2B2.BA3B.A3.B4.A2.B2.4A.A.A2B2.A3.B3.2A.A3.BAB$2A.A2.B.2A3.2B2A5.2AB.
2BA3.A2.AB.BA3.B2AB5.2B2A.B2.B3.B.AB.A2B2.B.3B3.3B.B5.2A2BA.B.A2.2A.B
.A3BAB5A.2A4.2A5.B3.A3.BA.A2.A2.B2.B4.B.BA2B.2B.B.B.A.AB3.4B5.2A4.A2.
2BA3.B.A.B2.A.B.2B2.B.2B.B.A.BA2.BA2.A.A.B4.AB.B$4BA.BA2.B.B2.A3.A2.B
A5.B2.2A9.A2.2B2A.BA2B.B2.2AB4.2B2.AB2AB.2A4.A.3A.2B3.A.B4ABAB.A2.2BA
B4.AB.A.3A.A2.B.2AB2.A2BAB4.A3B.ABA2.A2.AB6.AB.B2A.B4.B2.A.A.B7.2A.A
3.A4.B2.A.BA3.2BA.3A.B.BA2.2A3.ABAB2A2B.ABA3.BA$A2B2.3B.4A.B2.2A.B.A
2.BA13.A3.3BAB2A5.BA4.AB.2A.2A.B2.2B.2B.BAB2.B3.A2.BA2.A.B5.B.B.A4.B.
A3.AB2.3B.B.BA.3B3A3B3.A2.B2.2BA2.2A2.3B5.BAB.A.A5.AB.A.B.A2.A3.B5.B.
6B3.AB.AB.B2.A.4A2.B3.B9.B.B2.A.B$2.A.A.B7.4A.A.BA3.B2.A4.AB3.2B2.2BA
B.A3.A.B.A2.A2BA.B4A.A.A.3B2.B6.B.B3.B.3BAB3.A.A2B2.A.B.A9.AB5.B4.BA.
B3.AB5.B4.B2ABA6.B2AB.A.B3A4.BA.2B.BA2.BAB3.2B2.2AB.2A.AB3.B.2A2.AB4.
B5.A4.2A.B2.A.B.B2.B$AB.2A4.A5.B2A.A3BABA.2B3.B4.BA2B8.3B2.A3.2B2.A2.
BA3.B.A2.B.A3.2BA3.B2A5.B2.A4.AB3.A2.3BA.AB3.B.A2.BA.2BA5.BA6.A2BA3.A
2.2A2.B2.ABA3.BA2.2AB.A.A4.ABA.2A3.A2B3.2B.2B2A6.2BA2.B2.AB3.BABA2.3B
.A.3B.A3.B2.AB$.B.B.B9.2B.2A2.BA.B4.2A2.B.A3.A2.BAB.2A.BA6.A.3BA.3B2.
A.A2.AB5.B7.A.2B.2ABA.A.B.BA.BA2.BA.3A2.2B3.A.2AB.BA3.BA.BA2.2BAB2.A.
B2A2.A3.BA2.B2.B2.A.2AB4.A5.2BA.B.BA2.A3.A2B3.2B.BABA2.AB.2AB2.BA.2A.
2A.2B10.2B$.2A6.BA2.BA.B3AB.3B.BAB3.2A.A.BA.A2.A4.3B2.A4.A3.B4.3A3.2B
.BA3.2B.A.A2.2A2B.A.BA.2B3.BAB2A2B2.2A.B.AB.2A6.2AB3AB.2B.2B2.B2.2AB
4.A2BABABA.ABAB.B.A2.2AB.A3.2B.B.B.2B.3A2.2A4.ABAB2.B.B3.2B.B2.B3A.2A
BA2.2BA2.B.BABA.2AB.AB$.AB5.B2.A4.A2.B2.BA5.A.2B6.AB2.A.BA2B.B.A3.2B
6.A2.B.B3.A.A2.2B3.B3.A.B.B.2B.2B3.2B.B2.B.ABAB2.ABA2B.B2A2.B2.A2.BA.
2B2.A.BA.B.A4.A5.B3.BA.B.A.BA2.B.B5.BAB6.B2.A.AB2A3.A2B2A2BA2.B4A4.B.
A.B2.B4.B.A.A.AB.BA.2B.BA$.A.B.2A2.BA2.2A4.AB2.B.B7.B.A.B.5A2BA.3A2.
3B3AB4.BA2.A.2A3.BA2.2B6.A2B.2A.B.A4.A4.A2.A.2B.B4.3B.A.B3.AB3.2A2.BA
.B3.B2.2B.BABA2.2AB3A2.A.2BA.A2B3.B3.BA4B.AB2A3.A.4B.A2.B.A.A2.5A2.2B
AB.AB3.AB2.B2.ABA2.B.AB.A$B3.A2.A4.A.B.3B2.B.A2.2B3.3A.A4B3A2BA.A2.2A
B2.A.B.A3.2B.B.2B.A.BA.B2.A.A.A2.BA.AB2A2B4.B2.A3.A2.ABAB.B2A.A2.2B4.
2A3.B.2A2.BAB.2B.B2.A.2B2.B3.A.A3.2A2.A2.2A5.B5.A5.B.B.2A3.A7.2B.B.A.
2A.A2.B.A2B.A.B.ABA2B2.BAB.2BA2.A$2.B.A.2BA2.3A.BA.AB3A3B2.4B.B2A2.AB
2A.B3.2A2BAB6.B.B2AB.A.ABA2.A2.2A.2A2.BA.BA2.B6.B.B2.A.B3.B2.2A.BAB.A
3.BAB.2A2.6B3.2A2B.3B2ABAB.B3.B2.2A2.B.A.B2.A2B.3A2B3A.2A.B2.B2.A.A2B
.3A2.2AB5.A2.2A.B.A.3B2.A.2B3.BA.A2.2A.B2.B.B$2.B.A2.B2.BA2.A.2B2.B3.
A2.B.BA.A2.BA5.BA2.A.2B2.B2.A4.B.A.2B2.BA3.2AB2.3B2A.A2.A.B.B2.AB5.2B
4.3AB.A.B2.BA.BA.B3.A.A.B.B.2A4.BAB.B2.2B2.A.B.B2A3.4B2.B4A.A.A2.BAB.
A.A2.B3.B.A2.BA5BAB6.A2.A.A.4B2A.B.B.2B.B4.A.B.B4.2A$BA3BAB.3B.A.A2.
2A.B2.2B.B3.B2.B.AB.3B3.B3.B.B.A.B.A.A7.2B2A2.ABA.B3.A.B3.B3A3.A2B4.B
2.B.BA.2B3.A7.B.B.A3.A.B2.B.A3.A2.AB2.2A.2BA.BA.A.2A.A.3A2.2B2A3.A2.B
.AB2.A.2A.2A2BA.B.B2.2BABA.A.B.A.BAB.A6.A2.A2.B.A.B2A.B2.B.2AB$.B.AB.
BA.A.3A.B2.BA2B.A2.B.A2B3.B3A.2BA.B.A.2BA3.B3.B4.A2.B3.B.A3.ABA5.A3B.
A5.2B2A4.B3.BAB.2A4.A2.AB3.BA2.B.AB4.A2B.B3.A.A3.A.2A3.2A.B2.4B.AB.A.
AB2.2A2.2A3.2B2.B.BA6.A2.2BA.A2BA2.B2.2B.A.B.A2B.B2.A2.2AB2.2A3.3BA.B
$.BAB2.A.A4.2B.B2.A4.B3.B2AB2.A.B.A.B.4B5.B.3B.3A.A.B2.B2.BAB4.A3.B.A
2.A.B4.A.2B2.A.A.BA2B.A.BABA2B.BA2.B.BA.B.2A.A.B3.A2.A3.B2.A.B.B2.BA
2.A2.2A.B2.B.B.A3.A5.A.B.2BA.A3.B.B5.2B2.2A.B2.A4.A9.B.2B.B.2ABAB7.2B
2.B$B2.A2B3.BA.2B.A.2A3.A.2B2.A.BA3.A.A2.2BAB.B8.AB.A2.BA.BABAB.3A2.B
.B2.A2.A2.B.B3.A.2A.B5.2BA.B.B.2B4.B.B.A2B2.2B.B.2A3.2B4AB2.A4.A2.A2.
AB.2A2.B2.A2.2BA2.A.B.2A2.2B2.A3B2.A5.ABA4.B.AB2.B2.2B2.B2.2B.2B.BA4.
BABAB5.B3.A$.B.BAB4.A2.2B.3A2.BA.B.AB2.A3B2.B2.BA4.2BA2.BA2B2A2.A.A.A
2.B2A2.A3.B.A3B.B.BA.A.B2.B2.BA2.A2B.2B2A2.A.A.AB2ABA.B.BA6.A2B.3A2.A
2.A3.B4.2B.A3.2ABAB2.B3.3B2.A.2AB.AB3.A.2A.2BA.ABA2B.A2.AB12.BA3BA.B
3.B.B3.B2AB3.BA.2AB$4.BA.A3.2B.3A2.B.BA2BAB3.A.2A.ABA5.3B.B2.AB.ABA2.
A.B2.B3AB.BA.A.BA.A2B3.B2AB.A2.A2B2.A2.A.2B2.2A.3AB3.2A2.2B.2A3.A.A.A
.BA.BA5.B2AB.A.B2.2A2.3B.B4.B.A2.A.B3.B2.B2.BA.3A.2B.3B.A3.3A7.AB.3B.
B2.A2.2BABA2B.A5.A5.B.A$3.A4.4A3.B.2A.A.A.A.ABAB.B.2A2.BA.3B.3A.B.A9.
A3.B4.B.BA3B2.A.4A5.2BA2.2AB.A.A.B2.B2.AB5.A.B2.BA2BA2.AB.A.2AB.A2.B.
B.2A.B3.A.3AB2A5.B2.B2.2B3.2ABABA2.2B.ABA2.2B3.2B.B3.2B.A2.B.A2.3A3.
2B4.AB.BAB.B8.A.B2.B$.2A2.A2BA.2B.2A.2A.BA.A2.BA2.2A2.BABA2.BA.AB2.2A
.3BA4.BABA2.B.2B2.2A.BA2.B2A3.2BA.BA.A.B3.2AB.AB2A.B2.B.A2.A.2A.2B.A.
B4.A6.AB.2A3.4B.A4.A3.BA.2A3.3B4.AB2.BABABAB.A.BAB2.A.2AB2.A.A2.2A.B
2ABA2.2B2A2.B.A2.B.B5.B2.B.A2.B2A.A2.B$2B3.A2.5A4.A.2AB3.A.A2BAB.A3.A
.A.A2.B3.B2.B2.2B.BAB2.B.A2.A2.A.B3.A.B3.A.A2BA2.A3.2B.2B2.A5.A2.A9.A
.B4AB3.2A2.2B.A.A3.ABAB2.BA2.3B.B.B2.B2.A.B3.3A2.2B2.2A.B3.B.A4.B2.2A
.A.BABA.B.BA3.AB2.2B2.2B2.A4.BA2.A3.A3.BA$5.B2.3A.B3A.B2.A2.A3B.A4.A
9.A3.B3.B2A3.BA.2B.AB.AB.A3.A.2BA.A2.AB.AB.3BA.B.B.B.ABA.BAB2.2BABA.A
.A.A.A2.A.2A3.A.BA2.B.AB2A2.A2B.B.A.2B2.4BA.2B3.2A.2B4.A2.AB3.3A.B5.
2BAB4.A3B2A3.5B3.A4.B5.B3.B3.B.A.2BA2B$.BA2.3A2B6.A3.B2.A3.A6.ABABA2B
.A2.AB.A.B3A.B.2B.A2B.A.3BABA4.AB.B2A.AB.3A.A.2B.B2.B.A.BA.A.A.B.AB.B
.A2.AB.2A.AB.A2B2.2B.A6.BAB3A2B2ABAB.4AB.2A.BA2BA2.AB.B.2BAB2.BA.BAB
5.A2.2B.B.2A.A.B2A.B.B2.B.ABA.A2.B3AB4.2A3B2A2.BA2B$4.A2.B.B2.AB.A2B
4.B.A.B2.B2A5.2AB.2A4.AB2A2.B6.2B.3B2.B3.BABA.2A.A.B2.A4.A.A2.AB.2A2.
2B2AB2A4.A.2BA.B.BA2.A2.A.2BA.4A2.B3.A2.B2.2B.BA.A2.B3.3B.A3.B.B4.2A.
AB2.2A2.B.B3.BAB3.B.2B2.A3.B.A2.2A.2B.B3.AB.5A.A2BA.B2.BABA$AB3.3A5.B
2.A6.BA.AB4.A5.2BA.2A.B6.A.B.2A4.A3.A2.BA3.A4.B.2B2.2BA5.BA3.A.B2A.A
2B2A.B.A3.AB2.BA2.A2.B2.B.A.A.2B.A.A.2B.B.A3.A6.2B2ABA2BAB.B2.BA.AB5A
2B.AB.AB2.AB2A.2A.B.2A.B3.AB.2BA.A.2A2.2A2.BABAB2A.B.B2.2B3.ABA$BAB3.
B2.A.BA2.B.2B.A2.3AB.2BA.2AB.B.A4.B2.B2.BA4.B2.AB.3A.2A2.A.AB6.A.B4.
2B.2B2.3BA.AB.A.B.A2.ABA.B.B4.B.AB.2A2.B.A2.ABA2B2.B.A.B2A.B3.BA.4ABA
3.4A.2A3.B2AB3.A.B3.2AB2.A.2AB3.B2A2BA.B.2AB3AB3A4.2ABA3.B.2A2.A2.BA.
A2.A2.B$ABA.A2.BAB.BAB2.4B.B.BABA2B.2BA.A.3AB2.A.2AB2A.A.ABAB.A.A.A7.
B5.B4A4.B3.B2.B2A3.B6.2A3.A.3A2.B3.A.A2BA.2A.B.A2.A.2A2.B.A.A2.A.B.A
6.B2A.B3A3.2A3.B2.B.A.2AB.A3.BA.B.A3.AB2A2.A3.B.2A5.2BA3.B.2AB.2A.A2.
B2A.2A.BAB.B$B2.B2A3.2A.AB2.A2B.2A3.B.2B.B2.B.A3.B.B.BA.2AB.2A5.3A.B
3A5.3BA.BA.2AB3.A2BA9.B3.B2.B2A5.B.A.3B.2B2.BA.B.2A5.B3A.2B.A.B.AB.AB
3.2BA4.B3.AB.3A.2A.BA.B.B3.A4.2A.2A4.AB.B.A.B4.3B.B.B.AB.A.B2A5.2B.2A
BA.B2.B3.A$.2AB.A2.2B3.2A.3ABAB.2BA3.2B.A2B.2BA2BA.2ABA2B4.A.ABABA3.B
.B.B.BA4.A.BAB.A.BA.2A2.ABA.B2.2A.B3.A2.B3.A2.A3.A2.2BA.5B.B3.B2.3B6.
A2.AB2.B.4AB2A2.4AB2A.2A3.BA2.B6.3A2.BA.B2.B3.AB2.B.BABA2.B5.2B4.A2.B
2A.B.A2.2B3.2B$2B2AB.B3AB2A5.BA3B.3B4.A.B2.B2.A2BA2B2.A4.2A.2BA.B.AB
5.B2A3.2B.2B3.AB3.ABAB3.2A.B3.2B.BA4.A2B.A2B2A.B2.A.2A.2A4.BA4.2AB.BA
.3A3.2A.A.3A.B.AB.A.2A.2B2A.B.2BA2.AB2.B2.2BA3B5.A.BA2.2A4.A5.2A.A.A.
B2A.2B2.B3.B2.2AB$A.AB.4A.B2.A4.BABA2.B.B.2BA.A4.A.B3A3.AB2A2.4B.3B3.
2A.B.A.A6.A5.B2.B.BABA2.A3.BA2.BA.B5.A4.AB.2A.A.BA2BA4.A2.A.A.B3.3B3.
AB.A3.A.B.A2B4.AB.B2AB4.B3.A.3B3.A2.BA2.B.B3.A2.BA2B3.AB2.2A3.B2.B.BA
BA3.BA2BA.A.2B2A$6.2A5BAB3.A.B.AB3.A.B3AB3.3B.B3.5A.4B2A.B3A.A2.A.A.A
2B2A.2A3.B4.A.AB.A.BA2.2B6.B.B.A3.A3.B2A2B3.B.A4.2B8.2B.A2.2A.B2.2B.B
.A3.A.A4.A.B.2B3.2A2.BA5.AB2.B.AB2AB2.A3.BAB.B4.3A.2AB.A.BABA4.BAB$.A
.2A.A.A3.2BA.B.AB3A6.B2A2.B.A.3A2.A5.A2.A3.A2.B3.B.B.B.A2.B2A.A2.B.A
2B2.2B3.B.2BAB3.A.A.B4.2B4.A.B2.B2A2.BA2.3B.A2.2B2AB.4BA.B.B2.B3.BA3.
B.A.A.A.BA2B3.2B3.2A.A4.A.A3.2B.2A2B.3B3.A5.B.3A.B.ABA2BA.B.B.B2.A.AB
.2B3.A$7.2B4A.BA.B4.ABAB2.B.2BAB2.B2AB.BABA.B.2B.A2.B2.B.2AB2.AB.BA2.
A.3B2.B2.B.A2.B.A.B4A.B.AB.B.A2BAB2A2.2B.ABAB5.B.BA.A2.2A4.2A.2AB.ABA
.2A.BAB3.B.B8.2B4.B.B2.B2A.B.B.B6.BA3.AB.B.B.B3.A.B4.3B2.A.B.A2.A.A.B
9.B.B$2.AB7.3B2.A.A.B3.B.A2.AB2.AB.2A.A3.A2B6.2B2.4B2.B2.ABA3.A2.B2AB
A.2B2A.A2.B2.2B3.2BA2.2AB3.BAB2.3B.B.B.B.B2.B.2A.B2.BA2BA.A.2B3.A2.A
2BAB.ABAB2AB.AB2AB5.B.A4B2.3BA2.A.B5.B2.2A.A2.B.AB2.A.B.A.B.B.B2.2BAB
.B.A3.A.B2.AB.A4.A$A2BA.B4.B2.A.3ABA.2AB.B2.2B.B3.BAB.A.A2.A4BA.A3.2A
B.A.B.B.2AB6.2AB.B5.A2B2A.A.2BA3.A9.B2A.A4.A2B2.A2.A.B.2A4.2B.B2.BA7.
AB.BA2.A2.2B.A2BA2.2A.B.2B3.A2.B3.B2.B2.BA2.3AB2.A.BA.A2.4B.2B.A.2B2A
B2.3B5.3B2AB2.B4A$A.2A.B.A.2AB.ABAB4.A4.B.B3.B2AB4.BA9.A.2B.B.A2.B3AB
.2B2.B.BA.AB2.B.B3.A.2B2A2.2BA2.A3.A4.A2.A4B3.B.3BA.A.B.A2.3AB.ABA.B
2.2B.A2B2AB2A.B2.2B2A.BAB3ABA3.3B2.4AB4.2A2.4A2B2.2A2.A.B.A3.BA3B4.B.
B2ABA.B2.A4.B2A$A3.B2.B.2A.BA.ABAB.BA5.AB5.B.B.B2.4B.2B.A.BABA2BA4.B
2.2A.A2B.BA2.B4.2BA.AB.B2.2A3.3B.2A3.A.BA2.AB.A6.3B2.2BA.2B.A2.B.B.2B
2.2B.A.AB.ABA2BA.B.A.2A4.AB.2B2A.2BA.A2B.2B.2A.B2.AB.BA.2A3.B.AB.2BA.
B4.A2.BA2.A.AB.ABAB.B3.A2B.B2.AB$2.2A2.2B.B7.BAB.A2BAB2.AB.2B4.2BAB.B
2.3A2.B6.BA2.BA2.B3.B2.2B.B3.A.B2.2B.A2.3AB.A2.A2.A.AB.B.A3.2B5A.B2.
2A.2B2.A.B2.B.AB.A.A.3ABA2.A2.A.B2.BA2.B.A2BA4.2B.A.AB.B2.A3.A4.3B3.
3AB.AB2.A.A4.AB2.2B2.AB3.B.B.B.AB2.B3.B.A2.2B$2A.A3.B.A.2BAB.BA3B3A.B
3.A2.2BAB.2A2.B2.A5.B2.BA2.3BA.B.B.B2.3BAB2A2B.B4.AB2.B.2B.B2.BA3.2A.
A.BA.2A3.BAB2.B2.A2.A9.A2B3.B2.A.A2BA6.A.B2A.B2.B2.A3.2BA.A2B.B.BA2.A
2.3A.BA2.3BAB.A.BABA3.BAB6.A2.B.2A2.B.B3.2B4.A2.AB$2BA2.A4.A2.4B2.AB
4.BA.AB2.3B3AB.B2.B2.A2.BA3.2A3.B.BAB2.A4.A.2B3.A2.2B4.AB5.A3BA2.B3.B
.BA4.A.A.2B.BA3.A3.2B2.B.A.B2.3BA3.BA.BAB2.A2BAB.2A2.BA3.B5.B2.A.2BA
3.2B.B2.B2.2A.A2B2.BAB.A2.A2.B.BA3.AB4.2A2.B2A3.B4.A.BA.B$2.3A.AB2A2.
2B.A2.2A.A2.2B.2AB3.AB.AB.B.B2A.B2.B.2B2.B.A4.A3.B2A.2A4.2B2.A.A.B.B.
2B.BA3.B.A2.B.3BA3B.B7.BA4.A2.ABA2.2B2.3B.2A.A2.A2B.2A.A3.A.BABA.AB.A
2.6B2.BABA4.A.3B2A3.B.A.B2A4.AB.A.A.A.2AB.2A.A2.BA.B.B.B.B.4B.B.A3.A$
2A2.B2.B.B.ABA.A.ABA2.A2.A2.2B3.2A.B2A3B.2AB.BA5.A.2AB.B.3A2.B2.2B2.B
.2B2.2B.2A3.4B3.B.2A.2BABA4.AB2.AB4.BA2.4A.A.A.B.B.AB3.BA.A.B2.AB.A2B
.2B.2B.B2.ABAB.BA4.2A2.3AB2A.2B.B2.A.AB3.BA.2B6.2B2.BA2.2B3.2BA.2B6.
2AB.AB.A.B$.B2AB2A.B.B2.2A2.ABA2.2A.B2A3.BA.AB3.A2.BAB.A.2A5.ABA.B.B.
2A2.3B4.B2.B3.2AB3A2.A.2B.AB.B.5A2B.B2A2.3B7.A2.AB.2A.B2.3B.2B2ABABA
2.A.A2BA.A2.2B.A2B3.B3.BA3B.B.A.BA.B2.B.A.BA3.2A2B4.B.B.A.3A3B.AB.B.
2BAB2.B2.B2A.2B2.B.A.2B$.A2BA.A2.B2.4A3.A.B.B2.A3.B2.AB3.A7.AB2A.A3BA
2.2B.BA.2AB.AB.2ABA.2AB2.2ABA.3A.A.A3.B3.AB2AB.A4.BA2.2B4.ABA2.B.BA2.
2A.2A.2B3.B4.BAB2.B.2A.A.B2.2A2B.2A2.2A2.B2.A.4A.A2B2.B2ABA2.2BA.A.B
2A3.A.A.B.A2.A2B2.2BABA.2A2B4A3.2BA2.2A$2.A4.B3.B.B2AB.2BA.A.A3.4A2.A
6.2B4.B5.A4.AB2A.2A.AB.ABA.B2.2B.3BA4.BA2.A3.B.A.A2.B4.3B2.A.AB.3B.A.
3B.BA2.BA.BA3.2AB4.A.BA2.B2A.A2.B3.B.A.B.A.B.AB2AB2.B2.3B2.A.B3.B2.BA
3.A2B4.A2.2A.B.B4.B2.BA6.A.AB2.B2.BAB2.2B$3.AB4A.A3BAB5.2AB.3A2.A3.BA
2.A4B.2B.B2A3B5.2BA.4B.BAB2A.AB2.A5.A.A.3A2.2BAB.A.B.B2.B.B2A2.B.2B2.
B.A.2A3.B.B.A4.A2B2A4.B5.A2.A.A.AB3AB4.B3.B.2A.ABA3.A2.ABA.BA2.A.B.A.
AB3.2A.A.B2A2.2A4.2BA.2AB3.BAB.B2AB2.5A$A.AB2.B.A2.BA2B3.A2.2B2A2B.A
2BA.B.2B2.A2.B2.B2.BA2B2A3.2B.A.B3.AB3.B2.B2.A2.B.BA2.A.2B.2B.4B.3A4.
A3.AB2.B2.2A2.B.B2.A2BAB4.AB3.ABA3.B3.B2.BA.A.BA.A3.2A2.B2.A.3B.A.ABA
.B2A.2B4.B2.2B.2ABA4.2A3.2ABAB.ABA3.BA3.3BA6.2B.A.B$BA.A.BAB2.A.2B.BA
B2A.A.BA2.A3.B.2A.2A2B.BA.A.A.3A3.A.B3.BA3.2A2.AB2.2AB.A2.B.2B2.BA.BA
2.B4.A.2A.B2.BA7.2B.2BA2B.BA.B.B2A3.B2A3BAB2.A7.A.BA.2AB2ABA2.A3.2A.B
4.B2.4A2B.2BA.B.2A.A.A.AB2.AB3.A4.BA.B2.B.B2ABA2.BA5.B2.B.A.B3A$5.A2.
B2.B.3A2.B.B.BA.BA2.B3.A3.A.2B2.A.AB3A2BABA2.A.4B2A3.A3.B.2A4.A3.B3.A
2.2BA.2B2.A2BA6.BAB.2BA4.A2.2B.3BA.B2.A.AB.A6.A3.AB6.A.B.B2.2BABA.A4.
A2.BA3.A2.B.B2ABA2.A4.A.B8.B.B5.2B2.A2.3B2.BA2B3.2B2.B3.A$B3.4B5.AB2.
2B3.B.2B.BA.B2.A.2A4.B4.A.B.B.A2B2.2A2.A.A.BA2.B.B.3A3.2B.2BA.5A2B.2A
.B2.2B2.B.B.B2.B3.A.3A.B.3B3A2.B.2B.2AB2AB.ABA2.B.BA3.2ABA.A.A2.2A.B.
A2B.2B2.AB.3A.A.AB2.B2A.AB.2B2.AB4.BA.B2.2A2BA.A2.2A2B.B.2B.A6.2BAB2.
BA$4.B3A5.2B3.BA3.A2.A7.B2.A.B2.B4.BA.2A.2A5.B.BA.A.AB2.A.BA.A2.2A.A.
B3.B2.B3.B.B2.3A.4ABA.2A.BA.B.B2.A3BA.B5.A.2A3.2A.BA.2A2B3.ABA.2B3AB
2.B.2A2.A2.2B.3A.BAB.A.B3.A.AB.B2.2B.B.3A.A.BA3.AB3A3.3ABAB.B2.A4.2B
2.B3.B!
The large natural space ship ends up reacting a little bit with the rake but if you separate them they still act the same.

EDIT: I accidentally found this p105 oscillator:

Code: Select all

x = 12, y = 12, rule = WolfVN-Bx2-W58_B2_S12V
11.B$9.B$10.B$8.B5$3.B$.B$2.B$B!
Sphenocorona
Posts: 549
Joined: April 9th, 2013, 11:03 pm

Re: Sphenocorona's WolfVN

Post by Sphenocorona »

Accidentally found this p178 oscillator when a puffer appeared as I was trying to make quadratic growth:

Code: Select all

x = 2, y = 9, rule = WolfVN-Bx2-W58_B2_S12V
.A$B$B$.B2$.B$B$B$.A!
EDIT: For a little while any new discoveries that I make that do not exhibit quadratic growth and are in WolfVN-Bx2-W58_B2_S12V are going to be posted here. Also, I would probably post these finds in the 'Accidental discoveries that aren't in CGoL' thread if it wasn't for the fact that these rules have not been around very long at all.

I accidentally found a gun! At first I thought it was a replicator, but it took a bit to realize that it was a gun, and even longer to find out what the gun itself looked like, because the spaceships look almost identical to the gun itself:

Code: Select all

x = 105, y = 132, rule = WolfVN-Bx2-W58_B2_S12V
15$42.A.A$43.BA3.A.A.A$41.BA.2B.B$42.B.AB4.A.A$42.2BA.A2.B$43.2B2.2B$
44.2B2A2.B.A$43.B.2B2.3B$42.B3.2BA4.B$45.B.2B2.A.AB$44.B4.B2.A2.A$47.
BA12.B$46.B2.A2.2A.A6.2B$50.A.A3.A3.A2.B$47.A.A.B3.A.B.B2.2B$50.3B.B
2.A.A$53.B.2B.BAB.A$49.B4.BA.B3.B$51.A4.2B.2B.A$59.B2A$59.2A$53.A.B2.
B$56.B3.B$57.B3.B$56.B.B$57.B3A.A$56.A.A$60.A.A2$14.B$12.A.A2B3.B$13.
B2.2B.B$12.2AB2A2B3.B$14.2B2.2B.B$16.A.A2B3.B$14.B2.BA.2B.B2.A$13.A3.
B2.AB.A$16.B2.B2.B.A.A2.B$13.A.A2.2B5.A.B$19.B.A4.2B2.A$13.A.A2.A3.A.
2A.B$20.BA2.A3.B4.A58.A3.A$21.B5.B.B58.A.A2.B.B$22.A.A.A.BA3.B55.BAB
2A.2A$25.A2.B.B3.B.B.A49.2A2.A.AB$26.BA.2B4.B.B50.A.B.AB4.A.A$28.B4.B
2.B2A50.2B.B.AB.BAB$26.B2A.2BA4.A51.B4.BA.A$25.A2.B.B2A.B2.A.A50.B2.B
2.B.AB$23.B5.B.A3.B56.A2.B3A.A$24.B.B.A.A6.A.A40.A.2A14.B$24.3B54.BA.
2B7.B.2B.2A$80.2A.2B.B7.2B.AB$81.B14.2A.A$79.A.3AB2.A$80.BA.B2.B2.B$
82.A.AB4.B$80.BAB.BA.B.2B$79.A.A4.BA.B.A$84.BA.A2.2A$83.2A.2ABAB$84.B
.B2.A.A$83.A3.A5$66.A3.A$62.A.A2.B.B$63.BAB2A.2A$62.2A2.A.AB$62.A.B.A
B4.A.A$63.2B.B.AB.BAB$63.B4.BA.A$64.B2.B2.B.AB$66.A2.B3A.A$54.A.2A14.
B$55.BA.2B7.B.2B.2A$54.2A.2B.B7.2B.AB$55.B14.2A.A$53.A.3AB2.A$54.BA.B
2.B2.B$56.A.AB4.B$54.BAB.BA.B.2B$53.A.A4.BA.B.A$58.BA.A2.2A$57.2A.2AB
AB$58.B.B2.A.A$57.A3.A!
Sphenocorona
Posts: 549
Joined: April 9th, 2013, 11:03 pm

Re: Sphenocorona's WolfVN

Post by Sphenocorona »

The W58-B2x2/S12V has been a really cool rule. I had a quadratic growth previously, but my whole computer crashed and took my work with it. However I found a new quadratic growth pattern:

Code: Select all

x = 24, y = 31, rule = WolfVN-Bx2-W58_B2_S12V
20.B$14.B3.2BA.A$15.B.2B2.BAB$12.B3.2BA3.B$11.2A2.2B2.B3.B$10.BA.A2B
5.AB$9.2A.A2B.A.BA3.A$8.BA.A2B4.3B$7.2A.A2B2.B3.A.A$9.A2B.2BA2.B.B$
10.B8.B$9.A.BABA6.B$5.B2.A.A3.A2.B$6.2BAB$6.A3.A6.B$6.BA9.A$5.3BA.B$
6.B.B4.B3.B$5.BA.A2.A.B$4.A.A3.ABA.A$8.A3.A$6.A.A$4.A2.BAB$.2B2.B2.B$
B.BA4.2B$2.2B3.A$.A.2A4.A$4.A2.B$8.2A$6.2AB$7.A.A!
I also found a p9 and two p8 oscillators:

Code: Select all

x = 41, y = 5, rule = WolfVN-Bx2-W58_B2_S12V
.3B29.B.B2.B.B$2B.2B13.3B13.B4.B$B3.B13.B.B13.B4.B$2B.2B13.3B12.B.B2.
B.B$.3B!
However I seem to have found a bug. This agar exhibits unusual properties that don't make sense; for starters, it's p2, and all of the oscillating cells either turn on or off:

Code: Select all

x = 80, y = 80, rule = WolfVN-Bx2-W58_B2_S12V
80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B
2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$
80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B2$80B!
It would make more sense if those red cells turned ON in the next generation, instead of back off.
EricG
Posts: 199
Joined: August 19th, 2011, 5:41 pm
Location: Chicago-area, USA

Re: Sphenocorona's WolfVN

Post by EricG »

I think I see the problem. The Weighted Life version of W58 is: NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RB3,RB2,RB1,RS1 but I'm running it with ME1 (I'm giving weight to the central cell in the Wolfram rule.) I apologize! I'm running low on battery power (literally and metaphorically) but I'll fix this up as soon as I can.
EricG
Posts: 199
Joined: August 19th, 2011, 5:41 pm
Location: Chicago-area, USA

Re: Sphenocorona's WolfVN

Post by EricG »

I think there is another problem with the original Bx2 version of the script -- I was treating the Wolfram rules as binary, and only the final von Neumann rule as a Bx2 rule, and as a result, I wasn't handling state-1 in a consistent way. I really do apologize - what a bummer to use a rule and then find out it wasn't calculated correctly!

Here's a new version of the Bx2 script which treats both the Wolfram rule and the final von Neumann rule as Bx2 rules. Does it do what you expect?

Code: Select all

# Sphenocorona's WolfVN but using Bx2 this time.
#  Version 2, fixed how Wolfram rules are calculated 
#  and now uses Bx2 for intermediate Wolfram rules.

#  For Golly 2.5

#  Author:  Eric Goldstein, June 23, 2013, eric at goldstein dot net

#  Sphenocorona's WolfVN rulefamily proposal:
#  1. taking the states of its neighbors NW-N-NE
#  2. applying an elementary 1-dimensional rule (e.g. rule 110) to those cells, 
#     and returning the value of the center cell (in this case north)
#  3. repeating step 2 with the sets NE-E-SE, SE-S-SW, and SW-W-NW, and finally
#  4. taking the four returned values and using them to determine the state of cell C through
#     an outer-totalistic Von-Neumann neighborhood CA such as B1/S23V.

# The solution below starts with the observation that Stephen Wolfram's "Elementary" CA rules
# can be expressed in MCell's Weighted Life format.
# For example, Rule 110 can be expressed as 
# NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 
# If you're not familiar with Weighted Life, see the discussion here:
# http://www.conwaylife.com/forums/viewtopic.php?f=11&t=935&start=0&hilit=weighted+life
# and also see the script listed here:
# http://www.conwaylife.com/forums/viewtopic.php?f=9&t=933#p6814 

import golly
from glife.RuleTree import *

rulestring = golly.getstring('''Create one of Sphenocorona's WolfVN rules using Bx2.
Enter a Wolfram elementary CA rule (even numbered rules only), and a semi-totalistic rule in the Von Neumann neighborhood.
Use the form Wnnn_Bnnn/SnnnnV:''', "W110_B1/S23V")

if "S" not in rulestring:
  golly.exit("The von Neumann neighborhood Bnn/Snnn rule must include the letter S") 

rulestring = rulestring.replace(" ", "")
rulestring = rulestring.upper()
rulestring_parts = rulestring.split("_")
rulestring_wolfram_part = rulestring_parts[0]
rulestring_vn_part = rulestring_parts[1]

VN_B_rulestring = rulestring_vn_part.split("S")[0]
VN_S_rulestring = rulestring_vn_part.split("S")[1]


VN_birth_rule = []
VN_survival_rule = []
VN_birth_canonical = ""
VN_survival_canonical = "" 

valid_neighbors = ["0","1","2","3","4"]

for i in valid_neighbors:
    if i in VN_B_rulestring:
       VN_birth_rule.append(int(i))
       VN_birth_canonical = VN_birth_canonical + i
    if i in VN_S_rulestring:
       VN_survival_rule.append(int(i))
       VN_survival_canonical = VN_survival_canonical + i

name = "WolfVN-Bx2-" + rulestring_wolfram_part + "_" + "B" + VN_birth_canonical + "_S" + VN_survival_canonical + "V"


# Wolfram rules are converted into Weighted Life rules here.   
# Survival rules in Weighted Life have the RS prefix, and 
# Birth rules in Weighted Life have the RB prefix.

RS = []
RB = []

Wolfnum = int(rulestring_wolfram_part.split("W")[1])

if (Wolfnum >> 7) & 1:
         RS.append(3)
if (Wolfnum >> 6) & 1:
         RS.append(2)
if (Wolfnum >> 5) & 1:
         RB.append(3)
if (Wolfnum >> 4) & 1:
         RB.append(2)
if (Wolfnum >> 3) & 1:
         RS.append(1)
if (Wolfnum >> 2) & 1:
         RS.append(0)
if (Wolfnum >> 1) & 1:
         RB.append(1)
if (Wolfnum >> 0) & 1:
         RB.append(0)


n_states = 3
n_neighbors = 8

def transition_function(a):
    # order for 8 neighbors is NW, NE, SW, SE, N, W, E, S, C
    nw_cell, ne_cell, sw_cell, se_cell, n_cell, w_cell, e_cell, s_cell, me_cell = a

    # Rule 110 for the central cell (unused, but I'm including it for reference)
    # NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 

    # Calculate an elementary CA rule on the North cell
    NW_weight = 2
    NE_weight = 1
    north_sum = NW_weight*(nw_cell == 2) + NE_weight*(ne_cell == 2) 
    if n_cell == 2 and north_sum in RS:
       north_wolf = 1
    elif n_cell == 1 and north_sum in RB:
       north_wolf = 1
    else:
       north_wolf = 0

    # Calculate an elementary CA rule on the East cell
    NE_weight = 2
    SE_weight = 1
    east_sum = NE_weight*(ne_cell == 2)  + SE_weight*(se_cell == 2)  
    if e_cell == 2 and east_sum in RS:
       east_wolf = 1
    elif e_cell == 1 and east_sum in RB:
       east_wolf = 1
    else:
       east_wolf = 0

    # Calculate an elementary CA rule on the South cell
    SE_weight = 2
    SW_weight = 1
    south_sum =   SW_weight*(sw_cell == 2) + SE_weight*(se_cell == 2)  
    if s_cell == 2 and south_sum in RS:
       south_wolf = 1
    elif s_cell == 1 and south_sum in RB:
       south_wolf = 1
    else:
       south_wolf = 0

    # Calculate an elementary CA rule on the West cell
    SW_weight = 2
    NW_weight = 1
    west_sum = NW_weight*(nw_cell == 2)  + SW_weight*(sw_cell == 2) 
    if w_cell == 2 and west_sum in RS:
       west_wolf = 1
    elif w_cell == 1 and west_sum in RB:
       west_wolf = 1
    else:
       west_wolf = 0

    # Now lets calculate the VN rule from the four WolframRule-derived values

    final_sum = north_wolf + east_wolf + south_wolf + west_wolf

    if me_cell == 0 and final_sum in VN_birth_rule:
        return 1

    if me_cell == 1 and final_sum  in VN_birth_rule:
        return 2
         
    if  me_cell == 2 and final_sum in VN_survival_rule:
        return 2 
      
    return 0


##########################################################
# The code below this line is copied from make-ruletree.py 
##########################################################

try:

    MakeRuleTreeFromTransitionFunction( n_states, n_neighbors, transition_function,
                                        golly.getdir("rules")+name+".tree" )
    
    # use name.tree to create name.rule (with no icons);
    # note that if name.rule already exists then we only replace the info in
    # the @TREE section to avoid clobbering any other info added by the user
    ConvertTreeToRule(name, n_states, [])
    
    golly.setalgo("RuleLoader")
    golly.setrule(name)
    golly.show("Created "+golly.getdir("rules")+name+".rule and switched to that rule.")

except:
    import sys
    import traceback
    exception, msg, tb = sys.exc_info()
    golly.warn(\
'''A problem was encountered with the supplied rule:'''+ '\n'.join(traceback.format_exception(exception, msg, tb)))
    golly.exit()
Here's a fixed (I hope!) version of the original non-Bx2 proposal:

Code: Select all

# Sphenocorona's WolfVN
#  Version 2, fixed how Wolfram rules are calculated.

#  For Golly 2.5

# Author:  Eric Goldstein, June 23, 2013, eric at goldstein dot net
# This was thrown together in a hurry from spare parts, 
# as an example of how to use make-ruletree.py

# Sphenocorona's WolfVN rulefamily proposal:
#  1. taking the states of its neighbors NW-N-NE
#  2. applying an elementary 1-dimensional rule (e.g. rule 110) to those cells, 
#     and returning the value of the center cell (in this case north)
#  3. repeating step 2 with the sets NE-E-SE, SE-S-SW, and SW-W-NW, and finally
#  4. taking the four returned values and using them to determine the state of cell C through
#     an outer-totalistic Von-Neumann neighborhood CA such as B1/S23V.

# The solution below starts with the observation that Stephen Wolfram's "Elementary" CA rules
# can be expressed in MCell's Weighted Life format.
# For example, Rule 110 can be expressed as 
# NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 
# If you're not familiar with Weighted Life, see the discussion here:
# http://www.conwaylife.com/forums/viewtopic.php?f=11&t=935&start=0&hilit=weighted+life
# and also see the script listed here:
# http://www.conwaylife.com/forums/viewtopic.php?f=9&t=933#p6814 

import golly
from glife.RuleTree import *

rulestring = golly.getstring('''Create one of Sphenocorona's WolfVN rules using this script.
Enter a Wolfram elementary CA rule (even numbered rules only), and a semi-totalistic rule in the Von Neumann neighborhood.
Use the form Wnnn_Bnnn/SnnnnV:''', "W110_B1/S23V")

if "S" not in rulestring:
  golly.exit("The von Neumann neighborhood Bnn/Snnn rule must include the letter S") 

rulestring = rulestring.replace(" ", "")
rulestring = rulestring.upper()
rulestring_parts = rulestring.split("_")
rulestring_wolfram_part = rulestring_parts[0]
rulestring_vn_part = rulestring_parts[1]

VN_B_rulestring = rulestring_vn_part.split("S")[0]
VN_S_rulestring = rulestring_vn_part.split("S")[1]


VN_birth_rule = []
VN_survival_rule = []
VN_birth_canonical = ""
VN_survival_canonical = "" 

valid_neighbors = ["0","1","2","3","4"]

for i in valid_neighbors:
    if i in VN_B_rulestring:
       VN_birth_rule.append(int(i))
       VN_birth_canonical = VN_birth_canonical + i
    if i in VN_S_rulestring:
       VN_survival_rule.append(int(i))
       VN_survival_canonical = VN_survival_canonical + i

name = "WolfVN-" + rulestring_wolfram_part + "_" + "B" + VN_birth_canonical + "_S" + VN_survival_canonical + "V"


# Wolfram rules are converted into Weighted Life rules here.   
# Survival rules in Weighted Life have the RS prefix, and 
# Birth rules in Weighted Life have the RB prefix.

RS = []
RB = []

Wolfnum = int(rulestring_wolfram_part.split("W")[1])

if (Wolfnum >> 7) & 1:
         RS.append(3)
if (Wolfnum >> 6) & 1:
         RS.append(2)
if (Wolfnum >> 5) & 1:
         RB.append(3)
if (Wolfnum >> 4) & 1:
         RB.append(2)
if (Wolfnum >> 3) & 1:
         RS.append(1)
if (Wolfnum >> 2) & 1:
         RS.append(0)
if (Wolfnum >> 1) & 1:
         RB.append(1)
if (Wolfnum >> 0) & 1:
         RB.append(0)


n_states = 2
n_neighbors = 8

def transition_function(a):
    # order for 8 neighbors is NW, NE, SW, SE, N, W, E, S, C
    nw_cell, ne_cell, sw_cell, se_cell, n_cell, w_cell, e_cell, s_cell, me_cell = a

    # Rule 110 for the central cell (unused, but I'm including it for reference)
    # NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 

    # Calculate an elementary CA rule on the North cell
    NW_weight = 2
    NE_weight = 1
    north_sum = NW_weight*(nw_cell == 1) + NE_weight*(ne_cell == 1)
    if n_cell == 1 and north_sum in RS:
       north_wolf = 1
    elif n_cell == 0 and north_sum in RB:
       north_wolf = 1
    else:
       north_wolf = 0

    # Calculate an elementary CA rule on the East cell
    NE_weight = 2
    SE_weight = 1
    east_sum = NE_weight*(ne_cell == 1)  + SE_weight*(se_cell == 1)  
    if e_cell == 1 and east_sum in RS:
       east_wolf = 1
    elif e_cell == 0 and east_sum in RB:
       east_wolf = 1
    else:
       east_wolf = 0

    # Calculate an elementary CA rule on the South cell
    SE_weight = 2
    SW_weight = 1
    south_sum =   SW_weight*(sw_cell == 1) + SE_weight*(se_cell == 1) 
    if s_cell == 1 and south_sum in RS:
       south_wolf = 1
    elif s_cell == 0 and south_sum in RB:
       south_wolf = 1
    else:
       south_wolf = 0

    # Calculate an elementary CA rule on the West cell
    SW_weight = 2
    NW_weight = 1
    west_sum = NW_weight*(nw_cell == 1)  + SW_weight*(sw_cell == 1) 
    if w_cell == 1 and west_sum in RS:
       west_wolf = 1
    elif w_cell == 0 and west_sum in RB:
       west_wolf = 1
    else:
       west_wolf = 0

    # Now lets calculate the VN rule from the four WolframRule-derived values

    final_sum = north_wolf + east_wolf + south_wolf + west_wolf

    if  me_cell == 1 and final_sum in VN_survival_rule:
        return 1 
    elif me_cell == 0 and final_sum in VN_birth_rule:
        return 1
    else:
        return 0

##########################################################
# The code below this line is copied from make-ruletree.py 
##########################################################

try:

    MakeRuleTreeFromTransitionFunction( n_states, n_neighbors, transition_function,
                                        golly.getdir("rules")+name+".tree" )
    
    # use name.tree to create name.rule (with no icons);
    # note that if name.rule already exists then we only replace the info in
    # the @TREE section to avoid clobbering any other info added by the user
    ConvertTreeToRule(name, n_states, [])
    
    golly.setalgo("RuleLoader")
    golly.setrule(name)
    golly.show("Created "+golly.getdir("rules")+name+".rule and switched to that rule.")

except:
    import sys
    import traceback
    exception, msg, tb = sys.exc_info()
    golly.warn(\
'''A problem was encountered with the supplied rule:'''+ '\n'.join(traceback.format_exception(exception, msg, tb)))
    golly.exit()
bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Sphenocorona's WolfVN

Post by bprentice »

Eric,

Could you please provide example patterns for each of your corrected Wolfram/von Neumann rules.

Brian Prentice
Sphenocorona
Posts: 549
Joined: April 9th, 2013, 11:03 pm

Re: Sphenocorona's WolfVN

Post by Sphenocorona »

Thank you. I have grown a liking for that previous rule, so I might end up making a thread for it. In the realm of the fixed rules, I found one in both the generic two state and in the Bx2 families. First up, in the generic versions, I found that the rule W40-B12/SV has a few different natural oscillators and an extensible c/3 diagonal extensible spaceship:

Code: Select all

x = 5, y = 3, rule = WolfVN-W40_B12_SV
2bo$2bo$obobo!
In the Bx2 realm, I found the rule W110-B134x2/S0V has natural (1,2)c/5 and (1,2)c/8 knightships, of which the faster ones can be combined to form rakes:

Code: Select all

x = 210, y = 134, rule = WolfVN-Bx2-W110_B134_S0V
206.A2B$205.A4B$205.AB.BA$206.A$175.ABA$175.3B$175.ABA2$175.ABA$173.A
B.2B$173.2B.BA$173.ABA108$.2A$A2BA$2.2B$.3B$.AB6$6.2A$5.A2BA$7.2B$6.
3B$6.AB!
I'll have to remember to make that other thread!
bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Sphenocorona's WolfVN

Post by bprentice »

A Java program with which interesting "Wolfram Von Neumann" rules can be found and explored is here:

http://bprentice.webenet.net/Wolfram/

The program supports Wolfram one dimensional two neighborhood rules with up to six states. The program is an extension of the Square Cell Base program which is included in the archive here:

http://bprentice.webenet.net/Java%20Square%20Cell/

Brian Prentice
bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Sphenocorona's WolfVN

Post by bprentice »

Here is rule WolfVN-W50_B1_S1V which looks like it might be fun to explore.

Code: Select all

@RULE WolfVN-W50_B1_S1V

@TREE

num_states=2
num_neighbors=8
num_nodes=51
1 0 0
2 0 0
3 1 1
4 2 2
5 3 3
1 1 1
2 0 5
2 5 0
3 6 7
4 8 8
5 9 9
6 4 10
3 6 6
3 7 7
4 12 13
5 14 14
3 1 6
4 16 8
5 17 17
6 15 18
7 11 19
2 5 5
3 1 21
4 22 22
3 21 1
4 24 24
5 23 25
4 16 16
5 27 9
6 26 28
4 2 16
5 30 17
6 31 31
7 29 32
8 20 33
3 21 21
4 2 35
4 35 2
5 36 37
6 38 31
4 2 12
5 40 14
6 41 31
7 39 42
4 2 22
4 22 24
5 44 45
6 46 31
7 47 32
8 43 48
9 34 49
I found it with the Java program introduced in the previous post. I would be interested in any guns that you might find.

This related rule, WolfVN-W50_B1_S3V, is also interesting.

Code: Select all

@RULE WolfVN-W50_B1_S3V

@TREE

num_states=2
num_neighbors=8
num_nodes=58
1 0 0
2 0 0
3 1 1
4 2 2
5 3 3
1 1 0
2 0 5
2 5 0
3 6 7
4 8 8
5 9 9
6 4 10
3 6 6
3 7 7
4 12 13
5 14 14
1 0 1
2 16 0
3 17 6
4 18 8
5 19 19
6 15 20
7 11 21
2 5 5
3 1 23
4 24 24
3 23 1
4 26 26
5 25 27
4 18 18
5 29 9
6 28 30
2 0 16
3 32 17
4 33 18
5 34 19
6 35 35
7 31 36
8 22 37
3 23 23
4 2 39
4 39 2
5 40 41
6 42 35
3 17 17
4 44 12
5 45 14
6 46 35
7 43 47
2 16 16
3 49 1
4 50 24
4 24 26
5 51 52
6 53 35
7 54 36
8 48 55
9 38 56
Brian Prentice
Sphenocorona
Posts: 549
Joined: April 9th, 2013, 11:03 pm

Re: Sphenocorona's WolfVN

Post by Sphenocorona »

This only affects the Bx2 rules here.
I found that the same bug from before is still present in the new script. In the rule W110-B134x2/S0V if you place cells like so you will find contradictory behavior:

Code: Select all

x = 13, y = 2, rule = WolfVN-Bx2-W110_B134_S0V
B4.B6.B$2A4.A3.B!
Let's label these cases A, B, and C, from left to right. Apart from the one prebirth cell missing in case B (which should be counted as dead), the first two cases are the same. However, in A the lower right prebirth cell is born while in case B it dies. Case C shows an instance where this bug occurs naturally; this was a part of the p8 knightship. A simpler example is a single state 2 cell.

Also, maybe there should be three x2 scripts: Wx2-B/S, W-Bx2/S (like the old script if i'm not mistaken), and Wx2-Bx2/S (like the new script if not mistaken).
EricG
Posts: 199
Joined: August 19th, 2011, 5:41 pm
Location: Chicago-area, USA

Re: Sphenocorona's WolfVN

Post by EricG »

Well, I don't agree that you've found a bug, although of course I've been wrong before!

Version 2 of the script runs Wx2-Bx2/S. Lets walk through how the script calculates the value of just one of the cells in case A and case B.

For case A, let the state-1 cell on the right be the center cell, and so the state-2 cell is "the NW cell", the state-1 cell on the left is "the West cell", and all the other cells in the moore neighborhood are set to background.

We run the Bx2 version of Rule 110 on the North cell: Rule 110 says 100 -> 0, so the Bx2 version says 200 -> 0.

We run the Bx2 version of Rule 110 on the East cell: 000 -> 0 (and note that Rule 110's conventional left is the NE cell)

We run the Bx2 version of Rule 110 on the South cell: 000 -> 0 (Rule 110's conventional left is the SE cell)

Finally, we run the Bx2 version of Rule 110 on the West cell, where Rule 110's conventional left is the SW cell: rule 110 says 001 -> 1, so the Bx2 version says 012 -> 2.

Since the West cell is in a prebirth state (state-1), the Bx2 version of Rule 110 says that it becomes alive (state-2). Of course, this calculation doesn't make the West cell alive in the CA -- this is just bookeeping for calculating the value of the center cell -- but we've now determined that West cell will count as a Wolfram-rule-derived neighbor of the center cell.

Now we we run B134x2/S0V on the center cell, and since the center cell has one Wofram-derived neighbor, and is currently a pre-birth cell, it is born.

For case B, everything is as before, except that the West cell is set to background.

As before, we eventually run the Bx2 version Rule 110 on the West cell: Rule 110 says 001 -> 1, so the Bx2 version of Rule 110 says 002 -> 1. Since the West cell is currently set to the background, the Bx2 version of Rule 110 can only promote it to a pre-birth status. That's not enough to contribute to count as a Wolfram-rule-derived neighbor for the center cell.

We now run B134x2/S0V on the center cell, and since the center cell is in a pre-birth state and has zero Wofram-rule-derived neighbors, the center cell is demoted from state-1 to state-0.

=====

If you agree with the above, I'd be happy to post scripts for Wx2-B/S andW-Bx2/S (or maybe you'd like to do it.) But we should first specify how cells with pre-birth status (state-1) will be treated when running non-Bx2 rules.

====

By the way, I really enjoyed the rules you and Brian found - thanks to you both for posting them.
Last edited by EricG on July 5th, 2013, 11:56 am, edited 4 times in total.
bprentice
Posts: 920
Joined: September 10th, 2009, 6:20 pm
Location: Coos Bay, Oregon

Re: Sphenocorona's WolfVN

Post by bprentice »

Here is another variant, WolfVN-W50_B14_S34V, of the rule that I posted above:

Code: Select all

@RULE WolfVN-W50_B14_S34V

@TREE

num_states=2
num_neighbors=8
num_nodes=59
1 0 0
2 0 0
3 1 1
4 2 2
5 3 3
1 1 0
2 0 5
2 5 0
3 6 7
4 8 8
5 9 9
6 4 10
3 6 6
3 7 7
4 12 13
5 14 14
1 0 1
2 16 0
3 17 6
4 18 8
5 19 19
6 15 20
7 11 21
2 5 5
3 1 23
4 24 24
3 23 1
4 26 26
5 25 27
4 18 18
5 29 9
6 28 30
1 1 1
2 32 16
3 33 17
4 34 18
5 35 19
6 36 36
7 31 37
8 22 38
3 23 23
4 2 40
4 40 2
5 41 42
6 43 36
3 17 17
4 45 12
5 46 14
6 47 36
7 44 48
2 16 16
3 50 1
4 51 24
4 24 26
5 52 53
6 54 36
7 55 37
8 49 56
9 39 57
and here is an example pattern:

Code: Select all

x = 65, y = 65, rule = WolfVN-W50_B14_S34V
6.A.A.A.A.A.A.A.A.A3.A3.A3.A.A.A.A.A.A.A.A.A$6.3A.A.9A.A3.A3.A3.A.A
.A.A.A.A.5A$7.A.A3.9A.A.3A.A.A.A3.3A.3A.5A.A.A.A$9.A3.A.A.A.A.A.A.A
.A.A.A.A3.A.A.A.A.A.A.A.A.A.A3$2A$.2A$2A$2.2A57.2A$2A$61.2A$2A$.3A57.
2A$3A60.2A$.3A57.3A$3A59.3A$.3A57.3A$3A59.3A$.3A57.2A$3A60.2A$2.2A57.
2A$2A60.3A$2.2A57.2A$63.2A$2.2A57.2A$3A59.3A$2.2A57.2A$63.2A$2.2A$2A
61.2A$2.2A57.2A2$2.2A57.2A$2A61.2A$61.2A$2A$2.2A57.2A$3A59.3A$2.2A57.
2A$2A$2.2A57.2A$3A60.2A$2.2A57.2A$2A60.3A$2.2A57.3A$3A59.3A$.3A57.3A
$3A59.3A$.3A57.3A$2A60.3A$2.2A57.3A$63.2A$2.2A$63.2A$2.2A57.2A$63.2A
$62.2A$63.2A3$9.A.A.A.A.A.A.A.A.A.A3.A.A.A.A.A.A.A.A.A.A.A3.A$9.A.A
.A.5A.3A.3A3.A.A.A.3A.A.9A3.A.A$14.5A.A.A.A.A.A.A3.A3.A3.A.9A.A.3A$
14.A.A.A.A.A.A.A.A.A3.A3.A3.A.A.A.A.A.A.A.A.A!
At first this pattern seems to be an irregular gun. Unfortunately, however, it breaks up after generating an impressive display for more than 22,000 generations. Can anyone construct a regular or irregular gun using this design or any other design?

Brian Prentice
EricG
Posts: 199
Joined: August 19th, 2011, 5:41 pm
Location: Chicago-area, USA

Re: Sphenocorona's WolfVN

Post by EricG »

I edited my reply to Sphenocrorona, above, to make it more clear (I hope!) Brian, no guns yet.
Sphenocorona
Posts: 549
Joined: April 9th, 2013, 11:03 pm

Re: Sphenocorona's WolfVN

Post by Sphenocorona »

Ok, I guess that would make sense. However the other Bx2 WolfVN subfamily that I am capable of making sense of would not follow that setup, which would be the one where the Wolfram rule is configured as normal, and then Bx2 is applied specifically to the VN totalistic rule.

So for this other family (imagine we find the Rule 110 values returned from having live cells at N, NW, W, and SE from the dead center cell. Next we plug the obtained neighbor values 1, 1, 0, 1 into the rule B13x2/SV (V for von neuman neighborhood) and find that the center cell goes into the pre-birth stage. In this case when applying Rule 110, only state 2 fully living cells are considered as living (1) and the others are considered dead. If any surrounding state 0 cells were changed to state 1, the outcome for the center cell would be the same.

Now I'm just wondering about what to name the two different subfamilies, and whether a third exists. Originally I did not even think of having the Wolfram rule as Bx2, which I think now is a good idea, but I think that there should also be a script for rules with Bx2 only for the final VN rule. I think it should be possible to have rules like this that handle state 1 consistently; if not I would like to see a counter-example if possible. Thanks!
EricG
Posts: 199
Joined: August 19th, 2011, 5:41 pm
Location: Chicago-area, USA

Re: Sphenocorona's WolfVN

Post by EricG »

Here's a modification of the script that should do what you're looking for. I changed the default rule to B2/S23V - it seemed more interesting when combined with Rule 110.

Code: Select all

# Sphenocorona's WolfVN but using Bx2 for only the von Neumann rule this time.
# State 1 is treated like state 0 by the Wolfram rule, but is treated as a pre-birth state by the von Neumann rule.

#  For Golly 2.5   

#  Author:  Eric Goldstein, July 7, 2013, eric at goldstein dot net

#  Sphenocorona's WolfVN rulefamily proposal:
#  1. taking the states of its neighbors NW-N-NE
#  2. applying an elementary 1-dimensional rule (e.g. rule 110) to those cells, 
#     and returning the value of the center cell (in this case north)
#  3. repeating step 2 with the sets NE-E-SE, SE-S-SW, and SW-W-NW, and finally
#  4. taking the four returned values and using them to determine the state of cell C through
#     an outer-totalistic Von-Neumann neighborhood CA such as B1/S23V.

# The solution below starts with the observation that Stephen Wolfram's "Elementary" CA rules
# can be expressed in MCell's Weighted Life format.
# For example, Rule 110 can be expressed as 
# NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 
# If you're not familiar with Weighted Life, see the discussion here:
# http://www.conwaylife.com/forums/viewtopic.php?f=11&t=935&start=0&hilit=weighted+life
# and also see the script listed here:
# http://www.conwaylife.com/forums/viewtopic.php?f=9&t=933#p6814 

import golly
from glife.RuleTree import *

rulestring = golly.getstring('''Create one of Sphenocorona's WolfVN rules using Bx2 for only the von Neumann rule.
Enter a Wolfram elementary CA rule (even numbered rules only), and a semi-totalistic rule in the Von Neumann neighborhood.
Use the form Wnnn_Bnnn/SnnnnV:''', "W110_B2/S23V")

if "S" not in rulestring:
  golly.exit("The von Neumann neighborhood Bnn/Snnn rule must include the letter S") 

rulestring = rulestring.replace(" ", "")
rulestring = rulestring.upper()
rulestring_parts = rulestring.split("_")
rulestring_wolfram_part = rulestring_parts[0]
rulestring_vn_part = rulestring_parts[1]

VN_B_rulestring = rulestring_vn_part.split("S")[0]
VN_S_rulestring = rulestring_vn_part.split("S")[1]


VN_birth_rule = []
VN_survival_rule = []
VN_birth_canonical = ""
VN_survival_canonical = "" 

valid_neighbors = ["0","1","2","3","4"]

for i in valid_neighbors:
    if i in VN_B_rulestring:
       VN_birth_rule.append(int(i))
       VN_birth_canonical = VN_birth_canonical + i
    if i in VN_S_rulestring:
       VN_survival_rule.append(int(i))
       VN_survival_canonical = VN_survival_canonical + i

name = "WolfVN-with_Bx2_for_VN_only-" + rulestring_wolfram_part + "_" + "B" + VN_birth_canonical + "_S" + VN_survival_canonical + "V"


# Wolfram rules are converted into Weighted Life rules here.   
# Survival rules in Weighted Life have the RS prefix, and 
# Birth rules in Weighted Life have the RB prefix.

RS = []
RB = []

Wolfnum = int(rulestring_wolfram_part.split("W")[1])

if (Wolfnum >> 7) & 1:
         RS.append(3)
if (Wolfnum >> 6) & 1:
         RS.append(2)
if (Wolfnum >> 5) & 1:
         RB.append(3)
if (Wolfnum >> 4) & 1:
         RB.append(2)
if (Wolfnum >> 3) & 1:
         RS.append(1)
if (Wolfnum >> 2) & 1:
         RS.append(0)
if (Wolfnum >> 1) & 1:
         RB.append(1)
if (Wolfnum >> 0) & 1:
         RB.append(0)


n_states = 3
n_neighbors = 8

def transition_function(a):
    # order for 8 neighbors is NW, NE, SW, SE, N, W, E, S, C
    nw_cell, ne_cell, sw_cell, se_cell, n_cell, w_cell, e_cell, s_cell, me_cell = a

    # Rule 110 for the central cell (unused, but I'm including it for reference)
    # NW0,NN0,NE0,WW2,ME0,EE1,SW0,SS0,SE0,HI0,RS0,RS1,RS2,RB1,RB3 


    # Calculate an elementary CA rule on the North cell
    NW_weight = 2
    NE_weight = 1
    north_sum = NW_weight*(nw_cell == 2) + NE_weight*(ne_cell == 2)
    if n_cell == 2 and north_sum in RS:
       north_wolf = 1
    elif n_cell < 2 and north_sum in RB:
       north_wolf = 1
    else:
       north_wolf = 0

    # Calculate an elementary CA rule on the East cell
    NE_weight = 2
    SE_weight = 1
    east_sum = NE_weight*(ne_cell == 2)  + SE_weight*(se_cell == 2)  
    if e_cell == 2 and east_sum in RS:
       east_wolf = 1
    elif e_cell < 2 and east_sum in RB:
       east_wolf = 1
    else:
       east_wolf = 0

    # Calculate an elementary CA rule on the South cell
    SE_weight = 2
    SW_weight = 1
    south_sum =   SW_weight*(sw_cell == 2) + SE_weight*(se_cell == 2) 
    if s_cell == 2 and south_sum in RS:
       south_wolf = 1
    elif s_cell < 2 and south_sum in RB:
       south_wolf = 1
    else:
       south_wolf = 0

    # Calculate an elementary CA rule on the West cell
    SW_weight = 2
    NW_weight = 1
    west_sum = NW_weight*(nw_cell == 2)  + SW_weight*(sw_cell == 2) 
    if w_cell == 2 and west_sum in RS:
       west_wolf = 1
    elif w_cell < 2 and west_sum in RB:
       west_wolf = 1
    else:
       west_wolf = 0

 
    # Now lets calculate the VN rule from the four WolframRule-derived values

    final_sum = north_wolf + east_wolf + south_wolf + west_wolf

    if me_cell == 0 and final_sum in VN_birth_rule:
        return 1

    if me_cell == 1 and final_sum  in VN_birth_rule:
        return 2
         
    if  me_cell == 2 and final_sum in VN_survival_rule:
        return 2 
      
    return 0


##########################################################
# The code below this line is copied from make-ruletree.py 
##########################################################

try:

    MakeRuleTreeFromTransitionFunction( n_states, n_neighbors, transition_function,
                                        golly.getdir("rules")+name+".tree" )
    
    # use name.tree to create name.rule (with no icons);
    # note that if name.rule already exists then we only replace the info in
    # the @TREE section to avoid clobbering any other info added by the user
    ConvertTreeToRule(name, n_states, [])
    
    golly.setalgo("RuleLoader")
    golly.setrule(name)
    golly.show("Created "+golly.getdir("rules")+name+".rule and switched to that rule.")

except:
    import sys
    import traceback
    exception, msg, tb = sys.exc_info()
    golly.warn(\
'''A problem was encountered with the supplied rule:'''+ '\n'.join(traceback.format_exception(exception, msg, tb)))
    golly.exit()
---

Finally, for your proposed third Bx2 rule family, in which the Bx2 trick is applied to only the Wolfram rule and the VN rule is treated as a two state rule, you'll have to think about the specifications. Are state 1 cells treated as alive or dead by the VN rule? Will state1 cells ever get promoted to state2 cells? When cell is born via the VN rule, what state should it be? Does it matter whether the parents have the same state as each other?
Post Reply