Solution to problem 4 part 2 in Python (failed mypy :()
This commit is contained in:
parent
d9f3206e1d
commit
bd85f284fd
139
src/P4.py
139
src/P4.py
@ -160,88 +160,69 @@ def part_1() -> None:
|
|||||||
# passports are valid?
|
# passports are valid?
|
||||||
|
|
||||||
|
|
||||||
# def is_valid(field: str) -> bool:
|
def is_valid(passport: dict[str, str]) -> bool:
|
||||||
# # print(f"checking {field}")
|
keys = ["byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid"]
|
||||||
# if field[:3] == "byr" and len(field[4:]) == 4:
|
for key in keys:
|
||||||
# # print("byr?")
|
if key not in passport:
|
||||||
# if int(field[4:]) > 1920 or int(field[4:]) < 2002:
|
return False
|
||||||
# # print("passed")
|
if not any([passport[key] != 4 for key in ["byr", "iyr", "eyr"]]):
|
||||||
# return True
|
return False
|
||||||
# if field[:3] == "iyr" and len(field[4:]) == 4:
|
if passport["byr"] < "1920" or passport["byr"] > "2002":
|
||||||
# # print("iyr?")
|
return False
|
||||||
# if int(field[4:]) > 2010 or int(field[4:]) < 2020:
|
if passport["iyr"] < "2010" or passport["iyr"] > "2020":
|
||||||
# # print("passed")
|
return False
|
||||||
# return True
|
if passport["eyr"] < "2020" or passport["eyr"] > "2030":
|
||||||
# if field[:3] == "eyr" and len(field[4:]) == 4:
|
return False
|
||||||
# # print("eyr?")
|
if not any(["cm" in passport["hgt"], "in" in passport["hgt"]]):
|
||||||
# if int(field[4:]) > 2020 or int(field[4:]) < 2030:
|
return False
|
||||||
# # print("passed")
|
_hgt = int(passport["hgt"][:-2])
|
||||||
# return True
|
if "cm" in passport["hgt"]:
|
||||||
# if (
|
if _hgt < 150 or _hgt > 193:
|
||||||
# field[:3] == "hgt"
|
return False
|
||||||
# and len(field[4:-2]) > 0
|
if "in" in passport["hgt"]:
|
||||||
# and type(int(field[4:-2])) == int
|
if _hgt < 59 or _hgt > 76:
|
||||||
# ):
|
return False
|
||||||
# # print("hgt?")
|
if "#" not in passport["hcl"]:
|
||||||
# if field[-2:] == "cm":
|
return False
|
||||||
# # print("cm?")
|
_hcl = passport["hcl"].split("#")[-1]
|
||||||
# if int(field[4:-2]) > 150 or int(field[4:-2]) < 193:
|
if len(_hcl) != 6:
|
||||||
# # print("passed")
|
return False
|
||||||
# return True
|
try:
|
||||||
# if field[-2:] == "in":
|
int(_hcl, 16)
|
||||||
# # print("in?")
|
except ValueError:
|
||||||
# if int(field[4:-2]) > 59 or int(field[4:-2]) < 76:
|
return False
|
||||||
# # print("passed")
|
if not any(
|
||||||
# return True
|
[
|
||||||
# if field[:3] == "hcl" and len(field[4:]) == 7:
|
passport["ecl"]
|
||||||
# # print("hcl?")
|
in [
|
||||||
# valid_char = 0
|
"amb",
|
||||||
# for c in field[5:]:
|
"blu",
|
||||||
# if c in "0123456789abcdef":
|
"brn",
|
||||||
# valid_char += 1
|
"gry",
|
||||||
# if valid_char == 6:
|
"grn",
|
||||||
# # print("passed")
|
"hzl",
|
||||||
# return True
|
"oth",
|
||||||
# if field[:3] == "ecl":
|
]
|
||||||
# # print("ecl?")
|
]
|
||||||
# if field[4:] in ["amb", "blu", "brn", "gry", "grn", "hzl", "oth"]:
|
):
|
||||||
# # print("passed")
|
return False
|
||||||
# return True
|
if len(passport["pid"]) != 9:
|
||||||
# if field[:3] == "pid":
|
return False
|
||||||
# # print("pid?")
|
return True
|
||||||
# if len(field[4:]) == 9 and field[4:].isdigit():
|
|
||||||
# # print("passed")
|
|
||||||
# return True
|
|
||||||
|
|
||||||
|
|
||||||
# def part_2() -> None:
|
def part_2() -> None:
|
||||||
# valid_passports = 0
|
valid_passports = 0
|
||||||
# for passport in passports:
|
for passport in passports:
|
||||||
# if len(passport) > 7:
|
_items: list[list[str]] = [
|
||||||
# # print(f"checking passport: {passport}")
|
item.split(":") for item in passport if item
|
||||||
# valid_fields = 0
|
]
|
||||||
# for field in passport:
|
passport_dict: dict[str, str] = dict(_items)
|
||||||
# if is_valid(field):
|
if is_valid(passport_dict):
|
||||||
# valid_fields += 1
|
valid_passports += 1
|
||||||
# if valid_fields > 7:
|
print(f"There are {valid_passports} valid passports")
|
||||||
# # print("passed")
|
|
||||||
# valid_passports += 1
|
|
||||||
# if len(passport) == 7:
|
|
||||||
# # print(f"checking passport: {passport}")
|
|
||||||
# valid_fields = 0
|
|
||||||
# for field in passport:
|
|
||||||
# if is_valid(field):
|
|
||||||
# valid_fields += 1
|
|
||||||
# if "cid" in field:
|
|
||||||
# pass
|
|
||||||
# if valid_fields == 7:
|
|
||||||
# # print("valid passport")
|
|
||||||
# valid_passports += 1
|
|
||||||
# # break
|
|
||||||
|
|
||||||
# print(f"There are {valid_passports} valid passports")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
part_1()
|
part_1()
|
||||||
# part_2()
|
part_2()
|
||||||
|
Loading…
Reference in New Issue
Block a user