Die kumulative Summe eines Vektors wird berechnet, indem einfach die Summe aller vorherigen Elemente genommen wird. Zum Beispiel:
vec = [1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1]
cum_vec = [1 2 3 2 1 0 -1 -2 -1 0 1 2 1]
Legen Sie nun eine obere und eine untere Grenze fest. Dies bedeutet, dass Sie die kumulative Summe nicht mehr erhöhen, wenn sie sich an der oberen Grenze befindet, und die kumulative Summe nicht mehr verringern, wenn sie sich an der unteren Grenze befindet. Ein einfaches Beispiel:
upper_lim = 2
lower_lim = -1
vec = [1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1]
cum_vec = [1 2 2 1 0 -1 -1 -1 0 1 2 2 1]
Der Eingabevektor besteht aus ganzen Zahlen, nicht notwendigerweise nur 1
und -1
sowohl positiven als auch negativen. Nimm das an upper_lim >= lower_lim
. Wenn sich das erste Element des Vektors außerhalb der Grenze befindet, springen Sie direkt zur Grenze (siehe letztes Beispiel).
Schreiben Sie eine Funktion, die einen Vektor von Ganzzahlen als Eingabe verwendet, und zwei Ganzzahlen, die die oberen und unteren Grenzen darstellen. Geben Sie den begrenzten kumulativen Vektor wie oben definiert aus. Die Eingabe kann als Funktionsargument oder von STDIN erfolgen.
Es gelten die Standard-Code-Golfregeln.
Beispiele:
upper_lim = 6
lower_lim = -2
vec = [1 4 3 -10 3 2 2 5 -4]
cum_vec = [1 5 6 -2 1 3 5 6 2]
upper_lim = 100
lower_lim = -100
vec = [1 1 1 1 1 1]
cum_vec = [1 2 3 4 5 6]
upper_lim = 5
lower_lim = 0
vec = [10 -4 -3 2]
cum_vec = [5 1 0 2]
upper_lim = 0
lower_lim = 0
vec = [3 5 -2 1]
cum_vec = [0 0 0 0]
upper_lim = 10
lower_lim = 5
vec = [1 4 6]
cum_vec = [5 9 10]
|
Note, jumped to 5, because 5 is the lower bound.