ผลรวมสะสมของเวกเตอร์คำนวณได้ง่ายๆโดยหาผลรวมขององค์ประกอบก่อนหน้าทั้งหมด ตัวอย่างเช่น
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.