সমস্যা
ধরুন একটি সারিতে n লোক দাঁড়িয়ে আছে, আমরা নিম্নলিখিত উপায়ে লোকেদের মধ্যে কলা বিতরণ করতে চাই -
-
আমরা প্রথম ব্যক্তিকে 1টি কলা, দ্বিতীয় ব্যক্তিকে 2টি কলা এবং শেষ ব্যক্তিকে n কলা না দেওয়া পর্যন্ত এভাবেই দেই৷
-
তারপরে, আমরা সারির শুরুতে ফিরে যাই, প্রথম ব্যক্তিকে n + 1 কলা, দ্বিতীয় ব্যক্তিকে n + 2 কলা এবং শেষ ব্যক্তিকে 2 * n কলা না দেওয়া পর্যন্ত।
-
আমাদের ক্যান্ডি ফুরিয়ে না যাওয়া পর্যন্ত এই প্রক্রিয়াটি পুনরাবৃত্তি হয় (প্রতিবার আমাদের আরও একটি কলা দেওয়া, এবং আমরা শেষ হওয়ার পরে সারির শুরুতে চলে যাই)। শেষ ব্যক্তি আমাদের অবশিষ্ট সব কলা পাবেন।
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসাবে মানুষের সংখ্যা, num, এবং দ্বিতীয় আর্গুমেন্ট হিসাবে কলার সংখ্যা, m।
আমাদের ফাংশনটি একটি অ্যারে (দৈর্ঘ্য সংখ্যা সমষ্টি 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]