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) * 37
menghasilkan 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 e
mewakili beberapa nomor genap sembarang, dan masing-masing o
mewakili beberapa angka ganjil yang sewenang-wenang.
Tugas Anda adalah menyederhanakan ekspresi, mencetak, atau mengembalikan tunggal e
atau o
berdasarkan 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 e
atau o
, +
atau *
ekspresi lain yang pada gilirannya memiliki operan.
Misalnya, input *+eoo
dapat dibaca sebagai mul(add(e, o), o)
, atau (e + o) * o
dalam notasi infiks normal . The e
dan yang pertama o
adalah operan sesuai dengan +
, dan +eo
dan yang terakhir o
adalah 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 e
untuk genap atau o
ganjil 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
eval
OK?