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

