Solution to problem 4 part 2 in Python (failed mypy :()

This commit is contained in:
David Doblas Jiménez 2021-11-20 16:42:54 +01:00
parent d9f3206e1d
commit bd85f284fd

139
src/P4.py
View File

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