[Tutor] First real script

Carlos carloslara at web.de
Wed Nov 8 13:00:30 CET 2006

Hi Again,

Luke, I left it this way now:

x = A_List[i-1]
y = A_List[i]
z = A_List[(i+1) % A_Len]

Probably the other way is shorter but right now I feel comfortable as it 
is now :-[ , Danny had already mentioned this method before, but it 
didn't sink properly until now. And yes I need it to wrap around because 
if not the behavior changes, at least it happened in my tests.

Now I'm tring to make it possible to choose which rule to use, my first 
idea was:

R_30 = [0,0,0,1,1,1,1,0]
R_110 = [0,1,1,0,1,1,1,0]
R = R_110
rule = {
          (1, 1, 1) : R[0],
          (1, 1, 0) : R[1],
          (1, 0, 1) : R[2],
          (1, 0, 0) : R[3],
          (0, 1, 1) : R[4],
          (0, 1, 0) : R[5],
          (0, 0, 1) : R[6],
          (0, 0, 0) : R[7],

I believe that in this way all possible rules could be defined by a 
list. The problem is that I'm going to need 256 lists. What would be 
real nice is to input a number, lets say 30 and have it converted to 
binary notation so it would look like 1110, then add enough zeros to the 
left and end up with 0001110, and finally convert this to a list than 
can be referenced in the dictionary. Here is the code:

#This is a hacked version of 'tobinary' from:

def tobinary(dec):
    """Convert a decimal number to binary.

        dec: The decimal number
    bin = []
    while dec > 0:
        bit = int(dec % 2)
        bin.insert(0, bit)
        dec = (dec - bit)/2
    print bin

##    This area formats a Bin number between 0 and 255
##    so it conforms with CA rules formatting
    b_len = len(bin)
    print 'b_len: ', b_len
    while b_len < 8:
        bin[0:0] = [0]
        b_len = len(bin)
    print bin


Is this a good way to proceed?

Alan, about going 3D, I agree a normal 2D list will do, but I'm really 
afraid of the list wrapping, this time squared (or is it cubed?). I'm 
going to need rules for center, corner and border cells. I'm afraid...

Thanks  a lot,

More information about the Tutor mailing list