Deze oefening sluit aan bij dart_score - voorbereiding.

In de meest gekende variant van Darts (of darten) wordt er in elke beurt gegooid met drie pijltjes. Afhankelijk van de spelvariant is het soms nodig om te beginnen en/of eindigen met een verdubbelde score (double in en/of double out).
Met double wordt bedoeld dat de pijl belandt ofwel in de buitenste ring (double ring) (notatie start altijd met de letter D van double) ofwel in het centrum van het dartbord: de bull’s eye (weergegeven met BULL) wat overeenkomt met 2*25.
De resultaten van één beurt worden bijgehouden in een string, waarbij de behaalde scores gescheiden worden door een komma en een spatie. Een beurt met drie pijltjes wordt bijgehouden als "T18, 11, BULL".
Schrijf drie functies:
De logische functie is_double die als enige argument een string meekrijgt met de dartsnotatie en teruggeeft of deze score een double is. Gebruik deze logische functie in de twee volgende functies.
De logische functie dart_double_out heeft als enige argument een string met alle resultaten van één beurt. De functie controleert of de laatste worp van deze beurt een double is.
De functie dart_double_in_out controleert of de eerste én de laatste worp van één beurt een double zijn. De functie geeft een tuple terug met twee elementen. Als het eerste element True is, betekent dat dat eerste worp een double is. Als het tweede element van de tuple True is, betekent dat dat de laatste worp een double is. Als een element geen double is, dan wordt er op die plaats False ingevuld.
Beide functies moeten in staat zijn een beurt te controleren met een willekeurig aantal worpen (minstens 3). Je mag wel veronderstellen dat er enkel correcte scores voorkomen die gescheiden worden door een komma en een spatie.
>>> is_double("BULL")
True
>>> is_double("D18")
True
>>> is_double("11")
False
>>> dart_double_out("T18, 11, BULL")
True
>>> dart_double_out("D20, T10, MISS")
False
>>> dart_double_out("D18, T10, D6")
True
>>> dart_double_out("D18, BULL, 20, T10, D6")
True
>>> dart_double_in_out("T18, 11, BULL")
(False, True)
>>> dart_double_in_out("D20, T10, MISS")
(True, False)
>>> dart_double_in_out("5, T10, MISS")
(False, False)
>>> dart_double_in_out("D18, T10, D6")
(True, True)
>>> dart_double_in_out("D18, BULL, 20, T10, D6")
(True, True)