Come parte del suo algoritmo di compressione, lo standard JPEG srotola una matrice in un vettore lungo antidiagonali di direzione alternata:
Il tuo compito è prendere una matrice (non necessariamente quadrata) e restituirla in forma non srotolata. Come esempio:
[1 2 3 4
5 6 7 8
9 1 2 3]
dovrebbe cedere
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3]
Regole
Si può presumere che gli elementi della matrice siano numeri interi positivi inferiori a 10
.
È possibile scrivere un programma o una funzione, prendendo l'input tramite STDIN (o l'alternativa più vicina), l'argomento della riga di comando o l'argomento della funzione e producendo il risultato tramite STDOUT (o l'alternativa più vicina), il valore di ritorno della funzione o il parametro della funzione (out).
La matrice di input può essere fornita in qualsiasi elenco o formato stringa nidificato conveniente, inequivocabile, o come un elenco piatto con entrambe le dimensioni della matrice. (O, ovviamente, come tipo di matrice se la tua lingua ne ha.)
Il vettore di output può essere in qualsiasi elenco o formato stringa conveniente, non ambiguo.
Si applicano le regole standard del code-golf .
Casi test
[[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]
Sfide correlate
- Ricostruire una matrice zigzagificata (la trasformazione inversa un po 'più complicata)
- Ruota le anti-diagonali