Sie erhalten ein 2D-Array A mit ganzen Zahlen und eine Länge N. Ihre Aufgabe ist es, innerhalb des Arrays die gerade Linie (horizontal, vertikal oder diagonal) von N Elementen zu finden, die die höchste Gesamtsumme ergibt, und diese Summe zurückzugeben .
Beispiel
N = 3, A =
3 3 7 9 3
2 2 10 4 1
7 7 2 5 0
2 1 4 1 3
Dieses Array enthält 34 gültige Zeilen, einschließlich
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
Die maximale Linie ist
3 3 7 [9] 3
2 2 [10] 4 1
7 [7] 2 5 0
2 1 4 1 3 [7,10,9] = 26
Hinweis: Linien dürfen nicht um die Ränder des Arrays gewickelt werden.
Eingänge
- AX durch Y 2-D-Array A mit X, Y> 0. Jedes Element des Arrays enthält einen ganzzahligen Wert, der positiv, null oder negativ sein kann. Sie können dieses Array in einem anderen Format (z. B. Liste von 1-D-Arrays) akzeptieren, wenn Sie dies wünschen.
- Eine einzelne positive ganze Zahl N, nicht größer als max (X, Y).
Ausgabe
- Ein einzelner Wert, der die maximale Zeilensumme darstellt, die im Array gefunden werden kann. Beachten Sie, dass Sie die einzelnen Elemente dieser Zeile oder deren Position nicht angeben müssen.
Testfälle
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
quelle
quelle
[[-10, -5, 4],[-3, 0, -7],[-11,-3,-2]]
->-5
(4 + -7 + -2
)Antworten:
Gelee , 15 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
¥
dort ...$
Erstellt eine Monade ausZṚ
, während¥
eine Dyade erstellt wird, ausZṚ
der das Ergebnis der gleichen Funktion (um 90 CCW drehen) zurückgegeben wird, die auf den linken Operanden angewendet wird. Welche passt zum Muster+ ×
und bewertenv+(λ×ρ)
(ist esv = v , (M ZṚ¥ n)
in diesem Fall). Jedoch$
funktioniert die Verwendung nicht, da die+ F
dyadische Kette kein Muster enthält.Wolfram Language (Mathematica) , 73 Byte
Probieren Sie es online!
Wie es funktioniert
Nimmt zuerst
N
die MatrixA
als Eingabe.Join@@Partition[#2,{#,#},1,1,-∞]
findet jedeN
durchN
Submatrix der MatrixA
, aufgefüllt mit,-∞
wo nötig, um sicherzustellen, dass Linien, die aus dem Gitter herauslaufen, nicht mehr laufen.Für jeden dieser Blöcke berechnen wir
Tr/@Join[#,#,{#,Reverse@#}]
: die Spur (dh die Summe) jeder Zeile, die Spur (dh die Summe) jeder Spalte, die Spur ( tatsächlich die Spur, zum ersten Mal in der Geschichte des Mathematica-Code-Golfspiels) des Blocks , und die Spur des Blocks kehrt sich um.#
istTranspose@#
.Dann finden wir die
Max
von all diesen.quelle
Max@BlockMap[Tr/@Join[#,#,{#,Reverse@#}]&,#2,{#,#},1]&
funktioniert auch das 57-Byte-Format . Aber wir müssen auffüllen-∞
, um Fälle zu behandeln, in denenA
weniger alsN
Zeilen oder Spalten vorhanden sind undBlockMap
das Auffüllen nicht unterstützt wird.\[Transpose]
) kann wie folgt eingegeben werden\:f3c7
.Tr
als Spur verwendet.Tr
die Spur einer Matrix schon einmal aufgetaucht ist, aber sie ist immer noch selten und überraschend.Mathematica,
135123 BytesProbieren Sie es online!
quelle
Diagonal[s,#]
zus~Diagonal~#
und{{Transpose@#,#2},{Reverse@#,#2}}
zu{#|#2,Reverse@#|#2}
. (Die nicht druckbaren ist U + F3C7 =\[Transpose]
; TIO scheint nicht wie diese, obwohl Alternative:.{Transpose@#|#2,Reverse@#|#2}
)\[Transpose]
oder\:f3c7
(zumindest ist letzteres kürzer alsThread@
). Wenn die Antwort jedoch Mathematica REPL (nicht Mathematica-Skript) lautet, können Sie die 3-Byte-Lösung annehmen.Gelee , 16 Bytes
Probieren Sie es online!
quelle
µ;Z;UŒD$;ŒDṡ€⁴ẎS€Ṁ
JavaScript,
151129 BytesDie Curry-Funktion akzeptiert zwei Argumente, das erste ist ein Array von Zahlen, das zweite ist eine Zahl.
Sparen Sie dank Arnauld mehr als 20 Bytes.
Code-Snippet anzeigen
quelle
1/s
statts==s
sollte wie erwartet funktionieren.(s=(g=...)(n))>m?s:m
,(g=...)(n)>m?g(n):m
um 1 Byte zu speichern.Jq 1,5 , 211 Bytes
Erwartet Eingaben in
N
undA
, zB:Erweitert
Beachten Sie, dass diese Herausforderung im Prinzip mit Project Euler-Problem 11 identisch ist
Probieren Sie es online!
quelle
Python 2 ,
208184183176 Bytes-float("inf")
, dass die markierte Linie außerhalb der Matrix liegt, anstatt die negative Summe aller Matrixelemente zu berechnen.R,L=range,len
, dass eingebaute Funktionen gekürzt werden sollen undy in R(L(A))...R(L(A[y]))
anstelle vony,Y in e(A)...x,_ in e(Y)
.float("inf")
zu9e999
.Probieren Sie es online!
Erläuterung
quelle
R , 199 Bytes
Probieren Sie es online!
Eine rekursive Lösung. Für jedes Element (i, j) der Matrix wird das Maximum zwischen der Summe entlang der Zeile, der Summe entlang der Spalte, der Summe entlang einer der Diagonalen und dem Ergebnis der auf (i + 1, j) und angewendeten Funktion zurückgegeben (i, j + 1). Die Ergebnisse für die Testfälle werden im TIO angezeigt.
quelle
Schale , 14 Bytes
Probieren Sie es online!
Dank der neuen Anti∂iagonale ist dies eine recht kurze Antwort :)
quelle
JavaScript 170 Bytes
Wip auf dem Golf-Teil fügte 4 weitere Zeichen hinzu, weil ich keinen Fall schaffte, in dem das Maximum negativ und N größer als 1 ist
quelle
G=
wird nicht gezählt)a||M,b||M,c||M,d||M
statt benutzta,b,c,d
?Python 2 ,
222-218BytesProbieren Sie es online!
quelle