Dans le cadre de son algorithme de compression, le standard JPEG déroule une matrice en un vecteur le long d'antidiagonales de sens alternant:
Votre tâche consiste à prendre une matrice (pas nécessairement carrée) et à la renvoyer sous forme déroulée. Par exemple:
[1 2 3 4
5 6 7 8
9 1 2 3]
devrait céder
[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3]
Règles
Vous pouvez supposer que les éléments de la matrice sont des entiers positifs inférieurs à 10
.
Vous pouvez écrire un programme ou une fonction en prenant l’entrée via STDIN (ou l’alternative la plus proche), un argument de ligne de commande ou une argumentation de fonction et en générant le résultat via STDOUT (ou l’alternative la plus proche), une valeur de retour de fonction ou un paramètre de fonction (out).
La matrice d'entrée peut être donnée dans une liste ou un format de chaîne approprié, non ambigu, sans équivoque, ou sous forme de liste simple avec les deux dimensions de la matrice. (Ou bien sûr, en tant que type de matrice si votre langue en possède.)
Le vecteur de sortie peut être dans n'importe quel format commode, non ambigu, de liste à plat ou de chaîne.
Les règles standard de code-golf s'appliquent.
Cas de 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]
Défis associés
- Reconstruire une matrice zigzagifiée (la transformation inverse un peu plus délicate)
- Faire pivoter les anti-diagonales