Vous obtiendrez un tableau 2-D A d'entiers et une longueur N. Votre tâche est de trouver dans le tableau la ligne droite (horizontale, verticale ou diagonale) de N éléments qui donne la somme totale la plus élevée, et de renvoyer cette somme .
Exemple
N = 3, A =
3 3 7 9 3
2 2 10 4 1
7 7 2 5 0
2 1 4 1 3
Ce tableau contient 34 lignes valides, y compris
Vertical
[3] 3 7 9 3
[2] 2 10 4 1
[7] 7 2 5 0
2 1 4 1 3 [3,2,7] = 12
Horizontal
3 3 7 9 3
2 2 10 4 1
7 7 [2] [5] [0]
2 1 4 1 3 [2,5,0] = 7
Diagonal
3 3 [7] 9 3
2 2 10 [4] 1
7 7 2 5 [0]
2 1 4 1 3 [7,4,0] = 11
La ligne maximale est
3 3 7 [9] 3
2 2 [10] 4 1
7 [7] 2 5 0
2 1 4 1 3 [7,10,9] = 26
Remarque: les lignes peuvent ne pas entourer les bords du tableau.
Contributions
- AX par Y 2-D tableau A, avec X, Y> 0. Chaque élément du tableau contient une valeur entière qui peut être positive, nulle ou négative. Vous pouvez accepter ce tableau dans un autre format (par exemple une liste de tableaux 1-D) si vous le souhaitez.
- Un seul entier positif N, non supérieur à max (X, Y).
Production
- Une seule valeur représentant la somme de lignes maximale qui peut être trouvée dans le tableau. Notez que vous n'avez pas besoin de fournir les éléments individuels de cette ligne ou où elle se trouve.
Cas de test
N = 4, A =
-88 4 -26 14 -90
-48 17 -45 -70 85
22 -52 87 -23 22
-20 -68 -51 -61 41
Output = 58
N = 4, A =
9 4 14 7
6 15 1 12
3 10 8 13
16 5 11 2
Output = 34
N = 1, A =
-2
Output = -2
N = 3, A =
1 2 3 4 5
Output = 12
N = 3, A =
-10 -5 4
-3 0 -7
-11 -3 -2
Output = -5
code-golf
array-manipulation
matrix
user2390246
la source
la source
[[-10, -5, 4],[-3, 0, -7],[-11,-3,-2]]
->-5
(4 + -7 + -2
)Réponses:
Gelée , 15 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
¥
là - bas ...$
crée une monade à partir deZṚ
, tandis que¥
crée une dyade à partir deZṚ
laquelle renvoie le résultat de la même fonction (rotation 90 CCW) appliquée sur son opérande gauche. Qui correspond au modèle+ ×
et évaluev+(λ×ρ)
(c'estv = v , (M ZṚ¥ n)
dans ce cas). Cependant, l'utilisation$
ne fonctionne pas car il n'y a pas de+ F
motif dans la chaîne dyadique.Wolfram Language (Mathematica) , 73 octets
Essayez-le en ligne!
Comment ça fonctionne
Prend d'abord
N
puis la matriceA
en entrée.Join@@Partition[#2,{#,#},1,1,-∞]
trouve tousN
parN
sous - matrice de la matriceA
, rembourré avec-∞
si nécessaire pour faire en sorte que les lignes à court de la grille sera hors de la course.Pour chacun de ces blocs, nous calculons
Tr/@Join[#,#,{#,Reverse@#}]
: la trace (c'est-à-dire la somme) de chaque ligne, la trace (c'est-à-dire la somme) de chaque colonne, la trace (en fait la trace, pour la première fois dans l'histoire du golf avec le code Mathematica) du bloc et la trace du bloc inversée.#
estTranspose@#
.Ensuite, nous trouvons le
Max
de tous ces éléments.la source
Max@BlockMap[Tr/@Join[#,#,{#,Reverse@#}]&,#2,{#,#},1]&
fonctionne également. Mais nous devons remplir avec-∞
pour gérer les cas où il yA
a moins deN
lignes ou de colonnes etBlockMap
ne prend pas en charge le remplissage.\[Transpose]
) peut être tapé comme\:f3c7
.Tr
qu'on l'utilise comme trace.Tr
que l' utilisation de la trace d'une matrice est apparue auparavant, mais c'est toujours rare et surprenant.Mathematica,
135123 octetsEssayez-le en ligne!
la source
Diagonal[s,#]
verss~Diagonal~#
et{{Transpose@#,#2},{Reverse@#,#2}}
vers{#|#2,Reverse@#|#2}
. (Le unprintable est U + F3C7 =\[Transpose]
; TIO ne semble pas comme ça, mais alternative.{Transpose@#|#2,Reverse@#|#2}
)\[Transpose]
ou\:f3c7
(au moins, ce dernier est plus court queThread@
) Cependant, si la réponse est Mathematica REPL (pas un script Mathematica), vous pouvez supposer la solution à 3 octets.Gelée , 16 octets
Essayez-le en ligne!
la source
µ;Z;UŒD$;ŒDṡ€⁴ẎS€Ṁ
JavaScript,
151129 octetsLa fonction Curry prend deux arguments, le premier est un tableau de tableaux de nombres, le second est un nombre.
Grâce à Arnauld , économisez plus de 20 octets.
Afficher l'extrait de code
la source
1/s
au lieu des==s
devrait fonctionner comme prévu.(s=(g=...)(n))>m?s:m
pour(g=...)(n)>m?g(n):m
économiser 1 octet.Jq 1,5 , 211 octets
Attend une entrée dans
N
etA
, par exemple:Étendu
Notez que ce défi est fondamentalement le même que le problème Project Euler 11
Essayez-le en ligne!
la source
Python 2 ,
208184 184183176 octets-float("inf")
pour représenter que la ligne vérifiée a atteint en dehors de la matrice au lieu de calculer la somme négative de tous les éléments de la matrice.R,L=range,len
pour raccourcir les fonctions intégrées et en utilisanty in R(L(A))...R(L(A[y]))
au lieu dey,Y in e(A)...x,_ in e(Y)
.float("inf")
au golf9e999
.Essayez-le en ligne!
Explication
la source
R , 199 octets
Essayez-le en ligne!
Une solution récursive. Pour chaque élément (i, j) de la matrice, il renvoie le maximum entre la somme le long de la ligne, la somme le long de la colonne, la somme le long de l'une ou l'autre diagonale et le résultat de la fonction appliquée à (i + 1, j) et (i, j + 1). Les résultats des cas de test sont présentés dans le TIO.
la source
Husk , 14 octets
Essayez-le en ligne!
Grâce aux nouveaux anti∂iagonaux intégrés, c'est une réponse assez courte :)
la source
JavaScript 170 octets
essuyez toujours la partie golf a ajouté 4 caractères supplémentaires parce que je n'ai pas réussi un cas où le max est négatif et N est supérieur à 1
la source
G=
n'est pas compté)a||M,b||M,c||M,d||M
au lieu dea,b,c,d
?Python 2 ,
222218 octetsEssayez-le en ligne!
la source