De Mount Everest (ook bekend als Qomolungma, Qomolangma of Sagarmatha Chomolungma) is een berg in de Himalaya, op de grens van Nepal en China. De Mount Everest steekt 8848 meter (29029 voet) boven zeeniveau uit. Deze absolute hoogte is de meest geaccepteerde manier om hoogtes van bergen te meten en in die zin is de Mount Everest de hoogste berg op Aarde.

prominentie
De verticale pijlen geven de topografische promintentie aan van drie bergtoppen op een eiland. De gestreepte horizontale lijnen geven de laagste contouren aan die de hogere bergtoppen niet omcirkelen. De gebogen pijlen wijzen van een bergtop naar diens ouder.

De (topografische) promintentie of relatieve hoogte is een alternatieve definitie voor de onafhankelijke hoogte van een bergtop. De prominentie van een berg is het hoogteverschil tussen de top en de laagste hoogtelijn die de top helemaal omgeeft, maar die geen hogere top omgeeft, zoals je kan zien op bovenstaande figuur. Wanneer de prominentie van een top erg klein is, wordt deze top vaak niet gerekend als een echte berg. Dit geldt vaak voor zijtoppen van hoge bergen, bijvoorbeeld de zuidtop van de Mount Everest die geen echte berg is, ondanks de grote hoogte (8749 m, prominentie 10 m).

Opgave

