前書き
電卓の動作がおかしい。入力するときにが8
表示されることがあり2
ます。そして時々私がタイプするとき6
それは表示する+
。いくつかのボタンが混同されています!
誰が私がどちらを決定するのを手伝ってもらえますか?
チャレンジ:
入力:間違った方程式のリスト、正しい結果。
出力:交換される2つのボタン。
例:
入力は次のとおりです。
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
そのために期待される出力は、次のとおり2
と*
。
どうして?2と*を入れ替えると、すべての方程式が正しいからです。
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
チャレンジルール:
- 入力は任意の合理的な形式にすることができます。スペースで区切られた単一の文字列にすることができます。文字列リストまたは-array。方程式のリストと正しい結果の別のリスト。あなたの電話。使用した入力形式を明記してください!
注:これは-5--15
、-5- -15
またはとしてテストケースを入力できることも意味します-5 - -15
。ただし、結果の数値--
は、スペースなしで入力するか、すべての数字の間にスペースを入れて入力する必要があります。テストケースは、それほど9119
のように入力することができる9119
か9 1 1 9
(その理由は、91 19
あなたが発見のためのスペースで案内することができるためである許可されていません- -
)。そのため、スペースは(多少)オプションで許可されます。 - 出力形式は、任意の合理的な形式にすることもできます。2文字にすることができます。単一の2文字の文字列。2つの文字を含む文字列リスト。あなたの電話。繰り返しますが、使用した出力形式を明記してください!
- にマップされる個別の14の出力を使用でき
0123456789+-*/
ます。そのため、必要に応じて2つの異なる整数を出力することもできます(繰り返しますが、使用しているマッピングがある場合は指定してください)。 - 整数のみをサポートする必要があります。そのため、
1/8=0.125
またはのようなテストケースはありません1/8=0
。 - サポートする必要がある算術オペランド:加算(
+
); 減算(-
); 乗算(*
または×
または·
); 部門(/
または÷
)。(注:括弧で囲まれた文字は説明としてのみ追加されます。) - 負の数をサポートする必要があります。これは
-
、数式では数学的なオペランドまたは負のインジケータの両方として解釈できることを意味します。 - あなたは、与えられた間違った方程式となって正しい式が常に有効である(そのようなものは存在しないと仮定することができ
4-/2
たり9+-+8
など)。 - 誤った入力式には0による除算が含まれる可能性がありますが、修正済みおよび予想される方程式には0による除算が含まれません。
- 誤った入力式は、目的のボタンを元に戻した場合でも、すでに正しい可能性があります。
- 与えられた入力式は、ボタンがスワップするのに無関係である可能性があります(
4+4=8
および9/3=3
式のように、スワップされたボタン2
および*
)。 - 特定のテストケースで実行できるスワップは常に1つだけであると想定できます。
- 交換する両方のボタンは、少なくとも1つの誤った方程式に常に存在します。
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、非コードゴルフ言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - 回答には標準の規則が適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを持つ関数/メソッドを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンクを追加してください。
- また、必要に応じて説明を追加してください。
テストケース:
Input:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Output: 2 *
Input:
4/2 = 6
3/0 = 3
0/8+2 = 4
95-5 = 90
4+2 = 2
Output: + /
Input:
7+4 = 11
5-15 = 46
212-23 = -2121
Output: 1 -
Input:
4+8/2-9*1 = -5
99/3-13 = 20
1+2+3+4 = 10
4-3-2-1 = -6
Output: 2 4
Input:
18/18 = 1
98-8 = 90
55*88 = 4840
-5--15 = 10
Ouput: 5 8
Input:
9119 = 18
5-3 = 513
8*-9 = 152
13116/3 = -1
Output: 1 -
--
。たとえば1991 = 2, -/3 = 3
。(多くの言語では、これを減分演算子と混同しています。)
91 19
、ソリューションが9--9
存在する場合はスペースを追加し、ソリューションが存在する場合はスペースを追加しないことで、テストケースの作成時にソリューションに関する知識9119
が9229
必要になることです。これが許可されている場合、スワップされた文字の前にのみスペースを追加するだけで、テストケースからすぐに解決策を導き出すことができます。
*
and and /
before +
and binary -
ですか?