Dies ist eine Überarbeitung dieser nun gelöschten Frage von ar kang . Wenn das OP dieser Frage diese Frage zurückfordern möchte oder ein Problem mit dem Posten dieser Frage hat, würde ich mich freuen, darauf eingehen zu können
Wenn Sie eine Liste von Ganzzahlen als Eingabe angeben, ermitteln Sie die maximal mögliche Summe einer fortlaufenden Unterliste, die mit demselben Wert beginnt und endet. Die Unterlisten müssen mindestens 2 lang sein. Zum Beispiel für die Liste
[1, 2, -2, 4, 1, 4]
Es gibt 2 verschiedene fortlaufende Unterlisten, die mit demselben Wert beginnen und enden
[1,2,-2,4,1] -> 6
[4,1,4] -> 9
Die größere Summe ist 9, sodass Sie 9 ausgeben.
Sie können davon ausgehen, dass jede Eingabe mindestens 1 Duplikat enthält.
Dies ist Codegolf, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Testfälle
[1,2,-2,4,1,4] -> 9
[1,2,1,2] -> 5
[-1,-2,-1,-2] -> -4
[1,1,1,8,-1,8] -> 15
[1,1,1,-1,6,-1] -> 4
[2,8,2,-3,2] -> 12
[1,1,80] -> 2
[2,8,2,3,2] -> 17
quelle
[2,8,2,3,2]
12 oder 17 sein? IchAntworten:
Haskell , 62 Bytes
f
Nimmt eine Liste von ganzen Zahlen und gibt eine ganze Zahl zurück.Probieren Sie es online!
Wie es funktioniert
t
ist die Standardfunktion "Alle Suffixe einer Liste abrufen, ohne sie zu importierenData.List.tails
".f l
durchläuft das Listenverständnis alle nicht leeren Suffixe der Argumentlistel
mit dem ersten Elementx
und dem Restm
.m
, wobei das erste Elementy
und der Rest ausgewählt werdenn
.x
undy
gleich sind, enthält das Listenverständnis die Summe der Elemente zwischen ihnen. Diese Unterliste ist die gleiche wiex:m
mit dem Suffixn
entfernt, so dass die Summe berechnet werden kann alsx+sum m-sum n
.quelle
JavaScript (ES6),
6862 BytesTestfälle
Code-Snippet anzeigen
Kommentiert
quelle
y - a[i]
und(x += y) < m
- meiner Meinung nach würde der Code etwas klarer mit ihnen ausgetauscht werden, seitdem sieht es aus wie ein einfacher Golf aus(x += y) < m || y != a[i]
.(x+=y)<m|y-a[i]
könnte genauso gut falsch interpretiert werden(x+=y)<(m|y-a[i])
. Ich bin mir nicht sicher, ob es die Mehrdeutigkeit wirklich beseitigen würde. (Trotzdem bearbeitet, weil ich diese Version eher bevorzuge.)y-a[i]|(x+=y)<m
als(y-a[i]|(x+=y))<m
...Gelee , 12 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Schale , 10 Bytes
Probieren Sie es online!
Erläuterung
quelle
Haskell , 66 Bytes
Probieren Sie es online!
quelle
R ,
108103908883 BytesProbieren Sie es online!
combn
schlägt wieder zu! Generiert mindestens alle Unterlisten der Länge2
, setzt die Unterlistensumme auf,-Inf
wenn die erste und die letzte nicht gleich sind, und nimmt das Maximum aller Summen.Die
"if"
werden eine Reihe von Warnungen auslösen, aber sie sind sicher ignorierbar - das ist wahrscheinlich der beste Golf-Trick hier,rev(p)-p
ist Null im ersten Element iffp[1]==tail(p,1)
und"if"
verwendet das erste Element seines Zustands mit einer Warnung.quelle
Python 3 , 81 Bytes
Probieren Sie es online!
quelle
Python , 62 Bytes
Probieren Sie es online!
Gibt eine Singleton-Liste aus .
quelle
Jelly ,
13, 12 BytesProbieren Sie es online!
Ein Byte, das von Mr. Xcoder gespeichert wurde, der gerade mit mir konkurriert. : D
Erläuterung:
quelle
Wolfram Language (Mathematica) , 54 Byte
Probieren Sie es online!
quelle
Pyth, 15 Bytes
Probieren Sie es online aus
Erläuterung
quelle
05AB1E , 9 Bytes
Probieren Sie es online!
Erläuterung
quelle
Sauber ,
949086 BytesProbieren Sie es online!
quelle
[1, 1, 80]
Testfall fehl .Python 2 , 86 Bytes
Von Dennis überfordert
Probieren Sie es online!
Generiert alle Unterlisten mit einer Länge von mehr als 2, wobei das erste Element dem letzten Element entspricht, ordnet jedes Element seiner Summe zu und wählt den größten Wert aus.
quelle
enumerate
.Ruby , 64 Bytes
Probieren Sie es online!
quelle
Julia 0,6 , 70 Bytes
Probieren Sie es online!
quelle
Jelly , 11 Bytes
Verwendet einige Funktionen, die die Herausforderung nachholen.
Probieren Sie es online!
Wie es funktioniert?
-1 mit Hilfe von Caird .
quelle
Stapel, 179 Bytes
Übernimmt Eingaben als Befehlszeilenparameter.
quelle
C 104 Bytes
Probieren Sie es online!
C (gcc) , 99 Bytes
Probieren Sie es online!
quelle
Clojure, 92 Bytes
quelle
Java 8, 129 byes
Für jede Ganzzahl
X
in der Liste ermittelt die Funktion die Summe der größten Unterliste mit Anfang und EndeX
. Dann wird die maximale Summe ermittelt, wie vom OP angegeben.quelle
[2,8,2,-3,2]
Testfall fehlschlagen könnte , und möglicherweise[1,1,80]
auch.Perl,
6159 BytesBeinhaltet
+3
für-p
:max_ident_run.pl
:Rennen wie:
quelle