cleaner way of parsing the passport data
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user