Définitions
Le k ème anneau d'une matrice carrée de taille N , où 1 ≤ k ≤ plafond (N / 2) est la liste formée par les éléments des k ème et (N-k + 1) ème lignes et colonnes, mais sans le premier et dernier éléments k-1 .
Exemple:
Matrice: 1 2 3 4 5 6 7 8 9 1 8 7 6 5 4 3 2 1 9 8 7 6 5 4 3 Délimité en anneaux: + ------------------- + | 1 2 3 4 5 | | + ----------- + | | 6 | 7 8 9 | 1 | | | + --- + | | | 8 | 7 | 6 | 5 | 4 | | | + --- + | | | 3 | 2 1 9 | 8 | | + ----------- + | | 7 6 5 4 3 | + ------------------- +
Le premier anneau de ce qui précède est 1,2,3,4,5,1,4,8,3,4,5,6,7,3,8,6
, le deuxième est 7,8,9,5,9,1,2,7
et le troisième est 6
.
Une matrice N par N d'entiers positifs est (pour les besoins de ce défi):
concave si tous les entiers du k ème anneau sont strictement supérieurs à ceux du (k + 1) e anneau, où k est tout entier compris entre 1 et N (ceux du premier anneau sont supérieurs à ceux du second, qui sont tour à tour supérieur à ceux du troisième, etc.). Exemple:
4 5 6 4 7 -> parce que 4,5,6,4,7,4,8,5,5,4,6,5,9,5,5,4 sont tous supérieurs à 4 3 2 2 4 l'un des 3,2,2,3,2,3,3,2, qui sont tous supérieurs à 1 5 2 1 3 8 5 3 3 2 5 9 5 6 4 5
plat si tous les entiers de la matrice sont égaux. Un autre exemple (peut-être redondant):
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
convexe si tous les entiers du k ème anneau sont strictement inférieurs à ceux du (k + 1) e anneau, où k est tout entier compris entre 1 et N (ceux du premier anneau sont inférieurs à ceux du second, qui sont à son tour inférieur à ceux du troisième, etc.). Exemple:
1 2 1 -> car 1 et 2 sont tous deux inférieurs à 6 2 6 2 1 2 1
mélangé si la matrice ne satisfait à aucun des critères ci-dessus. Exemple:
3 3 3 3 3 3 2 2 2 3 3 2 3 2 3 3 2 2 2 3 3 3 3 3 3
Défi
Étant donné une matrice carrée d'entiers positifs de taille au moins 3 , classez-la selon les définitions ci-dessus. C'est-à-dire, produire l'une des quatre valeurs cohérentes différentes selon que la matrice est concave, plate, convexe ou mixte.
Vous pouvez concurrencer dans n'importe quel langage de programmation et pouvez prendre des entrées et fournir des sorties par n'importe quelle méthode standard et dans n'importe quel format raisonnable, tout en prenant note que ces failles sont interdites par défaut. Il s'agit de code-golf , donc la soumission la plus courte (en octets) pour chaque langue l' emporte.
Cas de test
Voici un tas d'exemples parmi lesquels vous pouvez choisir - j'ai sélectionné 6 de chaque catégorie.
Concave
[[3, 3, 3], [3, 1, 3], [3, 3, 3]]
[[2, 3, 4], [5, 1, 6], [7, 8, 9]]
[[19, 34, 45], [34, 12, 14], [13, 13, 13]]
[[3, 4, 3, 4], [4, 2, 1, 3], [3, 1, 2, 4], [4, 3, 4, 3]]
[[4, 5, 6, 4, 7], [4, 3, 2, 2, 4], [5, 2, 1, 3, 8], [5, 3, 3, 2, 5], [9, 5, 6, 4, 5]]
[[7, 7, 7, 7, 7], [7, 6, 6, 6, 7], [7, 6, 5, 6, 7], [7, 6, 6, 6, 7], [7, 7, 7, 7, 7]]
Plat
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
[[2, 2, 2], [2, 2, 2], [2, 2, 2]]
[[8, 8, 8], [8, 8, 8], [8, 8, 8]]
[[120, 120, 120], [120, 120, 120], [120, 120, 120]]
[[10, 10, 10, 10], [10, 10, 10, 10], [10, 10, 10, 10], [10, 10, 10, 10]]
[[5, 5, 5, 5, 5, 5], [5, 5, 5, 5, 5, 5], [5, 5, 5, 5, 5, 5], [5, 5, 5, 5, 5, 5], [5, 5, 5, 5, 5, 5], [5, 5, 5, 5, 5, 5]]
Convexe
[[1, 2, 1], [2, 6, 2], [1, 2, 1]]
[[1, 1, 1], [1, 2, 1], [1, 1, 1]]
[[19, 34, 45], [34, 76, 14], [13, 6, 13]]
[[3, 3, 3, 3], [3, 4, 4, 3], [3, 4, 4, 3], [3, 3, 3, 3]]
[[192, 19, 8, 6], [48, 324, 434, 29], [56, 292, 334, 8], [3, 4, 23, 23]]
[[291, 48, 7, 5], [47, 324, 454, 30], [58, 292, 374, 4], [9, 2, 53, 291]]
Mixte
[[1, 2, 3], [4, 5, 9], [6, 7, 8]]
[[10, 14, 21], [100, 8, 3], [29, 2, 19]]
[[5, 5, 5, 5], [5, 4, 4, 5], [5, 4, 6, 5], [5, 5, 5, 5]]
[[3, 3, 3, 3], [3, 1, 2, 3], [3, 3, 2, 3], [3, 3, 3, 3]]
[[12, 14, 15, 16], [12, 18, 18, 16], [12, 11, 11, 16], [12, 14, 15, 16]]
[[5, 5, 5, 5, 5], [5, 4, 4, 4, 5], [5, 4, 6, 4, 5], [5, 4, 4, 4, 5], [5, 5, 5, 5, 5]]