Toen de Amerikaanse studente Jessica Lee in 2014 haar diploma secundair onderwijs behaalde, verliet ze de school met meer street credibility dan gelijk welke andere student die al eens een chemiegrapje heeft uitgehaald op school. De reden daarvoor was de quote die ze liet optekenen bij haar foto in het jaarboek. Terwijl haar medestudenten vermoedelijk quotes gebruikten van Ferris Bueller, Ralph Waldo Emerson of Mahatma Ghandi, haalde zij het advies dat ze meegaf aan haar klasgenoten uit het nummer Get Money1 van Christopher George Lattore Wallace — bij het brede publiek beter bekend als The Notorious B.I.G.. Wie het periodiek systeem der elementen niet direct bij de hand heeft, vindt hieronder alvast de vertaling van die quote.
Daar waar niet bekend is of Lee eventueel gevolgen heeft moeten dragen van haar briljante grap, is de Amerikaanse studente Paris Gray voor een gelijkaardige grap in het oog van de storm terechtgekomen. Toen zij en haar klasgenoten zich klaarstoomden om de volwassenheid in te duiken — en de hoogtes en laagtes van het post-secundaire schoolleven — liet ze de volgende motivatie voor haar klasgenoten in het jaarboek optekenen.
Van zodra de schooldirectie haar boodschap had ontcijferd (zonder natuurlijk de link te leggen met de hitsingle Back That Azz Up2 van de band Juvenile), werd ze geschorst voor het bijwonen van de laatste lessen en werd het haar verboden om zich in te schrijven voor de hogere opleidingen die door de school werden aangeboden. Toen de school haar ook ontzegde om de diploma-uitreiking te mogen bijwonen, was het hek helemaal van de dam. Pas nadat Gray en haar moeder hadden samengezeten met de schooldirectie, werd besloten dat ze toch mocht deelnemen aan de ceremonie, en zelfs de speech mocht geven die toekwam aan de beste studente van de school.
In het periodiek systeem der elementen krijgt elk scheikundig element een naam en een symbool toegekend. Beide worden gevormd door een hoofdletter, gevolgd door nul of meer kleine letters. Het symbool bestaat maximaal uit drie letters. Alle symbolen en namen zijn uniek. Gevraagd wordt:
Schrijf een functie mendelejev waaraan de locatie van een tekstbestand (str) moet doorgegeven worden. Elke regel van dit bestand moet het symbool van een scheikundig element bevatten, gevolgd door een tab ('\t') en de naam van het element. De functie moet een dictionary (dict) teruggeven die alle chemische symbolen (str) uit het bestand afbeeldt op de corresponderende naam van het element (str).
Schrijf een functie symbolen waaraan een string (str) moet doorgegeven worden die enkel bestaat uit hoofdletters en kleine letters, en waarvan de eerste letter een hoofdletter is. De functie moet een lijst (list) teruggeven met alle opeenvolgende deelstrings (str) van de gegeven string die bestaan uit een hoofdletter gevolgd door alle kleine letters die er onmiddellijk op volgen. Deze functie kan dus gebruikt worden om een string die bestaat uit een opeenvolging van chemische symbolen op te splitsen in een lijst van symbolen.
Schrijf een functie codeer waaraan twee argumenten moeten doorgegeven worden: i) een string (str) die bestaat uit een opeenvolging van chemische symbolen, en ii) een dictionary (dict) die chemische symbolen (str) afbeeldt op de namen van de elementen (str). De functie moet elk chemisch symbool uit de gegeven string omzetten naar de corresponderende naam van het element (op basis van de afbeelding die bepaald wordt door de gegeven dictionary), en een string (str) teruggeven die de opeenvolgende namen bevat die van elkaar gescheiden worden door één enkele spatie. Als de gegeven string een chemisch symbool bevat dat niet als sleutel voorkomt in de gegeven dictionary, dan moet de functie een AssertionError opwerpen met de boodschap onbekend symbool.
Schrijf een functie decodeer waaraan twee argumenten moeten doorgegeven worden: i) een string (str) die bestaat uit een aantal namen van chemische elementen die telkens van elkaar gescheiden worden door één enkele spatie, en ii) een dictionary (dict) die chemische symbolen (str) afbeeldt op de namen van de elementen (str). De functie moet elke naam in de gegeven string omzetten naar het corresponderende symbool (conform de afbeelding die bepaald wordt door de gegeven dictionary), en een string (str) teruggeven die bestaat uit de opeenvolgende chemische symbolen (zonder scheidingsteken). Als de gegeven string de naam van een chemisch element bevat dat niet kan teruggevonden worden in de gegeven dictionary, dan moet de functie een AssertionError opwerpen met de boodschap onbekende naam.
Bij onderstaande voorbeeldsessie gaan we ervan uit dat het tekstbestand chemische_elementen.txt3 zich in de huidige directory bevindt.
>>> tabel = mendelejev('chemische_elementen.txt4')
>>> tabel['I']
'Jood'
>>> tabel['K']
'Kalium'
>>> tabel['Be']
'Beryllium'
>>> symbolen('IKBeNHeTbEu')
['I', 'K', 'Be', 'N', 'He', 'Tb', 'Eu']
>>> symbolen('FIReISFUN')
['F', 'I', 'Re', 'I', 'S', 'F', 'U', 'N']
>>> symbolen('IPLaYWIThDyNAmITe')
['I', 'P', 'La', 'Y', 'W', 'I', 'Th', 'Dy', 'N', 'Am', 'I', 'Te']
>>> codeer('IKBeNHeTbEu', tabel)
'Jood Kalium Beryllium Stikstof Helium Terbium Europium'
>>> codeer('FIReISFUN', tabel)
'Fluor Jood Renium Jood Zwavel Fluor Uraan Stikstof'
>>> codeer('IPLaYWIThDyNAmITe', tabel)
'Jood Fosfor Lanthanium Yttrium Wolfraam Jood Thorium Dysprosium Stikstof Americium Jood Telluur'
>>> codeer('HeLiUm', tabel)
Traceback (most recent call last):
AssertionError: onbekend symbool
>>> decodeer('Jood Kalium Beryllium Stikstof Helium Terbium Europium', tabel)
'IKBeNHeTbEu'
>>> decodeer('Fluor Jood Renium Jood Zwavel Fluor Uraan Stikstof', tabel)
'FIReISFUN'
>>> decodeer('Jood Fosfor Lanthanium Yttrium Wolfraam Jood Thorium Dysprosium Stikstof Americium Jood Telluur', tabel)
'IPLaYWIThDyNAmITe'
>>> decodeer('Mithril Zuurstof Stikstof Titaan Fosfor Yttrium Thorium Zuurstof Stikstof', tabel)
Traceback (most recent call last):
AssertionError: onbekende naam
Studenten van de UGent mogen op hun beide oren slapen. De universiteit nam de volgende tweet van één van haar studenten zelfs over in haar communitymagazine Durf Denken.
Wist je dat er 12 chemische elementen zijn waarvan de (Engelse) naam kan samengesteld worden uit de symbolische voorstelling van chemische elementen?
ArSeNiC |
AsTaTiNe |
BiSmUTh |
CArBON |
CoPPEr |
IrON |
KrYPtON |
NeON |
PHOsPHORuS |
SiLiCoN |
TiN |
XeNoN |