Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class AutomatDeCelule:
- def __init__(self):
- # Introducem dimensiunea automatului celulat
- self.L = int(input("Numarul de linii: "))
- self.C = int(input("Numarul de coloane: "))
- self.automat = [[0 for i in range(self.L)] for j in range(self.C)]
- print("Starea celulelor din automat:(0-celula moarta, 1-celula vie): ")
- for i in range(self.L):
- self.automat[i] = list(map(int, input().split()))
- # Functia furnizeaza numarul de celule vecine vii ale unei celule de pozitie data
- def CeluleVecineVii(self, i, j):
- oX = [-1, 0, 1]
- oY = [-1, 0, 1]
- nrVeciniVii = 0
- for x in range(3):
- for y in range(3):
- # Coordonatele vecinului
- I = i + oX[x]
- J = j + oY[y]
- if oY[x] != 0 and oY[y] != 0 and I >= 0 and I < self.L and J >= 0 and J < self.C and self.automat[I][J] == 1:
- nrVeciniVii += 1
- return nrVeciniVii
- def UrmatoareaGeneratie(self):
- celuleSchimbate = [] # Lista contine coordonatele celulelor care isi schimba starea
- for i in range(self.L):
- for j in range(self.C):
- nr = self.CeluleVecineVii(i, j)
- if (self.automat[i][j] == 1 and (nr < 2 or nr > 3)) or (self.automat[i][j] == 0 and nr == 3):
- # Celula isi modifica starea
- celuleSchimbate.append((i, j))
- # Actualizam matricea
- for k in celuleSchimbate:
- p = k[0]
- q = k[1]
- self.automat[p][q] = 1 - self.automat[p][q]
- # Afisam celulele modificate
- print("Celulele care isi modifica starea sunt: ")
- for k in celuleSchimbate:
- print('({0}, {1})'.format(k[0], k[1]), end = ' ')
- if celuleSchimbate[k] == 0:
- print("-moare,")
- else:
- print("-invie")
- print('\n')
- celuleSchimbate.clear()
- def AfisareAutomat(self):
- for i in range(self.L):
- for j in range(self.C):
- print(self.automat[i][j], end = ' ')
- print('\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement