La somma cumulativa di un vettore viene calcolata semplicemente prendendo la somma di tutti gli elementi precedenti. Per esempio:
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]
Ora, imponi un limite superiore e uno inferiore, il che significa che smetti di aumentare la somma cumulativa se si trova al limite superiore e smetti di diminuire la somma cumulativa se si trova al limite inferiore. Un semplice esempio:
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]
Il vettore di input è composto da numeri interi, non necessariamente solo 1
e -1
, sia positivi che negativi. Supponiamo che upper_lim >= lower_lim
. Se il primo elemento del vettore è al di fuori del limite, passa direttamente al limite (vedi l'ultimo esempio).
Scrivi una funzione che accetta come input un vettore di numeri interi e due numeri interi che rappresentano i limiti superiore e inferiore. Emette il vettore cumulativo limitato, come definito sopra. L'input può essere come argomento di funzione o da STDIN.
Si applicano le regole standard per il golf.
Esempi:
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.