Now that you’ve identified which tickets contain invalid values, discard those tickets entirely. Use the remaining valid tickets to determine which field is which.
Using the valid ranges for each field, determine what order the fields appear on the tickets. The order is consistent between all tickets: if seat
is the third field, it is the third field on every ticket, including your ticket.
For example, suppose you have the following notes:
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
Based on the nearby tickets in the above example, the first position must be row
, the second position must be class
, and the third position must be seat
; you can conclude that in your ticket, class
is 12
, row
is 11
, and seat
is 13
.
Once you work out which field is which, look for the six fields on your ticket that start with the word departure
. What do you get if you multiply those six values together? Determine this in the following way:
identification
that takes two arguments: i) the pathname (char*
) of a text file containing your notes about rules, your ticket and nearby tickets, and ii) a regular expression. The function must return the product (int
) of all values on your ticket whose field matches the regular expression.In this interactive session we assume the text file tickets.txt
1 to be located in the current directory.
> 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