私はこの最近の不可解な質問を見ました:
括弧を追加してこれを実現します
そして、1つの答えがPythonスクリプトを使用してすべての可能性を試すことがわかりました。
式(文字列として)と整数を指定すると、括弧を追加して式を整数にできるかどうかを判断できるプログラムを作成することが課題になります。
たとえば、式が1 + 2 * 3
で整数がである場合、9に等しいの9
ような括弧を追加できる(1 + 2) * 3
ため、出力は真実である必要があります。ただし、式が1 + 2 - 3 * 4 / 5
で整数がの9999999999999
場合、括弧を追加してそれを等しくすることはできない9999999999999
ため、出力は誤ったものになります。
整数の入力は正または負の場合がありますが、式には正の整数のみが含まれることに注意してください。実際、式は常に一致します(\d+ [+*/-] )+ \d
(正規表現)。言い換えれば、ちょうどなし括弧、ノー指数、+
、-
、*
と/
。標準の演算子の順序(*
and /
、then +
および-
)。
その他のテストケース:
1 + 2 - 3 * 4 / 9 and -1 -> truthy, ((1 + 2) - (3 * 4)) / 9
10 - 9 * 8 - 7 * 6 - 5 * 4 - 3 * 2 - 2 * 1 and 1, falsey, see linked question
10 + 9 - 8 * 7 + 6 - 5 * 4 + 3 - 2 * 1 and 82 -> truthy, (10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1
34 + 3 and 15 -> falsey
1 + 2 + 5 + 7 and 36 -> falsey
1 / 10 * 3 + 3 / 10 * 10 and 6 -> truthy, (1/10*3+3/10)*10
質問は?
たとえば(10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1
、最後のテストケースのように、可能であれば、括弧で式を出力できます。私はこれを真実の値よりも好みますが、それはあなた次第です。2(5)
乗算に使用することはできません*
。
@ロッドはい、そうです。
—
programmer5000
整数以外の中間結果を使用する必要があるテストケースが必要です。
—
feersum
あなたは同様に、ゼロによる除算が発生する可能性のあるテストケースを追加する必要があります
—
mbomb007
3 / 2 - 1 - 1 and 2 -> 3 / (2 - 1) - 1
/
フロート除算ですよね?