Je slaagt erin om de vragen van het kind te beantwoorden, en samen kunnen jullie het eerste deel van het huiswerk afmaken. Maar dan lopen jullie vast als je bij het volgende gedeelte komt: gevorderde wiskunde.

Nu hebben de optelling en de vermenigvuldiging een verschillende prioriteit, maar de regels zijn nog altijd niet zoals je ze gewoon bent. In plaats daarvan heeft de optelling voorrang op de vermenigvuldiging.

Dit zijn nu de stappen die uitgevoerd worden om de uitdrukking 1 + 2 * 3 + 4 * 5 + 6 te evalueren:

1 + 2 * 3 + 4 * 5 + 6
  3   * 3 + 4 * 5 + 6
  3   *   7   * 5 + 6
  3   *   7   *  11
     21       *  11
         231

Hier zijn de andere voorbeelden:

Opgave

Wat krijg je als je volgens de nieuwe regels de resultaten voor de uitdrukkingen van het huiswerk bij elkaar optelt? Hiervoor ga je als volgt te werk:

Voorbeeld

In deze interactieve sessie gaan we ervan uit dat het tekstbestand homework.txt1 zich in de huidige directory bevindt.

> evaluate("1 + 2 * 3 + 4 * 5 + 6")
231
> evaluate("1 + (2 * 3) + (4 * (5 + 6))')
51
> evaluate("2 * 3 + (4 * 5)')
46
> evaluate("5 + (8 * 3 + 9 + 3 * 4 * 3)')
1445
> evaluate("5 * 9 * (7 * 3 * 3 + 9 * 3 + (8 + 6 * 4))')
669060
> evaluate("((2 + 4 * 9) * (6 + 9 * 8 + 6) + 6) + 2 + 4 * 2')
23340

> homework("homework.txt")
694173