Матрица перемещения в диагональных полосах
Я думал, что у этой проблемы есть тривиальное решение, пара циклов for и несколько причудливых счетчиков, но, видимо, это несколько сложнее.
Итак, мой вопрос, как бы вы написали (в C) функцию обхода квадратной матрицы в диагональных полосах.
Пример:
1 2 3
4 5 6
7 8 9
Должен быть пройден в следующем порядке:
[1],[2,4],[3,5,7],[6,8],[9]
Каждая полоса сверху заключена в квадратные скобки. Одним из требований является возможность различать полосы. Это означает, что вы знаете, когда начинаете новую полосу. Это потому, что есть еще одна функция, которую я должен вызывать для каждого элемента в полосе, а затем перед началом новой полосы. Таким образом, решение без дублирования кода является идеальным.