Как вывести все диагонали шириной в две клетки на матрице на Python?
Мне нужно написать программу, чтобы можно было найти все диагонали по рисунку ниже.
У меня имеется матрица, и из неё нужно записать в отдельный массив по значений цвета\света все диагонали в матрице по углам что ниже на картинке. Для каждой диагонали скорее всего нужна своя функция.То есть нужно проходя по строкам, а после и столбцам находить диагональ и добавлять её в свой массив для диагоналей. В итоге будет 4 массива в каждом из которых будет храниться свои значения для диагоналей.
Я смог найти, как находятся все обычные диагонали в матрице, но с такими не особо понимаю как работать.
Такой функцией я пользовался для нахождения всех обычных диагоналей слева направо:
def print_kolvos(arr):
rows = len(arr)
cols = len(arr[0])
kolvo =[]
kolvo1 =[]
for i in range(rows):
j = 0
while i + j < rows and j < cols:
kolvo.append(arr[i+j][j])
j += 1
kolvo1.append(kolvo)
kolvo = []
for j in range(1, cols):
i = 0
while i + j < cols and i < rows:
kolvo.append(arr[i][i+j])
i += 1
kolvo1.append(kolvo)
kolvo = []
return kolvo1
Такой - справа налево:
def print_kolvos_reverse(arr):
rows = len(arr)
cols = len(arr[0])
kolvo1 =[]
for i in range(rows + cols - 1):
kolvo =[]
for j in range(cols):
row = i - j
col = j
if 0 <= row < rows and 0 <= col < cols:
kolvo.append(arr[row][col])
kolvo1.append(kolvo)
return kolvo1
Подскажите, как можно либо доработать, либо переписать функции для данной задачи.
В результате должно получиться вот по такой схеме:
где каждая диагональ является отдельным массивом, а все диагонали нужно записать в отдельный массив и будет массив с массивами.