0

ユーザーに次のような方程式を入力してもらいたい:

"(-6/8) + (2/3)x + (-2/3)bar + (5/8) = (-2) + z + (-5/1245)foo"

次に、li の順序付けられていないリストを次のように取得します。

  <li class='monome #{side}' data-value='-6/8' data-type='rationnal'></li>

また

  <li class='monome #{side}' data-value='2/3' data-type='symbol' data-symbol='x'></li>

方程式の各メンバーの項のタイプに応じて...

醜い解決策は次のとおりです。

member_as_html = (membre,side) ->
  html = "<ul>"
  for monome in membre
    m = monome.split(")")
    if m[1]
      html += "<li class='monome #{side}' data-value='#{m[0][1..]}' data-type='symbol' data-symbol='#{m[1]}'></li>"
    else
      html += "<li class='monome #{side}' data-value='#{m[0][1..]}' data-type='rationnel'></li>"
  html += "</ul>"   



s = $( "#equation_string" ).val()
s = s.replace(/\s+/g, '').split("=")
ml = s[0].split("+")
mr = s[1].split("+")
ul_left = member(ml,"left")
ul_right = member(mr,"right")

ただし、文字列の検証もシンボルの長さの柔軟性もありません

最後に、人々がこれらの正規表現を手伝ってくれるように動機づけるために、これが私の作業プロジェクトのリンクです。あなたはそれらを解決するまで方程式で遊ぶことができます: それは教師にとって非常に楽しくて便利です: http://jsfiddle.net/cphY2/

編集 今のところ、任意のレベルの括弧と演算子の優先順位 ln、exp、および階乗を含む複雑な方程式は、開発の状態には複雑すぎます。そのため、項の和で構成される単純な方程式という慣例を選択しました。項は、有理数または有理数を係数とするシンボル (任意の長さ) である可能性があります。方程式を入力するために使用される規則についての(より良い)提案をいただければ幸いです(特に fu#@"@[|@king 正規表現と !)

4

1 に答える 1

1

私はcoffeescriptを知りませんが、ここにPythonの解決策があります.おそらくそれはあなたを正しい軌道に乗せるでしょうか?

s = "(-6/8) + (2/3)x + (-2/3)y + (5/8)"
s = s.split(" + ")
D = []
for u in s:
    if u[-1] == ')': D += [{u,"frac"}]
    else: D += [{u[0:-1],u[-1]}]
于 2013-11-04T12:41:02.173 に答える