public void Execute() { Console.WriteLine(""); Console.WriteLine("--- Day 16: Ticket Translation ---"); Console.WriteLine("---------------------------------------------"); string[] input = File.ReadAllLines(Directory.GetCurrentDirectory() + "\\Files\\Day16-Input.txt"); List <Limit> rules = GetRules(input); TicketsValidation validation = CheckNearByTickets(input, rules); Console.WriteLine("Ticket scanning error rate: {0}", validation.ErrorRate); List <KeyValuePair <string, int> > fields = DetermineFields(validation.ValidTickets, rules); double multiplication = CheckTicket(input, rules.Count, fields); Console.WriteLine("multiply departure values together: {0}", multiplication); }
private TicketsValidation CheckNearByTickets(string[] input, List <Limit> rules) { TicketsValidation validation = new TicketsValidation(); try { for (int i = (rules.Count + 5); i < input.Length; i++) { string[] currentTicket = input[i].Split(','); List <int> fields = GeneralFunctions.ToIntList(currentTicket); int currentError = isTicketInvalid(fields, rules); if (currentError > 0) { validation.ErrorRate += currentError; } else { validation.ValidTickets.Add(GeneralFunctions.ToIntList(currentTicket)); } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } return(validation); }