Como parte de seu algoritmo de compactação, o padrão JPEG desenrola uma matriz em um vetor ao longo de antidiagonais de direção alternada:
Sua tarefa é pegar uma matriz (não necessariamente quadrada) e devolvê-la na forma desenrolada. Como um exemplo:
[1 2 3 4
5 6 7 8
9 1 2 3]
deve render
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3]
Regras
Você pode assumir que os elementos da matriz são números inteiros positivos menores que 10
.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento da linha de comando ou argumento da função e emitindo o resultado via STDOUT (ou alternativa mais próxima), valor de retorno da função ou parâmetro da função (saída).
A matriz de entrada pode ser fornecida em qualquer formato conveniente de lista ou string aninhada, inequívoca, ou como uma lista simples, juntamente com as duas dimensões da matriz. (Ou, é claro, como um tipo de matriz, se o seu idioma tiver esse.)
O vetor de saída pode estar em qualquer formato conveniente, inequívoco, de lista simples ou de sequência.
Aplicam-se as regras padrão de código de golfe .
Casos de teste
[[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]
Desafios relacionados
- Reconstruir uma matriz zigzagificada (a transformação inversa um pouco mais complicada)
- Gire as antiagonais