向量的累加总和可以通过简单地取所有先前元素的总和来计算。例如:
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]
现在,施加一个上限和一个下限,这意味着如果累加总和处于上限,则停止增加,而如果累加总和处于下限,则停止减小。一个简单的例子:
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]
输入矢量由整数,不一定只1
和-1
,肯定和否定。假设upper_lim >= lower_lim
。如果向量的第一个元素在边界之外,请直接跳到边界(请参阅最后一个示例)。
编写一个函数,该函数将一个整数向量作为输入,并使用两个整数表示上限和下限。如上定义,输出有界累积向量。输入可以作为函数自变量,也可以来自STDIN。
适用标准代码高尔夫规则。
例子:
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.