एक संख्या गैपफुल संख्या होती है जब -
- इसमें कम से कम तीन अंक हों, और
- यह अपने पहले और अंतिम अंकों को एक साथ रखकर बनी संख्या से बिल्कुल विभाज्य हो
उदाहरण के लिए -
संख्या 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; //receives a number string and returns a boolean const isGapful = (numStr) => { const int = parseInt(numStr); return int % parseInt(numStr[0] + numStr[numStr.length - 1]) === 0; }; //main function -- receives a number, returns a number 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