Je veerboot kan veilig een nabijgelegen haven bereiken, maar veel verder komt hij niet. Wanneer je belt om een ander schip te boeken, blijkt dat er geen schepen zijn die vanuit die haven naar je vakantie-eiland varen. Je moet dus van de zeehaven naar de dichtstbijzijnde luchthaven gaan.
Gelukkig zijn er shuttlebussen die je van de zeehaven naar de luchthaven kunnen brengen! Elke bus heeft een ID-nummer dat meteen ook aangeeft hoe vaak die bus naar de luchthaven vertrekt.
Busdiensten worden gedefinieerd op basis van een tijdstip dat het aantal minuten aangeeft sinds een vast referentiepunt in het verleden. Op tijdstip 0 vertrok elke bus gelijktijdig vanuit de zeehaven. Daarna reist elke bus naar de luchthaven, vervolgens naar verschillende andere plaatsen, en keert uiteindelijk terug naar de zeehaven om zijn route daarna voor altijd te herhalen.
De tijd die een bepaalde bus over één lus van zijn route doet, is ook zijn ID-nummer: de bus met ID 5
vertrekt vanaf de zeehaven op tijdstippen 0
, 5
, 10
, 15
, enzovoort. De bus met ID 11
vertrekt om 0
, 11
, 22
, 33
, enzovoort. Als je er bent als de bus vertrekt, dan kan je met die bus naar de luchthaven rijden!
Jouw aantekeningen bestaan uit twee regels. De eerste regel is je eigen inschatting van het vroegste tijdstip waarop je een bus zou kunnen nemen. Op de tweede regel staat een reeks ID-nummers van de bussen die volgens het shuttlebedrijf in gebruik zijn. Bussen die momenteel buiten dienst zijn, heb je met een x
aangeduid. Je beslist om deze bussen te negeren.
Om zoveel mogelijk tijd over te houden als je eenmaal aankomt, wil je zoeken naar de vroegste bus die je naar de luchthaven kunt nemen. (Er zal precies één zo’n bus zijn.)
Stel dat je bijvoorbeeld de volgende aantekeningen hebt gemaakt:
939
7,13,x,x,59,x,31,19
In dit geval is het vroegste tijdstip waarop je kunt vertrekken 939
, en zijn 7
, 13
, 59
, 31
en 19
de ID-nummers van de bussen die in dienst zijn. Rond tijdstip 939
zijn dit de ID-nummers van de bussen die vertrekken op tijdstippen die met D
gemarkeerd zijn:
time bus 7 bus 13 bus 59 bus 31 bus 19
929 . . . . .
930 . . . D .
931 D . . . D
932 . . . . .
933 . . . . .
934 . . . . .
935 . . . . .
936 . D . . .
937 . . . . .
938 D . . . .
939 . . . . .
940 . . . . .
941 . . . . .
942 . . . . .
943 . . . . .
944 . . D . .
945 D . . . .
946 . . . . .
947 . . . . .
948 . . . . .
949 . D . . .
De vroegste bus de je kunt nemen heeft ID-nummer 59
. Deze bus vertrekt pas op tijdstip 944
, dus moet je 944 - 939 = 5
minuten wachten voordat hij vertrekt. Als we het ID-nummer van de bus vermenigvuldigen met het aantal minuten dat je moet wachten, dan krijgen we 295
.
Wat is het ID-nummer van de vroegste bus die je naar de luchthaven kunt nemen, vermenigvuldigd met het aantal minuten dat je op die bus moet wachten? Hiervoor ga je als volgt te werk:
waitingTime
waaraan twee argumenten moeten doorgegeven worden: i) het vroegste tijdstip (Int
) waarop je met de bus kan vertrekken en ii) het ID-nummer van een bus (Int
). De functie moet teruggeven hoeveel minuten (Int
) je op deze bus zal moeten wachten.departure
waaraan twee argumenten moeten doorgegeven worden: i) het vroegste tijdstip (Int
) waarop je met de bus kan vertrekken en ii) een reeks ID-nummers van de bussen die volgens het shuttlebedrijf in gebruik zijn (String
). De functie moet het ID-nummer teruggeven van de vroegste bus die je naar de luchthaven kunt nemen, vermenigvuldigd met het aantal minuten dat je op die bus moet wachten (Int
).> waitingTime(939, 7)
6
> waitingTime(939, 13)
10
> waitingTime(939, 19)
11
> waitingTime(939, 31)
22
> waitingTime(939, 59)
5
> departure(939, "7,13,x,x,59,x,31,19")
295