В рамках алгоритма сжатия стандарт 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]
Связанные проблемы
- Восстановить зигзагированную матрицу (несколько более хитрое обратное преобразование)
- Поверните анти-диагонали

