def helper(mat):
for row in mat:
zero_list = []
for subrow in row:
if subrow == 0:
row.remove(0)
zero_list.append(0)
row.extend(zero_list)
return mat
def merge_left(mat):
result = mat.copy()
helper(mat)
counter = 0
for i in range(len(mat)):
current_tile = 0
for j in range(len(mat)):
if mat[i][j] == current_tile:
mat[i][j-1] *= 2
mat[i][j] = 0
counter += mat[i][j-1]
current_tile = mat[i][j]
helper(mat)
return result == mat
print(merge_left([[2, 2, 0, 2], [4, 0, 0, 0], [4, 8, 0, 4], [0, 0, 0, 2]]))
Привет, ребята,
Результат, полученный для merge_left в приведенном выше коде, равен True для контрольного примера. Учитывая, что результат является дубликатом мата. Как получается, что результат также был изменен таким же образом, что и этот код? Я бы понял, что это так, если бы я написал
result = mat instead of result = mat.copy()
Почему это так? Я стремлюсь сравнить два состояния входного мата. Перед изменением кода и после него.