У рамках свого алгоритму стиснення стандарт 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]
Супутні виклики
- Реконструюйте зигзагіфіковану матрицю (дещо складніше обернене перетворення)
- Обертайте антидіагоналі