Breaking Bad1 is een Amerikaanse televisiereeks over een chemieleraar die drugsdealer wordt om zijn financiële problemen op te lossen. Maar van het een komt het ander en zo belandt hij helemaal in de criminaliteit.

Breaking Bad Logo
Logo van de televisiereeks Breaking Bad.

Wie deze reeks gezien heeft, is het misschien ook opgevallen dat tijdens de begin- en eindgeneriek sommige letters in de namen van acteurs benadrukt worden aan de hand van een groene kleur. Deze letters verwijzen naar chemische elementen uit de tabel van Mendeljev. In het onderstaand voorbeeld komt de letter S overeen met het chemische element zwavel en staat Th symbool voor thorium.

Breaking Bad Credits
De aftiteling toont de symbolen van chemische elementen uit de periodieke tabel in het groen.

Ook in het logo van de reeks zijn de twee eerste letters van elk woord uit de titel omkaderd. Br staat voor broom en Ba verwijst naar barium.

Opgave

  1. Schrijf een functie woordNadruk waaraan exact twee argumenten moeten doorgegeven worden. Het eerste argument is string die één enkel woord voorstelt. Het tweede argument is een lijst van strings. Deze lijst kan een lijst met de symbolische namen van de chemische elementen zijn, maar kan ook andere strings bevatten. De functie moet als resultaat een string teruggeven, die het originele woord bevat waarin sommige letters tussen vierkante haakjes geplaatst werden om ze te benadrukken. Deze letters komen overeen met het "meest linkse en langste" voorkomen van een symbool uit de symbolenlijst. Met "meest linkse en langste" bedoelen we dat de positie waar het openend vierkant haakje ([) staat zo klein mogelijk moet zijn. Als vanaf deze positie in het woord meerdere symbolen starten, dan wordt deze met de langste lengte gekozen. Als er in het woord geen symbolen uit de symbolenlijst voorkomen dan wordt het woord zonder haakjes teruggegeven door de functie. Binnen de string die wordt teruggegeven staat er dus hoogstens één paar vierkante haakjes. De vergelijking tussen symbolen uit de symbolenlijst en letters uit het woord moet geen rekening houden met het verschil tussen hoofdletters en kleine leterrs, maar het gebruik van hoofdletters en kleine letters in het woord dat aan de functie werd doorgegeven, moet behouden blijven in het resultaat dat door de functie wordt teruggegeven.

    woordNadruk(woord, symbolen)

  2. Gebruik de functie woordNadruk om een functie zinNadruk te schrijven. Aan deze functie moet als eerste argument een string doorgegeven worden, die een zin voorstelt. De functie moet een string teruggeven die deze zin bevat, maar waarin voor elk woord het "meest linkse en langste" voorkomen van een symbool tussen vierkante haakjes staat. Standaard worden de symbolen uit het periodieke systeem gebruikt (in onderstaand voorbeeld wordt deze lijst van symbolen toegekend aan de variabele chemischeSymbolen). Indien er echter een lijst van strings als tweede argument aan de functie doorgegeven wordt, dan vormen deze strings de symbolen die tussen vierkante haakjes moeten geplaatst worden. Je mag veronderstellen dat de woorden in de zin telkens van elkaar gescheiden worden door één enkele spatie.

    zinNadruk(zin[, symbolen])

Voorbeeld

>>> chemischeSymbolen = [
...     'Ac', 'Ag', 'Al', 'Am', 'Ar', 'As', 'At', 'Au', 'B', 'Ba', 'Be', 'Bh',
...     'Bi', 'Bk', 'Br', 'C', 'Ca', 'Cd', 'Ce', 'Cf', 'Cl', 'Cm', 'Cn', 'Co',
...     'Cr', 'Cs', 'Cu', 'Db', 'Ds', 'Dy', 'Er', 'Es', 'Eu', 'F', 'Fe', 'Fl',
...     'Fm', 'Fr', 'Ga', 'Gd', 'Ge', 'H', 'He', 'Hf', 'Hg', 'Ho', 'Hs', 'I',
...     'In', 'Ir', 'K', 'Kr', 'La', 'Li', 'Lr', 'Lu', 'Lv', 'Md', 'Mg', 'Mn',
...     'Mo', 'Mt', 'N', 'Na', 'Nb', 'Nd', 'Ne', 'Ni', 'No', 'Np', 'O', 'Os',
...     'P', 'Pa', 'Pb', 'Pd', 'Pm', 'Po', 'Pr', 'Pt', 'Pu', 'Ra', 'Rb', 'Re',
...     'Rf', 'Rg', 'Rh', 'Rn', 'Ru', 'S', 'Sb', 'Sc', 'Se', 'Sg', 'Si', 'Sm',
...     'Sn', 'Sr', 'Ta', 'Tb', 'Tc', 'Te', 'Th', 'Ti', 'Tl', 'Tm', 'U', 'Uuo',
...     'Uup', 'Uus', 'Uut', 'V', 'W', 'Xe', 'Y', 'Yb', 'Zn', 'Zr'
... ]

>>> woordNadruk('Graham', chemischeSymbolen)
'G[ra]ham'
>>> woordNadruk('Python', ['Th', 'T', 'hon', 'on'])
'Py[th]on'

>>> zinNadruk("Monty Python's Life of Brian.")
"[Mo]nty [P]ython's [Li]fe [o]f [Br]ian."
>>> zinNadruk("Monty Python's Life of Brian.", ['Th', 'T', 'hon', 'on'])
"M[on]ty Py[th]on's Life of Brian."