コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: TicketReader.cs プロジェクト: aethercowboy/advent
        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;
                }
            }
        }