前書き
次の事実により、4つの基本的な数学演算子(+、-、*、/)を2つに減らすことができます。
x + y = x - (-y)
x * y = x / (1/y), y != 0
x * 0 = 0/x
チャレンジ
課題は、以下を含む「文字列」として入力を受け取ることです。
- 数字
- 単一文字変数( "x"、 "y")
- 4つの基本的な数学演算子(+、-、*、/)
- 括弧
入力と同じ数学的な結果を生成するように操作された文字列を出力しますが、数学記号「-」と「/」のみを含みます
詳細
- 入力は任意の受け入れ可能な形式(ファイル、STDINなど)にすることができ、文字列または文字配列(配列の配列ではない)として表すことができます。
- 出力は、任意の受け入れ可能な形式(ファイル、STDINなど)にすることができ、文字列または文字配列(配列の配列ではない)として表すことができます。
- 括弧を認識して維持する必要があります
- 標準の抜け穴は許可されていません
- または
x + y
として表現したい場合は、あなたの選択ですx - -y
x - (-y)
- 操作の順序を維持する必要があります
- 無効な入力を処理する必要はありません
- 入力は空でも、単一の数値/変数でもかまいません。その場合、プログラムは入力を出力する必要があります
- 注:あなたはしていない限り、導入に置換を使用する必要があり
input = output
、あなたのプログラムが変更される可能性2 * 2
に8/2
あなたが望んだ場合には、 - 「0」が方程式にゼロが表示される唯一の方法であると想定できます(つまり、処理する必要はありません
1 * (4 - 4)
)。 - 提案:プログラムをテストするには、このWebサイトタイプにアクセスしてください
input = output
。ここで、入力は入力、出力は出力です。結果が「true」の場合、プログラムはそのケースを正常に処理しました(例、例)
テストケース
以下はいくつかのテストケースで、単一の文字列として入力し、単一の文字列として出力します。
x + y
x - (-y)
x * y
x / (1/y)
x / y
x / y
x - y
x - y
1
1
5
5
-6
-6
+x
x
1 + (x * 4) - (512 * 3)
1 - (-(x / (1/4))) - (512 / (1/3))
1 - 3 / 4 + l / g
1 - 3/4 - (-(l / g))
5 * 0 / 2
0/5 / 2
(a + g) * 0
0/(a - (-g))
得点
これはcode-golfなので、バイト単位の最短の回答が優先されます。ネクタイは最初のポストによって解決されます。
@Linus:の場合も同等ではありません
—
TimČasSep
y=0
が、チャレンジは暗黙的にそれを想定してn/d => d != 0
いると思います。
@TimČasahh!そのことを考えていませんでした。チャレンジを更新します。正しく処理する必要があることを知っているだけです
—
Socratic Phoenix
現状では、単純に式を評価して結果を返すことを妨げるものはほとんどありません(結局、それらは数学的には同等です)。
—
Steven H.
v
Pythで適切なソリューションになりたいのでない限り、それを変更することをお勧めします。
待って、変数(xやyなど)がある場合、ゼロによる除算の危険を冒さずに除算するにはどうすればよいでしょうか。
—
アダム
5 * (a - b)
a = bの場合。そして、私たちは次のようなものを検出する必要があり5 * (a - a)
ますか?どの程度5 * (4 - 4)
と5 * (a / a - 1)
か5 * (4 / 4 - 1)
?
x / 1/y
=x/y
分割は結合的ではないためです。私はあなたが何を考えているのか知っていますが、WolframAlphaでさえ、スペースで操作の順序を変更したいということを認識していません。