Opgave

Het tekstbestand elements.txt1 waarin je de informatie over alle chemische elementen in JSON-formaat kan vinden. Dit bestand begint met een open accolade {, gevolgd door een lijst van atoomobjecten gescheiden door een komma, gevolgd door een sluitende accolade }. Elk atoomobject begin met de naam van het element, gevolgd door : {, gevolgd door een lijst van eigenschappen gescheiden door een komma. Deze eigenschappen hebben telkens het formaat "naam veld" : "waarde veld". 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 ervoor dat elk van deze commando's bestaat uit zo weinig mogelijk tekens. Alle opdrachten moeten na elkaar uitgevoerd worden, waarbij de regel met hoofding steeds ongewijzigd moet blijven. Ter controle kan je gebruik maken van de meegeleverde bestanden elements.$$i$$.txt (1 ≤ $$i$$ ≤ 5), die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.

  1. Zorg er voor dat elk element slechts 1 regel gebruikt. Verwijder hiervoor de nodige newlines, vervang opeenvolgende spaties door een enkele spatie en verwijder eventuele spaties aan het begin van een regel. Verwijder ook de eerste en laatste regel van het bestand (de regels die de accolades bevatten). Zo moet

    {
        "Hydrogen" : {
            "symbol" : "H",
            "atomic_number" : 1,
            "atomic_weight" : 1.00794,
            "melting_point K" : 14.01,
            "boiling_point K" : 20.28,
            "atomic_radius pm" : 79,
            "covalent_radius pm" : 32,
            "ionic_radius pm" : "",
            "atomic_volume cm3/mol" : 14.1,
            "fusion_heat (kJ/mol)" : "0.117 (H-H)",
            "evaporation_heat (kJ/mol)" : "0.904 (H-H)",
            "pauling_negativity" : 2.20,
            "first_ionizing kJ/mol" : 1311.3,
            "lattice_structure" : "HEX",
            "lattice_constant ang" : 3.750
        },
        "Helium" : {
            "symbol" : "He",
            "atomic_number" : 2,
            "atomic_weight" : 4.002602,
            "melting_point K" : 0.95,
            "boiling_point K" : 4.216,
            "atomic_radius pm" : 0.0,
            "covalent_radius pm" : "-",
            "ionic_radius pm" : "",
            "atomic_volume cm3/mol" : 31.8,
            "fusion_heat (kJ/mol)" : "-",
            "evaporation_heat (kJ/mol)" : 0.08,
            "pauling_negativity" : "-",
            "first_ionizing kJ/mol" : 2361.3,
            "lattice_structure" : "HEX",
            "lattice_constant ang" : 3.570
        }
    }
            

    bijvoorbeeld omgezet worden naar (elements.1.txt2)

    "Hydrogen" : { "symbol" : "H", "atomic_number" : 1, "atomic_weight" : 1.00794, "melting_point K" : 14.01, "boiling_point K" : 20.28, "atomic_radius pm" : 79, "covalent_radius pm" : 32, "ionic_radius pm" : "", "atomic_volume cm3/mol" : 14.1, "fusion_heat (kJ/mol)" : "0.117 (H-H)", "evaporation_heat (kJ/mol)" : "0.904 (H-H)", "pauling_negativity" : 2.20, "first_ionizing kJ/mol" : 1311.3, "lattice_structure" : "HEX", "lattice_constant ang" : 3.750 },
    "Helium" : { "symbol" : "He", "atomic_number" : 2, "atomic_weight" : 4.002602, "melting_point K" : 0.95, "boiling_point K" : 4.216, "atomic_radius pm" : 0.0, "covalent_radius pm" : "-", "ionic_radius pm" : "", "atomic_volume cm3/mol" : 31.8, "fusion_heat (kJ/mol)" : "-", "evaporation_heat (kJ/mol)" : 0.08, "pauling_negativity" : "-", "first_ionizing kJ/mol" : 2361.3, "lattice_structure" : "HEX", "lattice_constant ang" : 3.570 },
            
  2. Laat telkens de naam van de eigenschap en het daaropvolgend dubbelpunt weg. Verwijder ook de accolade aan het begin van elke lijst eigenschappen en de accolade en eventuele komma op het einde van de regel. Toegepast op het vorige voorbeeld wordt dit (elements.2.txt3)

    "Hydrogen" : "H", 1, 1.00794, 14.01, 20.28, 79, 32, "", 14.1, "0.117 (H-H)", "0.904 (H-H)", 2.20, 1311.3, "HEX", 3.750
    "Helium" : "He", 2, 4.002602, 0.95, 4.216, 0.0, "-", "", 31.8, "-", 0.08, "-", 2361.3, "HEX", 3.570
            
  3. Vervang het dubbelpunt na de naam van het element, en de komma's tussen de informatievelden door een puntkomma zodat dit het scheidingsteken wordt. Verwijder ook eventuele spaties rond de elementnaam en informatievelden en verwijder overal de dubbele aanhalingstekens Toegepast op het vorige voorbeeld wordt dit (elements.3.txt4)

    Hydrogen;H;1;1.00794;14.01;20.28;79;32;;14.1;0.117 (H-H);0.904 (H-H);2.20;1311.3;HEX;3.750
    Helium;He;2;4.002602;0.95;4.216;0.0;-;;31.8;-;0.08;-;2361.3;HEX;3.570
            
  4. Verwijder de regels waarvan het laatste veld (lattice_constant ang) niet numeriek is (bv. n/a of -).

  5. Sorteer aflopend op het laatste veld (lattice_constant ang). Sorteer bij gelijke waarde alfabetisch op het eerste veld.

Richtlijnen bij het indienen

Volg aandachtig onderstaande richtlijnen bij het indienen van je oplossing: