önsöz
Tamsayılar her zaman çift veya tek . Tam sayılar bile iki tarafından bölünebilir, tek tam sayılar değildir.
İki tamsayı eklediğinizde, sonuçların summanların çift mi yoksa tek mi olduğuna bağlı olarak eşit mi yoksa tek mi olacağını görebilirsiniz:
- Çift + Çift = Çift
- Çift + Tek = Tek
- Tek + Çift = Tek
- Tek + Tek = Çift
Benzer şekilde, iki tam sayıyı çarptığınızda, faktörlerin eşit mi yoksa tek mi olduğuna bağlı olarak sonucun eşit mi yoksa tek mi olacağını tahmin edebilirsiniz:
- Çift * Çift = Çift
- Çift * Tek = Çift
- Tek * Çift = Çift
- Tek * Tek = Tek
Dolayısıyla, bir matematik ifadesinde yalnızca toplama ve çarpma gerektiren tüm değişkenlerin düzgünlüğünü veya tuhaflığını biliyorsanız, sonucun eşit mi yoksa tek mi olacağını tahmin edebilirsiniz.
Örneğin, (68 + 99) * 37bir tuhaflıkla sonuçlandığını söyleyebiliriz, çünkü bir çift artı bir garip ( 68 + 99) gariptir ve garip bir kez başka bir garip ( odd * 37) gariptir.
Meydan okuma
Yalnızca dört karakteri içeren bir dizgede geçen bir program veya işlev yazın eo+*. Bu dize , yalnızca önek ( +) ve çarpma ( *) ile ilgili ön ek notasyonunda verilen matematiksel ifadeyi temsil eder . Her biri bir emiktar rasgele sayıyı otemsil eder ve her biri bir takım rasgele sayıyı temsil eder.
Göreviniz, ifadeyi basitleştirmek, yazdırmak veya tek bir satır döndürmek eveya oifadenin sonucunun çift mi yoksa tek mi olduğuna bağlı olarak.
Girişin her zaman geçerli önek notasyonunda olacağını varsayabilirsiniz. Spesifik olarak, her biri +ve *ondan sonra meydana gelen her zaman iki uygun operand olacaktır. Bu işlenen tek olabilir eveya o, ya da başka bir +ya da *sırayla işlenen sahip olduğu ifade.
Örneğin, giriş *+eooolarak mul(add(e, o), o)veya (e + o) * onormal ek gösterimde okunabilir . eVe birinci otekabül işlenenlerdir +ve +eoson otekabül işlenenlerdir *.
Sadece açıklığa kavuşturmak için, önek notasyonu yanlış olan bazı geçersiz girişler:
eo
ooe
o+e
ee*
+*oe
+e*o
Çıktıdaki tek izleyen yeni satır iyi, ancak aksi takdirde çıkacak olan tek eya da otek olanlar için düz .
Bayt cinsinden en kısa kod kazanır.
Test Kılıfları
(Boş satırlar yalnızca benzer durumları görsel olarak ayırmaya yardımcı olmak içindir.)
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
evalTamam kullanıyor mu?