summaryrefslogtreecommitdiffstats
path: root/day4/__init__.py
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2020-12-12 10:49:16 +0100
committerGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2020-12-12 10:49:16 +0100
commit75d2f9fd035b0c2e8bd36b0f131005dad0f3af44 (patch)
tree6b0fb581faa929f201dd0b77a6c90a30c7901b70 /day4/__init__.py
parent35536a73389e9d555e42f9388552b7c43f5c3a8b (diff)
download2021-75d2f9fd035b0c2e8bd36b0f131005dad0f3af44.tar.gz
2021-75d2f9fd035b0c2e8bd36b0f131005dad0f3af44.tar.bz2
2021-75d2f9fd035b0c2e8bd36b0f131005dad0f3af44.zip
Added day4 part one
Diffstat (limited to 'day4/__init__.py')
-rw-r--r--day4/__init__.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/day4/__init__.py b/day4/__init__.py
new file mode 100644
index 0000000..f179985
--- /dev/null
+++ b/day4/__init__.py
@@ -0,0 +1,55 @@
1from dataclasses import dataclass
2from typing import Generator, List
3
4from aoc import BaseAssignment
5
6@dataclass
7class Passport:
8 byr: int = None
9 iyr: int = None
10 eyr: int = None
11 hgt: str = None
12 hcl: str = None
13 ecl: str = None
14 pid: str = None
15 cid: str = None
16
17
18class Assignment(BaseAssignment):
19 def create_passport(self, items: List[List]) -> Passport:
20 return Passport(**dict(items))
21
22 def read_input(self, example = False) -> Generator:
23 passport = []
24
25 for item in super().read_input(example):
26 if item == '':
27 yield self.create_passport(passport)
28 passport = []
29 continue
30
31 for field in item.split(' '):
32 passport.append(field.split(':'))
33
34 yield self.create_passport(passport)
35
36 def valid_passport(self, passport: Passport):
37 raise NotImplementedError('Please implement valid_passport')
38
39 def run(self, input: Generator):
40 valid_passports = 0
41 for passport in input:
42 if self.valid_passport(passport):
43 valid_passports += 1
44 return valid_passports
45
46class AssignmentOne(Assignment):
47 def valid_passport(self, passport: Passport) -> bool:
48 return all([
49 val
50 for key, val in vars(passport).items()
51 if key != 'cid'
52 ])
53
54class AssignmentTwo(Assignment):
55 pass \ No newline at end of file