Als Teil seines Komprimierungsalgorithmus entrollt der JPEG-Standard eine Matrix in einen Vektor entlang von Antidiagonalen mit wechselnder Richtung:
Ihre Aufgabe ist es, eine Matrix (nicht unbedingt ein Quadrat) zu nehmen und sie in abgewickelter Form zurückzugeben. Als Beispiel:
[1 2 3 4
5 6 7 8
9 1 2 3]
sollte nachgeben
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3]
Regeln
Sie können davon ausgehen, dass die Matrixelemente 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.
Die Eingabematrix kann in jedem geeigneten, eindeutigen, verschachtelten Listen- oder Zeichenfolgenformat oder als flache Liste zusammen mit beiden Matrixdimensionen angegeben werden. (Oder natürlich als Matrixtyp, wenn Ihre Sprache diese hat.)
Der Ausgabevektor kann in jedem geeigneten, eindeutigen, flachen Listen- oder Zeichenkettenformat vorliegen.
Es gelten die Standardregeln für Code-Golf .
Testfälle
[[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]
Verwandte Herausforderungen
- Rekonstruiere eine zickzackförmige Matrix (die etwas schwierigere inverse Transformation)
- Drehen Sie die Antidiagonalen