Een eiland is een stuk land dat aan alle kanten omgeven is door water. Wanneer een stuk land net geen eiland vormt omdat het via een smalle landengte (smal in vergelijking met de grootte van het stuk land) verbonden is met het vasteland, dan spreekt men van een schiereiland. In alle andere gevallen zegt men dat het stuk land deel uitmaakt van het vasteland.
We zullen werken met tekstbestanden die telkens een detail van een landkaart bevatten. Deze detailkaart wordt beschreven aan de hand van een aantal tekstregels die allemaal dezelfde lengte hebben. De kaart bevat een landmassa vasteland waarvan de stukken worden aangeduid met hekjes (#) en een tweede landmassa waarvan de stukken worden aangeduid met de letter S. Stukken zee worden aangeduid met een spatie. Gevraagd wordt om te bepalen of de landmassa die wordt aangeduid met de letters S een eiland, een schiereiland of een deel van het vasteland voorstelt. Hiervoor ga je als volgt te werk:
Schrijf een functie landmassa waaraan de locatie (str) van een tekstbestand moet doorgegeven worden met een detailkaart zoals die hierboven werd beschreven. De functie moet een tuple $$(r, o)$$ teruggeven. Hierbij stelt $$r$$ (int) het aantal raakpunten voor die het vasteland heeft met de landmassa die wordt aangeduid met de letters S. Dit wordt berekend als het aantal stukken aangeduid met een hekje, die boven, onder, links of rechts raken aan minstens één stuk aangeduid met de letter S. De waarde $$o$$ (int) stelt de oppervlakte van de landmassa voor die wordt aangeduid met de letters S, uitgedrukt als het totaal aantal stukken die met de letter S gemarkeerd worden.
Gebruik de functie landmassa om een functie landsoort te schrijven die kan gebruikt worden om te bepalen of een landmassa een eiland, een schiereiland of een deel van het vasteland voorstelt. Aan deze functie moet de locatie (str) doorgegeven worden van een tekstbestand met een detailkaart zoals die hierboven werd beschreven. De functie heeft ook nog een tweede optionele parameter verhouding waaraan een reëel getal (float; standaardwaarde: 0.05) kan doorgegeven worden. Indien de landmassa die wordt aangeduid met de letters S geen raakpunten heeft met het vasteland, dan moet de functie een string (str) met de tekst eiland teruggeven. Anders moet nagegaan worden of de verhouding van het aantal raakpunten gedeeld door de oppervlakte van het stuk land kleiner of gelijk is aan de waarde van de parameter verhouding. Als dat het geval is moet een string (str) met de tekst schiereiland teruggegeven worden. Anders moet een string (str) met de tekst vasteland teruggegeven worden.
Bij onderstaande interactieve sessie gaan we ervan uit dat de bestanden landmassa1.txt1, landmassa2.txt2 en landmassa3.txt3 zich in de huidige directory bevinden.
>>> landmassa('landmassa1.txt4')
(0, 196)
>>> landmassa('landmassa2.txt5')
(6, 169)
>>> landmassa('landmassa3.txt6')
(8, 45)
>>> landsoort('landmassa1.txt7')
'eiland'
>>> landsoort('landmassa2.txt8')
'schiereiland'
>>> landsoort('landmassa3.txt9')
'vasteland'
>>> landsoort('landmassa3.txt10', verhouding=0.2)
'schiereiland'