Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptを使用して二項式を拡張する


問題

(ax + b)^ nの形式で式を受け取るJavaScript関数を作成する必要があります。ここで、aとbは正または負の整数、xは任意の単一文字変数、nは自然数です。 a =1の場合、変数の前に係数は配置されません。

この関数は、展開された形式をax ^ b + cx ^ d + ex ^ f ...の形式の文字列として返す必要があります。ここで、a、c、およびeは項の係数であり、xは元の1文字の変数です。は元の式で渡され、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

  1. JavaScriptでの名前付き関数式

    以下は、JavaScriptで名前付き関数式を実装するためのコードです。 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> &nb

  2. JavaScriptを使用して<text>の値を変数に抽出しますか?

    の値を抽出するには、-を使用します document.getElementById(“yourTextIdValue”).textContent 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initialscale= 1.0"> <tit