В рамках алгоритма сжатия стандарт JPEG разворачивает матрицу в вектор вдоль антидиагоналей переменного направления:
Ваша задача - взять матрицу (не обязательно квадратную) и вернуть ее в развернутом виде. В качестве примера:
[1 2 3 4
5 6 7 8
9 1 2 3]
должен уступить
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3]
правила
Вы можете предположить, что матричные элементы имеют положительные целые числа меньше, чем 10
.
Вы можете написать программу или функцию, принимая ввод через STDIN (или ближайшую альтернативу), аргумент командной строки или аргумент функции и выводя результат через STDOUT (или ближайшую альтернативу), возвращаемое значение функции или параметр функции (out).
Входная матрица может быть задана в любом удобном, однозначном, вложенном списке или строковом формате или в виде плоского списка вместе с обоими размерами матрицы. (Или, конечно, как матричный тип, если ваш язык имеет такие.)
Выходной вектор может иметь любой удобный, однозначный, плоский список или строковый формат.
Применяются стандартные правила игры в гольф .
Тестовые случаи
[[1]] => [1]
[[1 2] [3 1]] => [1 2 3 1]
[[1 2 3 1]] => [1 2 3 1]
[[1 2 3] [5 6 4] [9 7 8] [1 2 3]] => [1 2 5 9 6 3 4 7 1 2 8 3]
[[1 2 3 4] [5 6 7 8] [9 1 2 3]] => [1 2 5 9 6 3 4 7 1 2 8 3]
[[1 2 6 3 1 2] [5 9 4 7 8 3]] => [1 2 5 9 6 3 4 7 1 2 8 3]
[[1 2 5 9 6 3 4 7 1 2 8 3]] => [1 2 5 9 6 3 4 7 1 2 8 3]
[[1] [2] [5] [9] [6] [3] [4] [7] [1] [2] [8] [3]] => [1 2 5 9 6 3 4 7 1 2 8 3]
Связанные проблемы
- Восстановить зигзагированную матрицу (несколько более хитрое обратное преобразование)
- Поверните анти-диагонали