この課題は、より良い仕様です。
スペック
プログラムは、単一の変数を含む線形方程式を取り、x
の値を出力しますx
。
入力/解析
- 入力には、数字、演算子、括弧(
()
)、、x
および=
記号のみが含まれます(これは空白がないことを意味します)。 - 括弧は常にバランスが取れています。
- 常に少なくとも1つあり
x
ます。のx
前に数字を付けることができます。 - すべての方程式の結果は1つになります。
番号は、以下の手順で定義することができます。数値は、正規表現で定義できます-?(\d+(\.\d+)?|\.\d+)
。
正規表現を話さない場合:数字は次のように定義されます 0-9
- それがあるかもしれません
-
冒頭に負の意味 - そして、そこにもいくつかの桁です。それらが数字でない場合、小数点があります
- 小数点が存在する場合、少なくとも1桁がそれに続きます
最大の数値/値は、言語の機能によって定義されます。
オペレータは、のいずれかであります:+-*/
、彼らは常に数字、または括弧の間に表示されます
これは(5)(5)
、簡単にするために有効な入力ではないことを意味します。
カッコ内には、常に有効な式(数字や演算子の有効な組み合わせ)が含まれます。「バランスのとれた」括弧は、すべて(
に関連する終了があるため定義されます)
評価
- 操作の順序に従う必要があり、優先順位は(最高から最低)です。
- 括弧(最も深くネストされた最初)
- 乗算と除算
- 加算と減算
- 同じ優先順位の2つの演算子が発生した場合は、左->右に進むことをお勧めします
出力
結果を何らかの方法で出力する必要があります。数値の結果だけを出力しない場合は、出力の出力方法を回答で明確にします。出力形式は一貫している必要があります。出力は小数でもかまいませんが、常に合理的であり、精度は言語の精度に制限されます。ご使用の言語が浮動小数点演算をサポートしていない場合にのみ、サポートする必要はありません。
ルール
- このタスクを単純化するビルトインは許可されますが、明確に追加する必要があります
[uses built-in]
その答えのヘッダに明確に。これはあなたの答えが勝つことを免除します - 「このタスクを単純化する組み込み」は、次のいずれかです。
- 方程式を取り込み、a /変数の値を出力するもの
- 方程式を完全に単純化するもの
eval
または関連する関数を使用して、かなりの量の解析を行います。eval
線形方程式を解くために(入力の変更を最小限に)使用する場合、および関連する関数の使用は許可されません。- 疑問がある場合は、コメントを求めてください。
- 方程式を解析するビルトインが許可されています
例
3+4=x
7
4+x=5
1
3+3*3=x
12
3x-4=7+2x
11
3--1=x
4
3*(2+4x)=7x-4
-2
1.2+2.3x=5.8
2
10=4x
2.5
無効な入力:
(5)(4)=x no operator between (5) and (4)
5(x+3)=2 no operator 5 and (...)
x=y the only variable is x
4=3 there is no x
x+3=x-7 no solution
x=x infinite solutions
+5=x + is not an unary operator. -5=x would be valid though
1/(x-3)=5 Nonlinear
3/x Nonlinear
eval
は課題を単純化するものと見なされますか?また、new Function(...)
カウントの形式でしょうか?