اكتب دالة باسم evaluate تأخذ نص تعبير حسابي وتُرجع نتيجة حسابه.
المطلوب:
- الدالة تأخذ معامل واحد:
expression(string) يحتوي على أرقام وعمليات - العمليات المدعومة:
+,-,*,/ - يجب احترام الأولويات:
*و/لهما أولوية أعلى من+و- - يجب احترام الأقواس
() - الدالة تُرجع النتيجة كرقم (int أو float)
- يجب التعامل مع المسافات في النص
مثال:
evaluate("3 + 5") # 8
evaluate("2 * 3 + 4") # 10
evaluate("2 + 3 * 4") # 14
evaluate("(2 + 3) * 4") # 20
evaluate("10 / 2 - 3") # 2
evaluate("(5 + 3) * (2 - 1)") # 8
ملاحظات:
- استخدم مكدس (stack) لتتبع الأرقام والعمليات
- يمكنك تحويل التعبير إلى Postfix ثم حسابه
- أو استخدام خوارزمية Shunting Yard