GOING SMOOTHER

With an additive rule adding one or zero according to
an ordering between the cell and its two near neighbors we get 1024 different
CA. The plots seems smoother and the complexity lower than in the cases shown before.
Rule 364 shows some familiar triangular structure but fading away …
plot_256_383
As for the previous post … to generate the plots above, I used the following rattlesnake script:

# Script to generate simple Cellular Automata
# PL 26.VI.2015

import numpy as np
import matplotlib.pyplot as plt

# Aux Functions
########################################

def rule_creator_1024(rule):

    a = map(int,bin(rule)[2:].zfill(10)) # rule creator

    return a


def CA(rule,cells3):

    a = cells3[0];
    b = cells3[1];
    c = cells3[2];
    
    if ( a > b) & (a > c ) & ( b > c)  : nn = 0
    if ( a > b) & (a > c ) & ( b < c)  : nn = 1
    
    if ( b > a) & (b > c ) & ( a > c)  : nn = 2
    if ( b > a) & (b > c ) & ( a < c)  : nn = 3
    
    if ( c > a) & (c > b ) & ( a > b)  : nn = 4
    if ( c > a) & (c > b ) & ( a < b)  : nn = 5

    if ( a == b)                       : nn = 6
    if ( b == c)                       : nn = 7
    if ( a == c)                       : nn = 8
    if ( a == b) & (a == c)            : nn = 9
    return rule[nn]   
    
# Main program
########################################

N=30 # Number of Cellular Automata Steps

# memory matrix init

dat=np.zeros([N,N*4+1],np.int)

dat[0,2*N]=1;

cells3=[0,0,0];

plt.figure(figsize=(20, 20))

# do the job 

counter = 0

for rule in range(1024):

    print "Rule Number -->", rule

    plt.subplot(16,8,(rule)%128+1)

    res=rule_creator_1024(rule)

    for stp in np.arange(1,N):
        for i in np.arange(1,4*N):

            cells3[0]  = dat[stp-1,i-1];
            cells3[1]  = dat[stp-1,i];
            cells3[2]  = dat[stp-1,i+1];

            dat[stp,i] = dat[stp-1,i] + CA(res,cells3);                 # apply the Cellular Automata with rule --> res

#   completed one realization ...

    dat_to_plot=dat[:,N+1:3*N].copy()                    # plot only the central window

    plt.gca().xaxis.set_major_locator(plt.NullLocator()) # remove ticks and labels
    plt.gca().yaxis.set_major_locator(plt.NullLocator())

    plt.pcolor(dat_to_plot[::-1], cmap='Greys')

    rulenm='rule ' + str(rule); plt.xlabel(rulenm,fontsize='xx-small')

    if (counter+1)%128 == 0: #plot first page
        file_out = 'plot_' + str(counter-127).zfill(3) + '_' + str(counter).zfill(3) + '.png'
        plt.savefig(file_out, format='png',dpi=900)
        plt.clf()
        plt.figure(figsize=(20, 20))
 
 
    counter = counter +1;

print 'EOB'
Annunci

One thought on “GOING SMOOTHER

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...