হর্ষদ সংখ্যা হল সেই সংখ্যাগুলি যেগুলি তাদের অঙ্কের যোগফল দ্বারা ঠিক বিভাজ্য৷ 126 নম্বরের মতো এটি 1+2+6 =9 দ্বারা সম্পূর্ণরূপে বিভাজ্য৷
-
সমস্ত একক সংখ্যার সংখ্যা হর্ষ সংখ্যা।
-
হর্ষদ সংখ্যা প্রায়ই পরপর ক্লাস্টারে বিদ্যমান থাকে যেমন [1,2,3,4,5,6,7,8,9,10],[110,111,112], [1010, 1011, 1012]।
আমাদের কাজ হল এমন একটি ফাংশন লেখা যা একটি সংখ্যাকে ইনপুট হিসাবে গ্রহণ করে তা একটি হর্ষদসংখ্যা কিনা তা পরীক্ষা করে, যদি না থাকে তবে -1 ফেরত দেয় অন্যথায় এটি ধারাবাহিক হর্ষদ ক্লাস্টারের দৈর্ঘ্যের দৈর্ঘ্য প্রদান করে৷
যেমন −
harshadNum(1014) = harshadNum(1015) = harshadNum(1016) = harshadNum(1017) = 4 harshadNum(1) = 10 harshadNum(12) = 1 harshadNum(23) = -1
আসুন এই সমস্যাটিকে দুটি প্রধান ফাংশনে ভাগ করি,
-
isHarshad() → একটি সংখ্যার সংখ্যা নেয় এবং সংখ্যাটি হর্ষদ কিনা তার উপর নির্ভর করে একটি বুলিয়ান প্রদান করে৷
-
harshadNum() → মূল ফাংশন যা প্রকৃত সংখ্যা গ্রহণ করে, বিভিন্ন পয়েন্টে isHarshad() কে কল করে এবং স্ট্রিকের দৈর্ঘ্য ফেরত দেয়।
isHarshad ফাংশন() −
কোডিং করা হচ্ছেconst isHarshad = (num) => { let sum = 0, temp = num; while(temp){ sum += temp % 10; temp = Math.floor(temp/10); } return num % sum === 0; }
বেশ সহজ পুনরাবৃত্তিমূলক ফাংশন যা একটি বুলিয়ান ফেরত দেয়
এখন harshadNum() ফাংশন −
কোড করিconst harshadNum = (number) => { //if the input is not harshad return -1 if(!isHarshad(number)){ return -1; } let streak = 1, prev = number-1, next = number+1; //check preceding streak while(isHarshad(prev) && prev > 0){ streak++; prev--; } //check succeeding streak while(isHarshad(next)){ streak++; next++; } return streak; }; console.log(harshadNum(1014));
উপরের কোড বোঝা -
-
ইনপুটটি হর্ষদ কিনা তা পরীক্ষা করে দেখুন, যদি ফাংশন বন্ধ না করেন এবং -1 রিটার্ন করুন;
-
একটি লুপ পিছনের দিকে, একটি সামনের দিকে চালান যখন আমরা কঠোর নম্বর পেতে থাকি, একই সাথে স্ট্রিক আপডেট করতে থাকি
-
শেষ পর্যন্ত স্ট্রীকটি ফেরত দিন
নিম্নলিখিত সম্পূর্ণ কোড -
উদাহরণ
const isHarshad = (num) => { let sum = 0, temp = num; while(temp){ sum += temp % 10; temp = Math.floor(temp/10); } return num % sum === 0; } const harshadNum = (number) => { //if the input is not harshad return -1 if(!isHarshad(number)){ return -1; } let streak = 1, prev = number-1, next = number+1; //check preceding streak while(isHarshad(prev) && prev > 0){ streak++; prev--; } //check succeeding streak while(isHarshad(next)){ streak++; next++; } return streak; }; console.log(harshadNum(1014));
আউটপুট
কনসোলে এই কোডের আউটপুট হবে −
4