Gegeven is een tekstbestand mountains.txt1 dat een lijst met de hoogste bergen op Aarde bevat. Elke regel van het bestand bevat informatie over één berg. Deze informatie bestaat uit de volgende elf velden, die van elkaar worden gescheiden door verticale strepen (|): i) volgnummer, ii) naam of namen, iii) absolute hoogte (in meter), iv) absolute hoogte (in voet), v) relatieve hoogte (in meter), vi) bergketen, vii) coördinaten, viii) ouder, ix) jaartal van eerste beklimming, x) aantal beklimmingen en xi) land of landen. De eerste regel van een bestand is een hoofding, waarvan de kopteksten ook telkens van elkaar gescheiden worden door verticale strepen.

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. Alle opdrachten moeten na elkaar uitgevoerd worden. Geen enkele van de commando's mag de hoofding van het bestand wijzigen, tenzij expliciet anders vermeld. Ter controle kan je gebruik maken van de meegeleverde bestanden mountains.i.txt (ZIP2), die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.

  1. Indien het veld met het jaartal van de eerste beklimming leeg is, dan moet het ingevuld worden met de waarde unclimbed. Zo moet

    Rank|Mountain|Height (m)|Height (ft)|Prominence (m)|Range|Coordinates|Parent mountain|First ascent|Ascents (failed attempts)|Country
    1|Mount Everest/Sagarmatha/Chomolungma|8,848|29,029|8,848|Mahalangur Himalaya|27°59'17"N 86°55'31"E|none|1953|>>145 (121)|Nepal/China
    2|K2/Qogir/Godwin Austen|8,611|28,251|4,020|Baltoro Karakoram|35°52'53"N 76°30'48"E|Mount Everest|1954|45 (44)|Pakistan/China
    ...
    40|Gangkhar Puensum|7,570|24,836|2,995|Kula Kangri Himalaya|28°02'50"N 90°27'19"E|Kangchenjunga||0 (3)|Bhutan/China
    ...
    93|Labuche Kang III/East|7,250|23,786|570|Labuche Himalaya|28°18'05"N 86°23'02"E|Labuche Kang||0 (0)|China
    ...

    bijvoorbeeld omgezet worden naar (mountains.1.txt3)

    Rank|Mountain|Height (m)|Height (ft)|Prominence (m)|Range|Coordinates|Parent mountain|First ascent|Ascents (failed attempts)|Country
    1|Mount Everest/Sagarmatha/Chomolungma|8,848|29,029|8,848|Mahalangur Himalaya|27°59'17"N 86°55'31"E|none|1953|>>145 (121)|Nepal/China
    2|K2/Qogir/Godwin Austen|8,611|28,251|4,020|Baltoro Karakoram|35°52'53"N 76°30'48"E|Mount Everest|1954|45 (44)|Pakistan/China
    ...
    40|Gangkhar Puensum|7,570|24,836|2,995|Kula Kangri Himalaya|28°02'50"N 90°27'19"E|Kangchenjunga|unclimbed|0 (3)|Bhutan/China
    ...
    93|Labuche Kang III/East|7,250|23,786|570|Labuche Himalaya|28°18'05"N 86°23'02"E|Labuche Kang|unclimbed|0 (0)|China
    ...
  2. Het veld met het aantal beklimmingen eindigt optioneel op een spatie en een tekstfragment tussen ronde haken dat aangeeft hoeveel pogingen om de berg te beklimmen gefaald zijn. Je mag er van uitgaan dat er hoogstens één paar ronde haken voorkomt in het veld, en dat de haken altijd gebalanceerd zijn. Verplaats het aantal gefaalde beklimmingen (het optionele tekstfragment tussen ronde haken) naar een nieuw veld dat volgt op het veld met het aantal beklimmingen (spatie en tekst tussen ronde haken moeten uit het oorspronkelijke veld verwijderd worden). Voor bergen waarvoor het aantal beklimmingen niet vermeld wordt, moet ook een nieuw (leeg) veld op die positie aangemaakt worden. Ook de hoofding van het veld met het aantal beklimmingen moet over twee velden gesplitst worden, zoals aangegeven in onderstaand voorbeeld. We krijgen dan (mountains.2.txt4)

    Rank|Mountain|Height (m)|Height (ft)|Prominence (m)|Range|Coordinates|Parent mountain|First ascent|Ascents|failed attempts|Country
    1|Mount Everest/Sagarmatha/Chomolungma|8,848|29,029|8,848|Mahalangur Himalaya|27°59'17"N 86°55'31"E|none|1953|>>145|121|Nepal/China
    2|K2/Qogir/Godwin Austen|8,611|28,251|4,020|Baltoro Karakoram|35°52'53"N 76°30'48"E|Mount Everest|1954|45|44|Pakistan/China
    ...
    49|Muztagh Ata|7,509|24,636|2,698|Muztagata (Eastern Pamirs)|38°16'33"N 75°06'58"E|Kongur Tagh|1956|Many||China
    50|Ismoil Somoni Peak|7,495|24,590|3,402|Pamir (Academy of Sciences Range)|38°56'35"N 72°00'57"E|Muztagh Ata|1933|||Tajikistan
    ...
  3. De drie velden die de hoogte van de berg aangeven, bevatten natuurlijke getallen waarvan de groepen duizendtallen door komma's van elkaar gescheiden worden. Zorg ervoor dat die komma's verwijderd worden. Je mag er hierbij van uitgaan dat in het bestand enkel komma's voorkomen in deze drie velden. We krijgen dan (mountains.3.txt5)

    Rank|Mountain|Height (m)|Height (ft)|Prominence (m)|Range|Coordinates|Parent mountain|First ascent|Ascents|failed attempts|Country
    1|Mount Everest/Sagarmatha/Chomolungma|8848|29029|8848|Mahalangur Himalaya|27°59'17"N 86°55'31"E|none|1953|>>145|121|Nepal/China
    2|K2/Qogir/Godwin Austen|8611|28251|4020|Baltoro Karakoram|35°52'53"N 76°30'48"E|Mount Everest|1954|45|44|Pakistan/China
    3|Kangchenjunga|8586|28169|3922|Kangchenjunga Himalaya|27°42'12"N 88°08'51"E|Mount Everest|1955|38|24|Nepal/India
    4|Lhotse|8516|27940|610|Mahalangur Himalaya|27°57'42"N 86°55'59"E|Mount Everest|1956|26|26|Nepal/China
    5|Makalu|8485|27838|2378|Mahalangur Himalaya|27°53'23"N 87°05'20"E|Mount Everest|1955|45|52|Nepal/China
    ...
  4. Sorteer de lijst met bergen eerst numeriek van groot naar klein op relatieve hoogte (in meter) en in tweede instantie lexicografisch op naam van de berg. Zorg er evenwel voor dat na sorteren, het eerste veld terug een oplopende nummering vanaf 1 krijgt, ongeacht de oorspronkelijke volgnummers die voor het sorteren gebruikt werden. We krijgen dan (mountains.4.txt6)

    Rank|Mountain|Height (m)|Height (ft)|Prominence (m)|Range|Coordinates|Parent mountain|First ascent|Ascents|failed attempts|Country
    1|Mount Everest/Sagarmatha/Chomolungma|8848|29029|8848|Mahalangur Himalaya|27°59'17"N 86°55'31"E|none|1953|>>145|121|Nepal/China
    2|Nanga Parbat|8126|26660|4608|Nanga Parbat Himalaya|35°14'14"N 74°35'21"E|Dhaulagiri|1953|52|67|Pakistan
    3|Jengish Chokusu/Tömür/Pk Pobeda|7439|24406|4148|Tian Shan|42°02'05"N 80°07'47"E|Ismail Samani Peak|1956|||Kyrgyzstan/China
    4|Namcha Barwa|7782|25531|4106|Assam Himalaya|29°37'52"N 95°03'19"E|Kangchenjunga|1992|1|2|China
    5|K2/Qogir/Godwin Austen|8611|28251|4020|Baltoro Karakoram|35°52'53"N 76°30'48"E|Mount Everest|1954|45|44|Pakistan/China
    ...
  5. Plaats terug komma's tussen de groepen duizendtallen in de drie velden die de hoogte van de berg aangeven. We krijgen dan (mountains.5.txt7)

    Rank|Mountain|Height (m)|Height (ft)|Prominence (m)|Range|Coordinates|Parent mountain|First ascent|Ascents|failed attempts|Country
    1|Mount Everest/Sagarmatha/Chomolungma|8,848|29,029|8,848|Mahalangur Himalaya|27°59'17"N 86°55'31"E|none|1953|>>145|121|Nepal/China
    2|Nanga Parbat|8,126|26,660|4,608|Nanga Parbat Himalaya|35°14'14"N 74°35'21"E|Dhaulagiri|1953|52|67|Pakistan
    3|Jengish Chokusu/Tömür/Pk Pobeda|7,439|24,406|4,148|Tian Shan|42°02'05"N 80°07'47"E|Ismail Samani Peak|1956|||Kyrgyzstan/China
    4|Namcha Barwa|7,782|25,531|4,106|Assam Himalaya|29°37'52"N 95°03'19"E|Kangchenjunga|1992|1|2|China
    5|K2/Qogir/Godwin Austen|8,611|28,251|4,020|Baltoro Karakoram|35°52'53"N 76°30'48"E|Mount Everest|1954|45|44|Pakistan/China
    ...

Richtlijnen bij het indienen

Volg aandachtig onderstaande richtlijnen bij het indien van je oplossing voor deze opgave: