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