cleaner way of parsing the passport data

This commit is contained in:
Daniel Cortés
2020-12-04 04:35:38 -03:00
parent 0e8ba2eef2
commit 144d86db93

View File

@@ -1,21 +1,21 @@
import re import re
with open('input') as f: with open('input') as f:
data = [line.strip() for line in f] data = f.read()
def parse_passports(data): def parse_passports(data):
passports = [] passports = []
current = {}
for line in data: for raw_passport in data.split('\n\n'):
if line == '': raw_passport = raw_passport.replace('\n', ' ')
passports.append(current) fields = raw_passport.split(' ')
current = {}
else: passport = {}
fields = line.split(' ') for field in fields:
for field in fields: current[field[:3]] = field[4:] passport[field[:3]] = field[4:]
passports.append(passport)
passports.append(current)
return passports return passports
def has_fields(passport): def has_fields(passport):
@@ -55,7 +55,7 @@ def solve_a(passports):
return len([passport for passport in passports if has_fields(passport)]) return len([passport for passport in passports if has_fields(passport)])
def solve_b(passports): def solve_b(passports):
return len([passport for passport in passports if fill_validation(passport)]) return len([passport for passport in passports if full_validation(passport)])
passports = parse_passports(data) passports = parse_passports(data)