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