La suma acumulativa de un vector se calcula simplemente tomando la suma de todos los elementos anteriores. Por ejemplo:
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]
Ahora, imponga un límite superior e inferior, lo que significa que deja de aumentar la suma acumulativa si está en el límite superior y deja de disminuir la suma acumulativa si está en el límite inferior. Un simple ejemplo:
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]
El vector de entrada consta de números enteros, no solo necesariamente 1
y -1
, tanto positivos como negativos. Asume eso upper_lim >= lower_lim
. Si el primer elemento del vector está fuera del límite, salte directamente al límite (vea el último ejemplo).
Escriba una función que tome un vector de enteros como entrada, y dos enteros que representen los límites superior e inferior. Salida del vector acumulativo acotado, como se definió anteriormente. La entrada puede ser como argumentos de función o desde STDIN.
Se aplican reglas estándar de golf de código.
Ejemplos:
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.
fuente