Files
AoC-2020/day16/day16.py
2020-12-17 08:27:05 +01:00

56 lines
1.1 KiB
Python

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()