Chúng tôi có một tập hợp các số nguyên và một giá trị mà chúng tôi cần trừ khỏi tổng của tập hợp đó.
Như đây,
[4, 5, 6, 7, 8] - 25
Nếu chúng ta trừ một số đồng đều cho mọi số, chúng ta sẽ nhận được -
[−1, 0, 1, 2, 3]
Tuy nhiên, chúng tôi không muốn bất kỳ số nào nhỏ hơn 0.
Do đó, nếu chúng tôi viết một thuật toán để thực hiện điều này, các số âm sẽ tràn đều vào các số còn lại và bây giờ chúng tôi có -
[0, 0, 1, 2, 3] - 1
Tạo tập hợp kết quả -
[0, 0, 1 - 0,333, 2 - 0,333, 3 - 0,333]
Lưu ý rằng đây chính xác là kết quả chúng tôi mong muốn.
Tất cả các giá trị âm tràn ngập NGAY LẬP TỨC vào các giá trị dương còn lại.
Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số làm đối số đầu tiên và một số tổng làm đối số thứ hai.
Sau đó, hàm sẽ tính toán mảng bị trừ và phân phối đồng đều và trả về nó.
Ví dụ
Mã cho điều này sẽ là -
const arr =[4, 5, 6, 7, 8]; const subtract =(arr, sum) => {return arr.map ((el, index, array) => {const rem =array.length - index const avg =sum / rem; const toSubtract =Math.min (avg, el); sum - =toSubtract; return el - toSubtract;});}; console.log (subtract (arr, 25));Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[0, 0, 0,666666666666667, 1,666666666666666, 2,666666666666666]