समस्या
दशमलव संख्याओं को फैक्टोरियल के साथ कोड करना, संख्याओं को एक बेस सिस्टम में लिखने का एक तरीका है जो संख्याओं की घातों के बजाय फैक्टोरियल पर निर्भर करता है। इस प्रणाली में, अंतिम अंक हमेशा 0 होता है और बेस 0! में होता है। उससे पहले का अंक या तो 0 या 1 होता है और बेस 1! में होता है। उससे पहले का अंक 0, 1, या 2 होता है और बेस 2! में होता है, आदि। आम तौर पर, अंतिम से nth अंक हमेशा 0, 1, 2, ..., n होता है और बेस n! में होता है। हमें दो फ़ंक्शन चाहिए। पहला एक दशमलव संख्या प्राप्त करेगा और फैक्टोरियल प्रतिनिधित्व के साथ एक स्ट्रिंग लौटाएगा। दूसरा फैक्टोरियल प्रतिनिधित्व वाली एक स्ट्रिंग प्राप्त करेगा और दशमलव प्रतिनिधित्व उत्पन्न करेगा। उदाहरण के लिए − दशमलव संख्या 463 को "341010" के रूप में एन्कोड किया गया है, क्योंकि −
463 = 3×5! + 4×4! + 1×3! + 0×2! + 1×1! + 0×0!
उदाहरण
निम्नलिखिक कोड है −
const num = 463; const decimalToFact = (num = 1) => { const legend = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''); let str = '0'; let i = 2; while(num){ str = legend[num%i] + str; num = Math.floor(num / i); i++; }; return str; }; const factToDecimal = (str = '') => { const legend = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''); const l = str.length; return str .split('') .reduce((a,e,i) => Number(a) * (l - i) + legend.indexOf(e), 0); }; const fact = decimalToFact(num); const dec = factToDecimal(fact); console.log(fact); console.log(dec);आउटपुट
कंसोल आउटपुट निम्नलिखिक है −
341010 463