cleaner way of parsing the passport data
This commit is contained in:
@@ -1,21 +1,21 @@
|
||||
import re
|
||||
|
||||
with open('input') as f:
|
||||
data = [line.strip() for line in f]
|
||||
data = f.read()
|
||||
|
||||
def parse_passports(data):
|
||||
passports = []
|
||||
current = {}
|
||||
|
||||
for line in data:
|
||||
if line == '':
|
||||
passports.append(current)
|
||||
current = {}
|
||||
else:
|
||||
fields = line.split(' ')
|
||||
for field in fields: current[field[:3]] = field[4:]
|
||||
for raw_passport in data.split('\n\n'):
|
||||
raw_passport = raw_passport.replace('\n', ' ')
|
||||
fields = raw_passport.split(' ')
|
||||
|
||||
passport = {}
|
||||
for field in fields:
|
||||
passport[field[:3]] = field[4:]
|
||||
|
||||
passports.append(passport)
|
||||
|
||||
passports.append(current)
|
||||
return passports
|
||||
|
||||
def has_fields(passport):
|
||||
@@ -55,7 +55,7 @@ def solve_a(passports):
|
||||
return len([passport for passport in passports if has_fields(passport)])
|
||||
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user