Advertisement
AlexandraCatana

Untitled

Jan 19th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. class AutomatDeCelule:
  2.  
  3. def __init__(self):
  4. # Introducem dimensiunea automatului celulat
  5. self.L = int(input("Numarul de linii: "))
  6. self.C = int(input("Numarul de coloane: "))
  7. self.automat = [[0 for i in range(self.L)] for j in range(self.C)]
  8.  
  9. print("Starea celulelor din automat:(0-celula moarta, 1-celula vie): ")
  10. for i in range(self.L):
  11. self.automat[i] = list(map(int, input().split()))
  12.  
  13. # Functia furnizeaza numarul de celule vecine vii ale unei celule de pozitie data
  14. def CeluleVecineVii(self, i, j):
  15. oX = [-1, 0, 1]
  16. oY = [-1, 0, 1]
  17.  
  18. nrVeciniVii = 0
  19. for x in range(3):
  20. for y in range(3):
  21. # Coordonatele vecinului
  22. I = i + oX[x]
  23. J = j + oY[y]
  24. 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:
  25. nrVeciniVii += 1
  26. return nrVeciniVii
  27.  
  28. def UrmatoareaGeneratie(self):
  29. celuleSchimbate = [] # Lista contine coordonatele celulelor care isi schimba starea
  30.  
  31. for i in range(self.L):
  32. for j in range(self.C):
  33. nr = self.CeluleVecineVii(i, j)
  34. if (self.automat[i][j] == 1 and (nr < 2 or nr > 3)) or (self.automat[i][j] == 0 and nr == 3):
  35. # Celula isi modifica starea
  36. celuleSchimbate.append((i, j))
  37.  
  38. # Actualizam matricea
  39. for k in celuleSchimbate:
  40. p = k[0]
  41. q = k[1]
  42. self.automat[p][q] = 1 - self.automat[p][q]
  43.  
  44. # Afisam celulele modificate
  45. print("Celulele care isi modifica starea sunt: ")
  46. for k in celuleSchimbate:
  47. print('({0}, {1})'.format(k[0], k[1]), end = ' ')
  48. if celuleSchimbate[k] == 0:
  49. print("-moare,")
  50. else:
  51. print("-invie")
  52. print('\n')
  53.  
  54. celuleSchimbate.clear()
  55.  
  56. def AfisareAutomat(self):
  57. for i in range(self.L):
  58. for j in range(self.C):
  59. print(self.automat[i][j], end = ' ')
  60. print('\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement