Как сделать обход квадратной матрицы зигзагом в python?

Есть матрица NxN, нужно сделать обход таким образом и занести элементы в список.
40de05050e6c443b8203614c2654c88f.png
  • Вопрос задан
  • 5338 просмотров
Решения вопроса 1
vvpoloskin
@vvpoloskin
Инженер связи
Без реккурсий набросал на планшете, возможны ощибки, но алгоритм прост - берем по очереди квадратные блоки матрицы и выбираем у них диагональ
matrix = [
   [11, 12, 13, 14],
   [21, 22, 23, 24],
   [31, 32, 33, 34],
   [41, 42, 43, 44],
]

def walk(matrix):
   zigzag = []
   for index in range(1, len(matrix)):
      slice = [i[:index] for i in matrix[:index]]
      diag = [slice[i][len(slice)-i-1] for i in range(len(slice))]
      if len(diag) % 2:
         diag.reverse()
      zigzag += diag
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы