From 66ad0f3f70e3937aa5778675c559a24901764494 Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Wed, 16 Dec 2020 08:03:59 +0100 Subject: [PATCH] day16: faster and more readable --- day16.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/day16.py b/day16.py index 7b4317a..c449af1 100644 --- a/day16.py +++ b/day16.py @@ -20,14 +20,14 @@ def parse_input(to_parse): limit_low, limit_hi = limits.split(" or ") min_low, max_low = limit_low.split("-") min_hi, max_hi = limit_hi.split("-") - restraints[field] = [(int(min_low), int(max_low)), (int(min_hi), int(max_hi))] + restraints[field] = set(range(int(min_low), int(max_low) + 1)) | set(range(int(min_hi), int(max_hi) + 1)) return restraints, my_ticket, other_tickets def is_valid_number(number, restraints): for restraint in restraints.values(): - if restraint[0][0] <= number <= restraint[0][1] or restraint[1][0] <= number <= restraint[1][1]: + if number in restraint: return True return False @@ -87,7 +87,7 @@ def part2(test_mode=False): for position, number in enumerate(ticket): for field, restraint in restraints.items(): - if not restraint[0][0] <= number <= restraint[0][1] and not restraint[1][0] <= number <= restraint[1][1]: + if number not in restraint: possible_positions[field].remove(position) possible_positions = get_single_possible_positions(possible_positions)