समस्या
मान लीजिए n लोग एक कतार में खड़े हैं, हम लोगों को निम्न तरीके से केले वितरित करना चाहते हैं -
हम पहले व्यक्ति को 1 केला, दूसरे को 2 केले, और इसी तरह अंतिम व्यक्ति को n केले देते हैं।
फिर, हम पंक्ति की शुरुआत में वापस जाते हैं, पहले व्यक्ति को n+1 केले, दूसरे को n+2 केले, और इसी तरह अंतिम व्यक्ति को 2*n केले देते हैं।
यह प्रक्रिया दोहराई जाती है (हर बार एक केला अधिक देते हुए, और अंत तक पहुंचने के बाद पंक्ति की शुरुआत में वापस जाते हुए) जब तक हमारे केले खत्म नहीं हो जाते। अंतिम व्यक्ति को हमारे सभी शेष केले मिलेंगे।
हमें एक JavaScript फ़ंक्शन लिखना है जो लोगों की संख्या num को पहले आर्गुमेंट के रूप में, और केले की संख्या m को दूसरे आर्गुमेंट के रूप में लेता है।
हमारे फ़ंक्शन को एक सरणी वापस करनी चाहिए (लंबाई num योग m) जो केले के अंतिम वितरण का प्रतिनिधित्व करती है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const num = 3; const m = 10;
तो आउटपुट होना चाहिए -
const output = [5, 2, 3];
आउटपुट व्याख्या:
पहले चरण में, res[0] += 1, और सरणी है [1,0,0]।
दूसरे चरण में, res[1] += 2, और सरणी है [1,2,0]।
तीसरे चरण में, res[2] += 3, और सरणी है [1,2,3]।
चौथे चरण में, res[0] += 4, और अंतिम सरणी है [5,2,3]।
उदाहरण
इसके लिए कोड होगा -
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));
आउटपुट
कंसोल में आउटपुट होगा -
[5, 2, 3]