前文
整数は常に偶数または奇数です。偶数の整数は2で割り切れ、奇数の整数は割り切れません。
2つの整数を追加すると、被加数が偶数か奇数かに基づいて、結果が偶数か奇数かを推測できます。
- 偶数+偶数=偶数
- 偶数+奇数=奇数
- 奇数+偶数=奇数
- 奇数+奇数=偶数
同様に、2つの整数を乗算すると、因子が偶数か奇数かに基づいて、結果が偶数か奇数かを推測できます。
- 偶数*偶数=偶数
- 偶数*奇数=偶数
- 奇数*偶数=偶数
- 奇数*奇数=奇数
したがって、加算と乗算のみが関係する数式のすべての変数の偶数または奇数がわかっている場合、結果が偶数か奇数かを推測できます。
たとえば(68 + 99) * 37
、偶数と奇数(68 + 99
)が奇数であり、奇数と別の奇数(odd * 37
)が奇数を与えるため、自信を持って奇数になると言うことができます。
チャレンジ
唯一の4つの文字を含む文字列を取り込みプログラムや関数を書きますeo+*
。この文字列は、加算()と乗算()のみを含むプレフィックス表記で指定された数式を表します。それぞれが任意の偶数を表し、それぞれが任意の奇数を表します。+
*
e
o
あなたの仕事は表現、印刷または単一の復帰簡素化することであるe
か、o
式の結果が偶数か奇数かに基づいています。
入力は常に有効なプレフィックス表記であると想定できます。具体的には、それぞれ+
との*
後に、常に2つの対応するオペランドがあります。これらのオペランドは、単一のe
or o
、またはオペランドを持つ別の+
or *
式です。
たとえば、入力*+eoo
はとしてmul(add(e, o), o)
、または(e + o) * o
通常の挿入記法で読み取ることができます。e
第一o
に対応するオペランドであり+
、そして+eo
、最後には、o
対応するオペランドです*
。
明確にするために、間違ったプレフィックス表記を持ついくつかの無効な入力を次に示します。
eo
ooe
o+e
ee*
+*oe
+e*o
出力の単一の末尾の改行は問題ありませんが、そうでなければ、e
偶数またはo
奇数のプレーンのみが出力されるはずです。
バイト単位の最短コードが優先されます。
テストケース
(空の行は、同様のケースを視覚的に区別するためだけのものです。)
e -> e
o -> o
+ee -> e
+eo -> o
+oe -> o
+oo -> e
*ee -> e
*eo -> e
*oe -> e
*oo -> o
+e+ee -> e
+e+eo -> o
+e+oe -> o
+e+oo -> e
+e*ee -> e
+e*eo -> e
+e*oe -> e
+e*oo -> o
+o+ee -> o
+o+eo -> e
+o+oe -> e
+o+oo -> o
+o*ee -> o
+o*eo -> o
+o*oe -> o
+o*oo -> e
*e+ee -> e
*e+eo -> e
*e+oe -> e
*e+oo -> e
*e*ee -> e
*e*eo -> e
*e*oe -> e
*e*oo -> e
*o+ee -> e
*o+eo -> o
*o+oe -> o
*o+oo -> e
*o*ee -> e
*o*eo -> e
*o*oe -> e
*o*oo -> o
++eee -> e
++eeo -> o
++eoe -> o
++eoo -> e
++oee -> o
++oeo -> e
++ooe -> e
++ooo -> o
+*eee -> e
+*eeo -> o
+*eoe -> e
+*eoo -> o
+*oee -> e
+*oeo -> o
+*ooe -> o
+*ooo -> e
*+eee -> e
*+eeo -> e
*+eoe -> e
*+eoo -> o
*+oee -> e
*+oeo -> o
*+ooe -> e
*+ooo -> e
**eee -> e
**eeo -> e
**eoe -> e
**eoo -> e
**oee -> e
**oeo -> e
**ooe -> e
**ooo -> o
+e+e+e+ee -> e
+o+o+o+oo -> o
*e*e*e*ee -> e
*o*o*o*oo -> o
+e+o+e+oe -> e
+o+e+o+eo -> o
*e*o*e*oe -> e
*o*e*o*eo -> e
+e*e+e*ee -> e
+o*o+o*oo -> o
*e+e*e+ee -> e
*o+o*o+oo -> o
+**++*+*eeoeeooee -> e
+**++*+***eooeoeooeoe -> e
+**+***+**++**+eooeoeeoeeoeooeo -> o
+e*o*e**eoe -> e
+*e+e+o+e**eeoe -> e
**o++*ee*++eoe*eo+eoo -> o
eval
OK を使用していますか?