Задача
Самый короткий код по количеству символов, который принимает одно целое число N
(N >= 3) и возвращает массив индексов, который при повторе будет пересекать матрицу N
x N
в соответствии с зигзагом JPEG "шаблон сканирования. Ниже приведен пример обхода матрицы 8x8 src:
Примеры
(Средняя матрица не является частью ввода или вывода, а представляет собой представление матрицы NxN, которую представляет вход.)
1 2 3
(Input) 3 --> 4 5 6 --> 1 2 4 7 5 3 6 8 9 (Output)
7 8 9
1 2 3 4
(Input) 4 --> 5 6 7 8 --> 1 2 5 9 6 3 4 7 10 13 14 11 8 12 15 16 (Output)
9 10 11 12
13 14 15 16
Примечания
- Результирующая база массива должна соответствовать вашему языку (например, массивы Matlab основаны на 1, массивы С++ основаны на 0).
- Это связано с этим вопросом.
Bonus
Расширьте свой ответ, чтобы взять два входа N
и M
(N, M >= 3) и выполнить одно и то же сканирование по матрице N
x M
. (В этом случае N
будет число столбцов и M
количество строк.)
Примеры бонусов
1 2 3 4
(Input) 4 3 --> 5 6 7 8 --> 1 2 5 9 6 3 4 7 10 11 8 12 (Output)
9 10 11 12
1 2 3
(Input) 3 4 --> 4 5 6 --> 1 2 4 7 5 3 6 8 10 11 9 12 (Output)
7 8 9
10 11 12