Als Teil seines Komprimierungsalgorithmus entrollt der JPEG-Standard eine Matrix in einen Vektor entlang von Antidiagonalen mit wechselnder Richtung:
Ihre Aufgabe ist es, den entrollten Vektor zusammen mit den Matrixdimensionen zu nehmen und die entsprechende Matrix zu rekonstruieren. Als Beispiel:
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3], 4, 3
sollte nachgeben
[1 2 3 4
5 6 7 8
9 1 2 3]
wohingegen Dimensionen 6, 2
geben würden
[1 2 6 3 1 2
5 9 4 7 8 3]
Regeln
Sie können festlegen, dass nur eine der Dimensionen als Eingabe verwendet wird. Die einzelnen Eingaben können in beliebiger Reihenfolge erfolgen. Sie können davon ausgehen, dass die Breite und Höhe für die angegebene Vektorlänge positiv und gültig sind.
Sie können davon ausgehen, dass die Vektorelemente positive ganze Zahlen kleiner als sind 10
.
Sie können ein Programm oder eine Funktion schreiben, indem Sie eine Eingabe über STDIN (oder die nächstgelegene Alternative), ein Befehlszeilenargument oder ein Funktionsargument vornehmen und das Ergebnis über STDOUT (oder die nächstgelegene Alternative), einen Funktionsrückgabewert oder einen Funktionsparameter (out) ausgeben.
Der Eingabevektor kann in jedem geeigneten, eindeutigen, flachen Listen- oder Zeichenkettenformat angegeben werden.
Die Ausgabematrix kann in jedem geeigneten, eindeutigen, verschachtelten Listen- oder Zeichenfolgenformat oder als flache Liste zusammen mit beiden Matrixdimensionen vorliegen. (Oder natürlich als Matrixtyp, wenn Ihre Sprache diese hat.)
Es gelten die Standardregeln für Code-Golf .
Testfälle
Jeder Testfall hat die Form 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]]
Verwandte Herausforderungen
- Zickzack eine Matrix (die etwas einfachere inverse Transformation)
- Drehen Sie die Antidiagonalen