예제 #1
0
        private static XDocument LoadXDocument(string filePath)
        {
            XDocument xml;

            try
            {
                xml = XDocument.Load(filePath);
            }
            catch (Exception e)
            {
                throw new ArgumentException("Ugyldig filangivelse - kan ikke tolke fil som XML", e);
            }
            if (xml.Root == null)
            {
                throw new ArgumentException("Ugyldig filangivelse - finner ikke rot-element i XML");
            }

            if (xml.Root.Elements().Count() == 1 && xml.Root.Elements().Single().Name == "ev_comp")
            {
                // Ond BillettService-kodet XML som må "pakkes opp" først
                var decoder = new TicketDecoder();
                xml = decoder.ExtractXml(xml);
                if (xml.Root == null)
                {
                    throw new ArgumentException("Komprimert XML mangler rot-element");
                }
            }

            return(xml);
        }
예제 #2
0
        private static string SolvePart2(List <string> input)
        {
            (List <Ticket> tickets, List <int> yourTicket, TicketValidator ticketValidator) = InputParser.ParseInput(input);

            var validTickets = tickets.Where(ticket => !ticket.GetInvalidValues(ticketValidator).Any()).ToList();

            var ruleMapping = new TicketDecoder(validTickets, ticketValidator).GetRuleMapping();

            var departureIndices = ruleMapping.Where(x => x.Key.StartsWith("departure")).Select(x => x.Value).ToList();

            return(departureIndices
                   .Select(x => yourTicket[x])
                   .Product()
                   .ToString());
        }