ö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) * 37
bir 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 e
miktar rasgele sayıyı o
temsil 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 e
veya o
ifadenin 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 e
veya o
, ya da başka bir +
ya da *
sırayla işlenen sahip olduğu ifade.
Örneğin, giriş *+eoo
olarak mul(add(e, o), o)
veya (e + o) * o
normal ek gösterimde okunabilir . e
Ve birinci o
tekabül işlenenlerdir +
ve +eo
son o
tekabü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 e
ya da o
tek 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
eval
Tamam kullanıyor mu?