Tổng tích lũy của một vectơ được tính bằng cách đơn giản lấy tổng của tất cả các phần tử trước đó. Ví dụ:
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]
Bây giờ, áp đặt giới hạn trên và giới hạn dưới, nghĩa là bạn ngừng tăng tổng tích lũy nếu nó ở giới hạn trên và ngừng giảm tổng tích lũy nếu ở giới hạn dưới. Một ví dụ đơn giản:
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]
Vectơ đầu vào bao gồm các số nguyên, không nhất thiết chỉ 1
và -1
, cả dương và âm. Giả sử rằng upper_lim >= lower_lim
. Nếu phần tử đầu tiên của vectơ nằm ngoài ranh giới, hãy nhảy trực tiếp đến ranh giới (xem ví dụ cuối).
Viết hàm lấy một vectơ số nguyên làm đầu vào và hai số nguyên biểu thị giới hạn trên và dưới. Xuất ra vectơ tích lũy giới hạn, như được định nghĩa ở trên. Đầu vào có thể là đối số chức năng hoặc từ STDIN.
Quy tắc golf tiêu chuẩn áp dụng.
Ví dụ:
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.