Aan de bar kan je negen soorten cocktails bestellen. Toch lijken er op de drankkaart maar acht soorten te staan. Kan je achterhalen welke negende soort cocktail er in deze drankkaart verstopt zit?

drankkaart
Aan de bar kan je negen soorten cocktails bestellen. Toch lijken er op de drankkaart maar acht soorten te staan. Kan je achterhalen welke negende soort cocktail er in deze drankkaart verstopt zit?

Antwoord: Shirley Temple Black1

Om de naam van de verborgen cocktail te vinden, moeten de cocktails op de drankkaart eerst oplopend gesorteerd worden op basis van het getal na de komma in hun prijs:

Sex on the beach (09)
Cuba libre (44)
Bramble (51)
Mary Pickford (56)
Tuxedo (68)
Cosmopolitan (69)
Suffering bastard (86)
Black Russian (88)

In de prijs van een cocktail bepaalt het getal voor de komma vervolgens welke karakters moeten geselecteerd worden uit de naam van de cocktail. Daarvoor zetten we het (decimaal) getal om naar zijn binaire voorstelling. Die binaire voorstelling keren we om en vullen we achteraan aan met nullen tot die even lang is als de naam van de cocktail. Op elke plaats waar in de omgekeerde binaire voorstelling een 1 staat, selecteren we het corresponderende karakter uit de naam van de cocktail.

2571000000011000000010000000Sex on the beachSh
3201010000000000001010Cuba libreir
9611000000000011Bramblele
24110000001100000000Mary Pickfordy␣
91001100100TuxedoTe
16810101000000101010000Cosmopolitanmpl
528100001000000001000010000000Suffering bastarde␣
31111111111100000000Black RussianBlack

Als we alle geselecteerde karakters achter elkaar zetten, dan krijgen we de naam van de verborgen cocktail: Shirley Temple Black.

Opgave

Een drankkaart is een tekstbestand met UTF-82 tekencodering dat de prijslijst van een aantal cocktails bevat. Dit is bijvoorbeeld de drankkaart die correspondeert met de afbeelding uit de inleiding (cocktails.txt3):

Black Russian...............€31,88
Bramble.....................€96,51
Cosmopolitan...............€168,69
Cuba libre.................€320,44
Mary Pickford...............€24,56
Sex on the beach...........€257,09
Suffering bastard..........€528,86
Tuxedo.......................€9,68

Elke regel van het tekstbestand bevat de beschrijving van een cocktail. Die beschrijving begint met de naam van de cocktail, die nooit punten (.) bevat. Daarna volgen in de beschrijving nog één of meer punten (.), een euroteken () en de prijs van de cocktail. De prijs wordt altijd weergegeven met twee cijfers na de komma (,). Op een drankkaart staan nooit twee cocktails met dezelfde twee cijfers na de komma.

Jouw opdracht bestaat erin om de verborgen cocktail uit een drankkaart te extraheren. Hiervoor ga je als volgt te werk:

Voorbeeld

In onderstaande voorbeeldsessie gaan we ervan uit dat het tekstbestand cocktails.txt6 zich in de huidige directory bevindt.

>>> cocktail_uitlezen('Black Russian...............€31,88')
('Black Russian', 31, 88)
>>> cocktail_uitlezen('Cosmopolitan...............€168,69')
('Cosmopolitan', 168, 69)

>>> drankkaart_uitlezen('cocktails.txt7')
[('Sex on the beach', 257, 9), ('Cuba libre', 320, 44), ('Bramble', 96, 51), ('Mary Pickford', 24, 56), ('Tuxedo', 9, 68), ('Cosmopolitan', 168, 69), ('Suffering bastard', 528, 86), ('Black Russian', 31, 88)]

>>> masker('Black Russian', 31)
'1111100000000'
>>> masker('Cosmopolitan', 168)
'000101010000'

>>> selecteren('Black Russian', 31)
'Black'
>>> selecteren('Cosmopolitan', 168)
'mpl'

>>> extraheren('cocktails.txt8')
'Shirley Temple Black'

Epiloog

Shirley Jane Temple9 (23 april 1928 – 10 februari 2014) was een Amerikaans actrice en diplomate. Als meisje met goudblonde krullen en fonkelende ogen was ze een van de bekendste kindsterretjes uit de filmgeschiedenis. Tussen 1932 en 1949 was ze in meer dan vijftig Amerikaanse speelfilms te zien en ze is nog steeds de jongste winnaar ooit van een Academy Juvenile Award10. Als Shirley Temple Black bouwde ze als volwassene een carrière op als ambassadrice.

Shirley Temple
Shirley Temple in 1938.

Naar Shirley is een mocktail vernoemd: de Shirley Temple11. Deze niet-alcoholische cocktail wordt gemaakt met gemberbier, grenadine, en sinaasappelsap en versierd met een maraschinokers12. Hij wordt vaak gemaakt voor kinderen zodat die samen met volwassenen een cocktail kunnen drinken. Als er voor volwassenen nog donkere rum wordt aan toegevoegd dan staat de cocktail bekend als Sherley Temple Black13, als eerbetoon aan de familienaam die ze bij haar huwelijk aannam.