समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो ठीक दो संख्याओं की एक सरणी लेता है।
पहला तत्व किसी भी परिमेय संख्या के अंश को निर्दिष्ट करता है और दूसरा तत्व उसी के हर को निर्दिष्ट करता है।
हमारे फ़ंक्शन को दो तत्वों की किसी भी संख्या में उप सरणियों की एक सरणी वापस करनी चाहिए, जैसे कि जब सबअरे द्वारा निर्दिष्ट परिमेय संख्या को जोड़ा जाता है तो वे इनपुट परिमेय संख्या के योग होते हैं और सभी सबएरे का अंश 1 होना चाहिए।
हमें यह भी सुनिश्चित करने की आवश्यकता है कि उपसरणियों की संख्या यथासंभव छोटी हो।
उदाहरण
निम्नलिखित कोड है -
const num = '2/3'; const decompose = (num = '') => { const fractions = []; let res = eval(num); if (res >= 1) { fractions = ['' + Math.floor(res)]; res = res - Math.floor(res); }; let sum = 0; let denom = 2; while (sum <= res - 0.000000001) { if (1 / denom + sum <= res) { fractions.push("1/" + denom); sum += 1 / denom; } denom++; } return fractions; } console.log(decompose(num));
आउटपुट
कंसोल आउटपुट निम्नलिखित है -
[ '1/2', '1/6' ]