public int CheckTicket(TrainTicket ticket) { for (var i = 0; i < ticket.Fields.Count; i++) { var isValid = false; foreach (var rule in rules.Values) { if (rule.Check(ticket.Fields[i])) { ticket.AddValid(i, rule.Name); isValid = true; } } if (!isValid) { ticket.IsValid = false; return(ticket.Fields[i]); } } return(0); }
public TicketReader(string input) { Ruleset = new TrainRuleset(); Tickets = new List <TrainTicket>(); var lines = input.Lines(); var phase = TicketPhase.Rules; foreach (var line in lines) { switch (line) { case "your ticket:": phase = TicketPhase.YourTicket; continue; case "nearby tickets:": phase = TicketPhase.NearbyTickets; continue; } switch (phase) { case TicketPhase.Rules: Ruleset.Add(line); break; case TicketPhase.YourTicket: MyTicket = new TrainTicket(line); break; case TicketPhase.NearbyTickets: Tickets.Add(new TrainTicket(line)); break; } } }