Pour ce défi, vous devez écrire un programme ou une fonction qui génère les diagonales d'une matrice carrée donnée. Cependant, si vous transposez les lignes et les colonnes du code source de votre solution, il devrait plutôt devenir un programme ou une fonction qui renvoie les antidiagonales de la matrice. Lisez la suite pour plus de détails ...
Règles
- Le code source de votre solution est considéré comme une grille 2D de caractères, séparés par une nouvelle ligne standard de votre choix (saut de ligne, retour chariot ou une combinaison des deux).
Aucune ligne de votre code source ne peut être plus longue que la précédente. Voici quelques exemples de dispositions valides:
### ### ###
######## ####### ### ### #
Et voici un exemple de mise en page invalide (car la troisième ligne est plus longue que la seconde):
###### #### ##### ###
Vos deux solutions doivent être mutuellement transposées, c'est-à-dire que vous devez obtenir l'une de l'autre en échangeant des lignes et des colonnes. Voici deux paires valides:
abc def ghi
adg beh cfi
Et
print 10 (~^_^)~ foo bar !
p(fb! r~oa i^or n_ t^ ) 1~ 0
Notez que les espaces sont traités comme tous les autres caractères. En particulier, les espaces de fin sont importants car ils peuvent ne pas être des espaces de fin dans la transposition.
Chaque solution doit être un programme ou une fonction qui prend en entrée une matrice carrée non vide d'entiers à un chiffre. Une solution doit produire une liste de toutes les diagonales de la matrice et l'autre doit produire une liste de toutes les antidiagonales. Vous pouvez utiliser des formats d'entrée et de sortie raisonnables et sans ambiguïté, mais ils doivent être identiques entre les deux solutions (cela signifie également qu'ils doivent être à la fois des fonctions ou des deux programmes).
- Chaque diagonale va du haut à gauche au bas à droite, et elles doivent être commandées de haut en bas.
- Chaque antidiagonale s'étend du bas à gauche vers le haut à droite, et elles doivent être commandées de haut en bas.
Notation
Pour encourager des solutions aussi «carrées» que possible, le score principal est le nombre de lignes ou le nombre de colonnes de votre solution, selon le plus élevé . Moins c'est mieux. Les liens sont rompus par le nombre de caractères dans la solution, sans compter les sauts de ligne. Encore une fois, moins c'est mieux. Exemple:
abcd
efg
h
Cela et sa transposition auraient un score primaire de 4 (car il y a 4 colonnes) et un score de départage de 8 (car il y a 8 caractères non-newline). Veuillez citer les deux valeurs dans l'en-tête de votre réponse.
Cas de test
La tâche réelle effectuée par les deux solutions ne devrait pas être le principal défi ici, mais voici deux exemples pour vous aider à tester vos solutions:
Input:
1 2 3
4 5 6
7 8 9
Diagonals:
3
2 6
1 5 9
4 8
7
Antidiagonals:
1
4 2
7 5 3
8 6
9
Input:
1 0 1 0
0 1 0 1
1 0 1 0
0 1 0 1
Diagonals:
0
1 1
0 0 0
1 1 1 1
0 0 0
1 1
0
Antidiagonals:
1
0 0
1 1 1
0 0 0 0
1 1 1
0 0
1