James Bond geeft nooit echt uitleg waarom hij zijn Martini's graag shaken, not stirred (geschud, niet geroerd) drinkt. In 1999 gingen biochemici van de University of Western Ontario (Canada) dan maar zelf op zoek naar mogelijke verklaringen.

shaken, not stirred

Ze ontdekten dat geschudde Martini's sterkere antioxiderende eigenschappen hebben dan geroerde Martini's — dit helpt Bond bij het mijden van hart- en vaatziekten, hartaanvallen en staar. In het artikel dat ze publiceerden in het British Medical Journal trokken ze het volgende besluit:

007's profound state of health may be due, at least in part, to compliant bartenders

Opgave

Alle chemische elementen hebben naast een naam ook een korte symbolische voorstelling. Beide starten met een hoofdletter, gevolgd door nul of meer kleine letters. Namen van chemische elementen hebben minstens drie letters, terwijl symbolen soms maar uit één enkele (hoofd)letter bestaan.

Om komaf te maken met het feit dat er niet altijd een direct verband bestaat tussen de naam en het symbool van een chemisch element, hebben we besloten om op een systematische manier aan elk element een nieuw symbool toe te kennen. We gebruiken hiervoor de volgende procedure:

  1. overloop de namen van de chemische elementen in een bepaalde volgorde

  2. bepaal voor elke naam op de volgende manier het corresponderende symbool

    1. lijst alle paren opeenvolgende letters uit de naam van het element op, in de volgorde waarin ze in de naam voorkomen; van elk letterpaar moet de eerste letter omgezet worden naar een hoofdletter en de tweede naar een kleine letter

    2. selecteer het eerste letterpaar uit deze reeks dat nog niet eerder aan een element werd toegekend

    3. ken het geselecteerde letterpaar als symbool toe aan het element

We noemen dit de shaken-not-stirred procedure. Gevraagd wordt:

Voorbeeld

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

>>> paren('Neon')
('Ne', 'Eo', 'On')
>>> paren('Rutherfordium')
('Ru', 'Ut', 'Th', 'He', 'Er', 'Rf', 'Fo', 'Or', 'Rd', 'Di', 'Iu', 'Um')

>>> eerste(['Ne', 'Eo', 'On'], {'Ne', 'On'})
'Eo'
>>> eerste(('Ne', 'Eo', 'On'), {'Ne', 'On', 'Eo'})

>>> symbool = toekennen('elementen.txt', onmogelijk='???')
>>> symbool['Neon']
'Ne'
>>> symbool['Rubidium']
'Ru'
>>> symbool['Ruthenium']
'Ut'
>>> symbool['Rutherfordium']
'Rf'
>>> symbool['Tin']
'???'

Bronnen