Annettuna on merkkijono, jonka osana voi olla seuraavan muotoisia laskuja:
add(x,y): laske yhteen luvutxjaymul(x,y): kerro toisillaan luvutxjay
Luvut x ja y ovat positiivisia kokonaislukuja. Sinun tulee käsitellä vain laskut, jotka ovat tarkalleen tässä muodossa.
Tehtäväsi on luoda uusi merkkijono, jossa jokainen lasku on korvattu sen vastauksella ja muut merkit ovat ennallaan. Esimerkiksi merkkijono abadd(123,456)mulxmul(3,13) tulee muuttaa muotoon ab579mulx39.
Toteuta tiedostoon addmul.py funktio evaluate, jolle annetaan parametrina merkkijono. Funktion tulee palauttaa merkkijono, jossa kaikki laskut on korvattu niiden vastauksilla.
Funktion tulee toimia tehokkaasti pitkilläkin merkkijonoilla. Hyvä testi on tehtäväpohjan viimeinen testi, jossa merkkijonossa on 10^5 kertaa lasku mul(6,7). Funktiosi tulee pystyä käsittelemään tämäkin syöte tehokkaasti.
def evaluate(data):
# TODO
if __name__ == "__main__":
print(evaluate("add(1,2)")) # 3
print(evaluate("aybabtu")) # aybabtu
print(evaluate("mul(6,7),mul(7,191)")) # 42,1337
print(evaluate("abadd(123,456)mulxmul(3,13)")) # ab579mulx39
print(evaluate("mul()mul(13)mul(0,1)")) # mul()mul(13)mul(0,1)
data = "mul(6,7)"*10**5
result = evaluate(data)
print(len(result)) # 200000
print(result[:20]) # 42424242424242424242
