Je ziet meteen dat deze gelijkheden correct zijn:
SEVEN PLUS TWO = EIGHTEEN MINUS NINE = EIGHTEEN OVER TWO
Maar Susan Thorpe ontdekte dat deze gelijkheden evengoed blijven gelden als elke letter de waarde krijgt van zijn positie in het alfabet (A=1, B=2, C=3, …), en de waarde van elke zin gelijk is aan de som van de waarden van de letters uit die zin. Elk van de drie zinnen heeft zo een waarde die gelijk is aan 191.
Schrijf een functie karakterwaarde waaraan één karakter (str) moet doorgegeven worden. De functie moet de waarde (int) van het karakter teruggeven. De waarde van een letter komt overeen met de positie van die letter in het alfabet (A=1, B=2, C=3, …). De waarde van elk ander karakter is 0.
Schrijf een functie stringwaarde waaraan een string (str) moet doorgegeven worden. De functie moet de waarde (int) van de string teruggeven. Deze wordt berekend als de som van de waarden van alle karakters in de string.
Schrijf een functie isevenwaardig waaraan twee strings (str) moeten doorgegeven worden. De functie moet een Booleaanse waarde (bool) teruggeven die aangeeft of de twee strings dezelfde waarde hebben.
Schrijf een functie isgelijkheid waaraan een string (str) moet doorgegeven worden. De functie moet een Booleaanse waarde (bool) teruggeven die aangeeft of de string een gelijkheid voorstelt. Dat is het geval als de volgende twee voorwaarden gelden:
de string bevat één enkel gelijkteken (=)
het linkerlid (de string voor het gelijkteken) heeft dezelfde waarde als het rechterlid (de string na het gelijkteken)
Geen enkele van deze functies mag onderscheid maken tussen hoofdletters en kleine letters.
>>> karakterwaarde('A')
1
>>> karakterwaarde('z')
26
>>> karakterwaarde('!')
0
>>> stringwaarde('SEVEN PLUS TWO')
191
>>> stringwaarde('eighteen minus nine')
191
>>> stringwaarde('Eighteen Over Two')
191
>>> stringwaarde('Tea For Two')
123
>>> isevenwaardig('SEVEN PLUS TWO', 'eighteen minus nine')
True
>>> isevenwaardig('eighteen minus nine', 'Eighteen Over Two')
True
>>> isevenwaardig('SEVEN PLUS TWO', 'Tea For Two')
False
>>> isgelijkheid('SEVEN PLUS TWO = eighteen minus nine')
True
>>> isgelijkheid('eighteen minus nine=Eighteen Over Two')
True
>>> isgelijkheid('SEVEN PLUS TWO = eighteen minus nine = EIGHTEEN OVER TWO')
False
>>> isgelijkheid('SEVEN PLUS TWO ~ eighteen minus nine')
False
>>> isgelijkheid('SEVEN PLUS TWO = Tea For Two')
False