Finishz day4, fu regex

This commit is contained in:
2020-12-06 23:51:18 +01:00
parent d9c12bc074
commit 7be1ad5495

View File

@@ -49,27 +49,32 @@ def validate_field(field, value):
return 2020 <= int(value) <= 2030
elif field == 'hgt':
height = re.split('([0-9]+)([a-z]+)', value)
if len(height) < 3:
if len(height) != 4:
return False
if height[2] == 'cm':
return 150 <= int(height[1]) <= 193
elif height[2] == 'in':
return 59 <= int(height[1]) <= 76
else:
return False
elif field == 'hcl':
if re.match('#([0-9a-f]{6})', value):
return True
elif field == 'ecl':
return value == "amb" or value == "blu" or value == "brn" or value == "gry" or value == "grn" or value == "hzl" or value == "oth"
elif field == 'pid':
if re.match('([0-9]{9})', value):
if value == "amb" or value == "blu" or value == "brn" or value == "gry" or value == "grn" or value == "hzl" or value == "oth":
return True
elif field == 'pid':
if re.match('^[0-9]{9}$', value):
return True
else:
return False
return False
def part1():
file = open("input.txt")
count = 0
passport = resetCheck()
for line in file:
if line == "\n":
@@ -79,17 +84,17 @@ def part1():
passport_line = line.split(" ")
for field in passport_line:
field = field.split(':')[0]
field = field.strip("\n").split(':')[0]
passport[field] = True
if valid(passport):
count += 1
print("Part 1: %d" % count)
print("Part 1: %d valid" % count)
def part2():
file = open("input.txt")
count = 0
passport = resetCheck()
@@ -101,14 +106,15 @@ def part2():
passport = resetCheck()
else:
passport_line = line.split(" ")
passport_line = line.strip().split(" ")
for field in passport_line:
field = field.split(':')
passport[field[0]] = validate_field(field[0], field[1])
if valid(passport):
count += 1
print("Part 2: %d" % count)
print("Part 2: %d valid" % count)
if __name__ == "__main__":