(+ 5 (* 3 2) 7)
antaa tuloksen 18
.Tehtäväsi on toteuttaa koodi, joka laskee Lisp-tyylisen laskulausekkeen arvon. Voit olettaa, että lausekkeen pituus on enintään $1000$ merkkiä, jokainen operaattori on
+
tai *
ja jokainen laskennan aikana esiintyvä luku on välillä $0 \dots 10^{18}$.Toteuta tiedostoon
lisp.py
funktio eval
, joka antaa lausekkeen arvon.def eval(s): # TODO if __name__ == "__main__": print(eval("(+ 1 2 3 4 5)")) # 15 print(eval("(+ 5 (* 3 2) 7)")) # 18 print(eval("(* (+ (+ 1 2) 3) (+ (* 4 5) 6 2))")) # 168 print(eval("(+ 123 456)")) # 579