Computer >> Máy Tính >  >> Lập trình >> Javascript

Sự cố phân phối chuối trong JavaScript

Vấn đề

Giả sử có n người đang xếp hàng, chúng ta muốn phân phát chuối cho mọi người theo cách sau -

  • Chúng ta cho 1 quả chuối cho người thứ nhất, 2 quả chuối cho người thứ hai, cứ tiếp tục như vậy cho đến khi chúng ta cho n quả chuối cho người cuối cùng.

  • Sau đó, chúng ta quay trở lại hàng bắt đầu, nhường n + 1 quả chuối cho người thứ nhất, n + 2 quả chuối cho người thứ hai, và cứ tiếp tục như vậy cho đến khi chúng ta đưa 2 * n quả chuối cho người cuối cùng.

  • Quá trình này lặp lại (với việc chúng ta cho thêm một quả chuối mỗi lần và di chuyển đến đầu hàng sau khi chúng ta đến cuối hàng) cho đến khi chúng ta hết kẹo. Người cuối cùng sẽ nhận được tất cả số chuối còn lại của chúng ta.

Chúng tôi được yêu cầu viết một hàm JavaScript lấy số người, num, làm đối số đầu tiên và số chuối, m, làm đối số thứ hai.

Hàm của chúng ta sẽ trả về một mảng (có độ dài num sum m) biểu thị phân phối cuối cùng của chuối.

Ví dụ:nếu đầu vào của hàm là -

const num = 3;
const m = 10;

Sau đó, đầu ra phải là -

const output = [5, 2, 3];

Giải thích đầu ra:

Ở lượt đầu tiên, res [0] + =1 và mảng là [1,0,0].

Ở lượt thứ hai, res [1] + =2 và mảng là [1,2,0].

Ở lượt thứ ba, res [2] + =3 và mảng là [1,2,3].

Ở lượt thứ tư, res [0] + =4 và mảng cuối cùng là [5,2,3].

Ví dụ

Mã cho điều này sẽ là -

const num = 3;
const m = 10;
const distributeBananas = (num = 1, m = 1) => {
   const res = new Array(num).fill(0);
   let curr = 1;
   while(true){
      for(let i = 0; i < num; i++){
         if(m < curr){
            res[i] += m
            return res
         };
         res[i] += curr;
         m -= curr;
         curr++;
      };
   };
};
console.log(distributeBananas(num, m));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[5, 2, 3]