Como parte de su algoritmo de compresión, el estándar JPEG desenrolla una matriz en un vector a lo largo de antidiagonales de dirección alterna:
Su tarea es tomar una matriz (no necesariamente cuadrada) y devolverla en forma desenrollada. Como ejemplo:
[1 2 3 4
5 6 7 8
9 1 2 3]
debería rendir
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3]
Reglas
Puede suponer que los elementos de la matriz son enteros positivos menores que 10
.
Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y generando el resultado a través de STDOUT (o la alternativa más cercana), el valor de retorno de la función o el parámetro de función (out).
La matriz de entrada se puede proporcionar en cualquier lista conveniente o inequívoca, anidada o en formato de cadena, o como una lista plana junto con ambas dimensiones de la matriz. (O, por supuesto, como un tipo de matriz si su idioma los tiene).
El vector de salida puede estar en cualquier formato de cadena o lista conveniente, inequívoca y plana.
Se aplican reglas estándar de código de golf .
Casos de prueba
[[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]
Desafíos relacionados
- Reconstruir una matriz zigzagificada (la transformación inversa algo más complicada)
- Rotar las antiagoniales