Nu je vastgesteld hebt welke ticket ongeldige waarden bevatten, kan je deze tickets volledig weggooien. Gebruik de resterende tickets om de verschillende velden te identificeren.
Bepaal aan de hand van de intervallen met geldige waarden voor elke veld in welke volgorde de velden op de tickets staan. Deze volgorde is hetzelfde tussen alle tickets: als seat
het derde veld is, dan is het het derde veld op elk ticket, inclusief je eigen ticket.
Stel dat je bijvoorbeeld de volgende gegevens verzameld hebt:
class: 0-1 or 4-19
row: 0-5 or 8-19
seat: 0-13 or 16-19
your ticket:
11,12,13
nearby tickets:
3,9,18
15,1,5
5,14,9
Op basis van de naburige tickets in bovenstaand voorbeeld, moet de eerste positie corresponderen met veld row
, de tweede positie met het veld class
en de derde positie met het veld seat
. Daarmee kan je besluiten dat op jouw ticket het veldclass
de waarde 12
heeft, veld row
de waarde 11
en veld seat
de waarde 13
.
Als je de verschillende velden geïdentificeerd hebt, zoek dan naar de zes velden op jouw ticket die beginnen met het woord departure
. Wat krijg je als je de zes waarden uit die velden met elkaar vermenigvuldigd? Hiervoor ga je als volgt te werk:
identification
waaraan twee argumenten moeten doorgegeven worden: i) de padnaam (str
) van een tekstbestand met jouw notities over de regels, jouw ticket en naburige tickets, en ii) een *reguliere expressie**. De functie moet het product (int
) teruggeven van alle waarden op jouw ticket uit velden waarvan de naam matcht met de reguliere expressie.In deze interactieve sessie gaan we ervan uit dat het tekstbestand tickets.txt
1 zich in de huidige directory bevindt.
>>> identification('tickets.txt', '^class$')
12
>>> identification('tickets.txt', '^row$')
11
>>> identification('tickets.txt', '^seat$')
13
>>> identification('tickets.txt', '^(class|seat)$')
156
>>> identification('tickets.txt', '^(class|row|seat)$')
1716