हर्षद संख्याएँ वे संख्याएँ होती हैं जो अपने अंकों के योग से पूर्णतः विभाजित होती हैं। संख्या 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
आइए इस समस्या को दो प्रमुख कार्यों में विभाजित करें,
-
इसहर्षद () → एक संख्या लेता है और एक बूलियन देता है जो इस पर निर्भर करता है कि संख्या हर्षद है या नहीं।
-
हर्षदनम () → मुख्य कार्य जो वास्तविक संख्या लेता है, विभिन्न बिंदुओं पर इसहर्षद () को कॉल करता है और स्ट्रीक की लंबाई लौटाता है।
इसहर्षद फ़ंक्शन को कोड करना () -
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));
उपरोक्त कोड को समझना -
-
जांचें कि इनपुट हर्षद है या नहीं, यदि फ़ंक्शन को रोकें और -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