Add Anna Mosina solution

This commit is contained in:
Dmitry Afanasyev 2021-10-12 12:59:29 +03:00
parent fb741f4685
commit 50995cd854
2 changed files with 131 additions and 2 deletions

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
.idea
blocks_test.py
Anna_blocks.py

130
Anna_blocks.py Normal file
View File

@ -0,0 +1,130 @@
def check(arr, i_num, j_num, n_i, n_j, list_cells):
arr[i_num][j_num] = 0
for row in list_cells:
if row[2] == 1:
check_cell(arr, row[0], row[1], n_i, n_j)
def check_cell(arr, i, j, n_i, n_j):
if i == 0 and j == 0:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
check(arr, i, j, n_i, n_j, [
[i + 1, j + 1, arr[i + 1][j + 1]],
[i, j + 1, arr[i][j + 1]],
[i + 1, j, arr[i + 1][j]]])
elif i == 0 and j != 0 and j != n_j - 1:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
check(arr, i, j, n_i, n_j,
[
[i, j - 1, arr[i][j - 1]],
[i, j + 1, arr[i][j + 1]],
[i + 1, j - 1, arr[i + 1][j - 1]],
[i + 1, j, arr[i + 1][j]],
[i + 1, j + 1, arr[i + 1][j + 1]]
])
elif i != 0 and i != n_i - 1 and j == 0:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
print('nya')
check(arr, i, j, n_i, n_j, [
[i - 1, j, arr[i - 1][j]],
[i + 1, j, arr[i + 1][j]],
[i - 1, j + 1, arr[i - 1][j + 1]],
[i, j + 1, arr[i][j + 1]],
[i - 1, j + 1, arr[i - 1][j + 1]]
])
elif i != 0 and i != n_i - 1 and j == 0:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
print('truru')
check(arr, i, j, n_i, n_j,
[
[i - 1, j, arr[i - 1][j]],
[i + 1, j, arr[i + 1][j]],
[i - 1, j + 1, arr[i - 1][j + 1]],
[i, j + 1, arr[i][j + 1]],
[i - 1, j + 1, arr[i - 1][j + 1]]
])
elif i == n_i - 1 and j == n_j - 1:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
check(arr, i, j, n_i, n_j,
[
[i - 1, j, arr[i - 1][j]],
[i - 1, j - 1, arr[i - 1][j - 1]],
[i, j - 1, arr[i][j - 1]]
])
elif i == n_i - 1 and j != n_j - 1 and j != 0:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
check(arr, i, j, n_i, n_j,
[
[i - 1, j, arr[i - 1][j]],
[i - 1, j - 1, arr[i - 1][j - 1]],
[i - 1, j + 1, arr[i - 1][j + 1]],
[i, j - 1, arr[i][j - 1]],
[i, j + 1, arr[i][j + 1]]
])
elif i == n_i - 1 and j == 0:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
print('trata')
check(arr, i, j, n_i, n_j,
[
[i - 1, j, arr[i - 1][j]],
[i - 1, j + 1, arr[i - 1][j + 1]],
[i, j + 1, arr[i][j + 1]]
])
elif i != n_i - 1 and i != 0 and j == n_j - 1:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
check(arr, i, j, n_i, n_j,
[
[i - 1, j, arr[i - 1][j]],
[i + 1, j, arr[i + 1][j]],
[i + 1, j - 1, arr[i + 1][j - 1]],
[i, j - 1, arr[i][j - 1]],
[i - 1, j - 1, arr[i - 1][j - 1]]
])
elif i == 0 and j == n_j - 1:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
check(arr, i, j, n_i, n_j,
[
[i + 1, j, arr[i + 1][j]],
[i + 1, j - 1, arr[i + 1][j - 1]],
[i, j - 1, arr[i][j - 1]],
])
else:
print(f'I: {i}, J: {j}, VALUE: {arr[i][j]}')
print('tut')
check(arr, i, j, n_i, n_j,
[
[i, j - 1, arr[i][j - 1]],
[i, j + 1, arr[i][j + 1]],
[i + 1, j - 1, arr[i + 1][j - 1]],
[i + 1, j, arr[i + 1][j]],
[i + 1, j + 1, arr[i + 1][j + 1]],
[i - 1, j - 1, arr[i - 1][j - 1]],
[i - 1, j, arr[i - 1][j]],
[i - 1, j + 1, arr[i - 1][j + 1]]
])
array = [[1, 0, 1, 0, 1, 0],
[0, 1, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 1, 0, 1, 0, 0],
]
n_i = len(array)
n_j = len(array[0])
count = 0
for i in range(len(array)):
for j in range(len(array[i])):
if array[i][j] == 1:
cell = [i, j]
count += 1
check_cell(array, i, j, n_i, n_j)
print('Total blocks', count)