Volgens het gangbare atoommodel1 bestaat een atoom uit een kern met een omringende wolk van elektronen.

Een chemisch element heeft een atoomkern die bestaat uit een vast aantal protonen en een variabel aantal neutronen. Het aantal protonen bepaalt het atoomnummer van het element en zijn chemische eigenschappen. Het aantal neutronen bepaalt onder meer de stabiliteit van de kern en — samen met het aantal protonen — de atoommassa. Elk element heeft een unieke naam die bestaat uit een hoofdletter gevolgd door één of meer kleine letters (bv. Tungsten, Lead, Mercury, Helium) en een uniek symbool dat bestaat uit een hoofdletter gevolgd door nul of meer kleine letters (bv. W, Pb, Hg, He).
Isotopen zijn atomen van hetzelfde chemisch element — dus met hetzelfde aantal protonen, maar met onderling verschillende aantallen neutronen in de atoomkern. Een isotoop wordt genoteerd als het massagetal (het aantal protonen en neutronen in de kern) in superscript links boven het symbool voor het chemisch element (bijvoorbeeld $${}^{3}\mathrm{He}$$, $${}^{4}\mathrm{He}$$, $${}^{12}\mathrm{C}$$, $${}^{14}\mathrm{C}$$, $${}^{235}\mathrm{U}$$, $${}^{239}\mathrm{U}$$).
Welke bekende chemicus zit verstopt in deze reeks isotopen? \[ {}^{281}\mathrm{Mt}\,{}^{203}\mathrm{Tl}\,{}^{202}\mathrm{Hg}\,{}^{249}\mathrm{Es}\,{}^{291}\mathrm{Fl}\,{}^{247}\mathrm{Cm}\,{}^{167}\mathrm{Er}\,{}^{93}\mathrm{Zr}\,{}^{251}\mathrm{Cf}\,{}^{146}\mathrm{Nd} \]
Antwoord: Marie Curie
Voor elke isotoop $${}^{n}\mathrm{s}$$ met massagetal $$n$$ en element met symbool $$s$$ nemen we steeds de $$n$$-de letter uit de naam van het element (waarbij we na het einde van de naam verdergaan met tellen vanaf het begin). Zo M is de 281e letter van Meitnerium (Mt), is a de 203e letter van Thallium (Tl), en is r de 202e letter van Mercury (Hg). Als we de letters voor alle isotopen achter elkaar zetten, dan krijgen we MarieCurie.
Een reeks isotopen waarin een bekende chemicus verstopt zit, stellen we voor als een string (str) die bestaat uit de alternerende opeenvolging van massagetallen (reeks cijfers) en symbolen (reeks letters) uit de notaties van de isotopen. Zo wordt de reeks isotopen \[ {}^{281}\mathrm{Mt}\,{}^{203}\mathrm{Tl}\,{}^{202}\mathrm{Hg}\,{}^{249}\mathrm{Es}\,{}^{291}\mathrm{Fl}\,{}^{247}\mathrm{Cm}\,{}^{167}\mathrm{Er}\,{}^{93}\mathrm{Zr}\,{}^{251}\mathrm{Cf}\,{}^{146}\mathrm{Nd} \] waarin Marie Curie verstopt zit, bijvoorbeeld voorgesteld als de string
281Mt203Tl202Hg249Es291Fl247Cm167Er93Zr251Cf146Nd
Om de chemicus te vinden die in een reeks isotopen verstopt zit, hebben we de namen van de chemische elementen nodig waarvan de symbolen voorkomen in de reeks isotopen. Daarvoor gebruiken we een tekstbestand waarvan elke regel een aantal eigenschappen beschrijft van één chemisch element, met informatievelden die van elkaar gescheiden worden door een scheidingsteken dat verder niet in de informatievelden voorkomt. Het bestand bevat minstens informatie over elementen met symbolen die voorkomen in de reeks isotopen, en bevat minstens informatievelden met de namen en de symbolen van de elementen. De volgorde van de informatievelden ligt niet vast. De eerste regel van het bestand kan eventueel bestaan uit een hoofding met beschrijvingen van de informatievelden.
Dit is bijvoorbeeld een deel van het bestand (elementen.txt2) met informatie over alle gekende chemische elementen. Het bestand bevat een hoofding, en elke regel bestaat uit 15 informatievelden die van elkaar gescheiden worden door tabs. Het tweede veld bevat het symbool voor de elementen, en het derde veld hun naam.
Atomic number Symbol Name Group Period Block Atomic weight (Da) Density (g/cm3) Melting point (K) Boiling point (K) Specific heat capacity (J/g · K) Electro-negativity Abundance in Earth's crust (mg/kg) Origin Phase
…
40 Zr Zirconium 4 5 d-block 91.224 6.52 2128 4682 0.278 1.33 165 primordial solid
…
60 Nd Neodymium f-block groups 6 f-block 144.24 7.01 1297 3347 0.19 1.14 41.5 primordial solid
…
68 Er Erbium f-block groups 6 f-block 167.26 9.066 1802 3141 0.168 1.24 3.5 primordial solid
…
80 Hg Mercury 12 6 d-block 200.59 13.534 234.43 629.88 0.14 2.00 0.085 primordial liquid
81 Tl Thallium 13 6 p-block 204.38 11.85 577 1746 0.129 1.62 0.85 primordial solid
…
96 Cm Curium f-block groups 7 f-block [247] 13.51 1613 3383 – 1.28 – synthetic solid
97 Bk Berkelium f-block groups 7 f-block [247] 14.78 1259 2900 – 1.3 – synthetic solid
98 Cf Californium f-block groups 7 f-block [251] 15.1 1173 (1743) – 1.3 – synthetic solid
99 Es Einsteinium f-block groups 7 f-block [252] 8.84 1133 (1269) – 1.3 – synthetic solid
…
109 Mt Meitnerium 9 7 d-block [278] (27–28) – – – – – synthetic unknown phase
…
114 Fl Flerovium 14 7 p-block [289] (11.4±0.3) (284±50) – – – – synthetic unknown phase
…
Gevraagd wordt:
Schrijf een functie selecteer_letter waaraan twee argumenten moeten doorgegeven worden: i) een getal $$n \in \mathbb{N}_0$$ (int) en ii) een string $$s$$ (str) die enkel bestaat uit letters (hoofdletters en kleine letters). De functie moet de $$n$$-de letter (str) van string $$s$$ teruggeven. Daarbij beginnen we bij de eerste letter van string $$s$$ te tellen vanaf 1 en gaan we na het einde van string $$s$$ verder met tellen vanaf het begin.
Schrijf een functie isotopen waaraan de stringvoorstelling (str) van een reeks isotopen moet doorgegeven worden. De functie moet een lijst (list) teruggeven, met voor elke isotoop uit de reeks een tuple (tuple) met het massagetal (int) en het symbool (str) van de isotoop.
Schrijf een functie lees_elementen waaraan drie argumenten moeten doorgegeven worden: i) de locatie (str) van een tekstbestand met eigenschappen van chemische elementen, ii) het volgnummer (int) van het informatieveld met de symbolen voor de elementen en iii) het volgnummer (int) van het informatieveld met de namen van de elementen. Daarbij worden de informatievelden van links naar rechts genummerd vanaf 1. De functie heeft ook nog een optionele parameter scheidingsteken waaraan het scheidingsteken (str) van de informatievelden kan doorgegeven worden. Als er niet expliciet een scheidingsteken wordt doorgegeven, dan worden de informatievelden van elkaar gescheiden door tabs. De functie heeft ook nog een optionele parameter hoofding waaraan een Booleaanse waarde (bool; standaardwaarde: True) kan doorgegeven worden die aangeeft of de eerste regel van het bestand een hoofding is. De functie moet een dictionary (dict) teruggeven, die het symbool (str) voor elk element uit het bestand afbeeldt op de naam (str) van het element.
Schrijf een functie chemicus waaraan twee argumenten moeten doorgegeven worden: i) de stringvoorstelling (str) van een reeks isotopen waarin een chemicus verborgen zit en ii) een dictionary (dict) die symbolen (str) van chemische elementen afbeeldt op de namen (str) van die elementen. Daarbij mag je ervan uitgaan dat elk symbool van een isotoop uit de reeks ook een sleutel is van de dictionary, zonder dat dit expliciet moet gecontroleerd worden. De functie moet de chemicus (str) teruggeven die verborgen zit in de gegeven reeks isotopen.
In deze interactieve sessie gaan we ervan uit dat de huidige directory het tekstbestand elementen.txt3 bevat.
>>> selecteer_letter(281, 'Meitnerium')
'M'
>>> selecteer_letter(203, 'Thallium')
'a'
>>> selecteer_letter(202, 'Mercury')
'r'
>>> isotopen('281Mt203Tl202Hg249Es291Fl247Cm167Er93Zr251Cf146Nd')
[(281, 'Mt'), (203, 'Tl'), (202, 'Hg'), (249, 'Es'), (291, 'Fl'), (247, 'Cm'), (167, 'Er'), (93, 'Zr'), (251, 'Cf'), (146, 'Nd')]
>>> isotopen('121Sb232Ac107Ag139Nd137Pr163Ho225Ac261Md258No290Og20Mg115Cd238Am36Cl')
[(121, 'Sb'), (232, 'Ac'), (107, 'Ag'), (139, 'Nd'), (137, 'Pr'), (163, 'Ho'), (225, 'Ac'), (261, 'Md'), (258, 'No'), (290, 'Og'), (20, 'Mg'), (115, 'Cd'), (238, 'Am'), (36, 'Cl')]
>>> symbool2naam = lees_elementen('elementen.txt4', 2, 3)
>>> symbool2naam['Mt']
'Meitnerium'
>>> symbool2naam['Tl']
'Thallium'
>>> symbool2naam['Hg']
'Mercury'
>>> chemicus('281Mt203Tl202Hg249Es291Fl247Cm167Er93Zr251Cf146Nd', symbool2naam)
'MarieCurie'
>>> chemicus('121Sb232Ac107Ag139Nd137Pr163Ho225Ac261Md258No290Og20Mg115Cd238Am36Cl', symbool2naam)
'AmedeoAvogadro'
In 1994 besloot de 17-jarige padvinder David Hahn5 om een kernreactor te bouwen in het schuurtje in zijn achtertuin in Michigan (VSA). Hij verzamelde radioactief materiaal van rookmelders, campinglantaarns, klokken en vizieren in de hoop ze in een uitgehold blok lood om te zetten in splijtbare isotopen.
Hij had zich bij zijn huiswerk moeten houden. Het experiment begon giftige hoeveelheden straling af te geven. Hij was net begonnen met een poging om alles te ontmantelen toen de politie hem vond en de FBI en de U.S. Nuclear Regulatory Commission6 erbij haalde. Tot grote ontsteltenis van zijn moeder werd haar tuin uitgeroepen tot Superfund7 locatie waar gevaarlijke stoffen moeten opgeruimd worden. De schuur werd integraal verplaatst naar Utah en begraven als laag radioactief afval.
Om op een positieve noot te eindigen: Hahn heeft het tot Eagle Scout8 geschopt.