Een weerkundig instituut krijgt dagelijks een bestand met de metingen van het ozongehalte in de lucht op een aantal vastgelegde meetplaatsen. Het ozongehalte wordt hierbij uitgedrukt als een reëel getal en de meetplaatsen als een String. In deze oefening krijg je van enkele dagen de metingen van al de vastgelegde meetplaatsen. Er wordt gevraagd om te bepalen in welke meetplaatsen het ozongehalte op meer dan \(k\) dagen een bepaalde gegeven kritische waarde overschreed.
Ontwerp en implementeer een algoritme voor dit probleem en geef aan hoe daarbij de standaard datatypes kunnen worden gebruikt. Denk ook na over de tijdscomplexiteit van je algoritme.
Schrijf een Python-functie risicoGebieden(metingen: list, k: int, kritischeWaarde: float)
, die een lijst van metingen als argument heeft, alsook een natuurlijk getal \(k\) en een reëel getal dat de kritische waarde voorstelt. De elementen van de lijst metingen zijn van het type tuple(str, float)
waarbij de string de meetlocatie voorsteld en de float de meting. De uitvoer van de functie risicoGebieden
is een set van meetplaatsen wiens ozongehalte de kritische waarde meer dan \(k\) maal overschreden heeft.
>>> risicoGebieden([("Gent",90.1),("Antwerpen",120.9),("Brussel",181.1),("Brugge",70.7),("Gent",150.50),("Antwerpen",190.3),("Brussel",179.4),("Brugge",120.2),("Gent",190.2),("Antwerpen",185.1),("Brussel",200.1),("Brugge",110.1), ("Gent",160.4),("Antwerpen",162.1),("Brussel",190.9),("Brugge",120.1),("Gent",180.7),("Antwerpen",125.3),("Brussel",190.1),("Brugge",177.5)], 2, 180)
{'Brussel'}
>>> risicoGebieden([("Gent",90.1),("Antwerpen",120.9),("Brussel",181.1),("Brugge",70.7),("Gent",150.50),("Antwerpen",190.3),("Brussel",179.4),("Brugge",120.2),("Gent",190.2),("Antwerpen",185.1),("Brussel",200.1),("Brugge",110.1),("Gent",160.4),("Antwerpen",182.1),("Brussel",190.9),("Brugge",120.1),("Gent",180.7),("Antwerpen",125.3),("Brussel",190.1),("Brugge",177.5)], 1, 180 )
{'Antwerpen', 'Gent', 'Brussel'}
>>> risicoGebieden([("Gent",90.1),("Antwerpen",120.9),("Brussel",181.1),("Brugge",70.7),("Gent",150.50),("Antwerpen",190.3),("Brussel",179.4),("Brugge",120.2),("Gent",190.2),("Antwerpen",185.1),("Brussel",200.1),("Brugge",110.1),("Gent",160.4),("Antwerpen",182.1),("Brussel",190.9),("Brugge",120.1),("Gent",180.7),("Antwerpen",125.3),("Brussel",190.1),("Brugge",177.5),("Gent",155.2),("Antwerpen",199.2),("Brussel",200.1),("Brugge",160.1),("Gent",145.2),("Antwerpen",179.2),("Brussel",170.1),("Brugge",150.1),("Gent",185.2),("Antwerpen",190.2),("Brussel",185.3),("Brugge",160.7)], 3, 180)
{'Antwerpen', 'Brussel'}