Een tijdzone is een gebied op Aarde waarbinnen overal dezelfde tijd gebruikt wordt. Tijdzones volgen doorgaans de grenzen van landen of deelgebieden binnen landen, omdat het voor handel en communicatie binnen die gebieden handig is om overal dezelfde tijd te gebruiken.
Voor tijdszones op het vasteland wordt de standaard tijd doorgaans uitgedrukt als een delta $$\Delta$$ ten opzichte van de Coordinated Universal Time1 (UTC), waarbij $$\Delta$$ meestal een geheel aantal uren uitdrukt (UTC-12 tot UTC+14). Er zijn echter een aantal tijdzones die een delta van 30 of 45 minuten hebben. Zo is bijvoorbeeld de Newfoundland Standard Time2 gelijk aan UTC-03.30, de Nepal Standard Time3 gelijk aan UTC+05.45 en de Indian Standard Time4 gelijk aan UTC+05.30.
Wereldwijd zijn er circa 70 landen die tijdens de zomermaanden overschakelen naar zomertijd (daylight saving time; DST). Het daglicht zou zo beter overeenkomen met de periode waarin de meeste mensen wakker zijn. De duur en periode van zomertijd kan per land verschillen. Ook die zomertijd wordt doorgaans uitgedrukt als een delta $$\Delta$$ ten opzichte van de Coordinated Universal Time5 (UTC).
Gegeven is een tekstbestand timezones.txt6 dat informatie bevat over de standaard- en zomertijden die wereldwijd gebruikt worden. Elke regel van het bestand omschrijft de tijden die gebruikt worden in een land of een deelgebied van een land. Deze omschrijving bestaat uit de volgende vier velden, die van elkaar worden gescheiden door puntkomma's (;): i) naam land, ii) naam deelgebied van land, iii) standaardtijd en iv) zomertijd. De laatste twee velden worden doorgaans uitgedrukt als een delta $$\Delta$$ ten opzichte van UTC (UTC±$$\Delta$$). Je mag ervan uitgaan dat de velden zelf geen puntkomma's bevatten.
Gevraagd wordt om — gebruik makend van de teksteditors vi
of vim — een reeks commando's op te stellen die
achtereenvolgens de volgende opdrachten uitvoeren. Probeer voor elke
opdracht zo weinig mogelijk commando's te gebruiken en zorg er voor dat
elk van deze commando's bestaat uit zo weinig mogelijk tekens. De
commando's mogen geen programmeerbare filters (bv. awk)
gebruiken. Alle opdrachten moeten na elkaar uitgevoerd worden. De
opdrachten mogen de eerste regel (hoofding) niet wijzigen, tenzij dit
expliciet anders vermeld staat. Ter controle kan je gebruik maken van de
meegeleverde bestanden timezones.i.txt (ZIP7),
die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht
werd uitgevoerd.
In de tijden die relatief ten opzichte van UTC uitgedrukt worden, staan er vaak spaties tussen UTC en het plus of minteken van de delta. Zorg ervoor dat al deze spaties verwijderd worden. Zo moet
Country;geographical area;DST;UTC Afghanistan;;UTC +4.30;UTC +4.30 Albania;;UTC +2;UTC +1 Algeria;;UTC+1;UTC +1 American Samoa;;UTC -11;UTC -11 …
bijvoorbeeld omgezet worden naar (timezones.1.txt8)
Country;geographical area;DST;UTC Afghanistan;;UTC+4.30;UTC+4.30 Albania;;UTC+2;UTC+1 Algeria;;UTC+1;UTC+1 American Samoa;;UTC-11;UTC-11 …
Zorg ervoor dat in de tijden die relatief ten opzichte van UTC uitgedrukt worden, het deel van de delta dat de uren uitdrukt altijd met twee cijfers geschreven wordt door vooraan eventueel een voorloopnul toe te voegen. We krijgen dan (timezones.2.txt9)
Country;geographical area;DST;UTC Afghanistan;;UTC+04.30;UTC+04.30 Albania;;UTC+02;UTC+01 Algeria;;UTC+01;UTC+01 American Samoa;;UTC-11;UTC-11 …
Verwijder alle regels waarvan het laatste veld niet begint met UTC. Dit levert het resultaat op dat je kan terugvinden in timezones.3.txt10.
Voeg achteraan elke regel een nieuwe kolom toe die yes bevat als het gebied een zomertijd (derde kolom) gebruikt die verschilt van de standaard tijd (derde kolom), en no als dat niet het geval is. Zorg dat de eerste regel niet aangepast wordt. We krijgen dan (timezones.4.txt11)
Country;geographical area;DST;UTC;yes Afghanistan;;UTC+04.30;UTC+04.30;no Albania;;UTC+02;UTC+01;yes Algeria;;UTC+01;UTC+01;no American Samoa;;UTC-11;UTC-11;no …
Zet het volledige bestand om naar CSV formaat (comma separated values). Dat doe je door alle puntkomma's te vervangen door komma's en alle velden die zelf komma's bevatten in te sluiten tussen dubbele aanhalingstekens. We krijgen dan (timezones.5.txt12)
Country,geographical area,DST,UTC,yes Afghanistan,,UTC+04.30,UTC+04.30,no Albania,,UTC+02,UTC+01,yes Algeria,,UTC+01,UTC+01,no American Samoa,,UTC-11,UTC-11,no …
Volg aandachtig onderstaande richtlijnen bij het indienen van je oplossing:
Plaats je commando's voor de vijf delen van deze vraag onder de titels in het indienvenster.
Maak geen aanpassingen aan de regels die al in het venster staan. Deze worden immers gebruikt om de ingediende oplossing op te splitsen in de verschillende deelantwoorden. Op de feedbackpagina kan je controleren of de opsplitsing gelukt is.
Klik hier om een voorbeeld te vinden van een (foutieve13) inzending.