एडिटिव नंबर्स
एडिटिव नंबर एक संख्या स्ट्रिंग है जिसके अंक एडिटिव सीक्वेंस बना सकते हैं।
एक वैध एडिटिव सीक्वेंस में कम से कम तीन संख्याएं होनी चाहिए। पहले दो नंबरों को छोड़कर, सीक्वेंस में प्रत्येक बाद की संख्या पिछले दो का योग होनी चाहिए। केवल अंकों '0'-'9' वाली स्ट्रिंग दी गई है, यह निर्धारित करने के लिए एक फ़ंक्शन लिखें कि यह एडिटिव नंबर है या नहीं।
नोट - एडिटिव सीक्वेंस में संख्याओं में अग्रणी शून्य नहीं हो सकते, इसलिए सीक्वेंस 1, 2, 03 या 1, 02, 3 अमान्य है।
उदाहरण के लिए -
स्ट्रिंग "199100199" एडिटिव नंबर है क्योंकि, एडिटिव सीक्वेंस है - 1, 99, 100, 199 -
1 + 99 = 100, 99 + 100 = 199
उदाहरण
इसके लिए कोड होगा -
const str = "199100199"; const isAdditiveNumber = (numStr) => { if(numStr.length < 3) return false; let str = ""; let seen = true; for(let i = numStr.length - 1; i > 1; i--){ str = `${numStr[i]}${str}`; if(numStr[i] === "0") continue; let s = str; let s2 = numStr[i - 1] for(let j = i - 2; j >= 0; j--){ if(`${s2}`.startsWith("0") && s2.length > 1){ s2 = `${numStr[j]}${s2}` seen = false; } else if(parseInt(s) >= parseInt(s2)){ let diff = s - s2; if(numStr.slice(0, j + 1).endsWith(diff)){ s = s2; s2 = diff; let ind = Math.floor(Math.log10(diff)); ind = ind < 0 ? 0 : ind j -= ind; seen = true; }else { s2 = `${numStr[j]}${s2}` seen = false; } }else{ seen = false; break; } } if(seen) return seen; }; return seen; }; console.log(isAdditiveNumber(str));आउटपुट
कंसोल में आउटपुट होगा -
true