summaryrefslogtreecommitdiffstats
path: root/day2
diff options
context:
space:
mode:
authorGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2020-12-11 23:53:45 +0100
committerGravatar Tom van der Lee <t0m.vd.l33@gmail.com>2020-12-11 23:53:45 +0100
commit4985ee94450df0bbcf982b7652c946a47707e60c (patch)
tree6a19652db8f05ab6546f9b5fe00c7e652f8acd8e /day2
download2021-4985ee94450df0bbcf982b7652c946a47707e60c.tar.gz
2021-4985ee94450df0bbcf982b7652c946a47707e60c.tar.bz2
2021-4985ee94450df0bbcf982b7652c946a47707e60c.zip
Added AoC day 1 and 2
Diffstat (limited to 'day2')
-rw-r--r--day2/__init__.py63
-rw-r--r--day2/example.txt3
-rw-r--r--day2/input.txt1000
3 files changed, 1066 insertions, 0 deletions
diff --git a/day2/__init__.py b/day2/__init__.py
new file mode 100644
index 0000000..988c32e
--- /dev/null
+++ b/day2/__init__.py
@@ -0,0 +1,63 @@
1import re
2from dataclasses import dataclass
3from typing import Generator
4
5from aoc import AssignmentBase
6
7
8matcher = re.compile(
9 pattern=r'(?P<min>\d+)-(?P<max>\d+) (?P<letter>\w): (?P<password>\w+)'
10)
11
12
13@dataclass
14class Item:
15 min: int
16 max: int
17 letter: str
18 password: str
19
20
21class Assignment(AssignmentBase):
22 def parse_item(self, item: str) -> Item:
23 match = matcher.match(item).groupdict()
24 return Item(
25 min=int(match['min']),
26 max=int(match['max']),
27 letter=match['letter'],
28 password=match['password'],
29 )
30
31 def valid_password(self, item: Item) -> bool:
32 raise NotImplementedError('Implement Valid Password')
33
34 def run(self, input: Generator):
35 valid_passwords = 0
36
37 for i in input:
38 if self.valid_password(i):
39 valid_passwords += 1
40
41 return valid_passwords
42
43
44class AssignmentOne(Assignment):
45 def valid_password(self, item: Item) -> bool:
46 return item.min <= item.password.count(item.letter) <= item.max
47
48
49class AssignmentTwo(Assignment):
50 def valid_password(self, item: Item) -> bool:
51 return (
52 (
53 item.password[item.min - 1] == item.letter
54 and
55 item.password[item.max - 1] != item.letter
56 )
57 or
58 (
59 item.password[item.min - 1] != item.letter
60 and
61 item.password[item.max - 1] == item.letter
62 )
63 )
diff --git a/day2/example.txt b/day2/example.txt
new file mode 100644
index 0000000..2eab335
--- /dev/null
+++ b/day2/example.txt
@@ -0,0 +1,3 @@
11-3 a: abcde
21-3 b: cdefg
32-9 c: ccccccccc \ No newline at end of file
diff --git a/day2/input.txt b/day2/input.txt
new file mode 100644
index 0000000..1332648
--- /dev/null
+++ b/day2/input.txt
@@ -0,0 +1,1000 @@
14-6 b: bbbdbtbbbj
21-6 g: ggvggbgggstg
31-4 s: lssss
413-14 v: hvvcvvvvvvvvvsvvv
53-5 m: lcmmm
63-4 t: stht
75-6 b: dbkbhb
84-7 p: ppfppppq
94-5 j: jjjjj
103-12 s: sskssssssssss
1114-15 z: zrndzbmrzzpzzqzj
1212-18 l: tllllllllllllplllbl
138-10 b: bdbvqbtbrb
141-3 c: tcqccc
151-2 n: nbnj
165-7 c: ccccccccc
179-10 l: hpmslrlgll
186-9 n: nnnnnnnnb
196-10 r: rmzjlrsxkbw
206-8 r: bzqnnrrrj
214-14 c: mfffvcbtchzrqcn
221-6 f: ffffffffffffff
232-5 f: wxtkf
248-12 b: rdcbbjbzbbpb
258-18 d: ddtdddddddwvdfdsdd
265-8 s: sssmsgpgszms
276-11 x: xxxxxvxxxxxt
2817-18 n: jhrnnzpxzngfqrntmnc
2913-14 r: rrrmrrrrlrrshvrrr
304-5 h: hhhhrhh
318-10 d: dgwtdsxnncd
329-13 q: qqbpqmqgmqwqbqqqxcgq
332-5 g: gjjcpgg
346-12 t: ttttvttttttrtt
353-9 h: hhhhhhhhsh
3615-16 p: ppppsppppppppppz
372-5 c: csccctcccc
3811-14 p: pppppppppppppnp
398-9 j: jvbjjjjrjbjj
408-16 b: qklbmbntmvbhxplbbcb
4112-13 j: jjjjsjmfjjjkhj
422-13 t: llckxhfmtznptndcsx
436-8 x: dxxxxvxxtt
443-4 d: ddht
453-4 t: ttdtt
4611-12 r: rrrrrrrrrrrd
479-10 h: hhhhhhhhgh
483-16 h: hhhhhhhhhhhhhhnhhh
4910-11 h: hxhhhdhhhsh
501-7 n: jnfnjnn
513-4 m: msmnpmpf
5215-17 t: tpdtttgltvtttztlv
537-10 v: vvpsvpgjzvvvvjs
541-5 p: pxppg
552-7 w: jwhgkgvxcv
5613-14 m: pxxmjznmrzdsbbmmfj
571-4 d: ddddd
5814-16 r: rrrrrrrrrrrrrwrr
592-5 l: klbtzzlrlslgswhljtq
606-12 c: qccrcpccccccdccccc
612-18 l: llllllllvllllllllkll
6218-20 z: zzzzzzzzszqzwzrzzzzn
635-16 c: cbccclcfcncvqztqc
647-11 m: fnwmtsmgpxncnr
656-7 h: hpjrhbhkshnchbhpph
6611-12 s: ssssssssssps
676-9 s: jfsmmssssqz
681-15 l: llllllllllllllbll
692-6 g: gggggwgggpggggggg
706-9 j: jjjpjjjjn
719-13 n: nnnnnnnnnnnnnn
7210-13 t: cgntllxnvpkjwxtght
732-11 f: xcftbcdcndkgm
7410-13 j: jjjjjjjjjjjjvj
759-17 f: rfrffnsffxqflbffvv
766-11 k: kkkkkrwkqckmk
775-7 q: zfqqqqqn
7812-13 c: cfcccvccccckccccv
795-15 z: xhzzzzzzzzfzzknzz
8018-19 f: jkfksvmfjbdffffffff
818-11 h: hhhhmhhkhsfdg
8214-16 s: ssssssdjssssssssssss
8315-16 t: jtmjhsxqqmmthmtttm
845-7 h: hkbjhjhh
852-6 n: knprnfnfhhrcnk
863-4 w: snwd
875-11 w: wwwwnwwwwwwwwwwww
882-12 k: bkqjghpktfsk
8914-15 v: vvvsvvvvvvvvvxv
908-9 w: fxwwwwwscwl
919-15 c: sbjvvsmdvqknbccxxx
926-15 t: tpwjtdnnldthxvn
9313-15 t: tttttrzmzttjttt
943-11 m: mmvmlmmmwfmjx
9513-14 s: gskssssssscssssqjssl
965-10 l: bfnmqlldllp
9717-18 q: qkwqqqqqqqqqqqrqqqqq
982-5 r: rsvrrq
993-4 j: jjjdj
1003-4 m: mtmk
1018-9 k: vsvkvkrkc
10210-12 t: ttttttcttttgttt
1033-4 n: trzw
1045-11 q: qqmpsqbxkqq
10513-15 s: sqsssnmwqszfsmv
1065-6 b: bbbbzvb
1075-13 p: pjjhpnqpzpmpfpfp
1084-5 l: mgnwlrw
1091-7 k: fkzxwkj
1101-10 q: qgxqqqqqqg
1118-9 s: ssqssssfss
1127-8 c: xxcscclccdvcmqcc
1132-6 d: xdlmzdzxrpmlnt
1143-9 s: sssssnssgbs
1157-10 h: sblrrhqrhh
1163-5 n: xnndnnnfnw
1179-10 l: vllllqlllhllljxlp
1182-5 d: ddxzbxk
11910-14 m: mmmmmmmmmmdmmmmsmmm
1201-2 f: ffffw
12114-15 g: wdjhplhrbcxdgpnt
1221-2 l: klllllll
12310-11 k: ckkhkkvkkkmkkjkwkkwk
1247-9 f: ffrhdvftfpjfqffhnfsf
1254-5 c: kkjksrmkccg
1265-9 r: rrrrhrrrrr
1275-6 p: pppppth
1284-10 t: kpfwzjtchtbndblrvst
1291-5 l: mllllllnllll
13013-16 r: rrrvrrrrrrrrzrrg
13117-18 x: xxfxxxxxxxxsxxxxxsxx
1328-11 w: rwbnqrngcvpgwwww
1334-8 z: zzzzzzzzzz
1344-9 b: bbvvbbbbr
1352-5 x: qlfhxkx
1363-8 t: wvptttttttt
1371-3 m: hmmmmqmm
13817-19 h: nhhhdvhnhrhhhhnhmdh
13911-12 s: psszbdpsgfks
1406-7 s: sssssshs
14110-15 l: mnkdvnvmxljjtggwcl
1421-13 j: qjjjjjjjjjjjdj
1434-9 l: jxvkwhlmlhdtgwvgsdzz
1445-9 c: ccfghhccccgc
14510-11 v: vvvvvvvvvvv
1467-8 t: cntwzshkzvmrnnkr
1471-11 l: tllllllltllll
14815-17 l: lllglvctrvllzkllt
1493-5 n: ncnnp
1502-3 q: jsqqh
1514-10 h: hhhhhhhhhvh
15216-18 b: bbnbbbbbtbbkktbbzdr
1534-6 g: kbggdhgggggggggggfc
15412-13 p: cpvcppqpplwpt
1555-10 h: fvhhbrhpghchhhhhh
1562-5 b: bbvzn
15714-15 x: xxxbxnwxxxxzxxh
15813-15 n: nnfgdglfnntnjqn
1592-4 c: cfccc
1603-5 v: vrvvzdvv
16117-19 v: vvvvvvvvvvvvvvvvvvsv
1621-20 h: hhhhhhhhhhqhhhhhhhhh
1634-15 q: qqqtqqqqqqqqqqqqlq
16411-13 h: hhkhvhhhhwhgk
1658-11 p: ppvppppppptspf
1668-9 m: mmmpmmkmdmpkspmg
1671-7 m: lcmvggm
1686-12 v: tvfstvvpvzsvcv
1698-9 n: nnnqnnwrrdzlmnwlznrn
1701-5 s: msssms
1711-3 v: vpdzvdvgv
1726-9 g: drgrfggcg
1736-16 x: djpxhxvncxfghsxx
1741-3 b: sjbwwxbvtvbkt
1756-8 c: cccccstccjhv
1761-11 q: qqqpqqqqqqwqqq
1779-11 m: vsbmmmmmmmqmmsm