In Dartbord - voorbereiding werd de ring bepaald waarin een pijl belandt.
Het dartbord is ook verdeeld in sectoren. De getallen langs de rand geven het aantal punten aan voor een pijltje in de desbetreffende sector. De dartscore van een pijl wordt bepaald door de sector en de ring waarin de pijl belandt:
Scorenotatie bij darts
Afspraken voor de scorenotatie van één pijl (van binnen naar buiten):
- BULL: het centrum van het dartbord (rode cirkel in het midden) levert \(50\) punten op.
- getal : de behaalde score. Voor de single bull of outer bullseye (groene ring in het midden) is dit \(25\). Voor de twee bredere ringen(afwisselend zwart en wit) is dit het aantal punten voor die sector, zoals aangeduid op de rand van het bord.
- Tgetal: in de kleinste smalle ring, de triple ring (afwisselend rood en groen). Deze zone levert drie maal het puntenaantal op dat vermeld staat op de rand van het bord. Om aan te geven dat de score verdriedubbeld, worden de punten van de sector voorafgegaan door de letter T(riple), bijvoorbeeld T14 = \(42\).
- Dgetal: in de buitenste smalle ring, de double ring (afwisselend rood en groen). Als de pijl in dit gebied landt, levert dit twee keer het aantal punten op dat bij het betreffende vak staat. Om aan te geven dat de score verdubbeld, worden de punten van de sector voorafgegaan door de letter D(ouble), bijvoorbeeld D8 = \(16\).
- MISS: de buitenste zwarte rand (waar de cijfers staan), naast het bord of als de dart uit het bord valt. Dit levert geen punten op.
Opdracht
Schrijf de functie dart_score die als enige argument een string meekrijgt met de dartsnotatie en de punten berekent voor die worp. De score wordt altijd als getal teruggegeven.
Houd er rekening mee dat de punten per sector altijd positief zijn, en nooit groter zijn dan \(20\). Indien het argument hier niet aan voldoet, wordt het getal \(-1\) teruggegeven.
Andere foute scores worden in een volgende oefening aangepakt.
Voorbeeld (juist)
>>> dart_score("T18")
54
>>> dart_score("11")
11
>>> dart_score("BULL")
50
>>> dart_score("MISS")
0
>>> dart_score("T10")
30
>>> dart_score("D20")
40
Voorbeeld (fout)
Voor de duidelijkheid wordt in dit voorbeeld de reden voor het afkeuren weergegeven in commentaar.
>>> dart_score("99") # Getal is te groot, kan maximaal 20 zijn of 25
-1
>>> dart_score("T100") # Getal is te groot, kan maximaal 20 zijn
-1
>>> dart_score("-5") # Getal is negatief
-1