import re def isValid(number, rules): for rulek in rules: rule = rules[rulek] if rule['from_1'] <= number <= rule['to_1'] or rule['from_2'] <= number <= rule['to_2']: return True return False def part1(): file = open("input.txt") lines = [line.strip() for line in file.readlines()] i = 0 rules = {} # Parse rules while lines[i] != '': rule = re.split('([a-z ]+): ([0-9]+)-([0-9]+) or ([0-9]+)-([0-9]+)', lines[i]) rules[rule[1]] = { 'from_1': int(rule[2]), 'to_1': int(rule[3]), 'from_2': int(rule[4]), 'to_2': int(rule[5]) } i += 1 # Parse my ticket # print(lines[i + 2]) # Parse other tickets i += 5 sum = 0 while i < len(lines): numbers = [int(i) for i in lines[i].split(',')] for number in numbers: if not isValid(number, rules): sum += number i += 1 print(f"Part 1: {sum}") def part2(): file = open("input_test.txt") print(f"Part 2:") if __name__ == "__main__": part1() part2()