Advent of Code 2020, now in the most terse and awful python possible
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
from sys import argv
|
|
|
|
|
|
|
|
p = [dict(e.split(":") for e in l.split()) for l in open(argv[1]).read().split("\n\n")]
|
|
|
|
|
|
|
|
fi = ["byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid"]
|
|
|
|
|
|
|
|
ok = 0
|
|
|
|
ok2 = 0
|
|
|
|
for cp in p:
|
|
|
|
for cf in fi:
|
|
|
|
if cf not in cp:
|
|
|
|
break
|
|
|
|
else:
|
|
|
|
ok += 1
|
|
|
|
|
|
|
|
hgt_u = cp["hgt"][-2:]
|
|
|
|
try:
|
|
|
|
byr = int(cp["byr"])
|
|
|
|
iyr = int(cp["iyr"])
|
|
|
|
eyr = int(cp["eyr"])
|
|
|
|
hgt = int(cp["hgt"][:-2])
|
|
|
|
pid = int(cp["pid"])
|
|
|
|
except:
|
|
|
|
continue
|
|
|
|
|
|
|
|
if byr < 1920 or byr > 2002:
|
|
|
|
continue
|
|
|
|
if iyr < 2010 or iyr > 2020:
|
|
|
|
continue
|
|
|
|
if eyr < 2020 or eyr > 2030:
|
|
|
|
continue
|
|
|
|
if hgt_u == "cm":
|
|
|
|
if hgt < 150 or hgt > 193:
|
|
|
|
continue
|
|
|
|
elif hgt_u == "in":
|
|
|
|
if hgt < 59 or hgt > 76:
|
|
|
|
continue
|
|
|
|
else:
|
|
|
|
continue
|
|
|
|
if len(cp["hcl"]) != 7 or cp["hcl"][0] != '#':
|
|
|
|
continue
|
|
|
|
for c in cp["hcl"][1:]:
|
|
|
|
if c not in "0123456789abcdef":
|
|
|
|
continue
|
|
|
|
if cp["ecl"] not in ["amb","blu","brn","gry","grn","hzl","oth"]:
|
|
|
|
continue
|
|
|
|
if len(cp["pid"]) != 9:
|
|
|
|
continue
|
|
|
|
|
|
|
|
ok2 += 1
|
|
|
|
|
|
|
|
print(ok)
|
|
|
|
print(ok2)
|