#создай конструктор который принимает лист и создает объект матрицы
#и передавай в него размеры
# n - колво строк, m - столбцов
def __init__(self, elems, n, m):
self.elems = [el for el in elems]
self.n = n
self.m = m
#можешь еще проверять чтобы размеры совпадали и бросать исключение если не совпадают
def __add__(self, other):
result = [0] * lent(self.matrix) # лист нулей такого же размера
for i in range(len(self.matrix)):
result[i] = self.matrix[i] + other.matrix[i]
return Matrix(result, self.n, self.m)
# можно будет обращаться к элементам matrix[i, j]
def __set__(self, index_tuple, value):
i, j = index_tuple
self.elems[i * self.m + j]
def __get__(self, index_tuple):
return self.elems[i * self.m + j]
# для матрицы с двумерным массивом просто исправь на этот код
def __add__(self, other):
n, m = self.size()
#копируешь из self
result = [i[::] for i in self.matrix]
for i in range(n):
for j in range(m):
result = result[i][j] += other.matrix[i][j]
return Matrix(result)
I9GB0L7Qt9C00LDQuSDQutC+0L3RgdGC0YDRg9C60YLQvtGAINC60L7RgtC+0YDRi9C5INC/0YDQuNC90LjQvNCw0LXRgiDQu9C40YHRgiDQuCDRgdC+0LfQtNCw0LXRgiDQvtCx0YrQtdC60YIg0LzQsNGC0YDQuNGG0YsKI9C4INC/0LXRgNC10LTQsNCy0LDQuSDQsiDQvdC10LPQviDRgNCw0LfQvNC10YDRiwojIG4gLSDQutC+0LvQstC+INGB0YLRgNC+0LosIG0gLSDRgdGC0L7Qu9Cx0YbQvtCyCgpkZWYgX19pbml0X18oc2VsZiwgZWxlbXMsIG4sIG0pOgoJc2VsZi5lbGVtcyA9IFtlbCBmb3IgZWwgaW4gZWxlbXNdCglzZWxmLm4gPSBuCglzZWxmLm0gPSBtCgkKCiPQvNC+0LbQtdGI0Ywg0LXRidC1INC/0YDQvtCy0LXRgNGP0YLRjCDRh9GC0L7QsdGLINGA0LDQt9C80LXRgNGLINGB0L7QstC/0LDQtNCw0LvQuCDQuCDQsdGA0L7RgdCw0YLRjCDQuNGB0LrQu9GO0YfQtdC90LjQtSDQtdGB0LvQuCDQvdC1INGB0L7QstC/0LDQtNCw0Y7RggoKZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgoJcmVzdWx0ID0gWzBdICogbGVudChzZWxmLm1hdHJpeCkgIyDQu9C40YHRgiDQvdGD0LvQtdC5INGC0LDQutC+0LPQviDQttC1INGA0LDQt9C80LXRgNCwCglmb3IgaSBpbiByYW5nZShsZW4oc2VsZi5tYXRyaXgpKToKCQlyZXN1bHRbaV0gPSBzZWxmLm1hdHJpeFtpXSArIG90aGVyLm1hdHJpeFtpXQoJCglyZXR1cm4gTWF0cml4KHJlc3VsdCwgc2VsZi5uLCBzZWxmLm0pCgojINC80L7QttC90L4g0LHRg9C00LXRgiDQvtCx0YDQsNGJ0LDRgtGM0YHRjyDQuiDRjdC70LXQvNC10L3RgtCw0LwgbWF0cml4W2ksIGpdCgkKZGVmIF9fc2V0X18oc2VsZiwgaW5kZXhfdHVwbGUsIHZhbHVlKToKCWksIGogPSBpbmRleF90dXBsZQoJc2VsZi5lbGVtc1tpICogc2VsZi5tICsgal0KCmRlZiBfX2dldF9fKHNlbGYsIGluZGV4X3R1cGxlKToKCXJldHVybiBzZWxmLmVsZW1zW2kgKiBzZWxmLm0gKyBqXQoJCgoJCiMg0LTQu9GPINC80LDRgtGA0LjRhtGLINGBINC00LLRg9C80LXRgNC90YvQvCDQvNCw0YHRgdC40LLQvtC8INC/0YDQvtGB0YLQviDQuNGB0L/RgNCw0LLRjCDQvdCwINGN0YLQvtGCINC60L7QtAoKICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKICAgIAluLCBtID0gc2VsZi5zaXplKCkKICAgIAkj0LrQvtC/0LjRgNGD0LXRiNGMINC40Lcgc2VsZgogICAgCXJlc3VsdCA9IFtpWzo6XSBmb3IgaSBpbiBzZWxmLm1hdHJpeF0KCWZvciBpIGluIHJhbmdlKG4pOgogICAgICAgICAgICAJZm9yIGogaW4gcmFuZ2UobSk6CiAgICAgICAgICAgIAkJcmVzdWx0ID0gcmVzdWx0W2ldW2pdICs9IG90aGVyLm1hdHJpeFtpXVtqXQogICAgICAgIHJldHVybiBNYXRyaXgocmVzdWx0KQ==