コード例 #1
0
puzzle_input = sys.stdin.read().strip()

rules = []
your_ticket = None
nearby_tickets = []

is_your_ticket = False
is_nearby_tickets = False
for line in puzzle_input.split('\n'):
    if '-' in line:
        # Parse a rule.
        rules.append(Rule.from_string(line))
    elif 'your ticket' in line:
        is_your_ticket = True
    elif line and is_your_ticket:
        your_ticket = Ticket.from_string(line)
        is_your_ticket = False
    elif 'nearby tickets' in line:
        is_nearby_tickets = True
    elif line and is_nearby_tickets:
        nearby_tickets.append(Ticket.from_string(line))

invalid_fields = []
results = {}

field_rule = [[x, y] for x in range(len(rules)) for y in range(len(rules))]

for i, ticket in enumerate(nearby_tickets):
    is_valid_ticket = True
    for j, num in enumerate(ticket.nums):
        each_rule = [r.valid(num) for r in rules]