Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- file = open('Day4.txt')
- data = file.readlines()
- #data.append('\n')
- data = [line.strip() for line in data]
- import re
- valid = 0
- traveler = []
- travelers = []
- for line in data:
- if line == '':
- travelers.append(traveler)
- traveler = []
- else:
- for field in re.split(':| ', line):
- traveler.append(field)
- travelers.append(traveler)
- valid = 0
- for passport in travelers:
- if len(passport) == 16 or (len(passport) == 14 and 'cid' not in passport):
- valid += 1
- valid
- # part 2
- # def valid_passport (byr, iyr, eyr, hgt, hcl, ecl, pid):
- def byr(byr):
- return (len(byr) ==4 and int(byr) >= 1920 and int(byr) <= 2002)
- def iyr(iyr):
- return (len(iyr) == 4 and int(iyr) >= 2010 and int(iyr) <= 2020)
- def eyr(eyr):
- return (len(eyr)== 4 and int(eyr) >= 2020 and int(eyr) <= 2030)
- def hgt(hgt):
- if hgt[-2:] == 'cm':
- return (int(hgt[:-2]) >= 150 and int(hgt[:-2])<= 193)
- elif hgt[-2:] =='in':
- return (int(hgt[:-2]) >= 59 and int(hgt[:-2])<= 76)
- return False
- def ecl(ecl):
- eyes= ['amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth']
- return (ecl in eyes)
- def hcl(hcl):
- target = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
- total = 0
- if (hcl[0] =='#' and len(hcl[1:]) == 6):
- for value in hcl[1:]:
- total += value in target
- if total == 6:
- return True
- return False
- def pid(pid):
- target = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
- total = 0
- if len(pid) == 9:
- for value in pid:
- total += value in target
- if total == 9:
- return True
- return False
- total_valid = 0
- for traveler in travelers:
- if len(traveler) == 16 or (len(traveler) == 14 and 'cid' not in traveler):
- valid = 0
- for ind in range(0,len(traveler),2):
- field = traveler[ind]
- if field == 'pid':
- # print('pid',traveler[ind+1], pid(traveler[ind+1]))
- valid += pid(traveler[ind+1])
- elif field == 'byr':
- valid += byr(traveler[ind+1])
- # print('byr',traveler[ind+1], byr(traveler[ind+1]))
- elif field == 'iyr':
- valid += iyr(traveler[ind+1])
- elif field == 'hgt':
- valid += hgt(traveler[ind+1])
- # print('hgt', traveler[ind+1], hgt(traveler[ind+1]))
- elif field == 'hcl':
- valid += hcl(traveler[ind+1])
- # print('hcl', traveler[ind+1], hcl(traveler[ind+1]))
- elif field == 'ecl':
- valid += ecl(traveler[ind+1])
- # print('ecl', traveler[ind+1], ecl(traveler[ind+1]))
- elif field == 'eyr':
- # print('eyr', traveler[ind+1], eyr(traveler[ind+1]) )
- valid += eyr(traveler[ind+1])
- total_valid += (valid == 7)
- total_valid
Add Comment
Please, Sign In to add comment