drawing

Minard 🎭

De Minard is een schouwburg in Gent, België, bekend om zijn diverse theaterproducties en culturele evenementen.

Voor de volgende voorstelling heeft de Minard een nieuw ticketingsysteem geïntroduceerd om het aankoopproces voor bezoekers te verbeteren. Jammer genoeg verliep de implementatie niet helemaal vlekkeloos, waardoor sommige bezoekers problemen ondervonden bij het kopen van hun tickets.

Het probleem is dat ze een ticket betaald hebben voor een zitplaats die misschien al bezet was. Gelukkig heeft de programmeur een logbestand bijgehouden waarin alle tickettransacties worden geregistreerd, zodat het mogelijk is om te controleren welke zitplaatsen daadwerkelijk bezet zijn.

Het logbestand is een lijst van transacties en ziet er bijvoorbeeld als volgt uit:

[
    {"gebruiker-ID": "1A", "rij": 1, "stoel": 1, "ts": 1, "prijs": 13 },
    {"gebruiker-ID": "2B", "rij": 1, "stoel": 2, "ts": 2, "prijs": 12 },
    {"gebruiker-ID": "3C", "rij": 1, "stoel": 1, "ts": 3, "prijs": 15 },

]

Elke transactie in het logbestand bevat de volgende informatie:

Schrijf de functie terugbetalingen(logbestand) die een dictionary retourneert met de terugbetalingen voor elke transactie. De sleutel van het dictionary is de gebruiker-ID van de transactie en de waarde is het terug te betalen bedrag. Een transactie komt in aanmerking voor terugbetaling als de zitplaats al bezet was op het moment van aankoop.

Voorbeeld

>>> logbestand = [
        {"gebruiker-ID": "1A", "rij": 1, "stoel": 1, "ts": 1, "prijs": 13 },
        {"gebruiker-ID": "3C", "rij": 1, "stoel": 2, "ts": 4, "prijs": 14 },
        {"gebruiker-ID": "3C", "rij": 1, "stoel": 1, "ts": 3, "prijs": 15 },
        {"gebruiker-ID": "2B", "rij": 1, "stoel": 2, "ts": 2, "prijs": 12 },
... ]
>>> terugbetalingen(logbestand)
{'3C': 29}

In dit voorbeeld heeft gebruiker “3C” twee keer een stoel gekocht die al bezet was (stoel 1 en stoel 3 van de eerste rij), dus ontvangt hij een terugbetaling van 15 + 14 = 29.

Let op: als je goed kijkt zie je dat de tijdstempel (ts) door elkaar staat en niet noodzakelijk in oplopende volgorde in het logbestand voorkomt. Het is belangrijk om de transacties op volgorde van tijdstempel te verwerken om te bepalen welke zitplaatsen daadwerkelijk al bezet waren op het moment van elke aankoop.