ねえ、JavaScript と HTML5 でフラクタル生成プログラムを作成しました (ここにリンクがあります)。これには、複雑な数学とフラクタル方程式について行ったすべての調査を含め、約 2 年間のプロセスが必要でした。人々が見るのはかなり威圧的です。コードを調べているうちに、 Complex.parseFunctionなど、物事を行うための古い手法のいくつかが非常に非効率的であることに気付きました。
RegExp を使用して、関数、演算子、変数などの式のコンポーネントを解析し、式の操作の適切な順序を実装する方法を探しています。以下の例は、私の言いたいことを示しているかもしれません:
//the first example parses an expression with two variables and outputs to string
console.log(Complex.parseFunction("i*-sinh(C-Z^2)", ["Z","C"], false))
"Complex.I.mult(Complex.neg(Complex.sinh(C.sub(Z.cPow(new Complex(2,0,2,0))))))"
//the second example parses the same expression but outputs to function
console.log(Complex.parseFunction("i*-sinh(C-Z^2)", ["Z","C"], true))
function(Z,C){
return Complex.I.mult(Complex.neg(Complex.sinh(C.sub(Z.cPow(new Complex(2,0,2,0))))));
}
私は RegExp を使用して処理する方法を知ってString.prototype.replace
います。必要なのは RegExp 自体だけです。減算演算子 (「CZ^2」など) と負の関数 (「i*-(Z^2+C)」など) の違いは、それぞれ変数または演算子。