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 il vettore srotolato insieme alle dimensioni della matrice e ricostruire la matrice corrispondente. Come esempio:
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3], 4, 3
dovrebbe cedere
[1 2 3 4
5 6 7 8
9 1 2 3]
mentre le dimensioni 6, 2
darebbero
[1 2 6 3 1 2
5 9 4 7 8 3]
Regole
Puoi scegliere di prendere solo una delle dimensioni come input. I singoli ingressi possono essere presi in qualsiasi ordine. Si può presumere che la larghezza e l'altezza siano positive e valide per la lunghezza del vettore indicata.
Si può presumere che gli elementi vettoriali 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).
Il vettore di input può essere fornito in qualsiasi elenco o formato stringa conveniente, inequivocabile.
La matrice di output può essere in qualsiasi elenco o formato stringa nidificato conveniente, inequivocabile o come elenco semplice con entrambe le dimensioni della matrice. (O, ovviamente, come tipo di matrice se la tua lingua ne ha.)
Si applicano le regole standard del code-golf .
Casi test
Ogni caso di test ha la forma 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]]
Sfide correlate
- Zigzagify a Matrix (la trasformazione inversa un po 'più semplice)
- Ruota le anti-diagonali