Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một số num làm đối số thứ nhất và một số parts làm đối số thứ hai. Hàm phải chia số num thành đúng (parts) số và giữ hai điều kiện:
- Các số nên gần nhau nhất có thể
- Các số nên chẵn (nếu có thể).
Thứ tự các số không quan trọng.
Ví dụ, nếu đầu vào là:
Đầu vào
const num = 20; const parts = 6;
Đầu ra
const output = [3, 3, 3, 3, 4, 4];
Ví dụ
Dưới đây là mã thực hiện:
const num = 20;
const parts = 6;
const splitNumber = (num = 1, parts = 1) => {
let n = Math.floor(num / parts);
const arr = [];
for (let i = 0; i < parts; i++) {
arr.push(n);
}
if (arr.reduce((a, b) => a + b, 0) === num) {
return arr;
}
for (let i = 0; i < parts; i++) {
arr[i]++;
if (arr.reduce((a, b) => a + b, 0) === num) {
return arr;
}
}
};
console.log(splitNumber(num, parts));
Kết quả
[4, 4, 3, 3, 3, 3]