Doodle is een online toepassing voor het inplannen van activiteiten
(vergaderingen, feestjes, …) waaraan verschillende personen moeten deelnemen. Aan de deelnemers wordt gevraagd om op
een kalender aan te geven wanneer ze vrij zijn, zodat de coördinator van de activiteit de datum en het uur kan
vastleggen waarop iedereen zich kan vrijmaken.
Hieronder een ingevulde doodle voor 14 opeenvolgende dagen, ingevuld door drie personen.
Voor deze opgave wordt de ingevulde doodle bijgehouden in een eenvoudig tekstbestand. De inhoud van het tekstbestand
wordt getoond in de tweede kolom.
 |
|
Wordt opgeslagen in een tekstbestand zoals doodle.txt met als inhoud:
VVVXVVXXXXXXVV
XVVXVVXXXXXXVV
VVXXVVXXXXXXVV
|
Merk op:
- Elke regel in het bestand beschrijft de beschikbaarheid van één persoon.
- Voor elke dag in de doodle bevat de regel éen letter: met 'V' wordt aangegeven dat de persoon beschikbaar
is,
met 'X' wordt onbeschikbaar aangeduid.
Opdracht
Schrijf twee functies:
- De functie activiteit(bestandsnaam, aantal_dagen) zoekt of een activiteit die loopt over een aantal
opeenvolgende dagen, kan ingepland worden op basis van een ingevulde doodle.
De eerste parameter bestandsnaam is de naam van het bestand voor de ingevulde doodle, de tweede
parameteraantal_dagen bepaalt het aantal opeenvolgende dagen die nodig zijn voor de activiteit.
De functie zoekt de eerste periode (bestaande uit het gevraagde aantal_dagen) waarbinnen alle
deelnemers beschikbaar zijn voor
die activiteit.
- Indien een dergelijk periode gevonden wordt, dan geeft de functie de index van de eerste dag van die
periode terug (de kolommen van de doodle corresponderen met opeenvolgende dagen, en deze worden
geïndexeerd vanaf
1).
- Indien de tweede parameter aantal_dagen groter is dan het
aantal kolommen van de doodle, dan werpt de functie een eigen exceptie op met als foutbericht
"Er zijn {aantal} dagen gevraagd, dat is groter dan in de doodle",
waarbij aantal vervangen wordt door de tweede parameter aantal_dagen.
- Indien geen geschikte periode gevonden wordt waarbinnen alle deelnemers beschikbaar zijn, dan werpt de
functie eigen exceptie op met als foutbericht
"Geen periode van {aantal_dagen} dagen gevonden".
- Indien het bestand niet gevonden wordt, dan werpt deze functie een eigen exceptie op met als
foutbericht:
"{bestandsnaam} niet gevonden", waarbij naambestand vervangen wordt door de eerste
parameter bestandsnaam.
- De functie langste_periode(bestandsnaam) zoekt wat de langste periode is die voor alle personen
beschikbaar is.
Gebruik daarbij de vorige functie. Indien het bestand niet gevonden wordt geeft deze functie 0 terug.
Voorbeelden
>>> activiteit('doodle.txt',1)
2
>>> activiteit('doodle.txt',2)
5
>>> activiteit('doodle.txt',22)
Exception: Er zijn 22 dagen gevraagd, dat is groter dan in de doodle
>>> activiteit('doodle.txt',3)
Exception: Geen periode van 3 dagen gevonden
>>> activiteit('onbestaand.txt',3)
Exception: onbestaand.txt niet gevonden
>>> langste_periode('doodle.txt'))
2
>>> langste_periode('onbestaand.txt')
0