La somme cumulée d'un vecteur est calculée en prenant simplement la somme de tous les éléments précédents. Par exemple:
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]
Maintenant, imposez une limite supérieure et inférieure, ce qui signifie que vous arrêtez d'augmenter la somme cumulée si elle est à la limite supérieure et arrêtez de diminuer la somme cumulative si elle est à la limite inférieure. Un exemple simple:
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]
Le vecteur d'entrée est composé d'entiers, pas nécessairement uniquement 1
et -1
, à la fois positifs et négatifs. Supposons cela upper_lim >= lower_lim
. Si le premier élément du vecteur est en dehors de la frontière, passez directement à la frontière (voir le dernier exemple).
Écrivez une fonction qui prend en entrée un vecteur d'entiers et deux entiers qui représentent les limites supérieure et inférieure. Sortez le vecteur cumulatif borné, comme défini ci-dessus. L'entrée peut être sous forme d'arguments de fonction ou de STDIN.
Les règles de golf du code standard s'appliquent.
Exemples:
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.
la source