De doemdagklok1 (Engels: Doomsday Clock2) is een symbolische klok die sinds 1947 aan de Universiteit van Chicago wordt bijgehouden door de Bulletin of the Atomic Scientists3. De klok geeft aan hoe dicht de mensheid bij een kernoorlog staat. Dit wordt voorgesteld als een aantal minuten voor middernacht, waarbij middernacht symbool staat voor het uitbreken van een kernoorlog. Het aantal minuten voor middernacht is hierbij dus een maat voor nucleaire dreiging.
Telkens wanneer gebeurtenissen op het wereldtoneel de dreiging versterken of verzwakken, wordt de klok bijgewerkt. In 1953 werd de klok bijvoorbeeld op twee voor twaalf gezet toen de VS en de Sovjet-Unie allebei testen begonnen uit te voeren met waterstofbommen4. In 1991 werd de klok op zeventien minuten voor twaalf gezet, ten gevolge van het toenmalige akkoord tussen de VS en de Sovjet-Unie over het terugdrijven van hun kernwapenarcenaal. Onderstaande grafiek toont het verloop van de klok doorheen de recente geschiedenis:
De doemdagklok is ook een goeie barometer om aan te geven hoe positief men de toekomst inzag op bepaalde momenten in het recente verleden, zoals blijkt uit de hit In the Year 2525 (Exordium et Terminus)5 die het Amerikaanse pop-rock duo Zager & Evans uitbracht in 1969.
We stellen het verloop van de doemdagklok voor door een string van de vorm
1947 7,1949 3,1953 2,1960 7,1963 12,1968 7,1969 10,1972 12,1974 9,1980 7,1981 4,1983 3,1984 3
Hierbij worden een reeks klokaanpassingen opgelijst, die telkens van elkaar worden gescheiden door een komma. Elke aanpassing wordt beschreven door het jaartal waarin de klok werd bijgesteld, gevolgd door een spatie en het nieuwe aantal minuten voor middernacht waarop de klok werd ingesteld. De klokaanpassingen worden in chronologische volgorde opgelijst en je mag ervan uitgaan dat de doemsdagklok nooit tweemaal wordt bijgesteld in hetzelfde jaar.
Onderstaande figuur toont een grafische voorstelling van de stringvoorstelling die hierboven als voorbeeld werd gegeven. Als we tijdstippen voorstellen op een 24-uursklok, dan kun je uit de figuur makkelijk aflezen dat de doemdagklok bijvoorbeeld in 1950 ingesteld stond op 23:57, in 1965 op 23:48 en in 1974 op 23:51. We zullen altijd de nieuwe stand van de klok beschouwen in een jaar waarin de klok werd bijgesteld.
Het doel van deze opgave is om de dreiging te bepalen in een gegeven jaar, op basis van een gegeven verloop van de doemdagklok. Deze dreiging moet uitgedrukt worden als een tijdstip op een 24-uursklok. Gevraagd wordt:
Schrijf een functie klok waaraan een natuurlijk getal moet doorgegeven worden. Dit getal stelt een gegeven aantal minuten voor middernacht voor. De functie moet een string teruggeven die de weergave bevat van het corresponderende tijdstip op een 24-uursklok, in het formaat uu:mm. Hierbij moet dus gelden dat $$0 \leq \text{uu} < 24$$ en $$0 \leq \text{mm} < 60$$.
Schrijf een functie verloop waaraan de stringvoorstelling van het verloop van de doemdagklok moeten doorgegeven worden, in het formaat zoals aangegeven in de inleiding. De functie moet het verloop van de doemdagklok teruggeven als een tuple van tuples, waarbij elke aanpassing aan de klok wordt beschreven als een tuple met als eerste element het jaartal (als natuurlijk getal) waarin de aanpassing gebeurde, en als tweede element het tijdstip waarop de klok werd ingesteld (stringvoorstelling op een 24-uursklok, zoals gegenereerd door de functie klok).
Schrijf een functie dreiging waaraan twee argumenten moeten doorgegeven worden: een natuurlijk getal dat een jaartal voorstelt, en een tuple van tuples dat het het verloop van de doemdagklok voorstelt in het formaat zoals dat wordt weergegeven door de functie verloop. De functie moet het tijdstip teruggeven waarop de klok staat ingesteld in het gegeven jaartal, weergegeven op een 24-uursklok. Je mag ervan uitgaan dat het gegeven jaartal altijd binnen het interval ligt waarin het verloop van de doemdagklok wordt beschreven, inclusief de uiterste grenzen.
>>> klok(0)
'00:00'
>>> klok(7)
'23:53'
>>> klok(123)
'21:57'
>>> aanpassingen = '1947 7,1949 3,1953 2,1960 7,1963 12,1968 7,1969 10,1972 12,1974 9,1980 7,1981 4,1983 3,1984 3'
>>> doemdagklok = verloop(aanpassingen)
>>> doemdagklok
((1947, '23:53'), (1949, '23:57'), (1953, '23:58'), (1960, '23:53'), (1963, '23:48'), (1968, '23:53'), (1969, '23:50'), (1972, '23:48'), (1974, '23:51'), (1980, '23:53'), (1981, '23:56'), (1983, '23:57'), (1984, '23:57'))
>>> dreiging(1974, doemdagklok)
'23:51'
>>> dreiging(1950, doemdagklok)
'23:57'
>>> dreiging(1965, doemdagklok)
'23:48'
Op 26 januari 2017 werd de doemdagklok een halve minuut dichter naar middernacht gedraaid, tot tweeënhalf voor middernacht om precies te zijn. Dit was de allereerste keer dat de klok met een halve minuut werd verzet. Daar waren verschillende redenen voor: Noord-Korea dat nog steeds kernwapens test, een wereldwijde opkomst van nationalisme en de verkiezing van Donald Trump als president van de VS. Wel zag de klimaatverandering er iets minder grimmig uit. Door de maatregelen die vele landen door het klimaatakkoord in Parijs genomen hebben, is de wereldwijde CO2-uitstoot praktisch gelijk gebleven met voorgaande jaren. Om echt het verschil te maken zal de globale uitstoot echter richting nul moeten gaan, niet gelijk blijven.