View difference between Paste ID: H4yZ0hmM and aShFK2P1
SHOW: | | - or go back to the newest paste.
1
import random as r
2
3-
EverythingInExistence = [] # doesn't do anything, just a comment in the form of code
3+
4
5-
class Bootstrap:
5+
6
        print "Hello, Universe!"
7-
    def __init__(self):
7+
8
9-
        ux = 6
9+
10-
        uy = 6
10+
11-
        ut = 3
11+
12
        print "\nInit univ:\n"
13-
        uinput = raw_input("  > (Int) [" + str(ux) + "] Universe X dimension: ")
13+
14-
        if uinput != "":
14+
15-
            ux = int(uinput)
15+
16
        print "\nInit timeBuffer:\n"
17-
        uinput = raw_input("  > (Int) [" + str(uy) + "] Universe Y dimension: ")
17+
18-
        if uinput != "":
18+
19-
            uy = int(uinput)
19+
20
        if progenitor and deviation:
21-
        uinput = raw_input("  > (Int) [" + str(ut) + "] Universe Timesteps to run: ")
21+
22-
        if uinput != "":
22+
23-
            ut = int(uinput)
23+
24
        #else:
25-
        print "\nRun grid [" + str(ux) + ", " + str(uy) + "] for " + str(ut) + " steps.\n"
25+
        #    pass
26
        self.x = x-1
27-
        EverythingInExistence.append(Universe(ux,uy))
27+
        self.y = y-1
28
        self.branches = []
29-
        for t in range(ut):
29+
30-
            for i in EverythingInExistence:
30+
31-
                print "Run all universes (" + str(t) + ", " + str(i) + ") "
31+
        if x == self.x or x == 0 or y == self.y or y == 0: # we should implement dynamic sizing soon
32-
                i.update(i)
32+
33
34
        sum = r.randint(0,8) #[sum(i) for i in self.univ[y-1:y+1]]# :( this offends my determinist sensibilities
35
36
        if sum == 3:
37
            return 1
38
        elif sum == 2 and (self.univ[x][y] == 1):
39
            return 1
40
        elif sum > 6:
41
            self.branch(sum - 6) 
42
            return 0
43
        else:
44
            return 0
45
46
    def update(self,univ):
47
        print "Update..."
48
        temp = univ
49
50
        self.univ = [[self.getNextState(i,j) for i in range(self.y)] for j in range(self.x)]
51
52
        print "\nCGoL Update:\n"
53
        for i in self.univ:
54
            print i
55
56-
            pass
56+
57-
            self.x = x+1
57+
58-
            self.y = y
58+
            theRealBranch(self.timeBuffer, self.branches)
59-
            self.branches = []
59+
60
        #for i in range(univ.y):   # What's this?
61
        #    for j in range(univ.x):
62-
        if x == self.x or x == 0 or y == self.y or y == 0:
62+
63
64
        branches = []
65-
        sum = r.randint(0,8) #[sum(i) for i in self.univ[y-1:y+1]]
65+
66
67
    def branch(self, sum):
68
        print "Branch!"
69
        self.branches.append([self.x,self.y,sum - 6])
70
        self.timeBuffer[self.x][self.y] = (0, sum - 6)
71
    ## Code Transplant ##
72-
            self.branch(sum - 6)
72+
73
    def theRealBranch(self,timeBuffer, branches): 
74
        creating = True
75
        while creating:
76
            counter = 0
77
            list = [0 for i in branches]
78
            for i in list:
79
80
       	        print "Creating branch", str(counter)
81
82
                tempTimeBuffer = self.timeBuffer # There are just temporary variables here
83
                tempDevi = self.template         # while their universe is being created
84
 
85
                counter += 1        # keep track of where we are
86
 
87
                tempDevi[branches[counter][x]][branches[counter][1]] = list[counter]
88
89-
            #theRealBranch(self.timeBuffer)
89+
                for i in branches:       # updates timeBuffer to stop weird stuff from happening in the new universe
90
                    tempTimeBuffer[branches[1]][branches[2]] = [list[counter], branches[2]]
91-
        #for i in range(univ.y):
91+
92
                EverythingInExistence.append(Universe(self.x, self.y, self.univ, tempDevi))
93
                myCreation = EverythingInExistence(len(EverythingInExistence)-1)
94
                myCreation.timeBuffer = tempTimeBuffer
95
96
            list[counter] += 1
97
98
            if list[counter] == 2:                                                
99-
        print "Do branch"
99+
100
                for i in range(list):                  # list is represented as a binary number, and incremented
101-
        #self.timeBuffer[self.x][self.y] = (0, sum - 6)
101+
102
                    j = len(list) - i
103
104
                    if list[j] == 2 and not j == 0:       
105-
    bs = Bootstrap()
105+
106-
    print '[%s]' % ', '.join(map(str, EverythingInExistence))
106+
                        list[j] -= 1
107
                        list[j-1]+=1
108
109
                    elif j == 0 and list[j] == 2:
110
111
                        creating = False
112
113
                        break
114
115
                    else:
116
117
                        continue
118
119
            else:
120
121
                continue
122
123
if __name__ == "__main__":
124
125
     EverythingInExistence =  []
126
127
     ux = 6
128
     uy = 6
129
     ut = 3
130
131
     uinput = raw_input("  > (Int) [" + str(ux) + "] Universe X dimension: ")
132
     if uinput != "":
133
        ux = int(uinput)
134
135
     uinput = raw_input("  > (Int) [" + str(uy) + "] Universe Y dimension: ")
136
     if uinput != "":
137
        uy = int(uinput)
138
139
     uinput = raw_input("  > (Int) [" + str(ut) + "] Universe Timesteps to run: ")
140
     if uinput != "":
141
        ut = int(uinput)
142
143
     print "\nRun grid [" + str(ux) + ", " + str(uy) + "] for " + str(ut) + " steps.\n"
144
145
     EverythingInExistence.append(Universe(ux,uy))
146
147
     for t in range(ut):
148
        for i in EverythingInExistence:
149
           print "Run all universes (" + str(t) + ", " + str(i) + ") "
150
           i.update(i)
151
152
#    print '[%s]' % ', '.join(map(str, EverythingInExistence))