एक संख्या गैपफुल नंबर होती है जब:
- इसमें कम से कम तीन अंक हों, और
- यह अपने पहले और अंतिम अंक को मिलाकर बनी संख्या से बिल्कुल विभाज्य हो।
उदाहरण के लिए:
संख्या 1053 एक गैपफुल नंबर है क्योंकि इसमें 4 अंक हैं और यह 13 से बिल्कुल विभाज्य है। इसी तरह, 135 एक गैपफुल नंबर है क्योंकि इसमें 3 अंक हैं और यह 15 से बिल्कुल विभाज्य है।
हमारा काम एक प्रोग्राम लिखना है जो हमारे द्वारा इनपुट के रूप में प्रदान की गई संख्या के निकटतम गैपफुल नंबर को लौटाता है।
उदाहरण के लिए, सभी 2-अंकीय संख्याओं के लिए, यह 100 होगा। 103 के लिए, यह 105 होगा।
हम इस समस्या को दो फ़ंक्शन में तोड़ेंगे:
isGapful() फ़ंक्शन
यह एक नंबर स्ट्रिंग प्राप्त करता है और नीचे दिए गए कोड में एक बूलियन लौटाता है:
const isGapful = (numStr) => {
const int = parseInt(numStr);
return int % parseInt(numStr[0] + numStr[numStr.length - 1]) === 0;
};
nearestGapful() फ़ंक्शन
यह हमारा मुख्य फ़ंक्शन है जो एक संख्या प्राप्त करता है, निकटतम गैपफुल नंबर लौटाता है। यहां कोड है:
const nearestGapful = (num) => {
if(typeof num !== 'number'){
return -1;
}
if(num <= 100){
return 100;
}
let prev = num - 1, next = num + 1;
while(!isGapful(String(prev)) && !isGapful(String(next))){
prev--;
next++;
};
return isGapful(String(prev)) ? prev : next;
};
isGapful() फ़ंक्शन स्थिर समय में इस आधार पर बूलियन लौटाता है कि संख्या गैपफुल है या नहीं, nearestGapful() फ़ंक्शन तब तक लूप करता है जब तक उसे एक गैपफुल नंबर नहीं मिल जाता और उसे लौटाता है।
निम्न पूरा कोड है:
उदाहरण
const n = 134;
// एक संख्या स्ट्रिंग प्राप्त करता है और बूलियन लौटाता है
const isGapful = (numStr) => {
const int = parseInt(numStr);
return int % parseInt(numStr[0] + numStr[numStr.length - 1]) === 0;
};
// मुख्य फ़ंक्शन -- एक संख्या प्राप्त करता है, एक संख्या लौटाता है
const nearestGapful = (num) => {
if(typeof num !== 'number'){
return -1;
}
if(num <= 100){
return 100;
}
let prev = num - 1, next = num + 1;
while(!isGapful(String(prev)) && !isGapful(String(next))){
prev--;
next++;
};
return isGapful(String(prev)) ? prev : next;
};
console.log(nearestGapful(n));
आउटपुट
कंसोल में आउटपुट होगा:
135