समस्या
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो (ax+b)^n रूप में एक अभिव्यक्ति लेता है जहां ए और बी पूर्णांक हैं जो सकारात्मक या नकारात्मक हो सकते हैं, एक्स कोई एकल वर्ण चर है, और एन एक प्राकृतिक संख्या है। यदि a =1, चर के सामने कोई गुणांक नहीं रखा जाएगा।
हमारे फ़ंक्शन को विस्तारित फॉर्म को एक स्ट्रिंग के रूप में ax^b+cx^d+ex^f... रूप में वापस करना चाहिए जहां ए, सी, और ई शब्द के गुणांक हैं, एक्स मूल एक-वर्ण चर है जो मूल अभिव्यक्ति में पारित किया गया था और b, d, और f, वे घातें हैं जिन्हें x प्रत्येक पद में बढ़ाया जा रहा है और घटते क्रम में हैं
उदाहरण
निम्नलिखित कोड है -
const str = '(8a+6)^4'; const trim = value => value === 1 ? '' : value === -1 ? '-' : value const factorial = (value, total = 1) => value <= 1 ? total : factorial(value - 1, total * value) const find = (str = '') => { let [op1, coefficient, variable, op2, constant, power] = str .match(/(\W)(\d*)(\w)(\W)(\d+)..(\d+)/) .slice(1) power = +power if (!power) { return '1' } if (power === 1) { return str.match(/\((.*)\)/)[1] } coefficient = op1 === '-' ? coefficient ? -coefficient : -1 : coefficient ? +coefficient : 1 constant = op2 === '-' ? -constant : +constant const factorials = Array.from({ length: power + 1 }, (_,i) => factorial(i)) let result = '' for (let i = 0, p = power; i <= power; ++i, p = power - i) { let judge = factorials[power] / (factorials[i] * factorials[p]) * (coefficient * p * constant * i) if (!judge) { continue } result += p ? trim(judge) + variable + (p === 1 ? '' : `^${p}`) : judge result += '+' } return result.replace(/\+\-/g, '-').replace(/\+$/, '') }; console.log(find(str));
आउटपुट
576a^3+1152a^2+576a