Pembukaan
Bilangan bulat selalu genap atau ganjil . Bahkan bilangan bulat dapat dibagi dua, bilangan bulat ganjil tidak.
Saat Anda menambahkan dua bilangan bulat, Anda dapat menyimpulkan apakah hasilnya akan genap atau ganjil berdasarkan apakah puncaknya genap atau ganjil:
- Even + Even = Even
- Genap + Ganjil = Ganjil
- Ganjil + Genap = Ganjil
- Ganjil + Ganjil = Merata
Demikian juga, ketika Anda mengalikan dua bilangan bulat Anda dapat menyimpulkan apakah hasilnya akan genap atau ganjil berdasarkan apakah faktor genap atau ganjil:
- Even * Even = Even
- Even * Odd = Even
- Ganjil * Genap = Genap
- Ganjil * Ganjil = Ganjil
Dengan demikian, jika Anda mengetahui kerataan atau keanehan semua variabel dalam ekspresi matematika yang hanya melibatkan penambahan dan perkalian, Anda dapat menyimpulkan apakah hasilnya akan genap atau ganjil.
Sebagai contoh, kita dapat dengan yakin mengatakan bahwa (68 + 99) * 37menghasilkan ganjil karena genap ditambah ganjil ( 68 + 99) adalah ganjil, dan yang ganjil lain ganjil ( odd * 37) memberikan ganjil.
Tantangan
Tulis program atau fungsi yang menggunakan string yang hanya berisi empat karakter eo+*. String ini mewakili ekspresi matematika yang diberikan dalam notasi awalan yang hanya melibatkan penambahan ( +) dan perkalian ( *). Masing-masing emewakili beberapa nomor genap sembarang, dan masing-masing omewakili beberapa angka ganjil yang sewenang-wenang.
Tugas Anda adalah menyederhanakan ekspresi, mencetak, atau mengembalikan tunggal eatau oberdasarkan apakah hasil ekspresi itu genap atau ganjil.
Anda dapat mengasumsikan bahwa input akan selalu dalam notasi awalan yang valid. Secara khusus, masing +- masing dan *akan selalu memiliki dua operan yang sesuai terjadi setelahnya. Operan ini dapat berupa satu eatau o, +atau *ekspresi lain yang pada gilirannya memiliki operan.
Misalnya, input *+eoodapat dibaca sebagai mul(add(e, o), o), atau (e + o) * odalam notasi infiks normal . The edan yang pertama oadalah operan sesuai dengan +, dan +eodan yang terakhir oadalah operan yang sesuai dengan *.
Untuk memperjelasnya, berikut adalah beberapa input yang tidak valid yang memiliki notasi awalan yang salah:
eo
ooe
o+e
ee*
+*oe
+e*o
Satu baris baru yang tertinggal di output baik-baik saja, tetapi jika tidak, plain euntuk genap atau oganjil adalah yang seharusnya menjadi output.
Kode terpendek dalam byte menang.
Uji Kasus
(Baris kosong hanya untuk membantu memisahkan kasus serupa secara visual.)
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
evalOK?