-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathGame_of_Life.py
More file actions
105 lines (102 loc) · 4.42 KB
/
Game_of_Life.py
File metadata and controls
105 lines (102 loc) · 4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
"""Kostya Derebensky"""
from copy import deepcopy
class LifeGame:
def __init__(self, array: list):
self.__array = array
self.array = deepcopy(array)
self.height = len(array)
self.length = len(array[0])
def get_next_generation(self):
for i in self.__array:
for j in self.__array[i]:
num = self._number_of_neighbours(i,j)
if self.array[i][j] == 1:
if num == 3 or num == 2:
self.array[i][j] = 1
else:
self.array[i][j] = 0
if self.array[i][j] == 0:
if num == 3:
self.array[i][j] = 1
return self.array
def _number_of_neighbours(self, x, y):
count = 0
"""ЕСЛИ КЛЕТКА НЕ НА КРАЯХ"""
if y != 0 and x != 0:
for j in range(self.array[x - 1][y - 1], self.array[x - 1][y + 1]):
if j == 1:
count += 1
for j in range(self.array[x + 1][y - 1], self.array[x + 1][y + 1]):
if j == 1:
count += 1
if self.array[x][y - 1] == 1:
count += 1
if self.array[x][y + 1] == 1:
count += 1
"""ЕСЛИ КЛЕТКА НА В ЛЕВОМ ВЕРХНЕМ УГЛУ"""
if x == 0 and y == 0:
for j in range(self.array[x - 1][y], self.array[x - 1][y + 1]):
if j == 1:
count += 1
if self.array[x][y + 1] == 1:
count += 1
"""ЕСЛИ КЛЕТКА В ЛЕВОМ НИЖНЕМ УГЛУ"""
if y == 0 and x == self.height:
for j in range(self.array[self.height - 1][y], self.array[self.height - 1][y + 1]):
if j == 1:
count += 1
if self.array[self.height][y + 1] == 1:
count += 1
"""ЕСЛИ КЛЕТКА В ПРАВОМ НИЖНЕМ УГЛУ"""
if x == self.height and y == self.length:
for j in range(self.array[self.height - 1][self.length - 1], self.array[self.height - 1][self.length]):
if j == 1:
count += 1
if self.array[self.height][self.length - 1] == 1:
count += 1
"""ЕСЛИ КЛЕТКА В ПРАВОМ ВЕРХНЕМ УГЛУ"""
if y == self.length and x == 0:
for j in range(self.array[x + 1][self.length - 1], self.array[x - 1][self.length]):
if j == 1:
count += 1
if self.array[x][self.length - 1]:
count += 1
"""ЕСЛИ КЛЕТКА НА ЛЕВОЙ СТОРОНЕ"""
if x != 0 and y == 0:
for j in range(self.array[x - 1][y], self.array[x - 1][y + 1]):
if j == 1:
count += 1
for j in range(self.array[x + 1][y], self.array[x + 1][y + 1]):
if j == 1:
count += 1
if self.array[x][y + 1]:
count += 1
"""ЕСЛИ КЛЕТКА НА НИЖНЕЙ СТОРОНЕ"""
if y != 0 and x == self.height:
for j in range(self.array[self.height - 1][y - 1], self.array[self.length - 1][y + 1]):
if j == 1:
count += 1
if self.array[self.height][y - 1]:
count += 1
if self.array[self.height][y + 1]:
count += 1
"""ЕСЛИ КЛЕТКА НА ПРАВОЙ СТОРОНЕ"""
if x != 0 and y == self.length:
for j in range(self.array[x - 1][self.length - 1], self.array[x - 1][self.length]):
if j == 1:
count += 1
for j in range(self.array[x + 1][self.length - 1], self.array[x + 1][self.length]):
if j == 1:
count += 1
if self.array[x][self.length - 1]:
count += 1
"""ЕСЛИ КЛЕТКА НА ВЕРХНЕЙ СТОРОНЕ"""
if y != 0 and x == 0:
for j in range(self.array[x + 1][y - 1], self.array[x + 1][y + 1]):
if j == 1:
count += 1
if self.array[x][y + 1]:
count += 1
if self.array[x][y - 1]:
count += 1
return count