summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Pipfile11
-rw-r--r--Pipfile.lock20
-rw-r--r--aoc/__init__.py3
-rw-r--r--day1/__init__.py28
-rw-r--r--day1/example.txt16
-rw-r--r--day1/input.txt2166
-rw-r--r--day2/__init__.py63
-rw-r--r--day2/example.txt3
-rw-r--r--day2/input.txt1000
-rw-r--r--day3/__init__.py43
-rw-r--r--day3/example.txt11
-rw-r--r--day3/input.txt323
-rw-r--r--day4/__init__.py107
-rw-r--r--day4/example.txt13
-rw-r--r--day4/input.txt1023
-rw-r--r--day5/__init__.py40
-rw-r--r--day5/example.txt3
-rw-r--r--day5/input.txt815
-rw-r--r--day6/__init__.py47
-rw-r--r--day6/example.txt15
-rw-r--r--day6/input.txt2148
-rw-r--r--day7/__init__.py58
-rw-r--r--day7/example.txt9
-rw-r--r--day7/input.txt594
-rw-r--r--day8/__init__.py75
-rw-r--r--day8/example.txt9
-rw-r--r--day8/input.txt624
-rw-r--r--day9/__init__.py63
-rw-r--r--day9/example.txt20
-rw-r--r--day9/input.txt1000
30 files changed, 2005 insertions, 8345 deletions
diff --git a/Pipfile b/Pipfile
deleted file mode 100644
index 5d44a48..0000000
--- a/Pipfile
+++ /dev/null
@@ -1,11 +0,0 @@
1[[source]]
2url = "https://pypi.python.org/simple"
3verify_ssl = true
4name = "pypi"
5
6[packages]
7
8[dev-packages]
9
10[requires]
11python_version = "3.8"
diff --git a/Pipfile.lock b/Pipfile.lock
deleted file mode 100644
index 4cee413..0000000
--- a/Pipfile.lock
+++ /dev/null
@@ -1,20 +0,0 @@
1{
2 "_meta": {
3 "hash": {
4 "sha256": "e2a8a78582d100dc86a0694f5ad982ca341a6b861fd871c6306733562f9e16cc"
5 },
6 "pipfile-spec": 6,
7 "requires": {
8 "python_version": "3.8"
9 },
10 "sources": [
11 {
12 "name": "pypi",
13 "url": "https://pypi.python.org/simple",
14 "verify_ssl": true
15 }
16 ]
17 },
18 "default": {},
19 "develop": {}
20}
diff --git a/aoc/__init__.py b/aoc/__init__.py
index 70c3ac0..07a5fe7 100644
--- a/aoc/__init__.py
+++ b/aoc/__init__.py
@@ -1,7 +1,6 @@
1import os 1import os
2from abc import ABC 2from abc import ABC
3from collections import Iterator 3from typing import Generator, Any, Iterator
4from typing import Generator, Any
5 4
6 5
7class BaseAssignment(ABC): 6class BaseAssignment(ABC):
diff --git a/day1/__init__.py b/day1/__init__.py
index cf48f78..bc44089 100644
--- a/day1/__init__.py
+++ b/day1/__init__.py
@@ -8,29 +8,23 @@ class Assignment(BaseAssignment):
8 return int(item) 8 return int(item)
9 9
10 def read_input(self, example = False) -> List[int]: 10 def read_input(self, example = False) -> List[int]:
11 return sorted(super().read_input(example)) 11 return list(super().read_input(example))
12 12
13class AssignmentOne(Assignment): 13class AssignmentOne(Assignment):
14 def run(self, input: List) -> int: 14 def run(self, input: List) -> int:
15 front_position = 0 15 result = 0
16 end_position = -1
17 16
18 while True: 17 for i in range(1, len(input)):
19 sum = input[front_position] + input[end_position] 18 result += 1 if input[i - 1] < input[i] else 0
20 19
21 if sum > 2020: 20 return result
22 end_position -= 1
23 elif sum < 2020:
24 front_position += 1
25 else:
26 break
27 21
28 return input[front_position] * input[end_position]
29 22
30class AssignmentTwo(Assignment): 23class AssignmentTwo(Assignment):
31 def run(self, input: List) -> int: 24 def run(self, input: List) -> int:
32 for a in input: 25 new_input = [
33 for b in input: 26 input[i - 2] + input[i - 1] + input[i]
34 for c in input: 27 for i in range(2, len(input))
35 if a + b + c == 2020: 28 ]
36 return a * b * c \ No newline at end of file 29
30 return AssignmentOne(path='').run(new_input)
diff --git a/day1/example.txt b/day1/example.txt
index 0bb977d..59dad67 100644
--- a/day1/example.txt
+++ b/day1/example.txt
@@ -1,6 +1,10 @@
11721 1199
2979 2200
3366 3208
4299 4210
5675 5200
61456 \ No newline at end of file 6207
7240
8269
9260
10263 \ No newline at end of file
diff --git a/day1/input.txt b/day1/input.txt
index 0546883..523d802 100644
--- a/day1/input.txt
+++ b/day1/input.txt
@@ -1,200 +1,2000 @@
11511 1171
21344 2173
31925 3174
41970 4163
51864 5161
61951 6157
71557 7156
81984 8154
91743 9152
101526 10156
111972 11151
121945 12153
131969 13132
141760 14135
152008 15151
161592 16143
17736 17141
181963 18149
191994 19145
202009 20147
211777 21142
221856 22143
231899 23139
241926 24141
251850 25144
26147
27137
28144
29147
30153
31151
32153
33157
34185
35186
36185
37181
38161
39177
40179
41177
42178
43173
44175
45183
46181
47191
48189
49186
50189
51192
52191
53189
54199
55208
56218
57216
58210
59209
60208
61215
62207
63198
64202
65204
66205
67204
68203
69205
70207
71208
72209
73218
74234
75231
76245
77244
78243
79265
80264
81279
82282
83283
84274
85276
86279
87281
88279
89258
90256
91289
92297
93300
94304
95308
96298
97302
98317
99316
100315
101314
102296
103298
104301
105298
106293
107300
108293
109290
110286
111282
112278
113280
114283
115292
116297
117315
118323
119324
120321
121324
122332
123334
124366
125375
126382
127388
128395
129400
130410
131405
132407
133408
134405
135403
136426
137425
138423
139440
140444
141469
142471
143472
144498
145501
146498
147499
148500
149502
150514
151515
152516
153518
154517
155516
156507
157514
158521
159523
160521
161513
162518
163531
164543
165546
166540
167528
168529
169520
170530
171533
172534
173532
174535
175538
176545
177550
178548
179534
180552
181555
182570
183571
184589
185595
186594
187598
188594
189597
190585
191568
192558
193545
194549
195543
196544
197548
198528
199533
200511
201510
202511
203504
204505
205510
206511
207514
208486
209506
210508
211474
212475
213485
214501
215498
216499
217500
218504
219502
220510
221507
222512
223508
224515
225517
226521
227537
228536
229532
230533
231532
232531
233535
234547
235558
236547
237546
238573
239591
240593
241576
242577
243580
244581
245588
246595
247594
248589
249586
250600
251602
252594
253593
254598
255586
256587
257583
258571
259564
260561
261562
262559
263569
264568
265547
266551
267554
268565
269575
270574
271573
272568
273567
274570
275578
276575
277573
278555
279557
280571
281572
282579
283593
284609
285611
286612
287614
288613
289614
290616
291615
292616
293610
294621
295626
296620
297621
298620
299622
300623
301627
302625
303628
304618
305615
306606
307597
308602
309603
310601
311624
312623
313621
314633
315643
316638
317641
318642
319641
320643
321633
322632
323642
324649
325636
326642
327662
328670
329683
330702
331712
332713
333714
334720
335725
336726
337724
338723
339722
340691
341692
342693
343674
344671
345664
346665
347678
348681
349682
350680
351681
352693
353694
354691
355693
356694
357691
358692
359691
360692
361691
362692
363693
364684
365686
366706
367705
368696
369683
370688
371698
372701
373700
374708
375691
376689
377688
378693
379680
380681
381683
382701
383709
384715
385716
386706
387686
388683
389676
390680
391681
26687 392687
272005 393676
281094 394691
291949 395705
396702
397703
398704
399709
400713
401716
402717
403715
404716
405715
406703
407714
408720
409708
410692
411665
412654
413664
414663
415649
416652
417676
418666
419682
420683
421687
422679
423680
424699
425706
426730
427729
428728
429732
430733
431727
432728
433738
434741
435744
436742
437722
438725
439722
440716
441717
442713
443712
444703
445704
446705
447699
448700
449706
450709
451692
452693
453688
454689
455698
456695
457696
458700
459701
460688
461689
462696
463678
464669
465674
466675
467663
468664
469675
470662
471667
472671
473679
474683
475682
476716
477717
478720
479724
480737
481727
482737
483739
484716
485733
486728
487723
488741
489743
490732
491727
492729
493732
494724
495721
496717
497716
498730
499743
500742
501740
502743
503734
504735
505733
506734
507747
508741
509713
510721
511719
512743
513745
514768
515769
516775
517774
518773
519785
520789
521788
522784
523773
524809
525808
526807
527808
528809
529806
530790
531785
532806
533811
534809
535812
536814
537817
538821
539822
540823
541829
542826
543827
544828
545830
546832
547827
548828
549827
550828
551843
552844
553843
554842
555829
556830
557834
558841
559843
560863
561858
562867
563871
564888
565890
566873
567874
568860
569874
570871
571877
572878
573877
574885
575886
576893
577888
578887
579888
580889
581876
582871
583855
584850
585851
586853
587850
588855
589868
590870
591871
592886
593896
594878
595882
596893
597867
598862
599860
600861
601862
602859
603871
604875
605874
606870
607864
608867
609864
610867
611868
612872
613880
614866
615867
616874
617878
618864
619872
620870
621859
622852
623857
624869
625872
626876
627882
628894
629872
630873
631860
632861
633862
634858
635859
636865
637858
638834
639830
640801
641804
642799
643802
644804
645800
646776
647779
648790
649793
650796
651800
652804
653803
654799
655790
656788
657783
658785
659807
660802
661783
662796
663808
664782
665778
666779
667794
668800
669809
670821
671828
672826
673827
674835
675836
676840
677857
678855
679859
680870
681861
682838
683837
684843
685823
686821
687812
688811
689827
690828
691818
692819
693811
694813
695799
696801
697784
698788
699793
700797
701803
702785
703786
704785
705774
706776
707777
708778
709776
710774
711775
712778
713779
714772
715776
716774
717773
718777
719778
720779
721777
722781
723769
724760
725746
726752
727748
728754
729758
730768
731786
732784
733783
734769
735770
736782
737796
738785
739774
740775
741781
742779
743780
744769
745757
746758
747774
748790
749792
750795
751805
752804
753803
754802
755792
756795
757800
758801
759796
760797
761790
762791
763797
764801
765797
766807
767801
768796
769799
770794
771783
772759
773784
774809
775810
776824
777815
778812
779845
780846
781848
782849
783869
784868
785886
786888
787896
788904
789902
790905
791900
792907
793912
794890
795891
796892
797893
798911
799912
800916
801924
802926
803897
804885
805886
806881
807878
808879
809908
810907
811901
812902
813919
814915
815905
816906
817941
818939
819944
820945
821946
822939
823936
824952
825951
826963
827958
828972
8291000
8301017
8311003
8321002
8331004
8341005
835990
836989
837992
838993
839987
8401003
8411004
8421003
8431006
8441011
845989
8461000
847999
8481001
8491008
8501012
8511013
8521024
8531038
8541039
8551024
8561027
8571021
8581036
8591034
8601053
8611061
8621064
8631104
8641105
8651106
8661085
8671086
8681090
8691097
8701098
8711101
8721086
8731087
8741084
8751069
8761070
8771069
8781074
8791071
8801070
8811074
8821060
8831058
8841068
8851054
8861060
8871054
8881055
8891053
8901054
8911042
8921043
8931045
8941044
8951042
8961043
8971027
8981030
8991031
9001030
9011029
9021041
9031045
9041048
9051049
9061043
9071040
9081049
9091050
9101051
9111054
9121056
9131048
9141045
9151044
9161043
9171046
9181063
9191077
9201105
9211108
9221110
9231126
9241127
9251131
9261133
9271130
9281135
9291141
9301168
9311175
9321172
9331156
9341136
9351137
9361136
9371135
9381137
9391156
9401154
9411158
9421163
9431151
9441152
9451168
9461176
9471177
9481172
9491173
9501187
9511196
9521197
9531192
9541191
9551180
9561186
9571185
9581186
9591189
9601198
9611196
9621195
9631196
9641197
9651191
9661171
9671172
9681154
9691184
9701170
9711171
9721169
9731179
9741178
9751186
9761187
9771189
9781196
9791183
9801180
9811182
9821170
9831155
9841133
9851126
9861127
9871126
9881118
9891117
9901126
9911128
9921147
9931148
9941144
9951160
9961171
9971177
9981179
9991180
10001162
10011152
10021150
10031149
10041156
10051169
10061165
10071164
10081165
10091179
10101178
10111179
10121181
10131191
10141186
10151187
10161179
10171180
10181181
10191177
10201182
10211185
10221189
10231201
10241243
10251242
10261239
10271240
10281242
10291243
10301231
10311232
10321242
10331254
10341264
10351267
10361268
10371271
10381272
10391265
10401260
10411263
10421266
10431254
10441266
10451261
10461251
10471252
10481214
10491212
10501222
10511225
10521226
10531235
10541245
10551255
10561256
10571255
10581252
10591254
10601250
10611252
10621257
10631259
10641270
10651271
10661281
10671279
10681286
10691273
10701290
10711291
10721290
10731297
10741295
10751294
10761289
10771300
10781307
10791304
10801305
10811311
10821301
10831306
10841310
10851306
10861305
10871306
10881308
10891310
10901316
301326 10911326
312002 10921330
321805 10931336
331493 10941318
341341 10951337
351828 10961313
361778 10971316
371767 10981329
10991324
11001331
11011338
11021337
11031335
11041336
11051340
11061350
381364 11071364
391973 11081365
401768 11091366
411929 11101352
421377 11111353
432000 11121354
441726 11131361
451913 11141375
462001 11151367
471574 11161371
481859 11171372
491793 11181375
501957 11191390
511959 11201393
11211392
11221391
521388 11231388
531593 11241391
541392 11251392
55724
561962
571999
58252
591982
601662
611892
621610
631343
641831
651862
661991
671394 11261394
681946 11271396
691935 11281420
701986 11291421
711911 11301424
721358
731322
741956
751988
761758
771490
781998
791744
801844
811294
821764
831543
841560
851562
861747
871870
881292
891989
901752
911471
921980
931897
941544
951914
961923
971944
981375
991987
1001993
1011742
1021975
1031479
1041977
1051934
1061939
1071950
1081992
1091983
1101474
1111643
1122010
1131814
1141942
115322
1161425 11311425
11321427
11331420
11341421
11351426
11361428
11371432
11381430
11391439
11401444
11411446
11421435
11431437
11441438
11451437
11461444
11471448
11481453
11491469
11501473
11511476
11521477
11531464
11541457
11551460
11561476
11571479
11581477
11591479
11601495
11611494
11621499
11631504
11641502
11651494
11661508
11671507
11681508
11691506
11701504
11711492
11721503
11731512
11741511
11751493
11761500
11771509
11781527
11791542
11801547
11811542
11821551
11831555
11841557
11851566
11861610
11871611
11881616
11891620
11901616
11911635
1171646 11921646
1181878 11931647
1191410 11941645
1201927 11951666
1211761 11961667
1221948 11971656
11981654
11991645
12001648
12011651
12021666
12031670
12041673
12051671
12061669
12071680
12081669
12091670
12101693
12111696
12121698
12131697
12141722
12151727
12161740
12171743
12181742
12191743
12201744
12211762
12221785
12231788
12241777
12251778
1231779 12261779
1241753 12271784
1251847 12281811
126274 12291806
1271659 12301824
1281773 12311791
1291960 12321792
1301772 12331793
1311674 12341795
12351792
12361791
12371789
12381790
12391802
12401803
12411811
1321809 12421809
1331568 12431842
1341978 12441843
12451854
12461857
12471842
12481847
12491856
12501859
12511865
12521867
12531868
12541883
12551875
12561874
12571877
12581878
12591877
12601862
12611876
12621882
12631864
12641865
12651868
12661867
12671869
12681850
12691849
12701839
12711840
12721845
12731843
12741855
12751856
12761877
12771875
12781877
12791880
12801861
12811889
12821891
12831894
12841889
12851905
12861907
12871911
12881894
12891897
12901908
12911909
12921911
12931913
12941918
12951919
12961916
12971915
12981918
12991919
13001924
13011941
13021942
1351952 13031952
13041962
13051963
13061948
13071947
13081949
13091955
13101950
13111949
13121938
13131940
13141950
13151948
1361947 13161947
1371976 13171935
1381953 13181936
1391961 13191935
1401937 13201937
1411932 13211929
1421781
1432007
1441941
1451393
1461573
1471745
148169
14989
1501408
1511974
1521810
1531979
1541967
155890
1561958
1571930 13221930
1581954 13231931
1591759 13241937
160720
1611936
1621576
1631407
1642004
1651964
1661462
1671875
1681943
1691938 13251938
1702006 13261932
1711739 13271933
1721378
1731922
1741924
1752003
1761792
1771985
1781729
1791966
1801355
1811940 13281940
1821928
1831357
1841955
1851896
1861115
1871836
1881971
1891329
1901807
1911997
1921359
1931801
1941933 13291933
1951965 13301957
1961981 13311958
1971711 13321983
1981905 13331987
1991625 13341986
2001968 \ No newline at end of file 13351985
13361991
13371992
13382006
13392007
13402008
13412007
13422021
13432022
13442033
13452035
13462025
13472029
13482037
13492053
13502052
13512053
13522044
13532048
13542055
13552043
13562033
13572002
13582006
13592007
13602009
13612008
13622010
13632012
13642015
13652006
13662007
13672008
13682007
13692025
13702022
13712036
13722049
13732075
13742076
13752046
13762050
13772052
13782067
13792068
13802069
13812059
13822077
13832079
13842098
13852101
13862106
13872107
13882106
13892108
13902117
13912100
13922094
13932093
13942092
13952091
13962089
13972098
13982096
13992098
14002109
14012112
14022113
14032116
14042111
14052115
14062122
14072120
14082116
14092117
14102123
14112140
14122145
14132125
14142117
14152118
14162116
14172120
14182133
14192135
14202178
14212192
14222189
14232194
14242196
14252198
14262199
14272193
14282195
14292187
14302189
14312205
14322218
14332203
14342207
14352206
14362204
14372210
14382209
14392230
14402229
14412226
14422222
14432255
14442250
14452275
14462276
14472277
14482299
14492304
14502307
14512306
14522320
14532324
14542340
14552341
14562344
14572343
14582348
14592349
14602351
14612331
14622334
14632333
14642337
14652339
14662344
14672357
14682355
14692356
14702340
14712325
14722324
14732340
14742351
14752352
14762350
14772379
14782386
14792387
14802388
14812382
14822358
14832354
14842360
14852361
14862367
14872358
14882356
14892353
14902339
14912342
14922343
14932342
14942343
14952345
14962347
14972350
14982347
14992349
15002347
15012348
15022355
15032324
15042322
15052321
15062322
15072336
15082337
15092338
15102342
15112358
15122359
15132363
15142347
15152332
15162322
15172320
15182327
15192329
15202319
15212300
15222305
15232308
15242311
15252310
15262309
15272314
15282321
15292326
15302324
15312342
15322344
15332360
15342322
15352323
15362314
15372309
15382300
15392299
15402300
15412295
15422296
15432309
15442316
15452315
15462319
15472316
15482319
15492318
15502327
15512328
15522330
15532336
15542338
15552345
15562361
15572350
15582352
15592360
15602363
15612401
15622398
15632407
15642403
15652388
15662390
15672377
15682392
15692389
15702394
15712402
15722399
15732388
15742393
15752397
15762395
15772404
15782418
15792432
15802412
15812436
15822430
15832459
15842454
15852452
15862453
15872446
15882448
15892445
15902454
15912448
15922454
15932464
15942454
15952464
15962491
15972504
15982503
15992513
16002514
16012516
16022511
16032517
16042505
16052508
16062509
16072507
16082513
16092517
16102515
16112522
16122533
16132548
16142549
16152553
16162552
16172554
16182557
16192562
16202565
16212566
16222567
16232573
16242574
16252570
16262573
16272575
16282580
16292583
16302584
16312589
16322592
16332593
16342592
16352594
16362595
16372594
16382584
16392588
16402595
16412573
16422572
16432581
16442589
16452591
16462595
16472589
16482615
16492628
16502640
16512651
16522650
16532636
16542637
16552606
16562609
16572614
16582620
16592623
16602632
16612635
16622645
16632647
16642642
16652643
16662644
16672650
16682649
16692660
16702634
16712627
16722628
16732634
16742636
16752638
16762628
16772627
16782631
16792629
16802628
16812638
16822628
16832627
16842628
16852630
16862640
16872649
16882656
16892657
16902679
16912680
16922684
16932694
16942693
16952694
16962693
16972704
16982714
16992720
17002735
17012753
17022758
17032767
17042768
17052772
17062761
17072762
17082760
17092740
17102738
17112757
17122758
17132793
17142795
17152793
17162794
17172803
17182808
17192802
17202811
17212807
17222813
17232817
17242818
17252826
17262830
17272867
17282855
17292860
17302864
17312843
17322838
17332842
17342840
17352849
17362845
17372837
17382841
17392837
17402833
17412823
17422820
17432829
17442853
17452860
17462861
17472862
17482883
17492888
17502852
17512863
17522862
17532860
17542864
17552865
17562870
17572869
17582874
17592863
17602872
17612874
17622882
17632893
17642903
17652907
17662936
17672940
17682945
17692956
17702972
17712989
17722988
17732974
17742976
17752977
17762979
17772980
17782981
17792983
17802971
17812970
17822973
17832974
17842976
17853004
17862999
17873001
17883008
17893009
17903013
17913016
17923027
17933043
17943026
17953031
17963034
17973040
17983055
17993054
18003080
18013082
18023090
18033092
18043091
18053090
18063089
18073082
18083084
18093081
18103086
18113084
18123086
18133083
18143090
18153094
18163096
18173102
18183110
18193111
18203094
18213100
18223123
18233134
18243135
18253142
18263136
18273134
18283113
18293112
18303111
18313123
18323124
18333121
18343120
18353126
18363127
18373126
18383127
18393113
18403111
18413126
18423141
18433142
18443137
18453139
18463098
18473103
18483115
18493119
18503117
18513114
18523119
18533120
18543093
18553092
18563099
18573104
18583105
18593106
18603121
18613122
18623124
18633131
18643141
18653131
18663132
18673147
18683149
18693156
18703123
18713122
18723108
18733117
18743119
18753139
18763157
18773152
18783146
18793112
18803113
18813112
18823114
18833091
18843071
18853072
18863082
18873083
18883084
18893098
18903102
18913109
18923111
18933109
18943110
18953101
18963100
18973102
18983103
18993108
19003114
19013113
19023115
19033116
19043117
19053120
19063119
19073117
19083150
19093152
19103153
19113155
19123154
19133157
19143150
19153143
19163144
19173139
19183127
19193102
19203123
19213122
19223138
19233140
19243145
19253146
19263139
19273141
19283153
19293154
19303155
19313127
19323129
19333131
19343132
19353130
19363131
19373161
19383190
19393200
19403179
19413178
19423169
19433167
19443171
19453191
19463205
19473203
19483208
19493214
19503215
19513217
19523218
19533224
19543228
19553229
19563215
19573214
19583237
19593246
19603223
19613220
19623209
19633207
19643220
19653233
19663238
19673234
19683211
19693216
19703220
19713221
19723216
19733219
19743218
19753217
19763221
19773223
19783228
19793224
19803244
19813245
19823251
19833250
19843256
19853257
19863258
19873262
19883264
19893265
19903263
19913272
19923274
19933255
19943254
19953266
19963267
19973264
19983267
19993280
20003282 \ No newline at end of file
diff --git a/day2/__init__.py b/day2/__init__.py
deleted file mode 100644
index 1d65d13..0000000
--- a/day2/__init__.py
+++ /dev/null
@@ -1,63 +0,0 @@
1import re
2from dataclasses import dataclass
3from typing import Generator
4
5from aoc import BaseAssignment
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(BaseAssignment):
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
deleted file mode 100644
index 2eab335..0000000
--- a/day2/example.txt
+++ /dev/null
@@ -1,3 +0,0 @@
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
deleted file mode 100644
index 1332648..0000000
--- a/day2/input.txt
+++ /dev/null
@@ -1,1000 +0,0 @@
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
1782-7 g: gqggggggg
1792-3 m: mrgvm
1806-7 c: cccpcfcc
1816-10 w: swbngwswnxnww
18213-14 r: rrrrrrrrrrwrrgrdr
1833-9 v: vctxhxtfvq
1842-9 r: jrrcslgplcprlvgthg
1852-3 n: hnnnsxclvdj
18610-11 h: zrhghhqhgzh
18715-18 z: zzzlzzzzzzzzpzqzpzzz
1883-8 f: fffffrfl
1891-4 l: rllllfl
1901-2 n: nnnnnvtnv
19117-19 z: zzzzzzzzzzzzzzzzzzqz
19213-15 n: nnnznnnnnnznnnn
1932-5 c: gcccncjmsncfcntjc
1948-9 h: hhhhhhhhbpsfh
1957-11 r: lzvvlbrgjgrr
1965-11 x: xxxxqxxxxxxx
1974-7 p: gqpkmppzpsmtzhfdfpl
1983-4 j: jjdjdg
19914-16 z: zzzzzzzgjzzzzpzf
2001-2 n: nnnvnwnnnnh
2014-5 z: jhzzz
2025-7 k: kkkkkkf
2038-18 z: khzzrzjzmzzvzzpcclm
2045-10 m: kjrhwkhmsm
20510-16 v: vvvvvvvvvvvvvvvwv
2069-10 l: xhvjsmllkcdtldfxlw
2078-10 p: ppjvppbpqhpwhppgbp
2084-6 m: jlmkhm
2091-3 k: gvpklkkkk
21015-16 g: ggjggggvgmgtpgcg
2111-4 j: jbjwj
2121-3 x: xxxpxxdxxhfx
21314-16 v: vxmhhdvvfjjqwhtv
2146-7 l: lnkchzlwxlp
2153-4 v: vvvcv
21613-14 p: pbqpppppzbmppc
2176-12 p: glqwzprpqbqf
2186-12 l: lllllglllllll
2198-9 n: nnsnnnndcn
2206-8 p: prwppppp
2211-10 q: dqqqqqqqqjq
22212-16 w: kwtbdnjqmwwxhwcwswkl
22311-14 r: rrnjghfrrrshlrq
2242-14 w: vwbbvcvgnxdmxl
2257-8 g: sqmggkgslkwlvggg
2261-6 q: tqqqqqq
2272-3 b: bbbr
2287-9 b: jnwbswfpbn
2294-5 n: nnlct
2303-11 s: ssssssssssp
2312-6 f: wjlpwf
2325-10 g: gggghqgqgb
2331-3 p: ppdg
2344-7 j: pjnkjjljjj
2351-2 v: ghmjzxmtxjxnv
2366-14 k: klgdzfmgdwhqdkhcnzm
2376-11 z: tgzpzzzzztc
2382-12 b: cxsmjbdgdnrb
2394-6 v: lxdvvh
2403-8 l: pnpdnrll
2417-8 m: mzmswvmmbxmzlmwhdvq
24213-14 s: khzssssssssszsssss
24310-18 d: dmfdlgcxdbzznbrlqn
24413-14 j: jjjjjjjjjjjjdpjj
24515-17 j: jjjjjjjjjwjsqjwjj
24610-15 x: xxfxkzxxhxxxxxvxxw
2477-14 c: wcccwcmmcccccxhcccc
2482-7 z: zmzvfzlszr
2497-8 k: jjkrklrkkv
2508-9 r: rrrrrjrtz
2512-3 w: tvws
2521-5 b: bbbjm
2531-2 q: tqqjf
2545-10 j: wlgjghjhjljwtpcdkqwk
2552-5 c: dzpkc
2565-6 m: mbvmkm
2574-15 k: stjkjvvxrmwdpkwsjqvc
2586-9 h: hwkgjplmhxwgvnbhwh
25912-13 z: zzzzzzzzzzzzz
2607-8 q: qqqqqqqqq
2612-5 c: clcwmccczclcccc
2622-5 l: jlcgfbflklvpfqxtwgg
2635-7 n: nnnnnnvnnnnnn
2643-5 f: gfktfffqvgltsbff
26510-16 p: jppbttppzpqppppp
2662-3 m: zmdm
2674-6 j: zsmtjjdnrpp
26817-18 j: hvvmrkfnnkvrjtjhjj
26912-15 d: dtddddddddtwxgld
2708-12 r: rdzrwfgrmxwttknxz
2716-7 s: rssbktxsgd
27211-13 d: ddddmwddddxddndc
2733-6 p: ppcpspfp
27412-15 j: jjjjjjgjjjjcjlzj
2758-12 v: tgjkwfbsxzzvvpmfs
2766-7 z: trbfbdz
2774-6 v: vvvvvpvv
2788-16 p: pnvppdpjppppppph
2798-9 z: lzzzzpdzk
2801-4 t: qttzz
2812-3 d: dhdd
2825-8 m: mmmkmmxmkj
2832-12 f: hfhzkwdmrlqvfkn
2845-6 h: hhhhhph
28514-15 b: bbbbxbbbbbbbbbh
2862-3 v: vvcj
28712-19 d: ddvdwwqdddcdtdmwdqp
2883-4 s: ssjssssssss
2892-6 c: wzzxqcdcnlgcph
29011-12 j: jjdrcjzjkjcs
2914-9 z: bzzzzzzxzz
2922-8 b: gjbfkxhb
2931-3 c: cpksst
2941-5 h: hhjhh
29514-15 j: jjjjjjjjjjjjjjr
2968-9 n: pcndxcfknfbnnls
29710-13 k: kkkqzkwbkkkrtn
2984-5 r: rzrrrnrj
29913-15 p: ppppppppppppppt
3003-6 j: fjqqzzzjm
3012-9 m: zmjhctkmf
3025-6 s: ssmjss
3033-4 c: jlfd
3048-12 d: qbddfhnddzgvddddd
3056-7 p: xfppppcppppxgp
3068-13 s: sssssssfssssssss
30713-17 g: xskktsjxlvgfxtzzgfj
3082-4 q: qqtwfqqnkvbvbhzs
3091-5 j: cjmjs
3104-5 c: tvccnc
3113-14 m: kkfhmnkkmztxtmn
31211-15 x: xxxxxpxmxxvbxxxvx
3139-11 l: nhgzwmmrkqhblnk
3147-10 x: xxxxxdmxxxxxxxx
31513-14 v: vvvvvvpvvvjvvcvv
31616-17 n: nnnnqnnbnnnnnnnpn
3173-4 j: jvjj
31815-16 q: zlqsgvpztknqjqqwqvf
3193-4 s: sssrsssdss
32011-13 g: ggqggmggswggdk
3211-4 t: jmtzttztqt
3222-3 v: vvvv
32311-13 g: cgjgxgggkgbggxg
3244-6 g: ggggqlhgmz
3258-15 g: prvxwzkvdhgkjlg
3266-9 g: gggggnsjlg
32712-14 p: mmvlpzkmpgtpvj
3287-10 k: kkkxkkjkkkdkkkp
32914-16 b: zmztqsrgvjjmswzkbnk
3301-2 x: xxbxxxxhx
3312-5 l: tlhsx
3323-5 x: xxxxn
3334-12 c: vdnmtmqwnxkcldc
3344-8 x: xxxxjglx
3355-13 s: vsssspszssssnsss
3363-6 k: kkhkkkknb
3373-5 t: pttqtwnprt
33810-14 m: ttjqvzmgmmjqzkd
3391-5 b: bbbbpbbb
34010-15 d: wdjrhvfngdtlkdl
3416-7 w: trxwdwww
3422-4 n: snxqlgtsmdnnjgwrgmms
34316-18 l: klslpljllqlcslqqll
3444-7 t: tttwzttjt
3459-10 f: ffffffffwf
3468-15 h: trhgxjchhxvvhqp
3478-12 w: wwwwwwwqwwwg
34812-13 x: xxxxxxxxsffqlxx
3495-7 k: kkkklkkkktkk
3501-7 m: wkmmqmmhf
35112-13 h: mhhchwhhhzhhcvh
3527-11 k: kkkkkkwkkkgkk
3534-6 l: hdlbll
3548-12 v: fvvvvvvvrvvv
3552-9 h: hzhhhhhhhhhhhhr
3566-8 b: qbqjpbbbdsshv
3572-3 h: hwhl
3584-7 l: mdllxjgdw
3593-9 f: rwffzfkpwbzp
3603-5 t: ttnttt
3617-10 c: mpcccpndqc
3626-7 h: fhhhljh
3632-7 v: pnvzcns
3641-3 v: vvgv
3655-9 s: ssssshsspsssssss
3664-6 j: mjjjjq
3675-14 h: hwbqghmvmmnvhhrqmj
3685-6 s: wctjsh
3697-8 s: sssscsjs
37014-17 v: vvvvvvvvvvvvvvvvv
37114-15 w: wxwwwwwwfwwwwsw
3726-7 v: ksvvvlpvv
3737-18 s: cssstsvsscshsstsss
3745-6 b: zzwbpm
3756-7 r: bvtmpkxspskr
3766-7 v: lvxrvqv
37715-17 c: ccccccccccccccccccc
3788-12 r: ghxpwhxcqjrr
3796-10 k: kzbcdkndqm
3805-6 s: tpsxss
3811-5 p: qlrlp
3824-8 q: qqqkqqqz
3837-11 v: vgvsxvwvlxv
3842-5 b: bgkbb
3853-18 j: jjsplxjxgqjfjrjxjjlx
3866-10 k: kxkhkkjkkrvkkk
3877-16 t: ttttttzttttttttbtttt
3881-7 l: ptzptslrjgwlfgwq
3898-10 v: vvqvvvvvvvv
3903-5 z: zzzhz
3916-7 c: cbrctgc
3925-16 l: llllxlllllllllllll
3936-7 c: chxclqcdrh
3941-10 c: jcmcccccwcccccjbvc
3958-14 h: zhhvhhhhhhhhhv
3964-7 n: rnnnnnfnnnnnvn
39710-12 w: wwwwwwwsgtwww
3985-8 c: cmbcctzcj
3995-7 f: fffskrf
4005-6 l: lllmzl
4017-14 m: mmmmmmmmmmmmmmmmmmm
4021-9 f: jfffffffzvffff
4032-5 g: ggmng
40416-17 x: xxxxxxxxxxxxxxxlx
4054-10 n: npkgjcfnnnnn
4061-13 d: bhkjgsnzxkdgwbdv
4076-7 f: ncqfzff
4087-10 h: hqhhhhhjhhh
4092-4 v: vnvvv
4101-6 w: thlmdwgwgtswvtx
4113-7 d: ddlkhvfdnpbdr
4121-4 q: qbfq
4132-6 f: rzfmfrjgcfjk
41410-16 b: bbbbblbbbkbbbbbbwqb
41513-14 j: jjhcjnkgvrnwjp
4165-12 l: lgqwvrlwcllllv
4174-8 j: jjgpdjssspjfdbt
4181-9 h: hhhhhhhhwhhh
4194-6 p: psmppt
4202-3 h: zhhhk
4212-6 b: bbbbbmbbvb
4227-9 z: zzzzzzgzdzz
4238-9 d: ddgdmdwddd
4242-6 s: nssssv
42518-20 x: xxxxxxxxxxxxxxxxxvxx
4269-10 m: dzckmrbhcmwvkcxmlx
42710-11 v: vwvvvvwvvghvn
4283-6 d: wcwxddjhnljfntj
42913-15 v: vvvvvvvvvvvvcvc
4301-5 x: xxfxfxxkx
4317-8 w: wqzjzwwwtw
4322-4 f: flgl
4333-6 n: ncfngngdnm
4345-7 k: kdkmbkkkkxk
4355-6 x: xxvxth
4365-6 r: rrhhzr
4374-6 b: bbbrbbbbbmb
43812-13 q: qqqqqqqqqzqkqp
4396-14 n: mlbflnrbhlhpdrfln
4409-12 q: qqqqqqqqqqqwq
4413-4 k: rkncnbk
4421-3 j: jjpj
4438-9 v: vjvczrvvm
4449-16 m: tmnmmmxmbmmmrtmmr
4459-11 q: qqqqqzqqsjxq
4463-5 h: hhhhcs
44711-12 k: kkkkkkkkkkkvqk
44811-12 x: xlxxxjjxxxpx
4491-12 n: nngtnhlnjfnf
4505-7 p: ppptppppp
45113-14 l: lllmlflllhllpm
45213-14 m: vdkmrdfzmkknmp
45313-15 s: ssssssqssssscssss
4545-11 h: hhhlxhhhhhhshh
45510-11 s: ssssssssssgsssss
4566-7 q: kqqqqmqnqq
4578-13 l: llllllltlllljll
4589-12 j: jjjjjjjjjjjlj
4597-11 s: gstcncsssscssssss
4604-6 x: lrtjfnhmpmxj
4619-20 c: cttccccccnccclcccccc
4621-8 w: cwwwwwwwwww
46312-13 n: nnnnnnnngnnnnn
4641-5 p: pfqwcpnppppwwpqppp
4657-8 g: gggsgglghg
4666-7 g: gggggggg
4674-10 s: ssssssssssss
4681-2 n: njsnnln
4697-8 z: gzczzwdzkkzz
4702-8 b: bbbwjfbh
4716-8 r: rrrrbrrbr
4722-5 k: lkkkkl
4732-3 c: swcgjcm
4742-10 t: ttttttttttt
47512-13 l: lllllxllllllqhl
4762-9 l: qtqxdpqqlwhqwlr
4771-5 q: qqxrn
47810-11 k: kkkkkkkkkckk
4791-2 f: ffff
4803-4 r: rrxr
4818-9 p: lppppxpsp
4822-5 s: ssstchlrds
48311-15 m: mmmmmmmmmmmmmmmmm
48414-17 k: kkkkkkkkkkgkkkktbkk
4851-2 x: xlxx
4869-10 w: wwcwptczwzzd
4871-3 c: ccgcccccccccccccc
4884-5 h: nhhhvh
4898-16 l: hlllfllllmltlhlldl
4904-5 w: wgwfw
4916-15 p: pjpbfrmxqgkxkbqhj
49212-17 l: llmtllnlllllllllnns
4938-15 n: zjnxzndnznklxzjlx
4946-9 r: wpsmstnkgtrmng
4953-7 s: csvhxhsgvrsrn
49610-15 h: hchhhdhkhghlhgsh
4972-9 c: mzbmtccktc
4983-4 x: xlzvxg
49912-14 k: zmkskknwkkkmkkwkgkkk
5004-9 r: vqrrrrdzpl
5013-4 g: ggvbxg
5025-8 q: xtrqrmqq
50316-18 l: zllllllllllllllwlnll
5046-7 s: zsqszss
5053-4 g: wghgpg
5061-6 z: hzzzzrz
5073-8 h: hthfqtccnq
50815-18 p: ppppppcpppppppnppppp
5093-4 l: qplkdmjntlghjlpxlq
51010-12 q: xzqkxdvgrqxqqzzxgjj
5116-9 q: qqqvsvqqxq
51212-13 g: shgcnjlgvcgqg
5135-10 l: llklplllmlsl
5143-12 l: vllqfzwnsqslpnvrbkh
51514-16 g: gjggggggggggggbzcggg
5165-11 m: ssmsmbnspmm
51711-13 v: mkqvvvvvmcvvz
5182-3 k: mkkchtzqsvkbclgxn
5194-7 r: rphrrnrrqwknrktrgsg
5206-10 z: vpjhzzzkqzjl
52116-18 c: ccccccccccccccchccc
5221-10 v: qvvvvzvvvvvv
5235-7 j: jjrjjjj
52414-16 l: zlgdrlqllgpllfhh
5253-6 l: llmllll
5263-4 l: smdl
5274-11 h: kgqhcpvrbldrhbq
5281-15 j: ljjjjjjjjjjjjjjj
5297-14 c: ccccccccccccccc
5302-10 v: vzvjvvvvvvvvv
5314-9 p: flbpmqmhkpt
53210-12 q: rtdrqmpcsqrhqqchqczw
53316-19 w: vlwxgtmjwrzvqgdwbdw
5348-15 c: gkcccslctcmszhc
5353-7 f: hhffhbbtbwzw
5364-9 s: msbsxssds
53713-15 p: pppppppppcpppxldp
5386-7 m: mmmmmqmm
53911-12 m: mxmmzwmmmdqpmp
5407-12 l: gncmgzxlqcllqgt
54112-14 t: tttttttttttdtt
5422-6 f: ffffffbrfffp
54314-17 h: hhdhpphhhhhhkhhxqph
5447-9 x: xxxxxxxxqxxxxxx
5455-18 j: vlwgjljtljtrdbxjnjwm
5465-7 n: jmncnsndnbwx
5478-9 r: rrrrrrrrr
54811-17 j: jjjjjjjjjjjjjjpjr
5495-6 x: xxxxjt
55013-15 l: nshmnjgzhmjdzvl
5519-10 r: wmsvzxsrqnnhfr
5528-11 k: kkkxxrkpktg
5531-7 r: rrrrrrrfrrrjwrd
5545-7 t: rztvtvplbrk
5552-7 w: wwwwwwsw
5561-2 g: sgggk
55712-13 j: jjjjjwjjjjvvjjjrjs
5581-2 c: cccccc
5593-5 g: khgzr
5609-16 b: bbbbbbcbsbbbbbbb
56112-13 z: zzzzzzzzzszkz
5624-5 r: rkrrrr
5631-2 t: tgbqtddbmq
5641-2 w: wkwwwww
56514-15 q: qqdqqqqqqqqhqnb
5666-7 r: rrrrrdmrr
5678-9 j: jjjjjjjqhjjjjj
5683-6 t: gwmlntffstzllvs
5696-8 h: hhhhnhhhqh
5709-11 w: cwcwwwwwgxwwbw
5715-9 w: wwwwcwwww
5728-12 k: snjmkkhrgkkzkkpskk
5733-6 q: lvqjqlq
5743-4 z: zzzn
5759-12 t: dvmvhttxtmzhrr
5763-7 k: kkkkkkskkkkkk
5776-15 v: vqvvvdvvvvbvvvvvvvvv
5783-4 z: jzzzzzdk
5798-12 b: bbbbbbbbbbbs
5803-9 m: nvhwmwgmmqkbmmmzb
5818-10 r: npwjcgwrwcrx
5821-5 r: rxdrr
5836-9 p: ppppppsbkmppkp
5841-4 j: jjjqjjjz
5856-7 b: rblbbbbbbp
5865-9 t: tttttttttf
5878-9 c: czcccccccc
58813-14 j: jjjbjjtbjjjjjj
5893-8 p: pwppzqvp
5903-12 m: mmzmmmmmmmmmmm
5913-9 d: ddjddddddqddd
5923-4 q: qqfq
5936-14 m: mmmmmbmmmmwmmlmmmm
5943-4 c: glgzc
5956-7 t: ttttttt
5961-4 s: sssbs
5975-8 r: drrkrrrzrrrr
59810-12 q: rvqfqqkllqqqlfrq
59911-13 s: szsssssssssssss
6008-11 t: tttttttsttvt
60111-15 j: zjjjjjjjjjjjjjjjjj
6022-4 s: dvfs
6033-4 q: zhpq
60410-11 c: cccccccccckc
6055-11 h: pnrjhtdlkzvhh
6065-9 l: nlllxgnrlllllllmq
6073-4 f: gfff
6088-9 g: grgggggbg
6093-4 j: pfwjhh
6102-5 l: jlfjr
6112-4 l: lblv
6123-10 q: qqvzhnqqhqvqq
61311-15 t: tfttttttktwttts
61412-14 b: gqptrzwclbdbfqd
6151-4 r: crrprr
6165-13 v: qvdvvvdnrqmrqp
6179-12 r: rwrrlsrrsrrjgdnrrr
6184-6 c: ccldccnp
61916-17 q: qqqqqpqqqqlqqqqmlq
6202-8 w: wwwwwwwhwmwws
6213-6 m: dmmbmmdmkxm
6226-13 t: xflrtblvcvfxnlf
6232-6 m: pmnsmm
62413-15 k: kstfvnkkgfvvkbk
6254-10 w: jqwcwlcwcwvqbfzfzfm
6261-5 d: ddndbmjxhfqqn
62713-16 p: pzvbszhqtpklpkpdw
6282-4 t: thttwmxjsbtp
6298-10 s: zbsvjcssfmf
6303-5 l: lltlwlllll
63112-14 g: hgfvvfpnrvpfggnss
6323-13 q: cjmbvgxchmqdqcvc
63312-16 j: cjjjjjjjjjjqjjjjjj
6341-5 m: kqrgm
63511-14 x: xcjpwbrrffxkfxh
63612-14 c: kgfnccxqczkcjkcc
6373-4 f: sfftf
6381-3 f: ffdz
63912-14 t: xftfxmkttdsttg
6404-9 f: ffhcgfffffff
6419-10 b: zjlbbsbzbx
6429-14 m: hhxmlmmmzmmtmm
6433-5 t: tkcpzjwr
6446-9 k: wkfdwflgrntrknsr
6451-4 l: gfml
6469-10 z: zzzzzzzzzrzzzz
6479-11 h: hhhhhhhhhhzhh
6481-9 k: kkkkkkkkzkkkkkkk
6492-7 h: sswmmkhkvhw
6502-5 m: pmbnnmzrkk
6519-12 f: xhpfbfdffkfw
6523-4 g: gfwg
65311-12 n: nnnnnnnnnnnpnnnxn
6545-6 d: dddddgddd
6557-9 j: cbjgnjqjgj
6569-14 r: rrrrrrrhrrrrrzbrr
6574-5 p: prphk
6582-4 d: dpdd
6595-15 p: zjsppzhqqgqspcppqpps
6602-7 r: rrrrrrfwrr
6611-3 h: hhqh
66214-16 g: zgvdgspkjrrvcgdlxg
6634-6 c: psgqccccvc
6649-14 q: qdqjqmttdtcqggqpqn
66513-18 f: ffffffffffffgffffff
6668-9 g: gggggggggggg
66711-12 x: xxxxxxxxxxxr
6682-17 c: cxcccfchcccccccbbcm
6697-11 b: nwbrzndvrfxwt
6703-4 x: xhwxxxv
67116-17 r: rzrrnrrrvxrrzrrrrrr
6722-3 f: zcvgbmxvwp
6735-6 b: fwbbbf
6746-10 m: mmmmmpmmmw
6752-4 n: bnnvndbpvzj
6763-4 t: dftfhdngqp
6771-2 v: vtvvvvvvvvv
6782-3 v: vgvv
6799-10 s: tsvsshsssgssssmsksss
6806-7 t: ttttttxt
6813-4 c: jcrc
6825-8 l: ztlmjljlb
6834-5 w: bwwwww
68411-14 r: rrrbrrrrrrnrrrs
68510-16 z: zzzzznzzzwzzzzzzzz
6867-13 m: mmmmmmfmmmmmmmmmmmmm
68715-19 w: fflzcwftmcswcwwnwts
68810-19 b: bjbbbbbbmwbbbbbbbbtb
68914-16 x: xxxxpxxpxxqxdqxxxx
6908-13 r: rkzrjbxrgwkhnb
6915-18 r: rrrzfkrrrrrrrrtrrnrr
6924-5 b: bbbfzb
6936-10 q: qnscxqqfqb
6948-13 w: wwwwwwwfwwwwwwwwww
69510-11 n: scvnsnpgnjnmdpnwct
6967-11 p: pjpppppdqpjpfppsptp
6977-9 n: jfsvclhfm
6983-8 h: whsggqscd
6992-12 r: mrmpxhrqsdmqpjshvck
7002-4 g: gdgggg
7017-12 s: ssssssssgsss
7027-11 l: dlklllnjlslbl
7035-11 k: kkkkkkkkkkkkkkk
7046-9 g: dhtvcgmfrjhk
7054-5 m: lmmmhmsmmmmmcmmmmzmm
70611-13 t: zgtnkjzmtkttmtkc
7076-7 b: bbbbbbv
7083-4 q: qqcq
70912-16 z: zzzszjzszzczmxtzzcl
7102-5 w: wwfhp
7111-2 d: gddkd
7125-12 f: fwqgbvrcfmwb
7132-5 w: bnxcw
7143-15 t: ncwftppphsxvztttjs
7157-10 p: ppnsppkcppsp
7165-6 v: vvrdvv
7175-6 z: hczwbzz
7183-12 p: gcphfgmzfkflspmxg
71914-19 m: jmfmfjpvbmfmmrdkdnzp
7206-7 p: pdwzppppp
7214-7 b: bbbnbbqbb
7227-8 r: frrrrrxxr
7238-18 b: jbphpzgvnppwhkxfzs
7241-5 c: pvhcc
7254-8 z: fzznzjzztstzxrz
7265-10 v: jvvwvvvlvlvqc
7277-14 p: svgrzfpxkdpbhph
7285-7 n: nncmvkn
72911-12 r: rrlrbrrrvrrr
7301-5 r: vtngrndhqf
7312-4 k: knjp
73211-14 h: hhghhhhhhhxhhwhhh
73316-18 r: rrrrrrrrrrrrrrrpnb
73410-14 d: dpddbvdtdmxfdddd
7352-4 t: cztt
7365-6 r: rzrprd
7372-5 n: ngwdngc
7381-6 q: qqqzzwwqqqkqqq
7397-8 l: lllzllpxl
7401-4 b: kmltzzjzbppgwq
7411-4 t: ttttb
7423-4 p: dkxpcph
7437-15 z: zzzzzzhzzzzzzzzzz
7444-7 c: cdljfccm
7453-8 p: hbpxhlmc
7464-5 w: wwwlw
74714-15 b: lbqbbbkgbbwfbdb
7486-10 j: jtjjvpwwthwcsj
7495-8 t: ltvtttbtqxtzq
75012-13 t: ttttttttjttztxt
75116-18 p: ppppppppppppppxpxbpp
7524-7 n: nnnrnnnnt
7531-2 r: rfrr
7545-6 g: ggggvggg
7553-4 s: ssbw
7563-4 l: ldll
7578-10 m: mmmmvmmcjkmg
75810-18 w: wwvwwvwwhwwjwwwlwxcm
7591-2 x: cxxxxxxxxxxxxx
7601-5 b: bbbbkbbb
76112-14 z: zwqzrrzzvqqzzszrx
7621-5 z: lzzfzzzfz
76316-17 t: ftgstrgptwmptxrzt
7649-10 b: bbbbbbbzbbbb
7658-14 w: wwwwwwwjwwwzwzww
7663-4 h: qhnh
7672-12 d: dnddddkddddzdxdddd
7685-17 x: xxxxxxxxxxxxxxxxx
7699-10 h: hhhhtqhhhrh
7706-7 p: pfmppppp
7715-8 v: vbvvvvvs
7724-5 h: qhfhqcb
7733-12 d: dlddlhhwvcrdrxwpt
7742-3 n: nnwnp
7754-8 g: ggggjgfgzgdglgg
7764-9 h: vrghsphxhxzsxw
77712-18 z: qrzzzfwdcwnzdzkckz
7786-8 v: zvmlqwwh
77910-14 p: pppxwpndfpwppdpptmpp
78012-15 q: qqnqkqkqjgrcqfq
7812-4 n: pnszjnnn
7822-3 c: zkctcfc
78317-20 l: lvjlcclllslzllllwgll
78416-17 k: dfgskkfkkkfjhfvfks
7851-3 t: tjttltt
7862-3 b: bbzbb
7878-15 t: dtttttsttlttttzlttj
78813-14 v: vvkvvjvgwvvvkvf
7897-8 v: tvvvvvvhv
7903-10 d: bxktdrtddtdtsh
7914-12 j: npwxjjjjbjkq
7921-4 l: tlllll
79312-13 b: lbhpxbbbvbbbqbbbsbb
7949-15 v: vqhsggmpvmqtbzzlq
79512-14 f: ffhfjfffqfxqff
79615-16 m: jtnsjwpggbpxlhqmk
7972-4 n: xptncjsstcl
7985-8 q: dmwklqjqnzb
7993-4 c: vcgl
8001-6 h: hhhhhh
8018-9 x: ckblstcdx
8025-7 w: vwphwwmwwwww
8032-4 x: kxxxdh
80410-11 m: kmmvmmmfmksmj
8054-7 v: zvrvvvdvvv
8061-8 p: npxbwqpxbjrnrv
8075-11 t: jfkwttkstrxlgts
8081-2 g: ggggg
8095-7 p: tpppppr
81015-17 v: vvvvvvvvvvvvvvvvvvvv
81117-19 w: dwjwjznczwgfmkmhdtw
81210-13 f: fffffbqfffffffffff
8134-14 g: ggggggggggggggg
8142-3 d: bdkfd
8157-8 x: xxxxxxxx
8166-9 h: hmshdhvvhkhbhcshs
81714-15 g: gggggggggggggghg
8182-16 q: qqsxqqqdgqqghqqk
8193-17 p: ppbppprppppppppphppp
8208-18 v: vczfvqcvvcspndvxwjdv
8211-3 d: fdddd
8229-11 j: gfjjnjsdnhb
8238-10 s: hkhshttssl
8245-10 f: ffsffffffqxfff
8257-10 w: wwlwwckwwf
8264-8 x: blxxmtbgnblfgnfwz
8274-5 p: rlpkprppp
82813-14 s: ssssssssssssswss
8294-8 h: hhhdhmhhhjhlhh
8306-7 h: chhhhhfhzqhdhhh
83115-17 m: msvrmwzkzvmmgrmmpm
8324-6 x: qgtwwxhgsxxmklgmn
8334-7 p: rpzkdpp
8343-4 v: vvvhvjv
83516-18 p: pppppppppppppppppmp
83615-17 k: kpkkkkkhqkkkkklktk
8375-7 s: ssbxxsk
8382-4 l: cwllll
8396-9 v: cvvrrkvrvsdvfwcv
8401-7 w: qwwwwslwwwwwwwwrww
8412-12 c: clcccccccccccccc
8425-10 m: ftcmrpmvrzc
8437-11 w: wwwwwwwwwwtwwwww
8442-3 n: jngdlvgcvtkmn
8451-8 v: hvvvvvvvvv
8463-17 p: jrpvltxlcqgpfxwsj
8471-5 k: kkkkfkk
8481-10 c: cccccccccfc
84913-19 f: flfffffxfvffffprfmcb
8503-6 g: htglsbvrzcghjmd
8519-11 h: wrwghhhhnzhxl
8525-12 z: zzkzzhnjpmkvzzzw
8537-11 w: qrwcwwstwddw
85415-19 m: mmmmmmmmmmmmmmmmmmmm
85515-16 m: mmmmmmmmmmmmmmhmm
85612-16 x: xxxxxcxxxxxlxxxxxxx
8575-10 l: qwfqlllgsdjrlspll
8583-4 f: hffmfffg
8596-7 l: lwlllbllnl
86011-20 t: tttkrtlpttwftmwttttt
86111-12 d: ddbdddddddpktdd
8624-11 w: sxkmkwdwwnlwxmdvfx
8634-5 k: kkzkpk
86413-20 n: nnnnnntnnnnnbnnnbnnn
8655-7 c: ccccwcc
8661-6 h: cckkhhdhhwmhhmzchhwx
8671-15 b: hbbbbbbbbhbbhbbbbnbb
8681-2 w: mwwww
8691-2 f: sfzgwtf
8703-4 s: sssj
8711-3 w: xwww
8721-16 p: ppppppppdppppppp
8731-6 c: ccxmccccc
8744-8 b: rtpbcfbr
8759-10 s: sszssstshss
87615-16 x: xxxtxxxxxxxmxxxzx
8779-15 k: kkkkkkkkkkgrkkkkk
87811-13 x: xtxxxxxxxxrxkxx
8791-5 f: rffflfffnf
88014-16 n: nnxnnnnnnnnnbnzbnnn
8813-6 d: ddddddndbdfdhd
88214-15 q: sbqqhvqqqvqgxfq
8835-6 b: jglbfjb
8841-10 l: llllllcllsll
8853-5 z: lwzzz
8865-12 k: kkkkmkkkkkkkkkkl
8878-12 v: vvtsvfvnzvhpm
8885-7 l: llllllll
8894-7 f: nqfffkbdf
8904-8 j: jjjljkhj
8919-15 h: vgzpgfhfhmwdhbqc
8921-5 p: ptpsjqpnp
8935-8 q: qbqqwqnq
8945-7 w: wwswwxsb
8953-6 h: nnhrnhkmxqkt
8961-3 w: jwwww
8972-14 x: cxxxxdxxxxxxxbxx
89812-14 x: xxxfxxxxqxxrxt
8994-9 f: fffkffbsfkxv
90012-13 m: mmmmmmmmmmmwm
9016-10 p: ppppphpppxppp
9029-12 v: vsvvvvkmjvvvn
9033-12 r: shngvhbmjrpr
90412-13 w: wqwcwxclwwwfw
9054-5 r: nnrrdz
9064-19 c: vbcpwzvxssccqkqgmxvj
9071-6 g: tglxhggng
9089-10 z: lvzhvtglzf
90910-16 f: gddxfftggfbmxwts
9104-12 k: kkkklkkkkkkpkkk
9117-11 m: mmmmmmmmmmtm
9122-10 z: vkfpjrrvlwlbjwk
9133-7 w: dtdzwjqgxdwjhchwwd
91413-14 v: vvvvvvvvvvvvvvvv
91511-12 c: cjccccqccccc
91614-15 h: hzhrhkhfthrhxht
9173-5 v: dtwvvvvvcvvvrvsvvv
91810-14 q: qhqqkqcqqqqqlfqgsqq
9193-14 f: ffvffffffffzffffff
9201-12 x: xxtxjxzxxxxxlxxxxxxx
9212-4 c: pgpc
9221-4 r: fdrr
9235-7 r: rrrrrrt
92410-11 d: drdddddddmddddpd
9252-5 f: gfrlctftzr
92610-13 z: nrzjjrzjzzplzmzzbn
9278-10 c: cccccccgbc
9285-8 g: fgggcndwgggbjnfgb
9296-9 d: ddddghdgbddm
9303-7 j: ftjjjvjqcp
9315-6 s: sqvfstz
9325-18 k: kkkwkkkkkkbkkkkkkkbk
9333-6 f: djffffkff
9344-6 p: pqppppr
9355-9 h: hhkhjhmgcqvfhqvhn
9368-12 t: tttttttvttttt
93714-15 z: pzrzhjqmtbcnzdzr
9381-17 s: ssssssssssssswsss
9391-4 s: ssqh
9401-5 r: rrrrrrr
94117-18 h: hhhhhrhcxhhhhhhhhb
9427-9 t: dttttjmtv
9431-3 c: mcccp
9444-5 x: xprbxql
9451-5 q: cqqqqqq
9463-4 g: ggggw
9471-7 f: ffffffnf
9487-9 t: ttttttttttt
94911-15 m: mmlmfmmmmmmmmmmqm
9504-5 n: npnnnn
9514-5 b: zvbbvbjhlkf
95211-16 c: gnqmcvtzwpcbvncwcc
95312-18 q: qbqkwqqvqwqqnljsqpqt
9546-10 r: wcrtdrlkgjr
95516-17 p: gppppppppwvlgpptp
9561-13 g: gqghbwqqzwwdk
9571-6 l: rlllll
9583-7 j: pdjjtcqwbqtpfkjbwgq
9597-17 z: zzhsnjrhrzzfrqszdhdg
9606-7 n: xnvnhnrn
9616-7 r: rrrrrrzr
9622-3 c: ccmcccc
9632-3 v: vvdv
9643-9 f: mlfffshbfdff
96511-13 v: dfvkltvjvvvvx
96612-13 c: mqrccccbccbgcccccvc
9679-13 w: wwwwwwwwwwwwcwtww
9686-8 d: pdvgddtmvwdkvdtzf
9691-9 s: hsssssssssdsls
9701-5 c: zbsslcd
9711-4 p: bpppppppppp
97213-16 s: sssxslsscssbqsspcs
9731-10 p: pskwpppzpppppks
9743-5 c: ccppccmcc
97510-11 b: rhbbbbbbbzbb
9762-3 d: ndhjhd
9773-4 s: sscs
9785-6 d: dtwwnt
9794-5 d: dddddddd
9805-9 z: zztzvzzzz
9812-6 v: vpqdll
98213-14 d: nxkmbkkpxkcdld
9831-3 s: ssss
9848-14 z: zzzzzzzzzzzzzbz
98516-17 f: fffnffffffftbzffpkf
9863-4 m: mtcm
9873-4 r: mrdrd
98811-13 k: ljkmhdkkkcpjzlmkkzkk
9892-3 d: tdqnxpd
9903-7 h: mrvdlthxchpvwvssqpk
99113-17 j: jjfjjvjjjjjzjsjjksxr
9921-4 n: rnnx
9937-10 m: mmmmzmxfmm
9941-6 r: lrrvrrrrm
9954-18 r: rrrdrrrrrrrrrkblrr
9966-7 k: kkkkkkl
9974-6 v: vmnfvvvvmcmlh
9986-9 g: jgcgggkbbmgbs
9997-8 t: ttcfwtgjtcttv
10003-4 j: tjjj \ No newline at end of file
diff --git a/day3/__init__.py b/day3/__init__.py
deleted file mode 100644
index 4954c15..0000000
--- a/day3/__init__.py
+++ /dev/null
@@ -1,43 +0,0 @@
1from functools import reduce
2from typing import List, Generator
3
4from aoc import BaseAssignment
5
6
7class Assignment(BaseAssignment):
8 def read_input(self, example = False) -> List:
9 return list(super().read_input(example))
10
11 def slope(self, input: List, dx: int, dy: int) -> Generator:
12 for y, row in enumerate(input[::dy]):
13 x = (y * dx) % len(row)
14 yield (x, y)
15
16 def get_trees_for_slope(self, input: List, dx: int, dy: int):
17 trees = 0
18
19 for x, y in self.slope(input, dx, dy):
20 if x == 0 and y == 0:
21 continue
22
23 if (input[y * dy][x]) == '#':
24 trees += 1
25
26 return trees
27
28
29
30class AssignmentOne(Assignment):
31 def run(self, input: List):
32 return self.get_trees_for_slope(input, 3, 1)
33
34class AssignmentTwo(Assignment):
35 def run(self, input: List):
36 return reduce(lambda accumulator, value: accumulator * value, [
37 self.get_trees_for_slope(input, 1, 1),
38 self.get_trees_for_slope(input, 3, 1),
39 self.get_trees_for_slope(input, 5, 1),
40 self.get_trees_for_slope(input, 7, 1),
41 self.get_trees_for_slope(input, 1, 2),
42 ])
43
diff --git a/day3/example.txt b/day3/example.txt
deleted file mode 100644
index 8f551de..0000000
--- a/day3/example.txt
+++ /dev/null
@@ -1,11 +0,0 @@
1..##.......
2#...#...#..
3.#....#..#.
4..#.#...#.#
5.#...##..#.
6..#.##.....
7.#.#.#....#
8.#........#
9#.##...#...
10#...##....#
11.#..#...#.# \ No newline at end of file
diff --git a/day3/input.txt b/day3/input.txt
deleted file mode 100644
index 6cfcb73..0000000
--- a/day3/input.txt
+++ /dev/null
@@ -1,323 +0,0 @@
1...#...#....#....##...###....#.
2#.#...#...#....#.........#..#..
3.#....##..#.#..##..##..........
4.....#.#.............#..#......
5.......#...#.##.#......#..#.#..
6#.#....#......##........##.....
7.....##.#....#..#...#...##...#.
8...#...#..#.......#..#...##...#
9..........#...........##.......
10..#..#..#...................#..
11#..#....#.....##.#.#..........#
12.#.##.......###.....#.#...#....
13.#..##....##....#.......#...###
14#.#..##...#.#..#...............
15.........#....#.......##.#.#...
16...###...##....##...#..##.#..#.
17....#.........#..#...#.......#.
18....................#..#.#.#...
19..#....#..........#...........#
20.#.....#..#.....##........##..#
21#..##..#...##............#..##.
22.#..##....#..........#..#.##.#.
23..#####..#.#............##.....
24...###.#....##..#.#....#.....#.
25.#.......##....#...#.#.....##..
26...#....#...##.#...#..#........
27.####.....#....#.#.#...#.......
28...#....#.....#.......#........
29#..#.#.......#...#............#
30...#.....###.##....#.#.###.#...
31.#.........#.......#.#....##...
32#.#..#...#.#...##......#..#....
33.....#...#..#.#...#..###..#....
34......#.........#...###........
35.....#..##...#..........#.....#
36..#..#.#.##.#...#....#....##..#
37##....#.##...#.##.#..##....#...
38.....#.#.#.#..#....##.#...#.#..
39.....##.......#........#.......
40...#.#.....#...#...##.#......##
41........#..#.#...#.#.....#.#..#
42#..##...#.#...##..##...#.#...##
43.##.#.#..#...#.....#.#.##.#...#
44.#.####.........##.........#..#
45.##..............#....#...#...#
46......#...#..#...#..#..###.#...
47.......##...#.#.#..##..#......#
48.....#....#..##..#.........#...
49.....#..#.#.#........#.#.####..
50#..#.......###....##...........
51#..##..........#.#......#.#....
52.....##........#...#..##.......
53###...#.##.#.#.#.#.##...##.....
54....#...#........##.#.##..##...
55.#..#.#.#......#.......##..#..#
56.#...#.................#....#..
57.##..#..........#..##.......#..
58.#.#.#.....#..#.#.........##..#
59...#......##...#.......#...##..
60##...###....#.###.............#
61#.....#.#..#.#..#........#.#.#.
62.....#.#......##..#.#.....#.##.
63.......#...........#..#.......#
64..#....#.#.#......#.....#...#..
65.....##........#..##..#..##....
66#.#........#...##....#.#..##...
67#......#......#....#..#...#.##.
68....#.#.......#.#.#............
69......####.#.##...#.#.##.....##
70..###.#.#..#.........#.####....
71.#.......#..#.#....#.#..#.#.##.
72#....#....#............##...##.
73....#....#............#....#..#
74..#........#..#....#..#..#...#.
75.#......##....#..........#....#
76#.##.....#..........#.###.#....
77....##...#.....#.#......#.##...
78#.#.....#.......###.###..#..#.#
79..###..##.............#.####.##
80#....#.....#....#..##.......#..
81.....#....#...#.#.#.#..#...#.##
82...#.....#..#....###......#.#.#
83##.........#.#..#..#.#..#.....#
84.#.....#.#....#.........##..#.#
85.#.#..#.###..#..#..........#...
86.##....#.#.#...#......##.....#.
87#.#....#....#...#...##...#..#..
88#...#........#....#....#......#
89#......#...#..#.#.##.....##..#.
90....#...#......##...#..#....#..
91.#......##.##.......#.......#..
92.#...#..####...........#.#.#...
93.........#...#.#.........#.....
94#.##.....#.#..#.#.###...###..#.
95#...##.###......#.###..##.#.##.
96...##.#.....#....#..#......#...
97#....###.#..#...##.....#......#
98........###...#...#............
99........#....#...#...#....#...#
100#....#..#..#....#.#........#.#.
101##...#.....#.#..........#..#..#
102#.#...##.....#........#...#...#
103##.#.#.......#...#..#.###....#.
104.#.......#....##..##...#.....#.
105#....#....#.....#.......#......
106.##.##.##...##...#.#.#..#..#...
107#..#..#.##....#......##....###.
108.......#.#.........#..##.#...##
109.#..##...#....#.....#..........
110..#.#...#......#.#..#..........
111.##....#.#.#.##.......###...#..
112..##.#...#.#.#.#.......#..#....
113#..#.......#...#........#.....#
114.....#.......#......###..#.....
115...##.#.......#.....##.....##..
116##..#.......#.#.....#....#.....
117..#....#.##.##...#...#......#..
118.#..#.###.#....###........#...#
119....##.##...##..#..#.#....#....
120..###...##.....##..............
121#....#...##...#....#..........#
122.##........#......##...##...#.#
123..#.#.##..........#......#.....
124...#...#.........#.##........##
125..#.#..#.#..#...#....#...#.....
126...##...#..#.###.#..#.#...#....
127....###........#..#..##...#....
128#.#....##.......#.#........#...
129.###...#..#.#.#.#..#...#..##.##
130..#.........#####.#......#..#..
131#.....#.....##..#....#...#...#.
132...#..#....##....##.....##.#...
133.........#............#.##.....
134....##.#..#....#.##.......#..##
135.###....#.#..#......#.#.......#
136.###...###.#.........#.#..#...#
137.....#........#..#.#..#.#..##.#
138.###..#....##.........#..##....
139..#.......#..#..##...#.###.#...
140#.......#...........#.#...#.###
141#.##.##...##.#...##..#.....#...
142..#..#........###.#.....##.....
143#.....##....#...##...####..#..#
144....#........#...#...#.........
145......#.#.#.#.......#..#.....##
146..#..#....#.....#.#...##......#
147..#....#...#.###.........#.###.
148...#......##..#.#.....#...#....
149...#.......#...#...#........##.
150............#...#..#....#.....#
151....##......................#..
152#.#.#....#....#..........##....
153#.#.....#.#.##..#...#.##....##.
154...#...#..#...#..#.#.#.......#.
155#.....#..........#.........##.#
156#...##..#..#.#.......###....#..
157.#...#..##....#.....##.......#.
158....#.##.....#.........#.#....#
159........#.#...####..#.......#.#
160.####...#.#......####.....#.##.
161###..#....#..#.......#.#..##..#
162#......#.#....##..#.##.#....#.#
163...###...#...#..##.#..#..#.#...
164...##..##....#..#.....#........
165.....#..............#......#..#
166......#....#......#..#.........
167#..#.....#.##...........##.....
168.#..#.#..................##....
169#.#..#..##...#....#.#......#...
170.##.#.##......#.##...#...#...#.
171..#...#.........#.#..#.#....#..
172.#.####.#..#.#......##.#..#....
173#..#.......#....#..............
174....#............#..#..........
175.....#####.....#.....#..##...##
176#.#....#.#...............#..##.
177.#.#..#...#......#.....#.#.#...
178.#....#.#.#......#.....##....#.
179....#....#.##..#.......###...##
180.....#..#.##...#...#...#..#.#..
181##..#........#.#..#..##......#.
182.#..#..##.......#..#.....#.....
183.#.#.....###..##.#.#...........
184..##..##.####..........#..#....
185..##..#..#...#....#......#.#...
186#...#.#......##.....##.#..###..
187#..#..............#........##.#
188.........#.##..#.#..#..##.##.#.
189#....##....#.#..#.#...##..#....
190.#....#.......#............##..
191.......#.#.......#...#.#......#
192......##...#.......#.#........#
193..###..#.#.##....##...#....##..
194..##.##..........##..###.......
195.#.#.#..#..#.#.......#.#...##..
196..#..##.........#.###..#......#
197....#.#.#...##.#...#...##..###.
198..###..##.........##...#...#..#
199.#..##...#.......#.......#..#.#
200........##....##....#.#.###.#.#
201#.....#.#.................#.#..
202....#.#.#.....##.####.#......#.
203....#.......#.#.##.##..........
204...#...........#...#.##...#.###
205#....#....#..........#.##......
206##..#...........##.....##.##...
207.#.##...##..##....#..#.....####
208#...#...#.##..........##..##...
209....##..#....#.....#.#...#....#
210..#....#..##...###.#.#.........
211#......#.#.#...#...#.........#.
212#............###.#.#.#..##...#.
213.##.....####...##..##..#..##.#.
214#..#........#.....#.#.....#...#
215#............#....#.#.#........
216......##...##.#....#.....#...#.
217..#........##......#.#.....##..
218.#..#..#.....##.......#..#.#..#
219.#....#..#....##.#.#.#..#..#.##
220.####.#..........#...#..##.....
221...###..###...##..#............
222#..#.....##.#...#..##..#.......
223.....##....#...###.##...#......
224...##..#...#..#..##....##....#.
225...###....#.###.#.#.##....#....
226##.#.#.....#....#.#....#..#....
227.......##.....#.#..##...##...#.
228.#....#.#...##.#..#....#.....#.
229..#...#..#...#.##........#...#.
230#....#......##.#....##...#.#..#
231.....#..#..#..#......#...#.#.#.
232..###....#........#...#.......#
233###...#.......#.#.......##.##..
234......##.....#.#........#....#.
235#.##..#.#.#.#..#....#.##.....#.
236..........#.##.#...#...#..#..#.
237..#...##.#..........#..##.###..
238..###..##.##..#.#...##.####..#.
239#.#.#...............##....###.#
240....#.........#.#....#.#....#.#
241..#...#.###...#....###.....#...
242..#..#....#...#............#...
243.#..#....#..##.....##..........
244..#....#.#...#.#.#.#.......##.#
245.........#....##........#.#....
246...#..##.#..#.##...#...#.#....#
247....####...#...####.#....###..#
248......##...#.##.#.......#..#...
249#.#...#.#...#.#...#....#.#.#...
250.#.....##...#.....###.#....#...
251......##.....###...#.#...#.#...
252#..#..##.#.#......#....#..#..#.
253....#.###.....#..#...#.##.....#
254##.##........#......#....#..##.
255##.....##.#.....#.....##.....#.
256.....#.##...#.#..#.#.#.....#...
257.#.##..#...#.#..#.....#.#......
258.....##.......#..#...##..#..#..
259#.....#..#.####......#........#
260.#..#..##.#..##............#..#
261.##..#.#....##.##.....#......#.
262.......##.........#..#.........
263.#...#.......................#.
264#......#.#....##.#.......#..#..
265..##..##......#.......#....#.#.
266##......#......##...##.........
267..#....####....#.#.....##.#.#..
268..........#..#.#.#.....#..#.#..
269##..##...........##.......#....
270##....#.#....#..#......###....#
271...#.#.#..#.......##.......#...
272#....#.......#.......#.........
273...##......##....#...#......#.#
274#......#####.#.........#.....#.
275#..#.............#..#....#...#.
276.......#.##..#..#..#..#....####
277......#.##..##..........###...#
278.#.##....###..#........#....##.
279#......#..#...###.#...#.....#..
280.#.#.......#....##.......#.#...
281..#.##..#..##.....#.........#.#
282#.#...#..#.##....#.......##....
283.#.....###....#.#..#...#.....#.
284#...#..#.......#.#.....##...#.#
285#.#####.........#....##.....#..
286#....#..##...#....#.##.......#.
287.#.#.........##....##....#.....
288...#..##.......#....#.#.#......
289#.###.##...###....#.....#.####.
290.#...#.#.#..##.#..........#....
291#.#.....#.##.#..####.....##.#..
292...###.##..####.......#......##
293.##..#.........#...#.#.....#.##
294..#.....##....###.....#.#...##.
295#....#....#..#....#.##.........
296......###....#.#..#..#....##...
297.#.#................#.......##.
298...#.......#.........#.#.......
299...#..........#...##.....###...
300....#......#...#...............
301.##...#....#.....#.##......#...
302.#.....###...##..##...#.#......
303....##........#.....#...#....#.
304#.........#.#...##...#.#..#....
305...#.#.....#.#........#.#....#.
306.#........#.....#.#.#.#.#..#...
307....#...#.....#.#....#........#
308..###.#....#.#....##...##..#.##
309.#....#.#.####.#.#.....#.......
310.#...#...#.................##.#
311..................##..#..#.#.#.
312.#..#............##....###.....
313.......#....#...........#......
314....#.#.#.....###.........#..##
315...#.#....#.#.##.#.##.....##..#
316.#.##.#...##...#.......#.....##
317.#............#...#..##...#.#.#
318#.##..#.##..#..##.###.#........
319..............##....#...#..#.#.
320.#.#...#.#....#....###........#
321.#....#.#....#......###........
322..#.......##......#.##.....#...
323.....#......#..#...#.#.....#... \ No newline at end of file
diff --git a/day4/__init__.py b/day4/__init__.py
deleted file mode 100644
index 89f697c..0000000
--- a/day4/__init__.py
+++ /dev/null
@@ -1,107 +0,0 @@
1import re
2from dataclasses import dataclass
3from typing import Generator, List
4
5from aoc import BaseAssignment
6
7hgt_matcher = re.compile('(?P<value>\d+)(?P<unit>(in|cm))')
8valid_units = {
9 'cm': {'min': 150, 'max': 193},
10 'in': {'min': 59, 'max': 76}
11}
12
13hcl_matcher = re.compile('#[0-9a-f]{6}')
14
15
16@dataclass
17class Passport:
18 byr: int = None
19 iyr: int = None
20 eyr: int = None
21 hgt: str = None
22 hcl: str = None
23 ecl: str = None
24 pid: str = None
25 cid: str = None
26
27 def __post_init__(self):
28 self.byr = self.byr and int(self.byr)
29 self.iyr = self.iyr and int(self.iyr)
30 self.eyr = self.eyr and int(self.eyr)
31
32
33class Assignment(BaseAssignment):
34 def create_passport(self, items: List[List]) -> Passport:
35 return Passport(**dict(items))
36
37 def read_input(self, example=False) -> Generator:
38 passport = []
39
40 for item in super().read_input(example):
41 if item == '':
42 yield self.create_passport(passport)
43 passport = []
44 continue
45
46 for field in item.split(' '):
47 passport.append(field.split(':'))
48
49 yield self.create_passport(passport)
50
51 def valid_passport(self, passport: Passport):
52 raise NotImplementedError('Please implement valid_passport')
53
54 def run(self, input: Generator):
55 valid_passports = 0
56 for passport in input:
57 if self.valid_passport(passport):
58 valid_passports += 1
59 return valid_passports
60
61
62class AssignmentOne(Assignment):
63 def valid_passport(self, passport: Passport) -> bool:
64 return all([
65 val
66 for key, val in vars(passport).items()
67 if key != 'cid'
68 ])
69
70
71class AssignmentTwo(Assignment):
72 def valid_byr(self, byr: int):
73 return byr and 1920 <= byr <= 2002
74
75 def valid_iyr(self, iyr: int):
76 return iyr and 2010 <= iyr <= 2020
77
78 def valid_eyr(self, eyr: int):
79 return eyr and 2020 <= eyr <= 2030
80
81 def valid_hgt(self, hgt: str):
82 try:
83 match = hgt_matcher.match(hgt).groupdict()
84 unit = valid_units[match['unit']]
85 return unit['min'] <= int(match['value']) <= unit['max']
86 except (TypeError, AttributeError):
87 return False
88
89 def valid_hcl(self, hcl: str):
90 return hcl and hcl_matcher.match(hcl)
91
92 def valid_ecl(self, ecl: str):
93 return ecl and ecl in (
94 'amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth'
95 )
96
97 def valid_pid(self, pid: str):
98 return pid and len(pid) == 9
99
100 def valid_passport(self, passport: Passport):
101 return self.valid_byr(passport.byr) \
102 and self.valid_iyr(passport.iyr) \
103 and self.valid_eyr(passport.eyr) \
104 and self.valid_hgt(passport.hgt) \
105 and self.valid_hcl(passport.hcl) \
106 and self.valid_ecl(passport.ecl) \
107 and self.valid_pid(passport.pid)
diff --git a/day4/example.txt b/day4/example.txt
deleted file mode 100644
index 3b38741..0000000
--- a/day4/example.txt
+++ /dev/null
@@ -1,13 +0,0 @@
1ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
2byr:1937 iyr:2017 cid:147 hgt:183cm
3
4iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
5hcl:#cfa07d byr:1929
6
7hcl:#ae17e1 iyr:2013
8eyr:2024
9ecl:brn pid:760753108 byr:1931
10hgt:179cm
11
12hcl:#cfa07d eyr:2025 pid:166559648
13iyr:2011 ecl:brn hgt:59in \ No newline at end of file
diff --git a/day4/input.txt b/day4/input.txt
deleted file mode 100644
index ba08163..0000000
--- a/day4/input.txt
+++ /dev/null
@@ -1,1023 +0,0 @@
1ecl:#eef340 eyr:2023 hcl:#c0946f pid:244684338 iyr:2020 cid:57 byr:1969 hgt:152cm
2
3pid:303807545 cid:213 ecl:gry hcl:#fffffd
4eyr:2038 byr:1951
5hgt:171cm iyr:2011
6
7hcl:#c0946f byr:1933 eyr:2025 pid:517067213 hgt:173cm
8ecl:hzl
9iyr:2018
10
11pid:5253256652 byr:2009 hgt:152cm iyr:1989 eyr:1968 hcl:64cb63 ecl:hzl
12
13iyr:2013
14pid:862607211 eyr:2020
15hgt:174cm
16byr:1990
17ecl:blu hcl:#888785
18
19ecl:grn byr:1955
20pid:608098408 eyr:2027 iyr:2020 hcl:#b6652a cid:264
21hgt:181cm
22
23byr:1998 ecl:hzl eyr:2021
24hcl:#866857 hgt:189cm iyr:2030
25pid:013735467
26
27pid:075417314 hcl:#b6652a byr:1957
28iyr:2011
29hgt:154cm
30eyr:2025
31ecl:amb
32
33iyr:1993 hgt:74cm eyr:1960
34byr:2029
35hcl:293244 ecl:#3cb5e5 pid:4861232363
36
37hgt:153cm hcl:#6b5442 pid:065240897 byr:1932
38cid:196 ecl:blu eyr:2028 iyr:2019
39
40eyr:2024 ecl:amb
41hcl:#866857 byr:1922 pid:496904942 hgt:164cm iyr:2020
42
43pid:847705161 byr:1951 cid:124 iyr:1991
44eyr:2028 ecl:dne
45hcl:6b2d28 hgt:172cm
46
47byr:2007 iyr:2029 ecl:hzl eyr:2026 hgt:168in
48hcl:z
49pid:63151612
50
51iyr:2027 hgt:172in
52cid:174 byr:2014 hcl:z eyr:1921
53ecl:grt pid:#cebdc2
54
55ecl:amb hcl:#d09c0f
56iyr:2015 hgt:156cm eyr:2026 byr:1962
57pid:086120872
58
59cid:125
60pid:837849996
61byr:1958 ecl:brn hgt:166cm hcl:#ceb3a1 eyr:2028 iyr:2012
62
63ecl:gry hgt:180cm
64pid:939059935 eyr:2023 byr:1977 hcl:#b6652a
65
66hgt:190in byr:2029 eyr:1984
67ecl:gry hcl:z pid:055092916 iyr:2010
68
69hgt:63in ecl:blu byr:1940 iyr:2012 eyr:2029 hcl:#7d3b0c
70pid:163033394
71
72eyr:2040 pid:181cm
73iyr:1928 hgt:76cm hcl:d8aafb byr:1949 cid:275 ecl:xry
74
75hcl:#cfa07d ecl:oth byr:1948 eyr:2021
76pid:719690182 hgt:179cm iyr:2020
77
78byr:1939 cid:266
79eyr:2026 iyr:2017 hcl:#f116d2
80ecl:hzl pid:522421825
81hgt:68in
82
83hcl:z hgt:61in
84cid:115 pid:180cm iyr:2030 byr:2014 eyr:2032 ecl:hzl
85
86ecl:xry
87eyr:2028 pid:191cm iyr:2015 hgt:150cm byr:2029
88
89eyr:2027
90hcl:#a97842 pid:997937480 hgt:61in iyr:2019
91byr:1921
92ecl:grn
93
94hgt:163cm
95pid:912318455 iyr:2016 byr:1988 ecl:brn hcl:#a97842 cid:221 eyr:2029
96
97cid:333 hcl:#c0946f
98hgt:163cm iyr:2018 eyr:2027 ecl:oth
99
100cid:70 hcl:#c0946f
101pid:961507902 byr:1949 ecl:grn iyr:2017 eyr:2029 hgt:69in
102
103hgt:169cm ecl:amb
104iyr:2013 pid:496169901
105byr:1943 eyr:2028 hcl:#ceb3a1
106cid:249
107
108ecl:blu cid:343
109iyr:1998 hgt:154in hcl:#efcc98 byr:1972
110
111pid:508213120 iyr:2012 eyr:2025 hcl:z hgt:70cm byr:1976
112ecl:brn
113
114iyr:1924
115eyr:2005
116hcl:z
117hgt:167 pid:154cm
118byr:2007
119
120pid:761333244 hgt:180cm iyr:2017 hcl:#18171d eyr:2021
121byr:1983
122cid:67 ecl:oth
123
124eyr:1993
125byr:2003
126hcl:#602927
127ecl:grt
128cid:84 hgt:178
129pid:1847086637 iyr:2026
130
131hcl:#866857 hgt:162cm pid:483774485 iyr:2010
132byr:1946 eyr:2028 ecl:gry
133
134pid:726639691 eyr:2028
135hgt:171cm hcl:#ff65a6
136iyr:2011 byr:1989
137
138hcl:z iyr:2026 ecl:xry
139eyr:2037 byr:2005 pid:#f09a0f
140hgt:68 cid:156
141
142hgt:71in ecl:blu eyr:2026 hcl:#18171d
143byr:1981 iyr:2017
144pid:698636544
145
146eyr:2021
147byr:1957 ecl:brn pid:365378126 cid:93 iyr:2019 hcl:#18171d hgt:179cm
148
149byr:1996 iyr:2014 hgt:64cm
150eyr:2034
151hcl:z
152
153pid:629486472 cid:140
154hgt:192cm eyr:2020 hcl:#b6652a iyr:1988 byr:2021 ecl:brn
155
156byr:1955 iyr:2015 eyr:2030
157ecl:gry hcl:z pid:6550198754
158hgt:158cm cid:305
159
160ecl:gry hcl:#a97842
161hgt:176cm eyr:2022 pid:810146585 iyr:2020
162
163byr:2027 hcl:#cfa07d
164iyr:2011 ecl:#f07598
165cid:293
166hgt:150cm pid:#fa948d eyr:2029
167
168eyr:2028 iyr:2013 hgt:69in ecl:gry pid:317170371
169cid:147 hcl:#bfe1f1
170
171byr:1976
172pid:059341891 hgt:174cm
173ecl:oth
174eyr:2029 iyr:2017 hcl:#733820
175
176iyr:2018 hcl:#ceb3a1 hgt:188cm cid:308
177pid:792826885 byr:1948 ecl:blu eyr:2028
178
179iyr:2017 cid:94 hcl:#95c7dc
180pid:231757803 eyr:2022
181byr:1992 hgt:153cm ecl:amb
182
183eyr:2027
184iyr:2011 hgt:186cm
185ecl:brn pid:996347346 hcl:#866857
186byr:1960
187
188eyr:2025 byr:2001
189ecl:blu pid:755715478 iyr:2019 hgt:61in
190
191ecl:gry
192eyr:2038
193hgt:81 hcl:z iyr:2028
194cid:214 byr:1965
195
196pid:412744447 byr:1979 hcl:#cfa07d ecl:blu
197eyr:2029 cid:157
198hgt:180in iyr:1948
199
200hgt:170cm
201pid:623557081 byr:1924 eyr:2024 hcl:98d623 iyr:2012 ecl:amb
202
203cid:311 ecl:grn
204iyr:2011 byr:1982
205eyr:2002 hcl:#ef318a
206pid:0548169957
207hgt:87
208
209eyr:2030 hcl:#733820 iyr:2016 pid:558470391
210byr:1936 ecl:oth hgt:185cm
211
212iyr:2019
213ecl:amb byr:1949
214pid:376468392
215hgt:178cm
216
217pid:019195245
218ecl:grn hgt:171cm
219byr:1978 iyr:2011 eyr:2022 hcl:#733820
220cid:134
221
222hcl:#623a2f hgt:192cm eyr:2026 byr:1977
223ecl:grn cid:308
224
225ecl:hzl pid:715816358 hgt:69in iyr:2014 hcl:#623a2f
226byr:1996
227eyr:2027
228
229iyr:1947
230ecl:#39a697
231hgt:183cm byr:2029
232eyr:2022 pid:7951883913
233hcl:z
234
235ecl:gry byr:1950
236hcl:#18171d hgt:168cm iyr:2020 pid:677187333 eyr:2027
237
238byr:1969 ecl:blu hcl:#18171d iyr:2011
239hgt:162cm
240pid:701349891
241
242cid:269 byr:1966
243iyr:2011
244pid:905940527 eyr:2023 hgt:190cm
245ecl:brn hcl:#ceb3a1
246
247eyr:2027 pid:454627395 ecl:brn
248hcl:#ceb3a1 cid:302 hgt:184cm
249byr:1959
250iyr:2015
251
252iyr:2011
253eyr:2028
254hgt:166cm
255hcl:#733820 byr:1938 ecl:blu pid:857984986
256
257hcl:#c0946f ecl:brn pid:226877822
258hgt:182cm byr:1998
259cid:160
260
261hgt:186in pid:26499164 byr:2017
262hcl:z
263iyr:1998 eyr:2026
264cid:331 ecl:#236556
265
266pid:328866543
267hgt:165cm eyr:2039 iyr:1987 ecl:amb byr:2018 hcl:z
268
269iyr:2016 eyr:2036 hcl:#888785 byr:1976 pid:160402352 hgt:76cm ecl:blu
270
271ecl:blu
272hcl:#fffffd eyr:2025 hgt:66in pid:979788527
273byr:1957 iyr:2013
274
275ecl:grn pid:279357265 iyr:2019 eyr:2021 byr:1953
276hgt:177cm hcl:#c0946f
277
278ecl:oth hcl:z eyr:2025 byr:1949 hgt:189cm iyr:2020 pid:901383503
279
280byr:2019 hcl:#733820
281pid:31022828 eyr:1929
282hgt:75cm iyr:2012 ecl:grn
283
284pid:080462937
285ecl:blu hcl:#866857
286cid:102
287iyr:2013 eyr:2025 byr:1975 hgt:64in
288
289iyr:2016
290eyr:2028
291cid:125
292byr:1979 hcl:#866857
293ecl:brn hgt:173cm pid:814947616
294
295hcl:z byr:2020 pid:#c3b54b hgt:174in eyr:2038
296iyr:2016
297ecl:gmt
298
299cid:132
300iyr:1958
301pid:61543452 hcl:z
302ecl:zzz eyr:2039 byr:2006
303
304cid:55 eyr:2022 byr:1954 iyr:2015
305hgt:188cm hcl:#a97842 pid:49143631 ecl:amb
306
307hgt:152cm
308byr:1982
309iyr:2013 ecl:blu
310hcl:#341e13
311eyr:2026 pid:440841976
312
313iyr:2019 ecl:blu pid:553456616 hcl:#733820 hgt:160cm byr:1932 eyr:2030
314
315byr:1980 hgt:169cm hcl:#7d3b0c cid:312 iyr:2010
316eyr:2026 pid:028550304 ecl:grn
317
318ecl:amb eyr:2021 iyr:2014 hgt:71in pid:986053283 byr:1981
319
320ecl:oth
321eyr:2023 hcl:#888785
322byr:1949
323iyr:2016 pid:699325656
324
325hgt:63cm cid:297 eyr:2020 pid:990390922
326hcl:#602927 ecl:lzr
327iyr:2012 byr:2016
328
329hcl:9ea2fa eyr:2023 pid:088680493
330byr:1998 iyr:2017 ecl:utc hgt:170cm cid:175
331
332cid:316 iyr:2016 eyr:2026 hcl:#79ff1d hgt:65in
333byr:1997 pid:215466710 ecl:oth
334
335cid:213 byr:1983 hcl:#888785 iyr:2016 pid:767747981 eyr:2025
336ecl:hzl hgt:168cm
337
338eyr:2030 byr:1972
339cid:282
340ecl:gry hgt:178cm
341hcl:#a97842
342iyr:2018
343
344hcl:#6b5442 ecl:amb
345eyr:2028 cid:104 hgt:159cm pid:446429120 iyr:2012
346byr:1938
347
348byr:1940 hgt:178cm ecl:oth
349hcl:#ceb3a1
350pid:845683663 iyr:2015 eyr:2024
351
352byr:1940 pid:496262233
353hgt:184cm hcl:#b6652a
354ecl:grn cid:152 iyr:2012 eyr:2029
355
356hgt:185cm pid:455744229 byr:1954 eyr:2022 ecl:gry hcl:#6b5442 iyr:2012
357
358hgt:182cm byr:1966 eyr:2028 ecl:#a5b7fc
359iyr:2029
360
361pid:343591896
362cid:58
363ecl:hzl
364eyr:2022 hgt:180in byr:2021
365hcl:#6b5442
366
367ecl:utc hcl:#b6652a
368pid:635147657 byr:2020
369eyr:2022 hgt:157cm iyr:2018
370
371ecl:grt cid:312 iyr:1959 pid:154262836
372hgt:171cm
373hcl:#fffffd
374eyr:2024
375byr:1982
376
377hcl:#7a12b4 pid:223424149 ecl:hzl hgt:175cm
378byr:1930 iyr:2010 eyr:2028
379
380hcl:#c0946f pid:633476454 eyr:2026 iyr:2011
381byr:1934
382hgt:186cm
383cid:289 ecl:gry
384
385hcl:#fffffd pid:376300524 hgt:155cm byr:1964 iyr:2017 eyr:2021 ecl:grn
386
387hcl:a5d4dc byr:2006 cid:165 ecl:#db800f iyr:2029 pid:0199789970 eyr:1961 hgt:61cm
388
389eyr:2027 hgt:170cm iyr:2010
390hcl:#c0946f
391ecl:grn pid:415726530
392byr:1985
393
394cid:197 byr:1957 hgt:192in hcl:#a97842 ecl:hzl eyr:2029 pid:958973455 iyr:2011
395
396iyr:2015 pid:933689314 hgt:162cm ecl:amb
397cid:122 eyr:2021
398hcl:#6b5442 byr:1973
399
400eyr:2026 hgt:172cm
401iyr:2012
402ecl:brn hcl:#733820 pid:004474632
403byr:2000
404
405hgt:191cm eyr:2030 byr:1999 pid:9155071477 iyr:2026 hcl:#602927 cid:315
406ecl:grn
407
408iyr:2010 pid:182884251 hcl:#18171d hgt:154cm
409eyr:2020
410byr:1926 ecl:oth
411
412iyr:2019 eyr:1920 pid:132839546
413cid:283 hgt:188in hcl:#efcc98 byr:2027
414
415iyr:2011 hgt:177cm
416cid:117 byr:1976
417ecl:gry
418hcl:#623a2f eyr:2030 pid:134592046
419
420byr:1968 hgt:146
421iyr:2013 hcl:eefdc4 eyr:2028
422ecl:xry pid:722120008
423
424iyr:2016 byr:1941 hgt:67cm cid:51 hcl:#b6652a ecl:hzl eyr:2034 pid:994005715
425
426hcl:#cfa07d ecl:oth
427hgt:182cm eyr:2021 pid:612583941
428byr:1983
429iyr:2019
430
431byr:1922
432hcl:#602927 hgt:161cm ecl:gry eyr:2020 pid:190170808 iyr:2013
433
434hgt:63cm cid:136
435iyr:1999
436pid:8235748647 hcl:z
437byr:2022 eyr:1933
438ecl:#304383
439
440cid:273 ecl:blu hcl:z
441iyr:2011 byr:2007
442eyr:2020
443pid:942473857 hgt:178in
444
445ecl:grt byr:2029 hgt:187in eyr:2030 cid:160
446hcl:#efcc98 pid:#39f22b
447iyr:1966
448
449byr:1978 ecl:oth iyr:2011 hgt:164cm eyr:2027 hcl:#cfa07d
450
451hgt:75cm hcl:#1e8137 byr:1986 ecl:blu eyr:2022 pid:796688423
452iyr:2012
453
454eyr:2026
455ecl:#3013af hcl:z pid:#e8597f hgt:123 iyr:2025 byr:1942
456
457hcl:z hgt:177in
458iyr:1993 pid:#4c9348 byr:2008 eyr:1989
459
460pid:123524366 byr:1935
461hgt:156cm hcl:#7d3b0c
462iyr:2020 ecl:brn eyr:2020
463
464hcl:z eyr:2038 pid:7663741757 ecl:gmt hgt:174
465byr:2008 iyr:1939
466cid:225
467
468hcl:#888785 hgt:172cm
469ecl:oth pid:500711541 eyr:2027
470byr:1931 iyr:2012
471
472pid:575447108 ecl:amb byr:1943
473hcl:#888785 hgt:173cm eyr:2024
474
475eyr:2021 iyr:2010 pid:178773264 hgt:157cm byr:1965 hcl:#bb7bcf ecl:amb
476
477iyr:2023 ecl:#35bd84 byr:2020
478hgt:72in
479eyr:2037
480hcl:#6b5442
481pid:421311669
482
483byr:1921 iyr:2011
484pid:146088688
485eyr:2023 hcl:#15ed24 hgt:183cm
486ecl:brn
487
488hcl:#b6652a cid:243
489byr:1993 eyr:2024
490iyr:2014 hgt:172cm
491pid:771275594
492
493eyr:2024
494hcl:#cfa07d pid:858807920 cid:293 hgt:157cm ecl:hzl iyr:2013 byr:1984
495
496ecl:blu hgt:193cm cid:73 hcl:#18171d eyr:2026
497iyr:2016 pid:124151812 byr:1945
498
499ecl:amb iyr:2018
500pid:214555737 hgt:157cm
501eyr:2028
502byr:1925 hcl:#866857
503
504pid:5633250409
505hcl:4ef7d8
506byr:2004 iyr:1958
507hgt:96
508eyr:2038 ecl:xry cid:274
509
510byr:1972 pid:401239851 hgt:184in hcl:z iyr:2017
511eyr:2030 ecl:#cb289a cid:140
512
513hgt:175cm
514byr:1926 hcl:#cfa07d eyr:2029 ecl:gry pid:325039730 iyr:2017
515
516cid:101 hgt:166cm byr:1986 ecl:amb
517hcl:#7d3b0c iyr:2013
518pid:413769688 eyr:2024
519
520hgt:159cm cid:311
521byr:1993 eyr:2028 pid:188cm ecl:oth hcl:#602927 iyr:2013
522
523pid:565831038
524ecl:amb
525hgt:155cm hcl:#fffffd cid:335 iyr:2016
526eyr:2029 byr:1997
527
528hgt:122
529byr:2022
530eyr:2028 ecl:blu iyr:2017 pid:269710626 hcl:#b6652a
531
532cid:196
533byr:1953 hcl:#6b5442 iyr:2010
534pid:216121215 hgt:188cm ecl:blu
535
536iyr:2011 hcl:98166c hgt:62cm
537byr:2028
538eyr:2024
539pid:792478385 ecl:grn
540
541hcl:#efcc98 iyr:2012 pid:020039675 eyr:2021 byr:1974 hgt:156cm
542ecl:hzl
543
544cid:123 hcl:#7d3b0c
545byr:2026 eyr:2004 iyr:2012 ecl:oth pid:349203133 hgt:160cm
546
547pid:085461475
548byr:1962 iyr:2020 hcl:#623a2f
549eyr:2024
550cid:80 ecl:brn
551hgt:154cm
552
553ecl:oth hgt:156cm iyr:2016
554hcl:#6b5442
555byr:1973
556eyr:2021 pid:539898580
557
558iyr:2026 hgt:191cm
559hcl:z
560byr:1930 pid:#abc2f0 ecl:blu cid:242 eyr:2024
561
562cid:167
563hgt:179cm
564iyr:2017 eyr:2021 pid:756797571 byr:1949 ecl:brn hcl:#a97842
565
566byr:1975 eyr:2030
567ecl:oth hgt:169in pid:4031206183 hcl:#733820 iyr:2017 cid:244
568
569ecl:#54cfeb hgt:152cm
570iyr:2026 hcl:36b4b9
571byr:2030
572pid:#fa1cb9 eyr:1964
573
574byr:1974 cid:99 hcl:9e3296
575eyr:2032
576pid:686747414
577iyr:1995
578ecl:amb
579
580iyr:2030 ecl:oth hcl:z byr:1979
581pid:114661006 hgt:191cm eyr:1941
582
583hcl:#341e13 iyr:2014 byr:1953
584pid:188326193 ecl:gry hgt:189cm cid:283
585eyr:2030
586
587byr:1975
588pid:092061576 hgt:73in eyr:2023
589ecl:brn cid:227 hcl:#5e9d91
590iyr:2011
591
592hcl:#7d3b0c hgt:167cm cid:141
593eyr:1957 byr:2012 ecl:gmt iyr:2019 pid:#1b7c8a
594
595hgt:168cm hcl:#c0946f pid:599500784 byr:1930 eyr:2023 ecl:hzl cid:113
596iyr:2013
597
598eyr:2030 hcl:#b4cb4f
599hgt:68in
600ecl:brn byr:1923 pid:699162086
601
602iyr:2013
603ecl:dne hcl:z eyr:1971
604pid:#580add byr:2020
605hgt:190cm
606
607hcl:#ceb3a1
608byr:1976 eyr:2020
609cid:162 iyr:2016
610hgt:168cm
611ecl:hzl
612
613pid:050478613 hgt:59cm
614iyr:2017
615ecl:grn byr:2030 hcl:#cfa07d eyr:2025
616
617pid:352943968 eyr:2025 byr:1980 iyr:2014 ecl:gry hcl:#c0946f
618hgt:193cm
619
620pid:328621931 cid:310 hgt:170cm
621hcl:#733820 byr:1955
622iyr:2016
623eyr:2028 ecl:hzl
624
625hcl:#866857
626pid:095858739 byr:1956
627iyr:2018 hgt:193cm
628ecl:hzl
629eyr:2029
630
631pid:70973661 eyr:2039 ecl:gry
632iyr:2016
633cid:291
634hcl:#623a2f hgt:97
635
636hcl:4d51a8
637eyr:1978
638ecl:gmt
639byr:2029 iyr:2022
640pid:34507041 hgt:61cm
641
642byr:1989 ecl:brn pid:769582914
643eyr:2026 cid:218
644iyr:2020 hcl:#866857 hgt:184cm
645
646ecl:brn
647iyr:1998 cid:227
648hgt:162in
649byr:2026
650hcl:#602927 eyr:2027 pid:236998728
651
652ecl:gry byr:1984 hgt:157 cid:295
653eyr:2020
654iyr:2018 hcl:#733820
655pid:037871534
656
657hgt:166cm hcl:#c0946f pid:412146401
658iyr:2011
659eyr:2022
660byr:1938
661ecl:brn
662
663ecl:brn cid:95 byr:1981 eyr:2030 hcl:#efcc98 pid:777041035 hgt:152cm iyr:2011
664
665eyr:2024 hgt:89 pid:3761913749 iyr:1939 byr:1967 hcl:a222f6 cid:165 ecl:#7fe574
666
667cid:339 hgt:156cm
668ecl:brn iyr:2013 byr:1951 hcl:#efcc98 eyr:2026
669pid:863566946
670
671ecl:brn hcl:#6b5442 eyr:2023
672pid:787129723 byr:1949 iyr:2015
673
674pid:#7f615a
675cid:202 hcl:#6b5442 eyr:2028
676ecl:#a5419c
677hgt:75cm
678iyr:2011
679byr:2001
680
681pid:864001133
682cid:236
683byr:1943 hcl:#733820 ecl:dne eyr:2025 hgt:171cm iyr:1989
684
685pid:193073684 ecl:grn byr:1962 iyr:2014
686hcl:#cfa07d hgt:189cm
687cid:321 eyr:2029
688
689byr:1959
690hcl:#b6652a
691eyr:2026
692hgt:159cm pid:815014918 iyr:2011 ecl:amb
693
694iyr:2017 hgt:182cm
695hcl:#a97842 eyr:2023 ecl:grn pid:656177536
696byr:1973
697
698eyr:1923 ecl:grn
699cid:138 iyr:2020
700hgt:164cm byr:1958 hcl:#c0946f pid:783366277
701
702iyr:1932 hgt:172 ecl:blu
703hcl:#733820 byr:1962 pid:554221464
704
705cid:169 pid:922622614
706byr:1942 hcl:#ceb3a1 hgt:169cm eyr:2024
707ecl:gry iyr:2017
708
709cid:219 ecl:grn
710hgt:156cm byr:1998 eyr:2021
711iyr:2017 hcl:#ceb3a1 pid:450186263
712
713ecl:amb hgt:179cm pid:768428582 iyr:2010 eyr:2023 byr:1952 hcl:#fffffd
714
715eyr:2024
716hgt:193cm
717iyr:2017 pid:469033795 byr:1979 hcl:#18171d cid:67 ecl:amb
718
719iyr:2016 byr:1937 pid:798267514 hgt:155cm hcl:#866857 eyr:2026
720ecl:oth
721
722hgt:172cm hcl:#866857 iyr:2018 pid:662186551
723byr:1996
724eyr:2025 ecl:amb
725
726pid:2854521962
727iyr:2021
728ecl:zzz
729hcl:12f1ba eyr:2037 hgt:159cm
730byr:1937
731
732ecl:oth pid:488050418 byr:1927 hcl:#a97842 hgt:153cm iyr:2013 eyr:2024
733
734pid:119536312 ecl:#2036ad
735hcl:543178 iyr:2020
736byr:2013
737hgt:177cm
738eyr:2022
739
740pid:788908662 hcl:#602927 eyr:2029
741ecl:oth byr:1930
742iyr:2020
743hgt:179cm
744
745byr:1972
746pid:053386972 iyr:2014 ecl:grn hgt:65in hcl:#cfa07d
747
748pid:9828921035 ecl:blu
749hcl:z hgt:152in
750eyr:1949 byr:2010
751
752cid:157 pid:097910554 byr:1999
753hgt:159cm hcl:#6b5442 ecl:blu eyr:2024
754iyr:2010
755
756hcl:#a97842
757eyr:2040 ecl:#f8ad77
758hgt:173cm
759byr:2019 iyr:2010
760pid:#d16a6e
761
762ecl:dne hgt:191cm iyr:2020 hcl:#b6652a
763eyr:2021 pid:571971509 byr:1983
764
765hcl:#18171d iyr:2016 pid:159074622
766eyr:2027 hgt:163cm byr:1954
767cid:257
768
769pid:243560302 cid:58
770hcl:53a4cf byr:2012
771ecl:#fdbfb8 eyr:1920 hgt:179 iyr:2026
772
773pid:040606106 eyr:2030 hgt:188cm
774byr:1969
775iyr:2012 hcl:#ceb3a1 ecl:amb
776
777eyr:2022
778hgt:175cm hcl:#b6652a byr:1967 pid:269969031
779iyr:2018
780
781hcl:#18171d cid:278 byr:1931
782pid:134809791
783eyr:2035 ecl:#44e6cd iyr:1993
784
785hgt:177in
786ecl:utc cid:289
787iyr:1923
788hcl:13a67a pid:3045345984 byr:2030 eyr:1944
789
790pid:839901650 eyr:2030
791ecl:grn
792byr:2015 iyr:2017 hgt:168 hcl:131f4e
793
794iyr:2015 pid:529736732 ecl:brn hgt:176cm
795eyr:2026 byr:1952 hcl:#6b5442
796
797hcl:#c0946f
798cid:323 pid:303966428 iyr:2019
799eyr:2027 hgt:170cm
800byr:2001
801ecl:brn
802
803pid:193678728 hgt:72in eyr:2027 iyr:2015 byr:1951 ecl:gry hcl:#18171d
804
805eyr:2026 cid:283
806iyr:1938 pid:687430885
807hgt:186cm
808byr:1949 ecl:#521638 hcl:d13b2f
809
810eyr:2024 hcl:#ceb3a1 iyr:2013 ecl:brn
811hgt:168cm pid:792088241
812
813hcl:#888785 ecl:amb
814byr:2009 iyr:2015
815hgt:151cm
816eyr:2020 pid:223927808
817
818byr:1926
819pid:717704850
820hcl:#623a2f eyr:2022 hgt:64in iyr:2018 ecl:gry
821
822eyr:2023 byr:1954
823hgt:169cm
824ecl:hzl
825iyr:2010 pid:116868997 hcl:#18171d
826
827ecl:hzl byr:1965 hcl:#a97842 iyr:2011 pid:506354451 hgt:172cm eyr:2029
828
829eyr:2022 pid:994565705
830iyr:2013 ecl:brn hcl:#623a2f
831byr:1979
832
833iyr:2011
834byr:1931 hgt:183cm hcl:#284f26 cid:306
835ecl:amb eyr:2021
836pid:977533079
837
838eyr:2027
839iyr:2011 ecl:gry
840byr:1993
841pid:272334781 hgt:161cm hcl:#9a35b6
842
843eyr:2026
844hcl:#602927 ecl:blu
845pid:212300161 byr:1946
846cid:193 iyr:2020 hgt:157cm
847
848pid:538594567 byr:1976 eyr:2027 hcl:#efcc98 iyr:2011 hgt:154cm ecl:oth
849
850byr:1949
851hcl:z ecl:#ce67aa
852eyr:1942 pid:7978941589 iyr:2025 hgt:161in
853
854hcl:#c0946f
855cid:55
856byr:1963 ecl:blu hgt:161cm
857pid:547120453 iyr:2015 eyr:2021
858
859hgt:173cm eyr:2022
860iyr:2016 byr:2001
861ecl:hzl pid:239803460
862
863hcl:#b6652a ecl:oth eyr:2021 hgt:167cm pid:401266644 iyr:1969 byr:1974
864
865eyr:2030 pid:581963885
866hcl:#64cb23
867ecl:blu
868byr:1928 hgt:181cm iyr:2018
869
870pid:186338247
871ecl:hzl hgt:193cm hcl:#ceb3a1
872eyr:2022 iyr:2010
873
874iyr:2015 ecl:gry hgt:159cm eyr:2027 hcl:#ceb3a1
875byr:1925 pid:715902111 cid:149
876
877iyr:2018 hcl:#623a2f eyr:2020 hgt:162cm ecl:grn cid:135
878byr:1922
879pid:373216777
880
881eyr:2020 pid:749899012 hcl:#888785 ecl:brn
882iyr:2010 cid:225 hgt:172cm
883byr:1972
884
885iyr:2020 hgt:178cm ecl:grn hcl:#18171d pid:613792489 cid:240
886eyr:2028
887byr:1972
888
889iyr:2015 byr:1938 eyr:2026
890cid:113 ecl:grn
891pid:846231640 hgt:161cm
892hcl:#b6652a
893
894ecl:gry
895hcl:#ceb3a1
896byr:1956 cid:338 pid:936012518
897hgt:62in
898eyr:2029 iyr:2016
899
900pid:730866353 ecl:brn byr:1986
901iyr:2014
902hgt:190cm
903eyr:2021 hcl:#a97842 cid:126
904
905eyr:2021
906cid:180 pid:958310635 ecl:brn iyr:2015 hgt:189cm hcl:#efcc98
907
908hgt:188cm ecl:hzl pid:179001863 iyr:2016 eyr:2029 hcl:#341e13 byr:1932
909
910cid:77 eyr:2027 hcl:#623a2f iyr:2016 ecl:brn hgt:170cm
911byr:1947
912
913hgt:66in pid:617518313 iyr:2013 byr:1977 hcl:#b6652a ecl:brn eyr:2025
914
915pid:787861420
916iyr:2014 hcl:#623a2f hgt:61in
917ecl:oth cid:78
918eyr:2022 byr:1975
919
920ecl:hzl
921iyr:2017 eyr:2028 hcl:#602927
922byr:1958 pid:985208714
923hgt:160cm
924
925byr:2002
926iyr:2013
927hcl:#341e13 pid:188110633 ecl:gry hgt:169cm
928eyr:2025
929
930byr:1981
931eyr:2028
932hcl:#341e13 ecl:amb hgt:160cm cid:121
933iyr:2015 pid:963848397
934
935iyr:2013 hcl:#866857 pid:#db8648 eyr:2021 ecl:gry
936byr:1975
937hgt:153cm cid:114
938
939hgt:109
940cid:287 hcl:#6b5442
941iyr:2028 byr:1926 eyr:2036 pid:2378208387
942ecl:#245a62
943
944pid:857722366
945byr:1975 eyr:2027
946ecl:grn iyr:2019 hcl:#0afad1
947hgt:66in
948
949byr:1935 hcl:#cfa07d hgt:173cm ecl:brn eyr:2021 iyr:2019
950
951cid:66 eyr:2024 hcl:#efcc98 byr:2002 iyr:2010
952hgt:176cm pid:697153153 ecl:amb
953
954iyr:2019
955hcl:#cfa07d ecl:blu
956pid:695914972
957eyr:2024
958hgt:158cm
959byr:1943
960
961ecl:xry hgt:62in
962pid:14733148 cid:148
963iyr:2016 byr:1925 hcl:#6b5442
964eyr:2028
965
966iyr:2025
967cid:53 hgt:132 ecl:gmt hcl:159b19
968pid:156cm
969byr:2025 eyr:2001
970
971hcl:#623a2f ecl:oth byr:1974 iyr:2018 hgt:161cm eyr:2029 pid:6826285172
972
973ecl:gry
974byr:1956 hcl:#7d3b0c hgt:170cm iyr:2020
975
976eyr:2020
977pid:#946a88 hgt:186cm hcl:#733820 byr:1946 ecl:#016645 iyr:2015
978
979hgt:181cm hcl:#888785 iyr:2013 pid:634152817
980byr:1982 cid:245 ecl:grn eyr:2021
981
982ecl:brn
983pid:737531770 iyr:2010
984eyr:2020
985byr:1929 hgt:189cm hcl:#c0946f
986
987cid:158 iyr:2019 hcl:#341e13 eyr:2027 ecl:amb
988byr:1986 pid:834976623
989
990pid:976934668 cid:61 eyr:2020 iyr:2020
991hgt:76in byr:1927 ecl:amb
992hcl:#e05ee3
993
994pid:526042518 iyr:2019 eyr:2027 hcl:#623a2f byr:1976 ecl:amb
995
996pid:279367290 hcl:#a97842 hgt:158cm
997eyr:2027
998byr:1959
999iyr:2020
1000
1001ecl:xry byr:2028
1002pid:357216861 hcl:#a97842 eyr:2024 hgt:66cm
1003iyr:2012
1004
1005hgt:188in
1006ecl:lzr cid:64 eyr:1958 byr:2014 hcl:z pid:285207570 iyr:2026
1007
1008eyr:1973 iyr:2017 ecl:oth cid:282 pid:695814158
1009hcl:z
1010
1011iyr:2010 pid:661168409
1012hcl:#53c696
1013hgt:186cm ecl:amb
1014byr:1960
1015eyr:2029
1016
1017eyr:1982 hgt:169cm
1018iyr:2002 byr:2025 hcl:327f93 pid:831648100
1019
1020byr:1967 ecl:oth
1021eyr:2021
1022hcl:#602927 iyr:2014
1023pid:274974402 hgt:183cm \ No newline at end of file
diff --git a/day5/__init__.py b/day5/__init__.py
deleted file mode 100644
index 405b589..0000000
--- a/day5/__init__.py
+++ /dev/null
@@ -1,40 +0,0 @@
1from math import ceil, floor
2from typing import Iterator, Any
3
4from aoc import BaseAssignment
5
6
7class Assignment(BaseAssignment):
8 def parse_item(self, item: str) -> Any:
9 row = self.calculate_postition(input=item[:7], min=0, max=127)
10 col = self.calculate_postition(input=item[7:], min=0, max=7)
11 return (row * 8) + col
12
13 def calculate_postition(self, input: str, min: int, max: int) -> int:
14 input_length = len(input)
15 action = input[0]
16 half = (max - min) / 2
17 if action in ['F', 'L']:
18 return min \
19 if input_length == 1 \
20 else self.calculate_postition(input[1:], min=min,
21 max=floor(max - half))
22 elif action in ['B', 'R']:
23 return max \
24 if input_length == 1 \
25 else self.calculate_postition(input[1:], min=ceil(min + half),
26 max=max)
27
28
29class AssignmentOne(Assignment):
30 def run(self, input: Iterator) -> Any:
31 return max(*input)
32
33
34class AssignmentTwo(Assignment):
35 def run(self, input: Iterator) -> Any:
36 seat_ids = sorted(input)
37 for index, id in enumerate(seat_ids):
38 next_id = id + 1
39 if id + 1 != seat_ids[index + 1]:
40 return next_id
diff --git a/day5/example.txt b/day5/example.txt
deleted file mode 100644
index f8b3bec..0000000
--- a/day5/example.txt
+++ /dev/null
@@ -1,3 +0,0 @@
1BFFFBBFRRR
2FFFBBBFRRR
3BBFFBBFRLL \ No newline at end of file
diff --git a/day5/input.txt b/day5/input.txt
deleted file mode 100644
index 0436d37..0000000
--- a/day5/input.txt
+++ /dev/null
@@ -1,815 +0,0 @@
1BFBBFFFLRR
2FFBFBBBLLL
3FBFBFBFLLL
4BBFFFBFLLR
5FBFFBBFLRR
6BBFBFFFLLL
7FFBBFFFRLL
8BFBFBBBRRR
9FBFFBFFRLR
10FBBBBBBLLL
11BBFBBBBLLL
12BFFFBBBLLL
13FFBFFFBRLR
14BFFFFBFLLR
15FFBBBFBLRL
16BFFBFBBRRL
17FBFBFBBRRR
18FBFFFBBRRL
19FBFBBBFRLR
20BFFFFFBRRL
21BBFFFBBLRR
22FFBBBBBRRR
23FFBBBBBLLL
24BBFBFFBRLR
25FBFFBFBRRR
26FFFBBBBRLL
27BBFBFFBLLR
28BFBFFFBRLL
29FFBFBFFLLR
30FBFBBFBRLL
31FBFFBBBLLL
32FBFBBBFRLL
33FBFBFBBRLL
34BFFFFBBRLL
35FFFBBFFLLR
36FFBFFFBLRL
37FFBFBBFLLL
38BFBBFBBLLL
39BFFFFBBRRL
40FFBFFFBRLL
41BFBBFFFRRR
42FFBBFFFLRL
43FFBFBFBRLL
44BFBFBBBLLL
45BBFBBFFLRL
46BFFFFBBLLR
47FFBFBBFRLR
48FFBBFBBLLR
49FBFFBBFLLL
50BFBFBFBLLL
51BFFBFBBLLR
52FBBBBFFRLR
53FBBBFBFRLL
54FBBBBFFLRR
55BFFBBBBLRL
56FBFFBBFLRL
57BBFFFBBLLR
58FBFBFFFRLL
59FBBBFBBRRL
60FFBBBFBLLR
61BFFBBBFLLR
62BFFFFBFRLR
63BBFFFFBLLR
64FBBFFFBRRL
65BFFFBFBRRR
66FBFBFFFRRR
67BBBFFFBLRL
68BFBFBFBLLR
69BFBBBBBLRL
70FFBBFBBRRR
71FBBFFFBRRR
72FFBFBFBRRR
73BBFFFFBRRL
74BFBBBBBLLL
75BFBFBFFRLL
76BFBFBFBRRL
77BFBFFFFLRL
78FFBBBBBLLR
79FBBFBFFRLL
80FBBFFBBLLL
81BFFFFFFLRL
82FFFBBFFLRL
83FFFBBFFRLL
84FFBFFFBLLL
85FBBFBFBLRL
86BBFFFFBRLR
87FBBFBBBRLR
88FFBBFFBLLL
89FFBFFFBRRR
90FBFBFBFRRL
91FFBBBFBRRL
92BBFFBFFLRR
93FBFFFFFRRR
94FBBFFFBRLL
95FFBBFBBRRL
96FFBBFFFLLR
97FBFBBFBLLL
98BFFFBBFLRR
99BFBFBFFLRR
100BFFFFBFRRR
101BBFBBFFRLL
102BFBBBBBLRR
103BFBBBBFLLL
104BBFBBBBLLR
105FFBBBFFRRR
106BBFFBFBLRR
107FFFBBBFRLR
108BFBFFFBLRR
109BFFFBBFLLL
110FBBBBFFLRL
111FBBFFFFRRL
112FFBFFBBRRL
113BFBBBBBRLR
114FBBFFBBLRL
115BBFBFBBRLL
116FBFFBFBRLR
117FBBBBFFLLR
118FBBFBBFRRL
119FBFBBBBRLL
120BFFBFBFRLL
121FFBFBBFRRL
122FBFFFBFRRL
123FBFFBBFRRL
124FFBFBBFRLL
125BBFBBBBLRL
126BFFFBBBRRL
127FFBFFFBLRR
128FFBBFBBLRL
129BFBFBBFRRR
130BFFFFFFRRL
131FBBBBBBRRR
132FBFBBFBLRR
133FBFFFFFRLR
134BFFBBBFLRR
135BFBBFFBLLL
136FBFFFFBLRL
137FFBBBBBLRL
138FFFBBBFRLL
139FFBBFBFRLL
140FBFBBBFLRL
141FFBBBFBRLL
142BBFBBFBLRL
143FFBFBFFRLR
144BBFBBBBLRR
145FFFBBBBRRR
146FBBBFBFLLL
147BFFFBFBRLR
148FBBFBBFRRR
149FBFFBBBRLR
150FBFBBFBRLR
151FBBBFBBLLL
152BBFBFBFLLL
153FFBBFBBRLL
154FBBFBBBLRR
155BFFFBBFRRL
156BFBFFBFLRR
157BBFBBBFLLL
158BFFFBBFRLR
159BFBBFBFLRL
160FBBBBBFRRR
161FBFFFBBRRR
162BBFFFFBLRR
163FBFBFBFLRL
164BBFFBBBRLL
165FFBBBFFLRR
166FFBBBBFLRR
167FBFBFBBRRL
168BBFBFFBRRL
169FBBBFFBLLL
170BFBFFFFLLR
171FFBFFBFLRR
172BFBBFFFLLR
173BBFBBFFLRR
174BFFFFFFLLR
175BBFFBFBRRL
176FBBBFBBRLL
177BFBBBFBLLR
178BFBBFFBRLR
179FBFBBBFRRR
180BFBBBBBRRR
181FFBBFBBRLR
182FBBFBBFRLR
183BFFBBFBRLR
184FBFFFFFLLL
185FBBFFBFRLL
186FBBBBFFRRL
187FBFBBBBLRL
188FFFBBFBLRR
189FFBFFBBLRR
190FFBBBBBLRR
191FBBFFBFRRR
192FBBBFBFRRR
193FBBFBBBLLR
194BFFFFBFLLL
195FFBFFFFRRL
196BFBFFBBLRL
197FFBFFFFRLR
198FBFBFBFRLL
199BBFBFBBRRL
200FFBFBBFLLR
201BFBBFFBLLR
202FBFFBFFLLL
203BFFBBFBRRR
204FBFFFBBRLL
205BBFBBFFRRR
206FBFBBFBLRL
207FBFBFBBLRL
208FBFFBBFRRR
209FBFFBBBLRL
210FFBFBBBRRR
211BFBBBFFLLR
212FFBBFFFRRL
213FFBBBBBRRL
214FFBFFBBRLL
215FFBBFBFLLR
216FBBBFBFLLR
217BFFFBFFRLL
218FFBBBFBLRR
219BFFBBBFRRR
220BFBBFBBRRR
221BBFBFFFRRR
222FBBFFFBLRL
223BBFBBBFLLR
224BBFFFBBLRL
225FBBFFFFLRR
226BFFBFFFRRL
227FFBFBBBRLL
228BBFBBFBRLL
229FBFFFBBLRR
230BFBFBBFRLL
231FBFBBBBRRL
232FFFBBBFLLR
233FBFFFFBRRR
234FBBBBBBRLR
235BBFBFBFRRR
236BFBFFBFRLL
237BFBBBFFLLL
238BFBBBFBLLL
239FBFFBFBLRL
240FFBFFFFLLR
241FBBBBBFLLL
242BBFFBFBLLR
243BBFBBBFLRR
244BFFFFFFRRR
245BFFBFFBRRR
246BFFBBFFLLL
247FFFBBBFLLL
248BFFBBFFRRR
249BBFBBBBRRL
250FBFBBFFLRR
251BFBFFBBLLR
252BFBFFBBRRL
253BFBBFFFLLL
254BFBFFBBRRR
255BFBBFBFRRL
256FBFBFFFLLR
257BFBFBFFLLR
258BFBBBBFRRL
259BFFFBFFLRR
260FBBFBBBRRL
261BBFFFBBRLL
262FFBFBBBLRR
263FFBBFFBRLL
264FBBBFBFRRL
265FFBFFFFLRL
266BFFFBBBRLL
267BFBBBFFRRR
268FFBFFBBRRR
269BFBFFFBLLR
270FBFFFBFLLR
271FBFBBFFRRL
272FFBFFBBLLL
273BBFBBBFLRL
274BFBFBBFRRL
275BFFFBFFLLL
276FBBBFFFRLL
277BBBFFFFLLR
278BFFBFFBLRL
279BBFFBBBLLL
280BFFBFFBLLR
281BBFFBBBLRL
282FBBFFBBLLR
283FFBFBBFRRR
284FBFBBFBRRR
285BFBFFBFRLR
286BFBBBFBRLL
287FFBBBBFLRL
288BFFBFBFLLR
289BFBBFFFRLL
290BBFBFBBLRR
291FBBFBFFLLL
292FBBFFFFLRL
293FBBBBFBRRL
294FFBBBFFRLL
295FBBFBFFRRL
296FBBBFBFRLR
297FBBBFFBLRR
298BBFFBBBLRR
299FBBFFBFLLL
300FBFBBFFRLL
301FFBFBFFRLL
302BFBFBBBRRL
303FBFBBBFRRL
304FFBFBBBLLR
305BFFBFFFRLR
306FFBFBFFRRL
307BBFFFFFLRL
308FBFFBFFLRL
309BBFFFBFLLL
310BFFBBFBLRR
311BFBBFBFLLR
312FBFBFBFLRR
313BBFFBBFRLL
314BBFBFBFRLL
315BBFFFBFRLR
316BFFBFBFRRL
317BFFBFBBLRL
318FFFBBBFLRL
319FBBBFFFRRL
320FFBFBBFLRR
321FBBFBFBRLR
322FFFBBFFRRR
323FBBBBBBLRL
324BBFFBBFRRR
325FFBFFBFLLL
326BFFFBBFLRL
327FBFBBBFLRR
328BBFFBFBLLL
329FBFFBBFRLR
330BFFBFBBLLL
331BFBBFFBLRR
332FFBBBFFLLR
333FBFBFFFRRL
334BFBBFBBRLL
335BBFBBFBLRR
336FBBFFFFLLR
337BFFFBBFRRR
338BBFFFBFRRR
339BBFBBFFLLL
340BBFFBFBRLL
341BBBFFFFRLR
342BFFFFBFRLL
343FFBBBFFRRL
344BFFBBBFLRL
345BBFBBBFRLL
346FBFFFFBRLL
347BFBFFBFLRL
348FFBFFBBLRL
349FBBBBBBLRR
350BBFFFBFRLL
351BFBFFBBRLR
352BBFBFFBLLL
353BFFFBFFRRR
354FFBFFBFLRL
355FBBFBFFLRR
356BBFBFFBRRR
357BBFBFFBLRL
358FBBBBFBLRR
359BBFFBBBRRR
360BBFFBFFLLR
361FBBBFFBRLL
362BFBFFBBLLL
363FBBFBBBLLL
364FFBBFBBLRR
365FBBBBFFLLL
366BFBFBBFLRL
367BFBBBFBRRL
368BFBBBBFRLL
369FFBBFFFRLR
370BBFBBBFRLR
371BFBBFBBRLR
372FFFBBBBLLL
373BFFFFFBLRL
374FBFBFFBRLL
375FBBFBBBRLL
376FBBFBBFRLL
377BFBFBBFLLR
378FFBBFBFLRL
379FBBBFFBRRL
380FFBFFBFRRR
381BBFFFFBRLL
382FBBFFBFRRL
383BBFFFFFRLR
384FBFBFFBLRR
385BFFBBFBRLL
386BBFFFFFLRR
387BBFFBBBRRL
388BBFFBFFRLR
389FFBBFFBLLR
390FBBFFFBLRR
391BFFBBBBRLL
392FBFBFBBLRR
393FBBFBFBRLL
394FBBBFFFRRR
395FBBFFBBRLL
396FFBFFFFRLL
397FFBBBFBLLL
398FBFFBBBLRR
399FFBBFFBRRR
400FFFBBFBRRR
401FBFBFFBRRR
402FFBFFBFRLR
403BFFFFFFLLL
404FFBFFBFRRL
405BFBFBFFLLL
406BFFBBBBRRR
407BFFBBFBRRL
408BBFFBBBRLR
409BBFFBFFRRR
410BBFBFBFRLR
411FFBBFBFLRR
412FBFFBFBLRR
413BBFBBBBRLL
414BBFFFFFLLL
415FBFFBFFLRR
416BBBFFFBRRL
417BFFBFFBRRL
418BFBBBFBRRR
419FFFBBFBRLL
420BFFBBFBLLR
421BFBBBBFRLR
422BFFFFBFLRL
423FBBFBFBRRR
424BFFBFBBLRR
425BBFBBFBLLL
426FBFBFFBRLR
427FFBBBBFRLL
428BFBFFBBRLL
429BBFBBBBRLR
430FFFBBBBLRL
431FFFBBFBLLR
432BFBBFBFLRR
433FFFBBFBLRL
434FBBBBBFLLR
435FBFFBFBRLL
436BFBFBBBRLL
437BFBBBBFRRR
438FBBFBFBRRL
439BBFFBBFRLR
440FFFBBBBRLR
441BFBFBBBLRR
442FBBBBFBRLR
443BBFBFBBLRL
444FFBBBFFRLR
445BFBBBFFLRR
446FBFBBBBLRR
447FBBFFFBRLR
448BFFFFFBLRR
449BFFBBBBRLR
450FBBBFFFRLR
451BBBFFFFLRR
452BFBFBFBRRR
453FFBFFBFRLL
454BBFBFBFLRR
455BFBBFBBLLR
456FFBBBBBRLL
457FFFBBBBLRR
458FBBFBBFLRL
459BFFFBFBLLL
460BFBFFFFRLL
461FBFFFBFLRL
462BBFFFFFRRR
463FBBFBBFLLL
464FBBFBFFRLR
465FFFBBFFLRR
466BFBBFFFRRL
467FBFFFBBRLR
468BBFBFFFRLL
469FBBFFBBRRL
470BBBFFFFRLL
471BFBBBBBRLL
472FFFBBFFRRL
473FBBFFFBLLR
474BFFFBFFLLR
475FFBFFBFLLR
476FBBFFBBRRR
477BFFFFFBRLL
478BFFFBFFRRL
479BBFBBBFRRR
480BFFBFBFLRR
481FBFBBFFRLR
482BBFFFBFLRR
483BBFBFBFLLR
484BFFBBBFLLL
485FBFBFBBLLR
486FBBBBBBRLL
487FBFBFFFLRL
488FFBBFFBRLR
489BBFBBFBRRL
490BBFBBFBRLR
491BFFBBFFLRR
492BFFBFFFLRR
493BFBFBFFRRL
494BBFBBBBRRR
495FBFFFFFLLR
496BBFFBBFLLR
497BFFFBBBRLR
498FBBBBFFRLL
499BBFBBFFRRL
500BBFFBFFRLL
501BFBFBFBLRL
502BFBFFFBLLL
503BBFBFFFRLR
504FBBBFFFLRL
505FFFBBBBLLR
506FFBFFFFLRR
507BBFBFBFRRL
508FBFFBBBRLL
509FBBBFBBLRL
510BBBFFFFLLL
511FFBFBBBRRL
512FBFBFFBLLR
513FBFFFFFLRL
514BFBFBBBLRL
515BFFBBFFRLR
516BFBFFBBLRR
517BFFBFBBRLR
518FBBFBFBLRR
519FFBBBFFLRL
520BBFFBBFLRR
521FBBBFBBRRR
522BFFFBBBLLR
523BFBFBBBRLR
524BFFBFBFLLL
525BBBFFFBRRR
526BBBFFFBRLR
527FBFBBFFLLL
528BFFBBFFLLR
529FFBBFFBLRR
530FBBBBBFRLR
531BFBBFFBRRL
532FBBBFFFLRR
533FBFFFFFRLL
534FFBFFFBLLR
535BFFBFFFRLL
536BFBFBFBRLL
537BFFFFBBLRR
538FBBFFBBLRR
539BFBBBFBLRL
540BBFBFBBLLR
541BFBBBFBLRR
542FBFFFBFLLL
543BFBBBBBLLR
544BFBFFFBRLR
545BFBFBBFLLL
546BBBFFFFRRR
547FBBFFBBRLR
548BBBFFFFLRL
549FBBFBBBRRR
550FFBBFBFRRL
551BFFFBBBRRR
552FFBFBFFRRR
553BBFBFFFLRR
554FFBFBBBLRL
555BFBFBFFRLR
556FFBBFFFRRR
557FBFFBFBLLL
558FBFFBFBLLR
559BBFBBFFLLR
560BFBBBFFRLR
561BFFFFBBLLL
562BFFBFFBRLL
563FBBFFFFRLL
564FFBFBFBLRR
565FBBBBFBLLL
566BFBFBFBRLR
567FBBFBBBLRL
568BFBFFBFRRL
569FBBFBFBLLL
570BFFFBFBLRL
571BBFFBFFLLL
572BBFFFBFLRL
573FFFBBBFRRL
574FBBFFFBLLL
575BFFFFFBLLR
576FBBBBFBRLL
577BFFFFBBRRR
578BFFFFBBLRL
579FBBFFBFRLR
580BBFFFFBRRR
581FBFFFFBLLL
582FFBFBFBRLR
583BFFFBBBLRL
584BFFFFFFRLL
585BFBFFBFLLR
586BBFFFBBRLR
587FBBBBFBLRL
588FBBBBFBRRR
589BFFBFFFLLL
590BFFBBBFRLL
591BFBFBBFRLR
592BBFFBFBRLR
593FBBBBBFLRR
594BFBBFBFRLR
595FFBBFBFRLR
596BFFFFFBRRR
597BFFBBFFLRL
598FBFFBFFRRL
599BFBBFFFLRL
600FBFFFBBLRL
601BFFFBFFRLR
602BFFFBFBRRL
603FBBBBBFLRL
604BBFFBBFLLL
605FFBBFBBLLL
606FFBFBFFLLL
607BBBFFFBLLL
608BFBFBBBLLR
609FBBFFBFLRL
610FBBBBFFRRR
611BFBBBBFLLR
612FFBFFFFRRR
613BBFFBBFLRL
614FBFBFBBRLR
615BFBBFFBLRL
616FBFBFFBLLL
617BBFFBFFLRL
618FBFBFFFLRR
619FFBFBFBLRL
620BFFBFBBRRR
621FFBFBBBRLR
622BFBBFFFRLR
623BFBFFFFRLR
624FFFBBFFLLL
625BFBFFFFLLL
626FFBFFBBRLR
627FFBFBFFLRR
628BFFBBFFRLL
629BBFFBBBLLR
630BFBBBBBRRL
631FBFBBBBRRR
632FBBFFFFRRR
633FFBBBFBRLR
634FFBFBFBLLL
635BFFBFFFLLR
636FBFBFBFRRR
637BFFBBBBLLL
638BFFFFBBRLR
639FBFBBFFLRL
640FFBFBFFLRL
641FBBBFFBLLR
642FBBFBFFLRL
643FFBFBBFLRL
644BBBFFFFRRL
645FFBBFBFLLL
646FFBBBBFRRL
647BBFFFFBLLL
648FFBBFBFRRR
649FBFFFFFLRR
650BFFBBBBRRL
651BFBBFBBRRL
652BBFBFBBRLR
653FFBFFFFLLL
654FBBFBFBLLR
655FBFBFFBLRL
656BBFBFBBRRR
657BFFBBFBLRL
658FFBBBFFLLL
659FBBBFFFLLL
660BFFFBFBLLR
661FFBBFFFLLL
662BFFBFFBLRR
663FFBBFFFLRR
664BFFBFBBRLL
665FFBFBFBLLR
666FBBBBBBLLR
667FBFFFFBRLR
668BFBBBFFRLL
669FFBBBBFRLR
670FFBFFBBLLR
671BBFFFFFLLR
672FBFFFBFRLR
673BFBFFFFRRL
674FBFFFBBLLL
675BBFFFBBLLL
676BFFBFBFLRL
677BBFFFBFRRL
678FBFFBBBRRR
679FBFFFBBLLR
680FFFBBFBRRL
681BBFBFFFLRL
682BFBFFFBRRL
683BFBBBFBRLR
684BFFFBBBLRR
685FBBFBFFLLR
686FBFBBBBRLR
687BBFBBBFRRL
688FFFBBFBRLR
689BFFBFFFLRL
690FBBBBBBRRL
691BFFBFFBLLL
692BFFBBFFRRL
693FBBFBBFLLR
694BFFBBBBLLR
695BFBBBFFLRL
696BFBFFBFRRR
697BBFFFBBRRL
698BFBFBFFLRL
699BFBBFFBRLL
700BFFFFFFLRR
701FFFBBBFLRR
702FBBFFFFLLL
703FFBBFFBRRL
704BFBFFBFLLL
705FBFBBBFLLR
706FFBBBBBRLR
707BBFBFFBRLL
708FBFBBFBRRL
709FBBFFBFLRR
710BFFFFFBRLR
711FBFBBFBLLR
712FBBBFFFLLR
713BFFFFBFRRL
714FBFFFFFRRL
715FBFBFFFRLR
716FBFBBBFLLL
717BBFBFFBLRR
718BFBBBFFRRL
719BFBBFBFRRR
720BBFFFFFRLL
721FBFBFBFRLR
722FBBBBBFRLL
723BBFFBFBLRL
724BBFFBBFRRL
725BFBFFFFLRR
726FBFFBBBRRL
727FFFBBFFRLR
728BBFFBFFRRL
729BBFBBFBLLR
730FBBFFBFLLR
731FBFFFFBLLR
732FFBFBFBRRL
733FBFFFFBLRR
734BFFBFFFRRR
735FFFBBBFRRR
736BFBFBFBLRR
737FBFBBBBLLR
738BBFFFFBLRL
739BFBBFBFLLL
740FBBBFFBLRL
741BBFBFFFRRL
742BBBFFFBRLL
743FBBFBBFLRR
744FBFBFFFLLL
745FBBFFFFRLR
746BFFBBBFRRL
747BBFFFBBRRR
748FBBBFFBRLR
749FFBFFFBRRL
750BFFFFFBLLL
751FBFFFBFRLL
752BBFFBFBRRR
753BFFFFBFLRR
754FFBBBBFLLR
755BFBFBBFLRR
756FBFBFBBLLL
757BFFFBFBLRR
758BBFBBFBRRR
759BFBBFBBLRL
760BBFBFBBLLL
761FBBBFBFLRL
762BFFFBBFRLL
763FBBBBBFRRL
764BFFBFFBRLR
765BFFBBBBLRR
766FFFBBFBLLL
767BFBBBBFLRL
768FBBBFBFLRR
769FBFFFBFLRR
770BFBFFFBRRR
771FBFFBFFLLR
772BFBFBFFRRR
773BFFBFBFRLR
774FBFFFFBRRL
775BFFFBFBRLL
776FBBBFBBLRR
777BFBBFFBRRR
778BFBFFFFRRR
779BFFBFBFRRR
780FFBBFFBLRL
781BFBBBBFLRR
782FBFFBBBLLR
783FBFBBFFLLR
784FBFFFBFRRR
785FBFBBBBLLL
786BFBBFBBLRR
787BFBFFFBLRL
788BFFBBFBLLL
789FBFFBBFLLR
790BBFBFFFLLR
791BBFFFFFRRL
792FBFBBFFRRR
793BFFFBFFLRL
794FBFBFBFLLR
795BFFFFFFRLR
796FFBBBBFRRR
797BBFBFBFLRL
798FBBBFFBRRR
799FBFFBFFRRR
800FBBBBFBLLR
801BBBFFFBLLR
802FBFFBFBRRL
803FBBBFBBRLR
804FBFFBBFRLL
805BBBFFFBLRR
806BFFFBBFLLR
807FBFFBFFRLL
808FFBBBBFLLL
809FFBBBFBRRR
810BBFBBFFRLR
811FBBBFBBLLR
812FBBFBFFRRR
813BFBBFBFRLL
814FFFBBBBRRL
815FBFBFFBRRL \ No newline at end of file
diff --git a/day6/__init__.py b/day6/__init__.py
deleted file mode 100644
index f9d4f87..0000000
--- a/day6/__init__.py
+++ /dev/null
@@ -1,47 +0,0 @@
1from typing import Iterator, Any, Generator, List
2
3from aoc import BaseAssignment
4
5
6class Assignment(BaseAssignment):
7 def read_input(self, example = False) -> Generator:
8 group = []
9 for line in super().read_input(example):
10 if len(line) == 0:
11 yield group
12 group = []
13 continue
14
15 group.append(line)
16
17 yield group
18
19
20class AssignmentOne(Assignment):
21 def run(self, input: Iterator) -> Any:
22 return sum([
23 len(set(''.join(group)))
24 for group in input
25 ])
26
27
28class AssignmentTwo(Assignment):
29 def everyone_same_answer_count(self, group: List):
30 answer_count = {}
31 for person in group:
32 for answer in person:
33 answer_count[answer] = answer_count[answer] + 1 \
34 if answer in answer_count \
35 else 1
36 return sum([
37 1
38 for value in answer_count.values()
39 if value == len(group)
40 ])
41
42
43 def run(self, input: Iterator) -> Any:
44 return sum([
45 self.everyone_same_answer_count(group)
46 for group in input
47 ])
diff --git a/day6/example.txt b/day6/example.txt
deleted file mode 100644
index 8fdfebd..0000000
--- a/day6/example.txt
+++ /dev/null
@@ -1,15 +0,0 @@
1abc
2
3a
4b
5c
6
7ab
8ac
9
10a
11a
12a
13a
14
15b \ No newline at end of file
diff --git a/day6/input.txt b/day6/input.txt
deleted file mode 100644
index 5785ea7..0000000
--- a/day6/input.txt
+++ /dev/null
@@ -1,2148 +0,0 @@
1qtmdwspah
2sqwdamhpt
3phwdaqsmt
4stmdqwhap
5pqawdhtms
6
7bgsickuztovfwa
8yiozauvgfsbtkwc
9zygijavmtfkcuwobs
10fvsuwtiadzrncboklg
11
12dxgieku
13dihnxkgf
14
15mqybtd
16yqbtd
17btydq
18
19rgpbcfxtzoewy
20otbyrfgwxzpec
21yocrwtebzxgfp
22
23qcpngeodrszaky
24ocaqrngsyuz
25
26xwenu
27nwsxuye
28
29xapwvhsktlmr
30twpslarxhvkm
31vhlwmrapxkts
32pmkxraswvlth
33ksrxpvtmwahl
34
35xhcepbdsltvk
36khcdptsixbg
37spbjtdchxk
38cbkxspqtdrh
39
40kaishmtdl
41jcnprqigt
42
43pjqtekodlmwcaginxfzrushbv
44iuyzsfaxcvrotdmklgebpnjwqh
45dirxeqbswlonhzumgafvckptj
46zqpitfrjnmhvuxbcdlwkogase
47khncmsfdzlgwpvriotxujbaeq
48
49motb
50twm
51mvt
52nomt
53
54euwhdnlaxbtjiqz
55dquxjznhtlwebia
56atzdwxqiunhlebj
57jnwlzxdiuaheqbt
58
59jnktcwaovpbqzei
60qcrljzskbvo
61
62tangojspuvlwbryeicz
63eujvkaporgwdilbyfscztn
64
65pjrisxqwdoyze
66cvyzmjlqxsgpeirw
67xieqwcajzslryp
68xjpzerwqyamis
69
70rftxglbkpqnchvajs
71cnsvqgpurtjfeb
72
73m
74mcx
75wramgjy
76mv
77
78meacfoiqpbzy
79zmvqpaibegoyfc
80oiyzmaengcfbpq
81uiaqprbycmzfoe
82
83qjdnecvmsr
84sdmecpqn
85
86gt
87tg
88
89bndhmeupwszlqiycofkt
90fcrptkulhixjnazvmdg
91
92nrcytwdaozvbmhsjuk
93owarihdekqzslvnxmubyfpj
94suzlnmxvkwjyodhbrag
95
96fz
97zf
98zefpk
99fz
100fz
101
102zfnqcdhvjwxa
103hxfazjcwd
104xzhtajkfwcd
105
106weusntyxblcdqpvgfzoam
107oxiyslgabqvdhnwzm
108
109jneuovbpgfxlsmkwd
110kjbwonlspfdumcegthv
111omvfbgejaiwnkdulsp
112orfgdlbqjkvhumpewns
113
114mhb
115hb
116dhjxb
117boh
118
119af
120tzlbugdkq
121j
122
123qhgnav
124ngvahqp
125gvnqha
126
127hoer
128oufeq
129u
130gmy
131td
132
133naguhdzsmcxlye
134pglwjsvxzduc
135uosgxqzldct
136xugcszld
137qcxsgtlzoud
138
139uoxacitdkeh
140kypudjgbsefi
141
142bjywqhgcps
143uaybelqkjpiwc
144yblwqpjec
145jwvyrcpbqzt
146qjgywbocp
147
148cuvwxkmrnliodphaj
149rvuzcdxknphol
150hprvkucdonsxl
151
152qtgjunkhaovbw
153wkgvotljhbq
154
155blfvtr
156vrtfby
157mbtvjdfnr
158xbftpvrh
159svbrhptf
160
161rijakd
162kadnijer
163kqdwjifar
164jdrihkmaz
165ejnirkfda
166
167ysukmtloxgjhvnwp
168qjxlwnvpyzsgbutomd
169
170gxpdqomijnhkyws
171vyqgxmjpowhsnik
172mnxqhgykwiopjs
173
174fm
175u
176fc
177zd
178yplnbikosxj
179
180welcjifhgnzupo
181izfpwljnodctheg
182dtlhgznwepcojif
183hzwvgpcifnjleo
184wgpqvtcnjofhlezi
185
186azhipsvbx
187xwbip
188ixpb
189xbip
190bpxi
191
192yxhpltiuvzorefqnwm
193azwiylnohxmejqurftvp
194hvuzwfxmnqyeltpro
195kwxghtdyfreqmplvzuon
196
197n
198f
199a
200f
201
202xfoaj
203ofsqb
204eqfo
205
206canrzup
207znarcpu
208pzcnrua
209czaupnr
210puchnzra
211
212hwxtaqvsci
213rhxylbskwcjmoid
214svqexwhaic
215whxisc
216
217xfamongdyrhjpizqbtswl
218tsnermfbvidyqcwhlxuzg
219
220jz
221zj
222zj
223
224mohrs
225rom
226mro
227orm
228
229rnwbshdkxv
230vkrjwsdthnxb
231kjwrxhsvnb
232rnbhvxowas
233
234lbdahrf
235ralbfhd
236lhfadbr
237radhflb
238
239wztomybdgaqhu
240rmuohgyqbdz
241dgzqrumoayhb
242hgqdmyubjpeoz
243mgdquhzoyb
244
245xiy
246yix
247bixoy
248xyi
249xiy
250
251xvzqjwfkhctgeayu
252kdjmlrow
253
254vnlu
255ulnvg
256wluvn
257lvun
258
259btmcqewifuh
260gqvakfzrmyuicsjpdbo
261
262npfy
263yznfx
264ynf
265
266b
267b
268b
269b
270b
271
272zuhkqwfpm
273mqpzwkhf
274pnwfqchkzm
275kfumpqzhw
276qzwhkmpfu
277
278pcevtdhgylnmsxaqiuzkr
279pxanvcgiquethzksmylrd
280vdszgiqyautrpxhcnmlek
281
282bhru
283ubhr
284uhvopbr
285trbizhud
286
287omnpx
288yp
289cpf
290p
291
292fuhokrpewbyvlnjcdmqi
293pcijvmskndtwohxylqeurf
294cdvfhebukmjrqnolwpiy
295qpwhymlcfjrndoeuivk
296
297xwehzfud
298wupfdexz
299
300xbdh
301jxdhb
302
303hmkbuyl
304rtcefpsaui
305
306jlfsy
307oknuy
308kvpy
309
310hcgzs
311hegzs
312sapzhd
313
314vnhjbqk
315bkvqnhjd
316vhnkqjb
317jhnkqvb
318bnhjkvq
319
320myjnp
321wkyjamn
322kmyjna
323
324rupvd
325pvrud
326rpdvu
327
328kvnlmhgizwdbjsxf
329nmfdkzgjxlbvsiwh
330zmsphibqwglkejfxrvn
331
332ge
333eg
334g
335g
336ga
337
338eivbk
339vikeb
340bkiyve
341
342puvf
343fvup
344uvfp
345pvuf
346fvup
347
348rydhgfbmpktzvlewjusn
349wqgfnovcerskjad
350ekrfsjgvowndcxq
351
352muco
353ouse
354
355pxoihbg
356bogpxhi
357
358aik
359k
360k
361
362qa
363aq
364aq
365aq
366
367snezvhbkwa
368nvzuaksbh
369zbvalskhn
370xposdbmhnavgzk
371thvfcbznkulas
372
373jaxdfucymsghp
374hfxaqcwunsjgmkpyd
375glfdjpuzxacyhm
376
377sp
378ps
379
380cesof
381vsu
382s
383svu
384sv
385
386s
387t
388te
389t
390
391epnq
392oeyqn
393nqe
394qen
395qne
396
397taxpglnzkejswbo
398zekwtongjpbxas
399gasokxnzbejpwty
400wanzsfbgpxjeotk
401wzxaengjkbptfso
402
403imftvao
404vtmif
405
406pbjelcf
407prnhgwqem
408
409xopmzg
410zfoxg
411xzgo
412ozxg
413
414gmcybniqevotjda
415ytiebavgdqojcnm
416
417mr
418m
419
420f
421n
422
423mnhpxfircz
424cihmvrxzyf
425
426ygibvxud
427ykubiqxgvd
428xydibeuv
429buvqdyxi
430budxiyv
431
432zjpqlmftionbgu
433tzbfgjiqoumapn
434nzcjuftibompqg
435aztbmoiqnjfgup
436
437chpnjmvlw
438hlbrdvqemcnwp
439pnkvcmlwh
440lmcyfwpvhn
441ynlmcjvipawh
442
443kzhxeqfa
444feaxqzkh
445hzxkaeqf
446zfqhexka
447fqxahkze
448
449blwqdpy
450yqdaniplwbe
451jhxbrwdylngqs
452qwtdylukzvbm
453
454asobzdl
455jahzxpdy
456daksz
457zadufl
458
459ahunxksgp
460sakhpun
461nukathps
462uzhnsapk
463pmusknahz
464
465yzmogwp
466tbqcp
467bnpcr
468xhp
469
470dhyxojbvrqnml
471nkr
472rnc
473wngra
474
475kmdynhutpjlvxaroce
476pbwohkjtmyfnzg
477tjoikmhypnsq
478
479zduqkfivgjo
480oizvjfuqbd
481zvjuqrfigdo
482vudqiozjf
483oidvqyzuftj
484
485usmo
486sm
487sm
488ms
489
490njf
491f
492glft
493
494auh
495hwiavfug
496
497xevqipr
498gwxdmlsuakcyf
499
500iltoavmycurph
501luhcarivtomxy
502yihcratumoevxl
503louhcvmiytra
504miqzdtolhrcayuvwg
505
506xwtcmqso
507
508xdnimfbyr
509okimydfr
510uhgzfyjqat
511
512evjdtmcoxiklhpgwq
513qgnxbkftmhiy
514ixqrakuhngytm
515
516hfzpe
517uefphkb
518afmwhqpek
519fvpoygjinlhexds
520
521oly
522byoal
523yol
524koly
525oyl
526
527k
528k
529k
530k
531k
532
533ofhrz
534xhpruzq
535zrh
536hwgrbedykvsmzin
537
538ginxcsjevrwyqz
539egysvqncxzrij
540syvgzcnreqijx
541zcvxgsjrqenyi
542qyfvzirnjcgxes
543
544eyxfutwoqjbrvkgds
545xsfjoutrbeqwkvgyd
546vqwtjgdbrsfoyukxe
547vfurtykqgebjwosdx
548eypubrkojqvdsgtfwx
549
550odwmeztifrjxn
551nrgmwlxc
552vgkxwrlnm
553
554tz
555tz
556rtz
557
558daze
559ezyad
560
561ujqdozgh
562goujdmqkzh
563jghuqdzo
564gjozdqhu
565
566erdnakojyfzchvxg
567hfekdrnctgvzpyjaxom
568
569hwi
570wih
571hiw
572hiw
573
574krqdscaoiwhnyz
575rwjaknoxyidzsqhpc
576rnyqdawcoskifghz
577wahrqznyvdcskiuo
578
579swlakrxjmtpv
580inaylxhdjwkmsvur
581qbxavfrlewkcsjm
582
583ucxvtw
584ue
585u
586lu
587
588oztxeqjvgb
589tpdbjgoqe
590
591spyqunh
592uypnhqs
593
594fdw
595safw
596wfjh
597wfomxi
598lwfsdn
599
600daibtezjo
601qtxeaizjmdb
602aoejitbkzd
603etadizjb
604
605jkeynazqvobiflrushcwtgdmxp
606wnrjequcdxlkmtfobihsvy
607iksvuebxtjwmhfrdqyocln
608
609gkxq
610pkw
611kw
612
613swy
614ywsn
615
616jzqurhixawto
617gaojpfrzciq
618izoxrtqawj
619asoihjqzutr
620
621wijlermdyzhstf
622zjlrwfsdhmtiey
623elymwztijfrdhs
624
625qatxy
626tyq
627
628nja
629yha
630a
631gfsav
632kha
633
634uebolhvntdkfsxap
635fpnlskhdeuobva
636oahteupksbvdlnf
637oeulbvhdpfksna
638ansgphkrfdlovebu
639
640vpe
641vedp
642pev
643pev
644pev
645
646zacfpshmrequykt
647tuzarfpmknwc
648pzuimacvfktr
649
650cjeqourh
651eouqcljr
652rojueqc
653
654ykoi
655koyi
656koyi
657kiyo
658
659fvkhuntrmpz
660ckngmxirpuzvat
661rfuvksnozpath
662bntdrlyvkzupj
663rukwpvtzcn
664
665wczery
666eczwrby
667wrzcey
668
669xjndayl
670hnlyaxdj
671lndayxj
672ynjdlaxt
673
674j
675j
676j
677tj
678
679awhrfvjbzduistx
680gnyhcmteop
681
682ym
683y
684sy
685my
686
687zkai
688ajiz
689aiz
690aiz
691ikaz
692
693irgsokuwy
694lnxtcqsiwmf
695busyvhzidw
696
697qxhpynjewsfmkd
698hwpqenfkydm
699
700aedbfmx
701fwexa
702jgckhspy
703
704zpusakfeb
705izpev
706sdepzu
707znpwe
708pqjgehtxzr
709
710vqmlkjznbeiofahucdtsgw
711utmvhgqedbocfwkszjlain
712yfbqzaspnlgotrdjxuhvkemiwc
713idglcasthofkuemnbjwqzv
714
715uqhdebp
716chdbquepl
717qedzphbu
718hupdqbe
719qbedhpu
720
721ehnv
722t
723
724aksmbzu
725wvlhktdqpjmsirz
726fznykbsem
727ksgmz
728kzxsymc
729
730vnoetrhlgkcmqxdp
731nvdqtkolcrhxep
732pxcedrnhoiltqvk
733elrxnhitcpqdokv
734
735ymuxitzqsagrkofcvbj
736tauxskfigjymro
737
738cnfdjwbxkisp
739cpydkbjxwsifn
740cipnkbufswdjrx
741ybkxihfwejnscdp
742
743yueaplwitfdvkoxnbjcmrqgz
744jvlfmxoakzwiegpbdnrquct
745manwikovgbpuhrcfesjlzxtqd
746
747lptzwxfn
748fpnxtlz
749nxtflegzpj
750
751dkpuyaefsijvlrhgqxmnt
752bshiwokugpflvtmzeqxnyja
753
754in
755n
756xzou
757
758ng
759gn
760
761epqbvmi
762vqembi
763bvmeqizu
764mbeqiv
765
766cjapgriulbzeq
767ugiqdzcvpobjlrek
768zqleircpubjg
769cirjuqbzgepl
770
771nhpsreikdjzo
772hkjsnodipzer
773znoidphekjrs
774
775dezf
776edfz
777efdz
778rdfze
779
780nzitsqrfp
781qiznrfspt
782rfqizspnt
783nsqizrptf
784
785xntrkogqfapj
786nioagqtmrfkjyp
787
788is
789sgdi
790qsity
791
792pe
793ep
794ep
795ep
796
797uhvpiwdgsfr
798uwlpcqrezykovni
799
800aevu
801ae
802ea
803ae
804
805djzfhxmas
806msdxhz
807zexhdsymt
808dxzshktm
809dzemshxg
810
811msqiuvncoltxejg
812cqxfmsonlvute
813
814wmfblsrogvjinpc
815rplfngicojbkvwms
816cfbolhnjvrsimwgk
817gmisflrwnkcjbov
818vmwrcbosjngfuil
819
820kbxitoqvzajudfnsgmyc
821ikfwcxzgvtjedmsyouqnab
822aqknmufjiypcvxbgodstz
823
824eshyzxbqncuomfpwgk
825gzcxqpmhljeoyuikbfrn
826bzhxveutpfyaqmkcong
827
828evqyuicpfhl
829yquckvlpiejf
830
831anf
832szydm
833
834qt
835qt
836qt
837
838mfyovqgpnlbcxidauzh
839cqniopdhfgxlauvzbmy
840idxofbaylmcznuvqhpg
841qbcpihzogydlfvmnwuxa
842qgvcumyizpnabxdfhol
843
844btwjlohyfaq
845ydlwprkj
846
847rhisamcj
848csirha
849srcaih
850icshar
851
852mejydkgtnfovuzix
853enuvirjogdmkyxztf
854xefomztvkungysdijc
855jxdginfktapovyzueqhm
856fioktdsnemgjuzyxv
857
858hrztvexlkob
859lwekirhbxdzqtmo
860
861etxv
862arxtvue
863exvft
864
865fwdnqsomhtryxvcgzej
866eczwytuhfsgmdqnxoj
867ycdsqwznhftgjmkoxe
868tsjnexcafwmhygzbvqod
869
870xovcfts
871cfsopxvdt
872xoscfvt
873osfxtvc
874
875w
876rc
877t
878zs
879ik
880
881lzm
882zpl
883
884romqvb
885mvo
886
887uy
888y
889y
890y
891
892govwliuabszqp
893goiabwfusvzlpnq
894qpiwgbvaosulz
895apvguizblwsqo
896
897s
898m
899s
900s
901
902ozpiljymxhswnfuevt
903emvbwshnylzxpjti
904nveblmzchtwjiypsx
905
906nldfsb
907sfblndt
908sdblfn
909bnflds
910ndslbf
911
912ieg
913idew
914
915wonxsab
916wbsaoxn
917nobaxws
918wasbnox
919
920alscukjbf
921lsbjakfc
922
923jxcduqioabwpyhlzef
924ialdxwfzycqjhbepuo
925jfzypowishadclxbueq
926
927riydchjfnwqvtmbpsaloxe
928dsbwfintzelormhvxcaqpyj
929ejomaiyqsxcthfvpdlwbnr
930lrycvtunboifgxawqemhpjd
931xvtiafqrdwnoymclepbhj
932
933jsydqempfvntrhui
934miyefthpuqsrvnj
935zsvyrmhbtuelpqinfja
936nuphytvreqmfsji
937
938cltvanwuh
939tulachoyvwn
940tuwclvanh
941
942bixkgozashw
943hakibzoswmx
944
945poxkblmhqjftwsdcn
946bhtykpvzjxuiengao
947
948j
949j
950j
951
952cqodguxrzles
953loxqcrgeszudw
954ocsdqruxglze
955rugqoyxesdzlcf
956ulzdorxgsqec
957
958yvz
959vyz
960
961mfq
962sztdnk
963py
964
965zawgmj
966jawgz
967gwapjz
968sgzajw
969
970ekoadscpwhg
971jsuchbxmfyzlnwq
972
973wlkrqcjux
974xuqjclr
975gjrqlcxu
976
977afcosnhvprzblxtwd
978abszvxoglnctfhpwr
979bjhlvzfwceayksxtun
980tzvnxrhwlmsfacbd
981
982igreocyhquzjmvlx
983liowjethfkqszvmxdyu
984
985ljeqkvwpdazgocf
986cqgdyvmjuwpeotainsr
987
988mhoylsckuzxbiaevq
989vyczxkjeoapsbifu
990kxbdosyzavujiec
991
992mwsfxbkjqazpiohgnyldc
993xqgnadblfkwpcomshiy
994wgvsalrhqbmieyxodpfnkc
995
996eurqfmtkvjbosh
997vyqrhkotfblmseu
998brtfqkvoheums
999rvtksmehoubqf
1000uwftdoarkmvqgehbcps
1001
1002ctyalrqdxskjuoh
1003dlathrokujqxs
1004hxsqukdoaltjr
1005osrqkautljxdh
1006
1007zfdlxtr
1008sburlzxd
1009zlrdx
1010
1011ocfb
1012cbfo
1013
1014uykhxqrtmnc
1015ahigrcuptnxdqmk
1016
1017tckz
1018ktzc
1019
1020vzgtxhkums
1021kvzmhtgus
1022sgthkzumv
1023vzxsgmkuht
1024znqmuhvkswgt
1025
1026jtdwk
1027ydkti
1028kdt
1029dkjt
1030
1031mwxehozbnqpad
1032ryjdeblzwxnpoucqahmtg
1033
1034liumaz
1035izulam
1036zauloim
1037miludzaqr
1038
1039rzkjguslxohwnfdivm
1040ofulwkhisgvjmnrxzd
1041dikwvojugxzfrmnlsh
1042sxjdzkcuworbnvgflmih
1043vlmxrzikndhwjofgus
1044
1045fzqnodmx
1046a
1047v
1048
1049lfoeh
1050leovfh
1051hofsle
1052
1053djku
1054kjud
1055dukj
1056
1057qtiwbxfhlzjnokvpadruymgse
1058onurjdisvgzwaqkybftlhpmex
1059fnmqwuhtyjrkepbgildovxasz
1060marndljbkegqxtupviscywfhzo
1061fdbqehtxkavjimzwporsugyln
1062
1063aqkonbhvfdljigp
1064phaqrlkbjdin
1065phldcbkaumjvinq
1066iplbjxeykqhdazn
1067
1068zsl
1069sz
1070xsyzh
1071zs
1072
1073xdhlq
1074ndlkxjyu
1075xlde
1076xdl
1077
1078blwmairvkofcuq
1079tedokrvbqm
1080
1081pw
1082p
1083
1084iqrbnglofs
1085grwuylifvkbq
1086
1087yl
1088yl
1089
1090xaizpuhlqo
1091kiloxm
1092ilkox
1093
1094puaorhzmtvfg
1095mutoegrhzafv
1096
1097lrzmpt
1098dpqyihnsa
1099
1100jfiodcs
1101spi
1102swni
1103isn
1104
1105ohdmyvlpbxjnqzfrswiuaeg
1106ceafhrujqtndivbxpwzsmg
1107
1108mvoxyd
1109tvdoymx
1110xdymov
1111
1112py
1113y
1114
1115nutogsehiczykpmdvf
1116ngmueistpxkfodhvzrcy
1117yuhczioegpvmnfktsd
1118
1119zp
1120z
1121zbc
1122z
1123z
1124
1125creyt
1126uisfmova
1127er
1128
1129dltugzhniyjro
1130lizndhrutojyg
1131jhgnzytuordli
1132lhgotuznirjydc
1133
1134xtrckznswlueia
1135ivnwstaeulrkzjc
1136kcwaleiuznqrts
1137rkwiunqzatsecl
1138
1139y
1140pqnae
1141ofm
1142fl
1143y
1144
1145czoi
1146smvbnd
1147tzi
1148
1149tzanvx
1150azgnjx
1151ingjzyuae
1152anrhzkq
1153
1154eqhafrbmw
1155rjscmwxz
1156lrgnyfeukdvmiqwpt
1157
1158tarsmxwveqdhjbk
1159xrajvebtdmwkh
1160taojykmefwbdzrxuvnp
1161wbdtmjrevakx
1162ctilgkbmaredjwvx
1163
1164wp
1165p
1166p
1167
1168zprwtogmdu
1169orwdmtzuxpg
1170omwputzdgr
1171umgrtpwozd
1172wgzdrtpmou
1173
1174xtkjsm
1175ylqptfjmk
1176
1177pzgyknr
1178kyorpngz
1179pnzykgra
1180
1181rtsiypahgecuvj
1182rsudtcgjiheyvp
1183rpyehvtijcgsu
1184cyprhvestgjui
1185uvigershtyjpc
1186
1187jlmhtfbsoq
1188gbtohjsqm
1189mbstojqh
1190mhkecsqtabjox
1191
1192xrhinjamvo
1193hproxvnma
1194mzscorhnx
1195
1196utwprfqjyhsvzaomcb
1197yesrijzcagmhbwoutvpnqk
1198porcxwmyutzajbhqsv
1199uvrcpyzsmhajowtqb
1200ycpwuzovatbsmjqhr
1201
1202fbkgycqutlmw
1203wuybgqmlcfk
1204xycgbkqmulwf
1205bgcfwyuqklm
1206
1207vntsimju
1208boegqz
1209
1210edotgsi
1211dgoism
1212iogds
1213gdstio
1214sogdixz
1215
1216fdi
1217ifd
1218
1219rx
1220v
1221x
1222
1223qibkwyvmtxargjldc
1224bykzitxevgrwsnqflcdjm
1225
1226dborhtpxjsflciveyq
1227xbuijhdqafnsrvepozytcl
1228qhlopsdtebcjyfrixv
1229hlvdyqxtcroegfjbisp
1230ormifqdhyvxjpclebst
1231
1232qtzumogwrclaiex
1233iburltzgexdocwapq
1234ixuwtoqlegnrzc
1235xizeklwrugtqhoj
1236
1237iynjbsahtvfeurqkgd
1238rtnwjgeukyadicflq
1239deytfqknlpjuairgc
1240
1241oy
1242to
1243po
1244
1245wyj
1246q
1247
1248vatgy
1249xegndfrv
1250smgv
1251sgzbacv
1252
1253ifmepunrdszgh
1254mvgdesianluzpfrh
1255eypfughdnmszitr
1256nepugsfimzrdh
1257fzuiqesnjcdwoxmhkpbrg
1258
1259goycuvjqnpix
1260ytwnigvcjq
1261
1262bsiczfhkne
1263gwxp
1264ojdl
1265a
1266uvgm
1267
1268kaxzjpmwutcqnv
1269isadmolbtrfugxyhcj
1270
1271vxqhfryiakbn
1272txhqbavyknri
1273
1274ptbqifxcwyjgordls
1275dbpvkeauyc
1276
1277kovpawxf
1278ovwxkpfa
1279xbknwjpcoaftq
1280oxapvfkw
1281
1282ybjvaftkzheqgiuposnmxc
1283ungfezmiskqvyjaphobxtc
1284yjqimsvbktaonpeucfzhgrx
1285nepvgsifuqytahxzmjkocb
1286qmaexzipshcvjkfyonutgb
1287
1288u
1289u
1290u
1291u
1292
1293tpgqyvjaedlkbhwr
1294nytwkpqlvmgrbehxjad
1295
1296vsruxht
1297rdmb
1298rfb
1299
1300khqyd
1301ycj
1302
1303aidrbmzkxvt
1304yzvbkiorxamdt
1305
1306mzwvhblrxtn
1307vqalzwcbrxjmtnd
1308wlvnrtxmzcbg
1309
1310ow
1311ow
1312ewuob
1313wo
1314
1315gl
1316mnacgl
1317lg
1318gul
1319kdflg
1320
1321oqvd
1322qodvy
1323qdvo
1324qvoda
1325
1326rd
1327fus
1328thoi
1329
1330rtnz
1331tqagrnlb
1332
1333wemlvjbhuqcfrtodkxzn
1334pjbtruvdmhowfznlxekq
1335eoyadnxbuktqshgwfmvzirlj
1336
1337kumotnwel
1338lmezwoutkn
1339nuemkwlot
1340efnlduohmtkw
1341
1342mhaubleozw
1343zwulbhmo
1344mhbzouwl
1345hmwulbzo
1346
1347hvjpdoiswzbenma
1348ojndsepwhiq
1349dwsjnhiope
1350tsohjdpwien
1351joipwhesnd
1352
1353edbhi
1354fisdhbe
1355
1356r
1357v
1358v
1359v
1360
1361ezlc
1362czei
1363azlcei
1364czie
1365eynczs
1366
1367ngfuhekmzxvopy
1368twogyeknxvmhbjzpuf
1369zxpfnygeomukvh
1370
1371ktxduimz
1372vtgmurjiqk
1373mtkbuia
1374
1375uykwh
1376kuyhnw
1377
1378dzjqnwbrouh
1379qfncpvszdeg
1380cydmlqnz
1381dzqtn
1382
1383xga
1384hmxpdg
1385fnxgeu
1386nxeogu
1387
1388nsxrgu
1389xngurs
1390
1391jvmudzscnalhwktry
1392lrvucmjkwztsyna
1393wyruzcjxlbtemsknva
1394yzwvklpcqustojrmnai
1395zyjntswcuarkmvl
1396
1397zq
1398qz
1399qz
1400qz
1401zqt
1402
1403gbpnqrxu
1404dqnxyvwhbtgi
1405csqmbfjeaokxlz
1406
1407rdtuqpxnbzj
1408yzsnpu
1409fcnrzpou
1410penzu
1411nvukhlmizwpag
1412
1413tdvfgahbiw
1414gtbpsdo
1415
1416ucdprxmznhbw
1417rcumdzpwnx
1418dxnpzrmcuw
1419drpxcmnzuw
1420zxwcnpmrdu
1421
1422dhouqlfvsakg
1423uaofqkdsvhgl
1424uoalfhvqsgkd
1425klgvfudqosah
1426auhslqfkgvdo
1427
1428qkwfimrogubyhljda
1429shuprevacxlndiqfjwy
1430
1431crpsetajviwmqhl
1432szqdpfvimaekgbj
1433
1434geyqpl
1435gzqlei
1436qleg
1437
1438kcfipzjwyugsrtahboneqxdm
1439uwkcmtdfopayenqbshxi
1440eudhcyfpwamoxvkqlistnb
1441
1442yfqbtnwuzsdl
1443lszfnquwbtyd
1444fsjznbdwytulq
1445bfgldzqyutwsn
1446
1447n
1448uv
1449
1450vjfzuhqgaypbmcd
1451hqmbpsjyugrvfzatndc
1452ovfazbdipqxeclykjgum
1453vmbzptjwydaguncfrq
1454
1455k
1456w
1457k
1458k
1459
1460eipruzqndlys
1461elrysidnzqu
1462
1463pzlgeciqys
1464wjvrdxmunfsb
1465
1466kdy
1467kd
1468kd
1469dlk
1470kd
1471
1472yretjs
1473g
1474kahzubo
1475rjd
1476r
1477
1478hlxpawm
1479xmyeltpqw
1480gmpxicbv
1481burmxc
1482ozxmsfjdn
1483
1484dtskziwy
1485qxzycupgs
1486
1487iflherjytpxg
1488thienjgrfxly
1489heyftrgjlix
1490igyfjurphtexl
1491gtyxrjleihf
1492
1493nuswkhz
1494xosqihvwfrez
1495hgszyw
1496
1497ukphojt
1498hotkpzju
1499htupjbko
1500mjpkouhd
1501
1502luhsi
1503shliu
1504lihqsu
1505
1506iqr
1507ybndlhzrgwtmkf
1508rxcuq
1509
1510j
1511j
1512j
1513j
1514
1515rwqsbyoe
1516fweujxcoliya
1517mpowrey
1518
1519wvn
1520wv
1521
1522frbuexwg
1523xmqgdwfeb
1524
1525rbyjsiqxtfcvlup
1526vqpuyrifcsjxtlb
1527yvtqirslxpjfbcu
1528vsribxjcufylqpt
1529
1530ikcvoguphqtyjdswzexa
1531ptjocgxiuhwavydsqzek
1532ipcuohvqdwyxsetkagjz
1533vpgdhzqckoywxaijuest
1534
1535erhdoyugavcq
1536doqsvahugec
1537cnhezgfavbuixdo
1538
1539lhgvknmequsctapxzbjdorf
1540fodnxkrlqthcubmzvpjaeg
1541fcvqmordxhklpybujgenatz
1542nlmbxvpcokearhdzjtqufg
1543uthcdpbvojlqewrknafgxzmi
1544
1545hwjpevzgrtmoqknydfs
1546jvzstyfdhgkoqpmw
1547
1548ncw
1549gwivun
1550wnl
1551nxw
1552najwbzdrke
1553
1554ckyowhxblrt
1555flabyrdwctk
1556lbwripvjtykcs
1557
1558pn
1559eonwtzp
1560yxsirvqhcm
1561fapu
1562njwb
1563
1564lsjdymwpz
1565zmrhuajxvewysp
1566
1567lyisuvcbdqxotkmh
1568bkmrldugxsycohqitv
1569xlhcvtmyqibdosuk
1570hscubvoelkyqdximt
1571
1572mb
1573mjbf
1574rbm
1575
1576zvqlg
1577gnlvjbz
1578zvdgl
1579dslgvzt
1580vczwgl
1581
1582bem
1583yqpgj
1584dxflhwokatuvnzs
1585irqc
1586jqp
1587
1588gqolch
1589hnozqgcl
1590
1591dnhwl
1592hdo
1593fduc
1594
1595lug
1596lug
1597gurkal
1598lgu
1599ulg
1600
1601uahmzdyxbr
1602htkmwpcxbqy
1603cbhyxmp
1604
1605ajv
1606mjt
1607j
1608ji
1609
1610bfpygmtxajnk
1611kpnmfbxtgayj
1612pcynamktgbjxf
1613tfympjvqxgnkab
1614
1615x
1616x
1617x
1618mxf
1619vqx
1620
1621wlzsgdhixr
1622hgcoaiwpbluv
1623wyhlig
1624iwfnlhqgs
1625jfgqihmxwlr
1626
1627cqrdbpoehiwfuzvgalxm
1628ularwipqxcfedozmbvg
1629vurqezjkoysgpalbfimxwcdt
1630mcvfzqplaxwrgoebiud
1631
1632mydhxfvgzcleojiq
1633ixcozgyvjdfl
1634njxuwiaovpycslrzgdf
1635
1636gfwtnr
1637mojdinwkf
1638rfnwqhcg
1639wfn
1640
1641lwise
1642arl
1643trzbvl
1644bal
1645
1646y
1647y
1648y
1649y
1650
1651sayqdimthfrpjvgn
1652crdphnmayqbgf
1653
1654sfgtqwbzej
1655pnmlcyitj
1656
1657yvtng
1658tyn
1659nyutg
1660ytgenh
1661onpty
1662
1663bleicngomsqhwfdy
1664mrbnfygxpiwucoldqshke
1665cqdeimynwhsfoblg
1666gqesldbcijmwhonfy
1667enblgcmfwdhyqois
1668
1669ufmsgkbcxz
1670xfsckzmub
1671umbkoxzhrsvcnf
1672kzmcsbfxgu
1673
1674tuiwqd
1675hbtdou
1676
1677t
1678t
1679t
1680t
1681t
1682
1683ureltqfji
1684ohzkrul
1685
1686oievpqgs
1687sqdvopigle
1688easvqpkgio
1689
1690upkr
1691urpk
1692
1693wrbipknheldxjfm
1694rhjexfldkwpb
1695lhrpejxfwbdk
1696
1697drybxszfetlnwjigk
1698fngbltzjywsroixk
1699
1700hodteualp
1701dtrpuile
1702
1703tqrbsjni
1704sbcirnqt
1705rsbaitqv
1706qbsrit
1707gbtsriq
1708
1709ovjmetdznlw
1710dtjvlmonze
1711zdjntemolvw
1712mlouvjngzkdter
1713
1714ckrnly
1715rclkyn
1716cyjlkrnh
1717crynkl
1718ylckrn
1719
1720zjk
1721zkj
1722djkz
1723jzk
1724jzk
1725
1726xoj
1727mjro
1728kjuxro
1729ybsjeahf
1730
1731zhwvtialqegufxmrcj
1732hwljxrecaqmztgifv
1733vgibmzlxwrdeacfqhjt
1734
1735nxicerwtzolfgky
1736hogmsvdplbweja
1737
1738w
1739clq
1740i
1741gi
1742
1743cilrkspgjqmw
1744xhvadtlyfjobnzue
1745
1746ckytg
1747nqtyg
1748gyxbt
1749kygtc
1750
1751fwcd
1752wfc
1753oebwhmil
1754fdwxr
1755
1756lomdtfsihk
1757sfyitokldmh
1758dimyotfkls
1759iovdstlmkfj
1760smulideqtfok
1761
1762frazxb
1763ahfbxz
1764bafzx
1765aftbxpz
1766
1767ubdarimsqvgtlhfjze
1768eqfrvhsguzjamtidl
1769
1770hjidpgrc
1771vrp
1772zpxwsulqrona
1773drhpftvi
1774kbrdhype
1775
1776xidcskygjwmbzr
1777bsqexaypghjkv
1778
1779tgxmy
1780atxym
1781txym
1782
1783qjrbmxtluews
1784ulbrwtjsxqop
1785fzbksturwmxlqj
1786tbxvnsjqriuwcl
1787
1788edhvzwqxojuplbkyf
1789wfphdjyczxvlkbqo
1790jhxbpkvyfzdloqw
1791yhmlfwoqkjpvdxbz
1792qfmxikhozbvwydplj
1793
1794seyq
1795yogxm
1796
1797jzbgatxhrplowqsyecvdn
1798nzjvohtguxpydsrlcewab
1799
1800apzf
1801zanwg
1802pza
1803az
1804
1805sapxfnyhbowujlcdveqiztkm
1806tzskjxqcoebdunyfphi
1807
1808caruks
1809rhlwsv
1810
1811cnswqfaztmdh
1812uxszromtanqdfb
1813
1814cjnmstxqvdik
1815qmjdcksitxvn
1816cjktvxqmdnis
1817cjnrsqdkxptivm
1818
1819oq
1820qaion
1821omq
1822qo
1823
1824kzymeqtbasgn
1825cuktvbsorim
1826lpjxwhdf
1827
1828knflw
1829ezvkn
1830yuhakrnc
1831
1832vidhwxfrmnsyuct
1833rzumskdfeqx
1834
1835p
1836p
1837
1838duicxvgnbeopfzlqyrks
1839skdetoclpbmzqfghwixr
1840gfozcdskprxeaiqbml
1841plkhqcifedxbgosrz
1842
1843ydtjolrxzefiaschwng
1844tdoerngfhzwxjcylia
1845zrawdytxhcojlgenfi
1846
1847ghvjqlifws
1848sfiqklwjehrgv
1849
1850q
1851q
1852s
1853a
1854s
1855
1856et
1857tme
1858
1859a
1860a
1861a
1862a
1863a
1864
1865qng
1866g
1867wg
1868
1869nvmlaui
1870audrigo
1871atnjdu
1872hybxcpszkwuq
1873fnu
1874
1875zmngdceqikxyuapwv
1876ciwyqekgamdzvp
1877ikcpavfgbwmerqyz
1878
1879mcvyjezqxrpkiu
1880wlfatnmghs
1881
1882awkqenuiorcd
1883lkuowsracdtzqgei
1884joxhucpqrmfyvikawe
1885
1886cdn
1887ndc
1888
1889fybj
1890bjfy
1891byjucsf
1892flybjx
1893
1894zfcphgxqno
1895zhmxyncpqr
1896iqhwaclzupsne
1897
1898oscpyvdebfhz
1899pbonsjyrelkfxvz
1900wfpvyigbmaeztoqus
1901
1902ypbfhaivmkx
1903xpjfhikyoca
1904
1905wkzvxlebarsmcdpi
1906xidcbpswmazekr
1907zsxwidpmekacrb
1908pwczxsedakirbm
1909
1910vfupqwdshxygkmrzol
1911wslmypfkogrxzqdvh
1912qwlxsrfzpgdomvyhk
1913
1914cmkdiapszuyb
1915bkpyduimascz
1916
1917vjpxmdzfwkuq
1918eycbgsnhltmapxo
1919
1920xmnklfpugdewtj
1921okzerxjuihqcptdmysf
1922
1923yajvhbtowixds
1924dvynabxjiwhs
1925asydoixzbh
1926ihjdxbasyk
1927lifxrbspedahyumcg
1928
1929snragze
1930gmszrnae
1931egrazsn
1932ensragz
1933
1934odi
1935odi
1936ido
1937odi
1938
1939mvogdzfker
1940veongkrpzmdf
1941vgekmrzdfo
1942ombjdfqykergvz
1943hzsormkdgfve
1944
1945l
1946l
1947l
1948ly
1949
1950kgnpliuwmsebhjfrcyqxotvazd
1951mzqryvgsftauxpcknehbiwojld
1952
1953vczkrabfmhpyjteui
1954merjtikybvaugz
1955aieydktjrmzvubg
1956yeslqoibauvtkmrjz
1957
1958vi
1959vip
1960eigv
1961vix
1962iv
1963
1964mcuknbexfowszpvtyi
1965ztmfwonvcsapqxyieb
1966etowynxzcpirmbvsf
1967wjfnyvopzetkmiusbcx
1968
1969ywhqemsx
1970banksxwemy
1971ymsexw
1972smyewx
1973szxeywm
1974
1975yvqtnsahzpwebgr
1976zgtjnevyapwbhrs
1977jzynhrpvwgsbat
1978obtynrfwslcahvzgpm
1979eytrpagzwsjvbkhn
1980
1981ynwutpmvhj
1982mvwjpuyt
1983wupzyjvmt
1984
1985kwnyatozcmdqbpsvejfrxug
1986vkzjaogfmqsxhnyctpu
1987cozypjmtvlxquakgfnsi
1988
1989qrwtgecs
1990daley
1991emh
1992
1993qmbjwe
1994qebfwjm
1995qewjm
1996qjiwem
1997
1998dqc
1999tad
2000qdcs
2001
2002zrvjnfpe
2003zpefunyvqc
2004fzpvern
2005pnefvz
2006envpfz
2007
2008nduhkvstxqmbfyr
2009ufmhbtkqvxdnpy
2010hdntqxuvmbkfy
2011
2012ot
2013o
2014yv
2015xp
2016
2017evkrifstpzgbahl
2018vzkmdtchgseajyfub
2019bgtnkxvheoaqifsz
2020
2021wxec
2022wfuie
2023awmj
2024ghsnkvwbqor
2025mcexwf
2026
2027teosna
2028tnkb
2029ptm
2030t
2031
2032r
2033na
2034ykx
2035
2036jdl
2037mzjtp
2038
2039xbpj
2040tzrkxba
2041xnbjmgosv
2042mhxbw
2043
2044j
2045j
2046j
2047j
2048
2049xn
2050lrvt
2051htg
2052mr
2053
2054hafkb
2055fkab
2056afbk
2057
2058zlyxomawvuib
2059vxwzbaymolui
2060
2061tcdfzgx
2062ql
2063luo
2064uh
2065
2066ixtbluahoeqgsv
2067eovsiglhuqanxtb
2068
2069ntychjig
2070chyijtgn
2071hcnjtiyg
2072tgjnhiyc
2073tgjiychn
2074
2075khomqatzscydwunfe
2076ygoazrdukh
2077zokbrlyaudjh
2078
2079uojynifthzvcgqp
2080phnvryfbtucl
2081
2082sbeizdtjopxu
2083nouqbeykmszd
2084
2085cga
2086gca
2087cag
2088
2089hiogxbslyptfc
2090pilwxcthogysb
2091holsibtcypfgx
2092
2093oahyr
2094pkjro
2095
2096qgfkj
2097gjzk
2098jgvk
2099
2100kw
2101wk
2102kw
2103wk
2104
2105bxvmnks
2106sfmbva
2107
2108fsocn
2109ygfopn
2110
2111wbarmxtfyjzenicvlhps
2112aefdirlyvzjpwtcmnh
2113rqymwfzjpevchiaotnl
2114lietnypmcrvhowfjaz
2115ztjcehympnavirlwf
2116
2117gqsnyhtafdcbki
2118yncbhxiakgpqt
2119
2120mikyzoxflndetbp
2121ebqdwiopkhyfxnl
2122jbscverlgfyauo
2123
2124bkewpj
2125n
2126solnxmfr
2127
2128ybxa
2129ybxa
2130xyba
2131byax
2132abxy
2133
2134sgbo
2135sg
2136
2137unvqlyhzdaxrcwg
2138dxvhaugicrzqnlw
2139mrplcqatdxzbuvgnwh
2140vzaurnhdgqlxwc
2141ucdwavqhylxrngz
2142
2143frhdaek
2144fpuwosv
2145
2146qm
2147m
2148smg \ No newline at end of file
diff --git a/day7/__init__.py b/day7/__init__.py
deleted file mode 100644
index 375c67a..0000000
--- a/day7/__init__.py
+++ /dev/null
@@ -1,58 +0,0 @@
1import re
2from functools import lru_cache
3from typing import Iterator, Any, Generator, Dict
4
5from aoc import BaseAssignment
6
7rule_matcher = re.compile(
8 r'(?P<bag>\w+\ \w+) bags contain (?P<contains>no other bags|(((, )?\d \w+\ \w+ bags?)+))\.')
9contains_matcher = re.compile(r'(?P<count>\d+) (?P<bag>\w+\ \w+) bags?')
10
11
12class Assignment(BaseAssignment):
13 def get_bag_contents(self, contents: str) -> dict:
14 content_dict = {}
15 if contents != 'no other bags':
16 for content in contents.split(', '):
17 count = contains_matcher.match(content).groupdict()
18 content_dict[count['bag']] = int(count['count'])
19
20 return content_dict
21
22 def read_input(self, example=False) -> Dict:
23 self.mapping = {}
24
25 for line in super().read_input(example):
26 match = rule_matcher.match(line)
27 rule = match.groupdict()
28 self.mapping[rule['bag']] = self.get_bag_contents(rule['contains'])
29
30
31class AssignmentOne(Assignment):
32 @lru_cache
33 def contains_shiny_gold_bag(self, bag):
34 if 'shiny gold' in self.mapping[bag]:
35 return True
36
37 return any([
38 self.contains_shiny_gold_bag(containing_bag)
39 for containing_bag in self.mapping[bag].keys()
40 ])
41
42 def run(self, input) -> Any:
43 nr_of_possibilities = 0
44 for bag, contains in self.mapping.items():
45 if self.contains_shiny_gold_bag(bag):
46 nr_of_possibilities += 1
47 return nr_of_possibilities
48
49
50class AssignmentTwo(Assignment):
51 def nr_of_bags_inside(self, bag):
52 return sum([
53 count + (count * self.nr_of_bags_inside(containing_bag))
54 for containing_bag, count in self.mapping[bag].items()
55 ])
56
57 def run(self, input) -> Any:
58 return self.nr_of_bags_inside('shiny gold')
diff --git a/day7/example.txt b/day7/example.txt
deleted file mode 100644
index e7ba02e..0000000
--- a/day7/example.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1light red bags contain 1 bright white bag, 2 muted yellow bags.
2dark orange bags contain 3 bright white bags, 4 muted yellow bags.
3bright white bags contain 1 shiny gold bag.
4muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
5shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
6dark olive bags contain 3 faded blue bags, 4 dotted black bags.
7vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
8faded blue bags contain no other bags.
9dotted black bags contain no other bags. \ No newline at end of file
diff --git a/day7/input.txt b/day7/input.txt
deleted file mode 100644
index 555513a..0000000
--- a/day7/input.txt
+++ /dev/null
@@ -1,594 +0,0 @@
1light salmon bags contain 5 dark brown bags, 2 dotted coral bags, 5 mirrored turquoise bags.
2drab magenta bags contain 1 vibrant purple bag, 5 dark lime bags, 2 clear silver bags.
3striped coral bags contain 2 dim lime bags.
4drab cyan bags contain 1 dark lime bag.
5bright purple bags contain 5 posh salmon bags, 1 posh blue bag, 1 shiny lavender bag.
6dull tomato bags contain 2 shiny maroon bags, 1 posh salmon bag, 4 posh teal bags, 5 dark orange bags.
7faded aqua bags contain 3 striped salmon bags, 5 dim purple bags, 3 shiny gold bags, 4 drab indigo bags.
8drab maroon bags contain 2 dark gray bags, 3 mirrored tan bags, 4 pale blue bags, 4 dim black bags.
9posh blue bags contain 1 mirrored maroon bag, 4 striped lavender bags.
10dull orange bags contain 2 light aqua bags, 2 striped chartreuse bags, 4 dim bronze bags.
11vibrant fuchsia bags contain 1 clear orange bag, 1 plaid turquoise bag, 3 posh maroon bags, 4 light silver bags.
12posh violet bags contain 5 plaid violet bags, 5 vibrant turquoise bags, 1 pale orange bag.
13light gray bags contain 5 vibrant tan bags, 4 shiny tomato bags, 5 muted olive bags.
14striped teal bags contain 2 drab cyan bags, 3 dull tomato bags, 1 light gold bag, 1 dark beige bag.
15muted orange bags contain 3 pale blue bags, 1 muted coral bag.
16wavy magenta bags contain 1 dotted crimson bag.
17dark fuchsia bags contain 3 plaid yellow bags, 4 dim green bags.
18drab beige bags contain 4 dull brown bags.
19light olive bags contain 2 posh magenta bags, 4 dim crimson bags.
20wavy chartreuse bags contain 3 plaid magenta bags.
21dim cyan bags contain 4 light lime bags, 3 dim crimson bags, 1 striped green bag.
22vibrant violet bags contain 2 dark teal bags, 5 vibrant turquoise bags.
23drab tomato bags contain 2 vibrant salmon bags, 5 bright salmon bags.
24mirrored lime bags contain 5 striped teal bags, 3 dim lavender bags, 4 dim cyan bags, 2 dotted green bags.
25wavy plum bags contain 4 plaid magenta bags.
26dim brown bags contain 1 dull yellow bag, 2 plaid beige bags.
27posh magenta bags contain 4 vibrant turquoise bags.
28posh maroon bags contain 3 dark teal bags, 2 striped plum bags.
29pale magenta bags contain 4 dim chartreuse bags, 3 mirrored salmon bags.
30shiny blue bags contain 2 shiny violet bags, 3 pale red bags, 5 pale salmon bags.
31clear tan bags contain 3 wavy lavender bags.
32pale bronze bags contain 3 muted chartreuse bags.
33pale tomato bags contain 1 dotted brown bag, 1 posh lavender bag, 2 striped violet bags.
34dotted lime bags contain 3 light magenta bags, 2 clear yellow bags, 3 faded olive bags.
35shiny tan bags contain 2 dotted fuchsia bags, 5 dull crimson bags, 5 clear orange bags.
36light lavender bags contain 3 shiny tomato bags, 5 drab beige bags, 3 mirrored yellow bags.
37wavy bronze bags contain 2 muted green bags, 3 dotted bronze bags.
38faded brown bags contain 3 drab gold bags, 3 dotted red bags, 1 dim white bag.
39muted cyan bags contain 4 striped turquoise bags.
40faded tan bags contain 1 muted red bag, 1 mirrored tan bag, 4 shiny purple bags.
41dark violet bags contain 4 posh tomato bags.
42posh purple bags contain 3 shiny violet bags, 4 clear indigo bags.
43vibrant orange bags contain 1 dim salmon bag, 1 vibrant olive bag, 4 drab fuchsia bags.
44dull blue bags contain 5 pale lavender bags, 3 dark lavender bags, 1 mirrored yellow bag.
45muted white bags contain 3 dark salmon bags, 4 posh bronze bags, 5 pale plum bags.
46striped lavender bags contain 4 faded plum bags, 2 dark tomato bags, 2 plaid teal bags.
47dark gold bags contain 4 dark lime bags.
48dull magenta bags contain 2 muted chartreuse bags.
49striped cyan bags contain 4 dotted red bags, 3 drab lime bags.
50dotted bronze bags contain 1 clear magenta bag, 2 bright salmon bags.
51clear lavender bags contain 4 dim lime bags.
52plaid salmon bags contain 2 dark orange bags.
53posh silver bags contain 5 muted fuchsia bags, 4 muted crimson bags.
54bright plum bags contain 3 vibrant salmon bags, 3 clear tan bags.
55posh beige bags contain 3 mirrored lavender bags, 4 pale olive bags, 2 dotted black bags.
56bright yellow bags contain 3 mirrored violet bags.
57plaid green bags contain 5 striped black bags, 5 posh bronze bags, 5 mirrored teal bags.
58plaid coral bags contain 5 plaid beige bags, 5 drab chartreuse bags.
59dotted maroon bags contain 4 dotted indigo bags, 4 dotted coral bags.
60dotted chartreuse bags contain 2 wavy turquoise bags, 2 posh indigo bags, 3 plaid silver bags, 2 mirrored salmon bags.
61dark yellow bags contain 1 posh brown bag, 4 light tan bags, 2 clear fuchsia bags, 5 dotted black bags.
62dull lavender bags contain 4 plaid green bags, 1 striped plum bag, 3 drab teal bags.
63bright maroon bags contain 1 dotted tan bag, 4 light olive bags, 5 posh cyan bags.
64vibrant gold bags contain 2 faded gold bags.
65dim lavender bags contain 3 dark silver bags, 1 striped violet bag, 2 dotted bronze bags, 1 striped black bag.
66light tomato bags contain 2 striped chartreuse bags.
67dull yellow bags contain 5 drab tomato bags.
68dotted coral bags contain 1 dark blue bag, 1 mirrored teal bag, 1 drab tomato bag.
69pale lime bags contain 3 clear cyan bags, 5 pale silver bags, 4 wavy olive bags.
70wavy red bags contain 3 vibrant gray bags, 4 shiny teal bags, 4 clear maroon bags.
71pale beige bags contain 2 shiny teal bags, 2 posh fuchsia bags, 4 dark aqua bags, 4 posh orange bags.
72striped tomato bags contain 2 light coral bags.
73shiny violet bags contain 4 vibrant chartreuse bags, 3 wavy lavender bags.
74plaid teal bags contain 3 mirrored teal bags.
75clear black bags contain 2 faded beige bags, 4 faded tan bags, 1 light salmon bag, 5 wavy white bags.
76clear yellow bags contain 2 dull tan bags, 5 plaid gold bags.
77faded green bags contain 5 light brown bags.
78bright coral bags contain 5 dotted teal bags, 2 mirrored gray bags, 3 wavy lime bags.
79muted bronze bags contain 3 dim maroon bags, 3 shiny beige bags, 4 light bronze bags.
80vibrant crimson bags contain 4 dim brown bags, 3 dotted maroon bags, 4 vibrant gold bags, 5 dull tomato bags.
81pale green bags contain 4 plaid beige bags.
82dull green bags contain 2 clear salmon bags, 2 dark bronze bags.
83dotted tan bags contain 1 dim tan bag.
84muted plum bags contain 3 faded crimson bags, 5 muted violet bags, 5 striped violet bags, 2 drab silver bags.
85faded coral bags contain 2 dark plum bags, 1 muted cyan bag, 3 vibrant beige bags.
86vibrant brown bags contain 4 striped maroon bags, 4 bright cyan bags.
87drab coral bags contain 3 vibrant coral bags, 3 dark aqua bags.
88striped chartreuse bags contain 2 vibrant salmon bags, 2 posh bronze bags, 3 drab teal bags.
89bright indigo bags contain 4 faded plum bags.
90clear olive bags contain 4 muted turquoise bags, 1 dotted olive bag.
91drab yellow bags contain 1 dim brown bag, 4 plaid green bags, 2 posh red bags.
92striped purple bags contain 2 mirrored orange bags, 4 vibrant chartreuse bags, 1 pale orange bag, 2 shiny green bags.
93mirrored olive bags contain 1 faded gold bag, 1 vibrant chartreuse bag, 5 faded brown bags, 3 wavy indigo bags.
94dull aqua bags contain 3 muted black bags, 2 muted orange bags, 2 pale lime bags, 4 dark plum bags.
95light lime bags contain 5 plaid beige bags, 5 shiny gold bags, 3 plaid plum bags.
96vibrant beige bags contain 2 posh maroon bags, 3 dotted plum bags.
97mirrored yellow bags contain 4 dotted crimson bags, 3 drab olive bags, 1 faded bronze bag, 2 striped violet bags.
98mirrored plum bags contain 4 dotted gray bags, 1 striped fuchsia bag, 3 dim yellow bags.
99faded beige bags contain 5 striped chartreuse bags, 3 faded bronze bags, 3 dark lime bags.
100drab crimson bags contain 2 dull green bags, 1 muted teal bag.
101shiny salmon bags contain 3 wavy olive bags, 1 faded crimson bag, 1 clear chartreuse bag.
102vibrant turquoise bags contain 4 drab black bags.
103dim yellow bags contain 5 shiny blue bags.
104wavy maroon bags contain 5 pale brown bags.
105dark coral bags contain 2 bright teal bags, 3 bright green bags, 3 drab coral bags.
106bright beige bags contain 3 faded salmon bags, 5 plaid coral bags.
107posh gray bags contain 5 bright silver bags, 1 pale brown bag.
108plaid orange bags contain 3 faded olive bags, 4 muted fuchsia bags, 5 vibrant turquoise bags.
109faded indigo bags contain 1 muted silver bag, 3 dim green bags, 3 faded purple bags, 1 plaid beige bag.
110drab lavender bags contain 5 light blue bags.
111light coral bags contain 3 pale orange bags, 2 plaid teal bags.
112posh indigo bags contain 2 drab olive bags, 2 dim cyan bags, 2 light teal bags.
113muted fuchsia bags contain 2 wavy white bags, 1 dark tan bag.
114muted brown bags contain 5 drab coral bags, 4 dull brown bags, 4 mirrored black bags.
115bright aqua bags contain 3 clear orange bags.
116faded magenta bags contain 1 striped violet bag, 1 dull lavender bag.
117clear brown bags contain 4 mirrored green bags, 1 clear fuchsia bag, 2 vibrant violet bags, 1 shiny aqua bag.
118clear green bags contain 3 dotted brown bags, 2 faded plum bags, 3 dotted beige bags, 2 striped brown bags.
119dull violet bags contain 2 vibrant violet bags, 4 light coral bags, 3 clear black bags.
120light gold bags contain no other bags.
121striped silver bags contain 4 clear bronze bags, 1 striped plum bag, 3 dull yellow bags.
122dull indigo bags contain 5 wavy olive bags, 3 shiny tomato bags, 3 vibrant lime bags, 4 dark beige bags.
123dark teal bags contain 2 dark blue bags, 4 mirrored teal bags, 4 posh bronze bags, 1 muted gold bag.
124light cyan bags contain 3 drab olive bags, 2 plaid teal bags, 5 vibrant indigo bags.
125clear turquoise bags contain 3 bright teal bags.
126clear white bags contain 4 faded black bags.
127plaid olive bags contain 3 vibrant blue bags, 5 posh gold bags.
128drab turquoise bags contain 3 striped black bags, 1 dull brown bag, 5 dark lime bags.
129plaid tomato bags contain 1 dim orange bag.
130wavy lime bags contain 3 muted crimson bags, 2 shiny green bags.
131dim salmon bags contain 4 faded black bags, 4 mirrored teal bags, 4 drab tomato bags, 2 vibrant green bags.
132pale lavender bags contain 2 striped violet bags.
133pale violet bags contain 5 dim magenta bags, 1 muted cyan bag, 5 clear red bags, 2 pale fuchsia bags.
134dark purple bags contain 2 light red bags.
135drab blue bags contain 2 dark blue bags, 2 dotted bronze bags, 4 bright teal bags.
136wavy white bags contain 3 dim red bags, 1 vibrant chartreuse bag, 3 muted gray bags.
137muted beige bags contain 1 shiny purple bag.
138dim aqua bags contain 1 muted yellow bag, 3 drab green bags, 2 plaid magenta bags.
139pale orange bags contain 5 mirrored teal bags, 4 dark aqua bags, 5 shiny gold bags.
140clear coral bags contain 5 dark white bags, 5 light blue bags.
141shiny orange bags contain 3 vibrant black bags, 2 pale purple bags, 2 drab salmon bags, 5 light blue bags.
142wavy gray bags contain 3 bright red bags, 3 plaid yellow bags, 1 muted cyan bag, 1 plaid maroon bag.
143plaid chartreuse bags contain 3 dotted brown bags, 3 pale lime bags.
144shiny green bags contain 1 muted blue bag, 4 dull blue bags, 5 mirrored lavender bags, 1 posh coral bag.
145faded black bags contain 4 posh bronze bags, 5 vibrant coral bags, 1 plaid teal bag.
146wavy yellow bags contain 5 mirrored indigo bags, 4 clear salmon bags, 2 bright tomato bags.
147plaid gold bags contain 5 vibrant violet bags, 4 faded violet bags.
148striped maroon bags contain 2 dark aqua bags, 3 mirrored teal bags.
149plaid white bags contain 3 mirrored green bags.
150dim gray bags contain 1 drab cyan bag, 1 plaid plum bag.
151light aqua bags contain 4 pale olive bags, 1 dark olive bag, 1 wavy black bag, 3 drab lime bags.
152dim tan bags contain 4 dark teal bags.
153mirrored fuchsia bags contain 4 posh lavender bags, 1 drab coral bag, 1 faded white bag.
154bright tomato bags contain 4 faded beige bags.
155dim plum bags contain 3 striped yellow bags, 1 mirrored maroon bag, 4 shiny gray bags, 5 bright plum bags.
156bright white bags contain 5 shiny lavender bags, 1 drab salmon bag.
157pale gold bags contain 2 faded olive bags.
158plaid red bags contain 4 plaid aqua bags, 3 pale brown bags.
159striped violet bags contain no other bags.
160pale white bags contain 5 faded silver bags, 3 drab silver bags, 1 mirrored white bag, 1 muted violet bag.
161posh bronze bags contain 4 pale brown bags.
162dull black bags contain 5 vibrant chartreuse bags, 3 striped indigo bags, 2 drab fuchsia bags, 1 vibrant gold bag.
163light indigo bags contain 1 light green bag, 3 striped silver bags.
164mirrored indigo bags contain 5 pale tan bags, 5 plaid plum bags, 3 wavy aqua bags, 5 drab violet bags.
165clear cyan bags contain 5 drab teal bags.
166clear orange bags contain 5 mirrored purple bags.
167clear gray bags contain 1 wavy brown bag, 5 drab teal bags, 5 muted coral bags.
168striped green bags contain no other bags.
169plaid black bags contain 5 dim yellow bags, 4 mirrored blue bags, 5 plaid plum bags, 1 striped aqua bag.
170wavy violet bags contain 2 clear brown bags, 5 mirrored silver bags, 5 vibrant silver bags.
171dotted olive bags contain 1 posh bronze bag, 5 striped violet bags.
172drab green bags contain 1 posh orange bag, 1 clear chartreuse bag.
173dotted red bags contain 3 striped plum bags, 2 bright crimson bags.
174dim turquoise bags contain 4 striped bronze bags, 3 light plum bags.
175wavy green bags contain 3 drab fuchsia bags, 3 shiny brown bags.
176wavy gold bags contain 4 mirrored violet bags.
177dark magenta bags contain 3 faded silver bags.
178shiny silver bags contain 2 muted orange bags, 2 dull indigo bags, 1 vibrant magenta bag, 3 shiny aqua bags.
179pale purple bags contain 1 dark cyan bag, 2 pale brown bags, 3 light silver bags, 1 plaid aqua bag.
180pale silver bags contain 2 pale red bags, 2 striped chartreuse bags, 3 faded bronze bags.
181vibrant olive bags contain 5 drab turquoise bags, 4 wavy olive bags, 5 plaid beige bags.
182wavy coral bags contain 1 clear orange bag.
183faded gold bags contain 4 mirrored turquoise bags, 5 dim gray bags, 1 faded bronze bag.
184vibrant gray bags contain 3 light tan bags, 5 plaid teal bags, 5 dotted olive bags.
185drab aqua bags contain 1 dotted olive bag, 5 dark indigo bags, 3 pale fuchsia bags.
186vibrant indigo bags contain 4 pale coral bags, 1 clear green bag, 1 dim chartreuse bag, 5 mirrored turquoise bags.
187dotted teal bags contain 5 clear indigo bags, 1 faded bronze bag.
188muted salmon bags contain 1 light teal bag, 1 light cyan bag, 3 muted crimson bags.
189shiny fuchsia bags contain 1 wavy brown bag, 3 plaid green bags, 2 shiny silver bags.
190dark tan bags contain 5 dotted plum bags, 3 striped orange bags, 4 faded gold bags, 4 mirrored turquoise bags.
191bright crimson bags contain 5 bright salmon bags, 4 clear salmon bags, 2 faded bronze bags.
192clear silver bags contain 3 striped purple bags.
193faded yellow bags contain 2 striped turquoise bags, 4 pale purple bags, 5 wavy aqua bags, 3 posh gold bags.
194muted gray bags contain no other bags.
195light purple bags contain 2 wavy indigo bags, 1 dark white bag, 1 faded beige bag.
196clear fuchsia bags contain 2 drab violet bags, 5 drab black bags, 4 shiny tomato bags.
197wavy blue bags contain 3 faded beige bags, 2 plaid coral bags.
198faded crimson bags contain 4 dark lime bags, 1 striped chartreuse bag.
199bright lavender bags contain 5 plaid green bags, 3 striped turquoise bags, 2 dotted black bags.
200faded lavender bags contain 5 plaid magenta bags.
201dull turquoise bags contain 5 posh bronze bags, 4 dark white bags.
202mirrored tan bags contain 4 vibrant white bags.
203pale teal bags contain 4 pale aqua bags, 1 shiny maroon bag, 5 vibrant silver bags.
204wavy black bags contain 3 dotted teal bags, 1 pale green bag, 5 drab blue bags, 5 dotted coral bags.
205shiny turquoise bags contain 2 muted gray bags, 4 dark white bags.
206vibrant white bags contain 4 shiny tomato bags.
207pale tan bags contain 5 plaid coral bags.
208striped white bags contain 3 light cyan bags, 4 mirrored orange bags, 2 dotted brown bags.
209dark lime bags contain 1 light gold bag, 1 dotted green bag, 4 dotted brown bags, 1 shiny gold bag.
210dim coral bags contain 1 posh black bag, 3 faded coral bags.
211shiny crimson bags contain 1 mirrored tan bag.
212drab teal bags contain 2 mirrored turquoise bags, 4 vibrant chartreuse bags, 4 mirrored teal bags, 4 light gold bags.
213dotted plum bags contain 5 faded bronze bags, 5 vibrant blue bags.
214faded tomato bags contain 1 dark aqua bag, 1 striped green bag.
215faded red bags contain 2 bright gold bags, 1 clear gray bag.
216faded olive bags contain 3 dotted plum bags, 1 dotted coral bag, 3 dim indigo bags, 2 dull tan bags.
217dotted black bags contain 1 drab fuchsia bag, 3 dotted bronze bags, 1 pale orange bag, 5 dull salmon bags.
218plaid turquoise bags contain 5 drab turquoise bags, 5 plaid violet bags, 4 posh maroon bags.
219pale plum bags contain 5 bright chartreuse bags, 5 shiny brown bags.
220dull gray bags contain 5 light yellow bags.
221dark tomato bags contain 4 mirrored teal bags, 4 clear magenta bags, 1 striped green bag, 1 muted gray bag.
222light bronze bags contain 5 muted tan bags, 5 drab maroon bags, 3 dim crimson bags, 2 dull turquoise bags.
223dull silver bags contain 1 muted gray bag, 2 posh purple bags.
224shiny gray bags contain 2 faded plum bags, 2 striped turquoise bags.
225vibrant black bags contain 3 light salmon bags, 3 drab maroon bags.
226mirrored silver bags contain 1 plaid beige bag, 3 dim lime bags, 4 dotted brown bags.
227posh tomato bags contain 4 plaid white bags, 2 plaid plum bags.
228mirrored brown bags contain 5 faded white bags, 2 posh white bags, 5 dark plum bags.
229muted yellow bags contain 2 pale yellow bags, 5 posh salmon bags, 1 bright red bag, 1 plaid beige bag.
230dull coral bags contain 5 drab white bags, 2 wavy silver bags, 2 light olive bags.
231shiny brown bags contain 5 dotted coral bags, 2 dotted brown bags, 2 drab chartreuse bags.
232light fuchsia bags contain 3 striped plum bags, 4 dark brown bags, 4 dim lime bags.
233bright cyan bags contain 2 shiny violet bags, 1 dark white bag, 2 drab chartreuse bags, 2 dim fuchsia bags.
234dotted orange bags contain 4 mirrored black bags, 2 wavy maroon bags, 3 vibrant violet bags.
235pale blue bags contain 5 drab cyan bags, 3 plaid green bags, 3 pale red bags, 2 dim crimson bags.
236dim red bags contain 2 dark blue bags, 3 muted red bags, 1 striped violet bag, 2 dotted coral bags.
237posh plum bags contain 1 wavy silver bag, 3 dark beige bags, 1 dotted gray bag.
238drab orange bags contain 5 muted salmon bags, 1 clear crimson bag.
239dotted purple bags contain 1 dull yellow bag, 1 vibrant green bag, 4 clear bronze bags.
240shiny chartreuse bags contain 4 shiny tomato bags.
241shiny maroon bags contain 3 dull lavender bags.
242clear magenta bags contain no other bags.
243pale cyan bags contain no other bags.
244dim olive bags contain 1 striped plum bag, 2 light maroon bags, 5 plaid olive bags, 4 dim violet bags.
245faded chartreuse bags contain 5 wavy salmon bags, 5 dull bronze bags, 1 dull silver bag.
246posh coral bags contain 3 faded white bags.
247dark beige bags contain 3 dim indigo bags, 4 dull tomato bags, 2 muted crimson bags, 2 drab chartreuse bags.
248wavy salmon bags contain 4 pale red bags, 3 dull fuchsia bags.
249dim magenta bags contain 1 muted fuchsia bag, 5 vibrant violet bags.
250faded gray bags contain 5 faded tomato bags, 4 posh violet bags, 2 shiny white bags, 2 dark tomato bags.
251light turquoise bags contain 2 dark magenta bags.
252dark maroon bags contain 2 clear magenta bags, 4 clear indigo bags.
253faded turquoise bags contain 2 vibrant turquoise bags, 1 dim turquoise bag.
254dull bronze bags contain 4 mirrored salmon bags, 5 bright plum bags.
255posh yellow bags contain 2 vibrant coral bags, 5 dotted coral bags.
256drab olive bags contain 5 clear salmon bags.
257clear plum bags contain 5 shiny beige bags, 3 vibrant tan bags, 1 clear green bag, 1 dull orange bag.
258shiny white bags contain 2 striped lime bags, 2 wavy turquoise bags, 4 pale purple bags, 3 vibrant gray bags.
259drab gray bags contain 2 dim chartreuse bags.
260light silver bags contain 1 faded fuchsia bag, 1 pale aqua bag, 4 dim green bags.
261wavy beige bags contain 4 light tan bags, 5 dark brown bags.
262light red bags contain 1 striped plum bag, 3 dark coral bags, 5 striped crimson bags, 5 pale indigo bags.
263clear blue bags contain 3 dotted bronze bags, 2 striped chartreuse bags.
264dull plum bags contain 3 mirrored coral bags, 1 shiny violet bag, 3 wavy magenta bags, 1 bright crimson bag.
265drab fuchsia bags contain 1 dotted bronze bag, 2 vibrant salmon bags, 1 pale turquoise bag, 4 shiny gold bags.
266muted gold bags contain 5 dark blue bags, 4 light gold bags.
267posh black bags contain 2 wavy beige bags, 1 bright plum bag.
268drab purple bags contain 5 muted white bags.
269light teal bags contain 5 dull yellow bags, 1 light gold bag.
270mirrored teal bags contain no other bags.
271mirrored maroon bags contain 5 faded yellow bags, 5 faded gold bags.
272dull olive bags contain 4 posh brown bags, 4 muted purple bags, 2 dim beige bags, 5 wavy black bags.
273wavy tomato bags contain 1 drab beige bag, 3 vibrant tan bags.
274vibrant silver bags contain 3 striped bronze bags, 2 dotted green bags, 4 dull brown bags, 2 muted gray bags.
275dark lavender bags contain 2 plaid maroon bags, 1 vibrant blue bag, 5 striped black bags, 1 light teal bag.
276mirrored white bags contain 3 posh magenta bags.
277wavy aqua bags contain 4 pale silver bags.
278wavy orange bags contain 3 drab bronze bags, 3 muted olive bags.
279drab violet bags contain 1 vibrant turquoise bag, 5 dull yellow bags, 1 faded white bag.
280light crimson bags contain 1 light tan bag, 3 bright teal bags, 5 bright crimson bags.
281muted black bags contain 3 drab salmon bags, 1 clear blue bag, 5 wavy lavender bags.
282faded salmon bags contain 1 vibrant magenta bag.
283wavy brown bags contain 2 posh maroon bags.
284posh salmon bags contain 5 wavy brown bags, 5 shiny brown bags, 2 dark lime bags.
285posh chartreuse bags contain 3 wavy green bags, 3 drab maroon bags, 5 wavy violet bags, 3 clear turquoise bags.
286muted coral bags contain 3 vibrant tan bags, 1 bright tomato bag, 1 vibrant salmon bag, 5 light green bags.
287light black bags contain 4 bright olive bags.
288light white bags contain 5 pale lavender bags.
289striped aqua bags contain 5 dim gray bags.
290dark brown bags contain 1 dim lavender bag, 5 wavy maroon bags.
291drab tan bags contain 5 striped gray bags, 2 mirrored fuchsia bags, 5 dark maroon bags.
292dim violet bags contain 2 bright olive bags, 3 bright indigo bags, 2 faded bronze bags, 4 drab blue bags.
293light tan bags contain 2 wavy green bags, 3 posh maroon bags, 2 striped black bags.
294posh brown bags contain 1 bright cyan bag, 4 wavy gray bags.
295dotted white bags contain 1 faded black bag, 2 clear green bags.
296shiny tomato bags contain 3 wavy lavender bags, 2 dotted brown bags, 5 plaid plum bags, 1 striped orange bag.
297dotted silver bags contain 5 dotted tan bags, 3 wavy magenta bags, 2 pale plum bags.
298shiny lime bags contain 2 drab white bags, 5 posh cyan bags.
299pale fuchsia bags contain 2 wavy yellow bags, 1 wavy magenta bag, 4 dull black bags, 2 dotted tan bags.
300dotted crimson bags contain 5 dark blue bags.
301bright salmon bags contain 3 light gold bags, 4 clear magenta bags, 4 mirrored turquoise bags.
302striped brown bags contain 3 mirrored turquoise bags, 4 striped green bags.
303clear crimson bags contain 4 light violet bags, 3 muted yellow bags, 2 muted salmon bags, 1 dull brown bag.
304plaid silver bags contain 5 bright teal bags.
305striped black bags contain 4 dark silver bags, 2 clear salmon bags, 2 dotted green bags, 5 muted gold bags.
306muted lime bags contain 5 dotted indigo bags, 4 striped lime bags, 2 dark lavender bags.
307bright red bags contain 2 pale turquoise bags, 2 posh purple bags.
308dotted violet bags contain 4 posh indigo bags, 5 light aqua bags, 5 dark plum bags.
309wavy crimson bags contain 3 dim white bags, 2 vibrant green bags, 3 mirrored green bags, 5 muted magenta bags.
310bright brown bags contain 2 light tan bags, 5 dull coral bags, 1 muted tan bag, 2 striped purple bags.
311muted violet bags contain 2 vibrant coral bags, 4 dotted green bags.
312dim indigo bags contain 1 bright crimson bag, 3 dotted brown bags.
313bright tan bags contain 1 muted chartreuse bag, 5 dull chartreuse bags, 2 muted cyan bags.
314drab brown bags contain 1 drab teal bag, 1 pale lavender bag, 3 clear violet bags, 4 muted blue bags.
315dark plum bags contain 5 dotted bronze bags, 1 plaid maroon bag, 4 faded gold bags.
316drab indigo bags contain 1 wavy brown bag, 5 light lime bags, 3 drab blue bags.
317light beige bags contain 5 dim crimson bags, 3 dull black bags, 5 muted black bags.
318mirrored black bags contain 4 drab olive bags, 3 dark lavender bags.
319clear beige bags contain 3 dark lavender bags, 3 muted fuchsia bags, 5 dull blue bags.
320dark bronze bags contain 3 dim lavender bags, 2 vibrant magenta bags, 1 striped silver bag, 5 faded beige bags.
321mirrored gold bags contain 5 pale gold bags, 5 dotted green bags, 4 posh bronze bags.
322bright turquoise bags contain 1 striped indigo bag, 2 muted purple bags, 5 shiny tomato bags, 3 dotted brown bags.
323dark red bags contain 2 striped purple bags, 4 clear brown bags, 2 striped cyan bags.
324muted aqua bags contain 2 dark tan bags, 5 clear orange bags, 5 clear fuchsia bags.
325shiny plum bags contain 2 dark tan bags.
326faded plum bags contain 4 clear blue bags, 1 dim lime bag, 2 striped brown bags.
327light brown bags contain 3 posh gold bags, 5 muted turquoise bags.
328mirrored blue bags contain 2 muted lime bags, 3 plaid blue bags, 2 plaid magenta bags, 4 dim gold bags.
329dark cyan bags contain 5 wavy olive bags, 5 plaid teal bags.
330dark turquoise bags contain 5 muted lime bags, 3 muted gold bags, 3 light lime bags, 4 vibrant beige bags.
331posh cyan bags contain 4 clear indigo bags, 4 faded tomato bags, 2 plaid teal bags, 3 muted red bags.
332plaid purple bags contain 3 dark teal bags, 3 drab coral bags, 2 posh lavender bags.
333faded fuchsia bags contain 4 muted cyan bags, 1 vibrant violet bag, 4 bright red bags.
334bright silver bags contain 3 mirrored black bags.
335muted tomato bags contain 2 posh olive bags.
336clear salmon bags contain 5 dark aqua bags.
337posh lime bags contain 2 dim crimson bags, 4 clear aqua bags.
338dotted turquoise bags contain 4 dotted lime bags, 4 dotted red bags, 3 dark coral bags, 4 striped gold bags.
339posh olive bags contain 3 plaid green bags.
340dotted cyan bags contain 1 wavy silver bag, 2 pale red bags.
341mirrored violet bags contain 4 dark salmon bags, 4 plaid magenta bags.
342wavy lavender bags contain 1 clear chartreuse bag.
343shiny yellow bags contain 4 dotted indigo bags.
344posh lavender bags contain 2 striped chartreuse bags.
345pale maroon bags contain 5 posh lavender bags, 4 plaid teal bags, 3 posh turquoise bags, 2 plaid green bags.
346plaid maroon bags contain 4 pale cyan bags, 2 bright teal bags, 1 striped plum bag, 2 plaid teal bags.
347faded orange bags contain 5 drab turquoise bags, 5 dull bronze bags.
348clear gold bags contain 5 wavy lime bags, 4 light maroon bags, 2 muted fuchsia bags, 4 dark salmon bags.
349dark green bags contain 1 striped violet bag, 1 dim crimson bag.
350mirrored tomato bags contain 1 clear red bag, 4 dull indigo bags.
351striped magenta bags contain 5 shiny plum bags, 4 mirrored crimson bags, 4 dull plum bags.
352plaid fuchsia bags contain 1 striped indigo bag, 5 drab gray bags.
353clear violet bags contain 1 wavy green bag, 4 dull lavender bags, 2 drab black bags, 5 dim salmon bags.
354bright chartreuse bags contain 3 clear salmon bags, 5 dim bronze bags, 3 dark lime bags, 3 pale cyan bags.
355faded purple bags contain 4 dark lavender bags, 4 pale fuchsia bags.
356mirrored aqua bags contain 4 faded black bags, 5 dim gold bags, 1 mirrored gray bag.
357dotted blue bags contain 2 bright salmon bags, 5 drab fuchsia bags, 2 shiny gold bags.
358shiny gold bags contain 4 clear magenta bags, 3 mirrored turquoise bags, 2 plaid maroon bags, 5 bright crimson bags.
359pale olive bags contain 3 striped green bags.
360vibrant red bags contain 1 faded violet bag, 4 shiny yellow bags, 4 wavy coral bags.
361plaid indigo bags contain 4 striped salmon bags, 4 clear turquoise bags, 2 dotted tomato bags.
362posh green bags contain 1 dark brown bag, 4 dotted black bags.
363shiny beige bags contain 4 dotted teal bags.
364faded white bags contain 5 muted violet bags, 4 dotted blue bags, 2 dull lavender bags, 4 bright teal bags.
365plaid yellow bags contain 1 mirrored yellow bag, 3 striped violet bags, 2 striped silver bags.
366drab plum bags contain 4 dim indigo bags, 5 clear cyan bags.
367muted purple bags contain 3 dark white bags.
368plaid blue bags contain 1 striped chartreuse bag, 1 light white bag.
369plaid tan bags contain 1 wavy chartreuse bag.
370muted magenta bags contain 4 striped turquoise bags, 5 clear lime bags.
371striped olive bags contain 3 drab black bags.
372faded lime bags contain 4 pale black bags.
373faded silver bags contain 2 pale magenta bags, 2 posh olive bags, 2 muted fuchsia bags.
374bright orange bags contain 5 muted gray bags, 4 clear black bags.
375wavy indigo bags contain 3 dull white bags, 3 pale brown bags, 3 dotted brown bags.
376pale indigo bags contain 1 vibrant chartreuse bag, 5 dotted red bags.
377dark olive bags contain 5 faded gold bags.
378pale gray bags contain 3 striped chartreuse bags, 3 striped plum bags.
379dull maroon bags contain 1 plaid yellow bag, 3 muted red bags.
380mirrored turquoise bags contain no other bags.
381dull lime bags contain 3 muted red bags.
382posh aqua bags contain 4 pale beige bags.
383mirrored lavender bags contain 1 striped maroon bag, 4 dark plum bags, 1 mirrored black bag, 2 shiny tomato bags.
384muted teal bags contain 5 faded silver bags.
385muted olive bags contain 4 pale tomato bags.
386vibrant teal bags contain 3 posh gold bags, 1 striped orange bag, 4 vibrant aqua bags, 5 wavy tan bags.
387bright black bags contain 2 striped lavender bags, 5 drab coral bags, 5 clear gray bags.
388plaid brown bags contain 3 striped plum bags.
389vibrant tan bags contain 2 posh maroon bags, 3 plaid yellow bags, 1 muted green bag.
390dark salmon bags contain 4 plaid violet bags.
391plaid violet bags contain 1 mirrored teal bag.
392striped beige bags contain 5 mirrored blue bags.
393vibrant maroon bags contain 5 drab olive bags, 2 plaid green bags, 3 striped plum bags, 5 mirrored coral bags.
394clear indigo bags contain 1 dim fuchsia bag, 3 dull turquoise bags.
395clear teal bags contain 5 muted violet bags.
396bright fuchsia bags contain 3 vibrant indigo bags, 3 drab silver bags, 5 pale tan bags.
397dark chartreuse bags contain 2 posh maroon bags, 1 dotted beige bag, 3 dotted silver bags.
398drab white bags contain 1 vibrant coral bag, 3 striped orange bags, 4 striped green bags, 1 dim salmon bag.
399clear lime bags contain 5 dotted coral bags, 2 dim bronze bags, 2 dotted bronze bags.
400shiny bronze bags contain 4 muted violet bags.
401vibrant coral bags contain 4 striped chartreuse bags.
402drab bronze bags contain 3 posh maroon bags, 2 vibrant white bags, 5 pale lavender bags.
403posh teal bags contain 5 dark tomato bags, 1 clear magenta bag, 5 posh salmon bags, 1 shiny tomato bag.
404mirrored bronze bags contain 1 mirrored maroon bag.
405dim orange bags contain 1 dim beige bag, 4 striped maroon bags.
406muted silver bags contain 3 shiny black bags, 4 drab yellow bags.
407bright lime bags contain 2 clear fuchsia bags, 2 striped maroon bags.
408vibrant bronze bags contain 4 drab olive bags, 3 plaid fuchsia bags, 5 pale gold bags, 4 mirrored orange bags.
409bright violet bags contain 1 bright red bag, 3 dull lime bags.
410mirrored orange bags contain 1 dotted indigo bag, 3 wavy lavender bags, 2 light teal bags, 1 drab chartreuse bag.
411dull tan bags contain 2 muted green bags.
412dotted tomato bags contain 2 dull magenta bags, 2 plaid cyan bags.
413faded violet bags contain 1 dark cyan bag, 2 light tomato bags, 2 vibrant green bags, 3 posh gray bags.
414shiny cyan bags contain 2 faded red bags, 2 striped beige bags, 5 mirrored coral bags, 2 shiny tomato bags.
415plaid gray bags contain 1 posh teal bag, 5 drab turquoise bags.
416dotted gold bags contain 1 faded violet bag, 3 vibrant lavender bags.
417faded maroon bags contain 1 posh red bag, 2 plaid violet bags, 1 vibrant magenta bag.
418dim tomato bags contain 3 vibrant yellow bags.
419muted red bags contain 4 striped violet bags, 3 plaid turquoise bags.
420striped turquoise bags contain 1 drab coral bag, 4 plaid maroon bags, 4 drab violet bags, 5 drab silver bags.
421clear bronze bags contain no other bags.
422drab gold bags contain 5 clear indigo bags, 2 light purple bags, 1 faded gold bag, 1 muted gray bag.
423dotted beige bags contain 1 striped bronze bag, 4 plaid maroon bags, 3 dotted green bags.
424posh orange bags contain 3 mirrored fuchsia bags, 5 wavy olive bags, 5 shiny tomato bags, 4 pale orange bags.
425striped orange bags contain 1 pale brown bag.
426wavy olive bags contain 3 striped bronze bags.
427vibrant lime bags contain 1 dotted red bag, 1 vibrant tan bag, 2 striped turquoise bags, 1 mirrored plum bag.
428wavy turquoise bags contain 1 muted cyan bag.
429bright bronze bags contain 5 bright blue bags, 1 pale red bag, 5 shiny blue bags.
430bright green bags contain 4 dim brown bags, 5 dotted blue bags.
431light orange bags contain 4 dark blue bags.
432shiny coral bags contain 1 mirrored gray bag, 2 drab fuchsia bags.
433mirrored magenta bags contain 2 muted gray bags, 3 shiny tomato bags, 2 drab plum bags.
434mirrored purple bags contain 3 dull turquoise bags, 1 dotted coral bag, 4 plaid violet bags, 1 drab fuchsia bag.
435vibrant blue bags contain 1 faded tomato bag, 3 dark blue bags.
436vibrant salmon bags contain 1 mirrored teal bag, 4 dark blue bags, 1 vibrant chartreuse bag.
437vibrant lavender bags contain 5 dotted beige bags, 1 striped silver bag, 2 dull tan bags.
438dark gray bags contain 5 wavy maroon bags, 5 bright teal bags.
439pale crimson bags contain 1 plaid beige bag, 4 posh gold bags.
440shiny indigo bags contain 4 dull green bags.
441shiny aqua bags contain 3 posh magenta bags.
442pale chartreuse bags contain 4 muted crimson bags.
443mirrored coral bags contain 5 bright salmon bags, 3 striped bronze bags.
444dotted fuchsia bags contain 5 dark black bags.
445vibrant magenta bags contain 3 striped black bags, 5 drab tomato bags, 3 light lime bags.
446plaid lavender bags contain 1 drab salmon bag.
447muted lavender bags contain 2 faded gold bags.
448dim lime bags contain 2 faded beige bags.
449dim white bags contain 5 shiny violet bags.
450striped bronze bags contain 4 dark aqua bags, 4 clear salmon bags.
451pale aqua bags contain 5 muted chartreuse bags, 2 dull brown bags.
452plaid aqua bags contain 2 striped turquoise bags, 3 mirrored fuchsia bags.
453mirrored crimson bags contain 3 pale brown bags, 4 mirrored teal bags, 4 wavy maroon bags.
454dotted indigo bags contain 3 drab tomato bags.
455dim crimson bags contain 1 striped chartreuse bag.
456mirrored cyan bags contain 4 striped fuchsia bags, 5 drab gold bags, 2 mirrored tan bags, 2 clear magenta bags.
457drab black bags contain 5 dark blue bags, 4 striped green bags.
458striped blue bags contain 3 clear white bags, 4 vibrant yellow bags, 4 faded blue bags.
459mirrored salmon bags contain 4 dotted maroon bags, 3 dotted green bags, 2 dim lavender bags.
460striped red bags contain 3 bright fuchsia bags, 3 dull black bags, 4 pale indigo bags, 3 vibrant gold bags.
461pale red bags contain 1 plaid plum bag, 5 dark silver bags, 3 dull lavender bags.
462dim purple bags contain 2 vibrant olive bags.
463dotted aqua bags contain 5 muted cyan bags.
464dull red bags contain 5 dull salmon bags, 5 dotted brown bags, 4 plaid coral bags, 2 wavy green bags.
465clear chartreuse bags contain 5 wavy maroon bags, 4 dotted purple bags, 3 dark gray bags, 5 pale brown bags.
466shiny red bags contain 3 dim green bags.
467light violet bags contain 3 dull coral bags.
468muted tan bags contain 1 dull turquoise bag.
469dull gold bags contain 3 drab fuchsia bags, 5 pale orange bags.
470dull teal bags contain 2 posh olive bags, 3 dark yellow bags, 5 dull magenta bags, 2 dotted tan bags.
471plaid crimson bags contain 4 vibrant crimson bags, 1 pale tomato bag, 1 posh silver bag.
472clear tomato bags contain 4 striped silver bags, 3 wavy gray bags.
473dull fuchsia bags contain 4 vibrant violet bags, 1 dim bronze bag, 2 dim cyan bags.
474pale brown bags contain 1 mirrored teal bag, 2 mirrored turquoise bags, 5 striped green bags.
475plaid cyan bags contain 5 pale maroon bags, 4 drab salmon bags, 3 pale magenta bags.
476drab lime bags contain 4 muted tan bags, 1 faded crimson bag, 4 wavy maroon bags, 1 vibrant green bag.
477bright olive bags contain 2 vibrant brown bags, 3 pale silver bags.
478posh crimson bags contain 5 mirrored turquoise bags, 1 pale gray bag, 4 bright silver bags.
479mirrored green bags contain 4 dotted indigo bags, 5 muted magenta bags, 2 muted blue bags, 4 drab turquoise bags.
480striped tan bags contain 4 dull turquoise bags, 3 bright indigo bags, 5 pale red bags.
481dim chartreuse bags contain 2 mirrored turquoise bags, 3 dotted beige bags.
482posh fuchsia bags contain 1 drab salmon bag, 4 striped orange bags, 4 dark olive bags.
483faded bronze bags contain 5 bright salmon bags.
484dotted green bags contain 3 dark blue bags.
485dim silver bags contain 2 bright beige bags, 3 pale coral bags.
486muted green bags contain 3 dim brown bags, 4 clear bronze bags, 2 bright teal bags.
487clear maroon bags contain 4 posh salmon bags.
488vibrant chartreuse bags contain 2 dark blue bags.
489posh gold bags contain 4 shiny gold bags, 5 dark teal bags.
490light chartreuse bags contain 4 faded silver bags, 2 light yellow bags.
491faded cyan bags contain 3 muted silver bags, 4 vibrant bronze bags, 1 dotted orange bag.
492dotted salmon bags contain 2 mirrored purple bags, 2 light teal bags, 2 mirrored lavender bags.
493plaid plum bags contain 3 dotted bronze bags, 5 bright salmon bags, 2 light gold bags, 4 drab teal bags.
494dull salmon bags contain 4 muted green bags, 4 dim indigo bags, 1 faded tomato bag, 3 faded gold bags.
495muted maroon bags contain 4 faded bronze bags, 3 dull salmon bags, 4 dull turquoise bags.
496light maroon bags contain 5 plaid blue bags, 2 bright gray bags, 4 vibrant chartreuse bags, 3 dark indigo bags.
497dark white bags contain 4 striped bronze bags.
498posh turquoise bags contain 4 plaid gray bags, 1 dim indigo bag.
499dark indigo bags contain 3 dull chartreuse bags, 2 shiny salmon bags, 1 muted magenta bag, 1 dotted indigo bag.
500wavy silver bags contain 1 dotted salmon bag, 1 pale gray bag, 5 plaid turquoise bags.
501pale black bags contain 5 dark olive bags.
502mirrored beige bags contain 4 dim purple bags.
503shiny black bags contain 2 mirrored turquoise bags, 5 pale silver bags, 2 dotted red bags, 4 dark aqua bags.
504dotted lavender bags contain 4 bright beige bags, 1 clear silver bag, 3 bright orange bags.
505dotted gray bags contain 3 posh red bags, 1 dotted brown bag, 4 muted red bags, 4 faded coral bags.
506plaid magenta bags contain 4 vibrant blue bags, 3 dark tomato bags, 1 vibrant coral bag, 5 dim salmon bags.
507muted indigo bags contain 2 drab fuchsia bags, 5 dim teal bags.
508light plum bags contain 5 dark aqua bags, 4 muted purple bags, 5 wavy lavender bags, 2 drab beige bags.
509dark silver bags contain no other bags.
510bright gold bags contain 2 wavy maroon bags, 2 clear tan bags, 5 striped chartreuse bags.
511pale coral bags contain 4 posh magenta bags, 1 posh lavender bag.
512clear aqua bags contain 4 wavy maroon bags, 5 light green bags, 4 dark olive bags.
513vibrant plum bags contain 4 mirrored indigo bags, 4 vibrant silver bags.
514dotted yellow bags contain 1 pale teal bag.
515vibrant cyan bags contain 4 dotted maroon bags, 4 dark aqua bags, 2 posh fuchsia bags.
516shiny lavender bags contain 5 light gold bags.
517dull beige bags contain 2 faded coral bags, 4 clear magenta bags.
518bright magenta bags contain 4 faded white bags, 3 drab black bags.
519drab salmon bags contain 2 bright green bags, 1 dim fuchsia bag, 1 shiny black bag.
520striped plum bags contain 4 posh bronze bags, 4 dotted green bags, 2 dark aqua bags, 3 vibrant chartreuse bags.
521striped gray bags contain 1 dim black bag, 2 striped tan bags, 5 light lime bags, 3 striped black bags.
522dark blue bags contain 1 mirrored teal bag, 3 striped violet bags.
523pale yellow bags contain 5 posh teal bags, 5 clear magenta bags, 3 plaid violet bags, 5 light green bags.
524dark crimson bags contain 3 shiny tomato bags, 5 striped yellow bags, 2 shiny violet bags, 1 striped fuchsia bag.
525clear purple bags contain 5 vibrant tan bags, 2 mirrored green bags, 3 faded black bags.
526vibrant green bags contain 4 clear salmon bags, 1 pale turquoise bag, 2 mirrored turquoise bags.
527faded teal bags contain 3 plaid beige bags.
528pale turquoise bags contain 2 bright crimson bags, 4 pale cyan bags, 4 mirrored turquoise bags, 3 dotted coral bags.
529striped crimson bags contain 5 pale lavender bags, 3 striped tomato bags, 1 plaid aqua bag.
530muted crimson bags contain 1 dotted bronze bag, 5 striped black bags, 4 dark blue bags.
531dull cyan bags contain 2 shiny coral bags, 2 plaid turquoise bags, 5 dim green bags, 2 plaid violet bags.
532clear red bags contain 4 shiny maroon bags.
533dim teal bags contain 3 bright red bags, 5 dim tan bags.
534plaid lime bags contain 5 bright white bags, 3 light indigo bags, 1 striped black bag, 5 vibrant beige bags.
535dim gold bags contain 5 dark silver bags.
536dotted brown bags contain 5 striped bronze bags, 4 drab tomato bags, 2 dim lavender bags.
537dim blue bags contain 2 posh gray bags, 1 dim gray bag.
538muted chartreuse bags contain 5 mirrored turquoise bags, 5 dull brown bags, 4 muted brown bags, 1 striped silver bag.
539dim fuchsia bags contain 5 plaid beige bags, 1 drab fuchsia bag, 5 shiny gold bags.
540mirrored gray bags contain 1 pale lavender bag, 5 shiny violet bags, 2 dull lime bags.
541striped gold bags contain 5 clear beige bags.
542light blue bags contain 3 mirrored turquoise bags, 1 posh teal bag, 2 pale brown bags, 3 shiny maroon bags.
543drab red bags contain 4 striped tan bags.
544dull chartreuse bags contain 2 striped bronze bags, 2 plaid bronze bags.
545pale salmon bags contain 4 bright teal bags, 3 drab silver bags, 4 dotted bronze bags, 2 mirrored silver bags.
546posh white bags contain 5 dark beige bags, 5 striped turquoise bags, 5 pale purple bags, 3 pale salmon bags.
547shiny olive bags contain 4 bright tomato bags, 1 light teal bag, 5 pale cyan bags.
548striped lime bags contain 4 muted turquoise bags, 5 dark white bags, 4 dark fuchsia bags, 3 faded black bags.
549dull purple bags contain 5 dotted indigo bags, 3 pale coral bags, 3 pale beige bags, 5 shiny green bags.
550dull brown bags contain 4 dim lavender bags, 2 striped black bags, 2 pale lavender bags.
551muted blue bags contain 4 drab blue bags, 1 muted red bag, 3 light white bags.
552wavy cyan bags contain 1 pale purple bag, 1 muted lavender bag, 5 vibrant magenta bags, 1 plaid yellow bag.
553shiny purple bags contain 2 dark bronze bags.
554plaid bronze bags contain 3 wavy blue bags.
555posh tan bags contain 4 clear bronze bags, 4 bright cyan bags.
556dim green bags contain 4 dim beige bags.
557dark black bags contain 4 dim chartreuse bags, 1 muted blue bag, 2 pale silver bags.
558drab chartreuse bags contain 2 vibrant blue bags, 5 dark tomato bags, 5 dark brown bags.
559vibrant aqua bags contain 1 muted white bag, 5 posh teal bags.
560striped salmon bags contain 5 plaid coral bags, 1 drab black bag, 4 bright salmon bags.
561plaid beige bags contain 3 dotted bronze bags.
562bright gray bags contain 3 dim plum bags, 1 dull white bag, 5 plaid white bags, 3 drab brown bags.
563dull white bags contain 2 dotted coral bags, 1 dotted purple bag, 2 striped brown bags.
564dim bronze bags contain 5 striped green bags, 1 dotted bronze bag, 5 striped violet bags, 1 muted gray bag.
565striped indigo bags contain 5 shiny maroon bags, 3 clear chartreuse bags, 3 plaid gray bags, 5 muted gold bags.
566vibrant tomato bags contain 2 posh gray bags, 2 plaid beige bags, 4 wavy olive bags.
567posh red bags contain 2 pale cyan bags, 4 dim salmon bags.
568wavy fuchsia bags contain 2 shiny lime bags.
569bright teal bags contain 2 striped black bags, 5 light gold bags, 3 mirrored teal bags, 2 bright salmon bags.
570shiny teal bags contain 5 faded purple bags, 4 wavy silver bags.
571bright blue bags contain 4 drab maroon bags, 1 dark fuchsia bag.
572dull crimson bags contain 1 dark tomato bag, 4 striped green bags.
573shiny magenta bags contain 4 shiny coral bags, 4 bright gray bags, 4 shiny purple bags, 5 plaid coral bags.
574faded blue bags contain 4 striped tan bags.
575vibrant yellow bags contain 3 dim crimson bags.
576vibrant purple bags contain 2 dotted tan bags, 1 wavy fuchsia bag, 5 plaid lime bags.
577dark orange bags contain 3 faded tomato bags, 1 mirrored salmon bag, 5 pale tomato bags.
578light magenta bags contain 2 clear blue bags.
579dim beige bags contain 2 mirrored red bags, 2 faded white bags, 4 plaid beige bags, 4 drab olive bags.
580dotted magenta bags contain 2 vibrant lime bags.
581light yellow bags contain 3 wavy chartreuse bags, 5 drab turquoise bags, 5 dull black bags.
582dark aqua bags contain 1 dark tomato bag.
583mirrored chartreuse bags contain 3 posh gray bags, 2 wavy bronze bags, 5 plaid teal bags.
584mirrored red bags contain 3 faded black bags.
585muted turquoise bags contain 5 plaid teal bags.
586dim maroon bags contain 3 vibrant white bags, 1 muted turquoise bag, 5 drab red bags, 5 muted teal bags.
587drab silver bags contain 5 mirrored red bags.
588wavy tan bags contain 2 dark salmon bags, 2 posh bronze bags, 2 dark tan bags, 1 drab turquoise bag.
589dim black bags contain 3 dark olive bags.
590striped yellow bags contain 2 clear magenta bags, 3 dim indigo bags, 1 muted green bag.
591wavy purple bags contain 1 vibrant lime bag, 1 clear bronze bag, 4 dark white bags.
592light green bags contain 3 wavy lavender bags, 5 dim cyan bags.
593striped fuchsia bags contain 3 dotted green bags, 2 plaid maroon bags.
594wavy teal bags contain 4 muted olive bags, 2 muted purple bags. \ No newline at end of file
diff --git a/day8/__init__.py b/day8/__init__.py
deleted file mode 100644
index c6d086a..0000000
--- a/day8/__init__.py
+++ /dev/null
@@ -1,75 +0,0 @@
1from copy import copy
2from typing import Generator, Iterator, Any, List, Tuple
3
4from aoc import BaseAssignment
5
6
7class Assignment(BaseAssignment):
8 @staticmethod
9 def acc(line, accumulated_value, value):
10 return line + 1, accumulated_value + value
11
12 @staticmethod
13 def jmp(line, accumulated_value, value):
14 return line + value, accumulated_value
15
16 @staticmethod
17 def nop(line, accumulated_value, value):
18 return line + 1, accumulated_value
19
20 def read_input(self, example=False) -> List:
21 return list(super().read_input(example))
22
23 def parse_item(self, item: str) -> Tuple:
24 instruction, value = item.split(' ')
25
26 return getattr(self, instruction), int(value)
27
28 def run(self, input: List) -> int:
29 executed_lines = set()
30 accumulated_value = 0
31 line = 0
32
33 while True:
34 if line in executed_lines:
35 raise Exception(
36 f'Loop detected at line: {line}. '
37 f'Accumulated value: {accumulated_value}'
38 )
39
40 try:
41 instruction, value = input[line]
42 except IndexError:
43 break
44
45 executed_lines.add(line)
46 line, accumulated_value = instruction(
47 line, accumulated_value, value
48 )
49
50 return accumulated_value
51
52
53class AssignmentOne(Assignment):
54 pass
55
56
57class AssignmentTwo(Assignment):
58 def patch_instructions(self, input: List) -> Generator:
59 for index, (instruction, value) in enumerate(input):
60 if instruction is self.acc:
61 continue
62
63 patched_input = copy(input)
64 patched_input[index] = (
65 self.nop if instruction is self.jmp else self.jmp,
66 value
67 )
68 yield patched_input
69
70 def run(self, input: List) -> int:
71 for patched_input in self.patch_instructions(input):
72 try:
73 return super().run(patched_input)
74 except Exception:
75 continue
diff --git a/day8/example.txt b/day8/example.txt
deleted file mode 100644
index 6fee349..0000000
--- a/day8/example.txt
+++ /dev/null
@@ -1,9 +0,0 @@
1nop +0
2acc +1
3jmp +4
4acc +3
5jmp -3
6acc -99
7acc +1
8jmp -4
9acc +6 \ No newline at end of file
diff --git a/day8/input.txt b/day8/input.txt
deleted file mode 100644
index 340826c..0000000
--- a/day8/input.txt
+++ /dev/null
@@ -1,624 +0,0 @@
1acc -7
2acc +6
3acc +4
4nop +191
5jmp +199
6acc +44
7acc -9
8jmp +505
9acc -12
10acc +45
11jmp +204
12jmp +129
13acc +17
14nop +287
15jmp +584
16acc +16
17jmp +363
18acc +4
19nop +142
20acc +34
21nop +345
22jmp +522
23jmp +53
24acc -10
25jmp +524
26jmp +492
27jmp +319
28acc -9
29jmp +550
30acc -19
31jmp +15
32acc +24
33jmp +30
34acc -19
35acc +12
36acc -2
37jmp +274
38nop +91
39acc +10
40acc +4
41jmp +501
42acc +49
43acc +29
44jmp +488
45jmp +504
46jmp +277
47acc +20
48acc +34
49jmp -40
50acc +10
51acc -4
52acc -19
53acc +38
54jmp +239
55acc -16
56acc -3
57nop +513
58jmp +526
59jmp +131
60nop +539
61acc -11
62jmp +470
63acc +30
64jmp +166
65acc +17
66acc -16
67nop +315
68jmp +364
69acc +15
70nop -61
71acc -12
72nop +147
73jmp -31
74acc -9
75jmp +324
76acc +0
77jmp +1
78jmp +321
79acc +0
80acc +6
81acc -17
82acc +13
83jmp +461
84jmp +184
85acc +22
86jmp +182
87jmp +504
88nop +131
89acc +12
90acc -6
91acc +29
92jmp +187
93acc +17
94jmp +67
95jmp -2
96acc +50
97acc +17
98jmp +442
99acc +8
100nop +146
101acc -12
102acc +32
103jmp +237
104jmp +1
105acc +34
106acc +1
107acc +18
108jmp +274
109acc +17
110acc -12
111jmp +282
112acc +49
113acc +11
114acc +28
115acc +40
116jmp +79
117acc +19
118acc -8
119nop +87
120jmp +347
121acc +48
122nop +189
123jmp +419
124acc +31
125jmp +1
126acc +31
127jmp +1
128jmp -94
129nop -45
130nop +412
131acc -14
132acc +35
133jmp -49
134jmp +177
135jmp +127
136jmp +360
137jmp +114
138acc -11
139nop +248
140jmp -64
141acc +31
142acc +23
143acc +4
144nop +110
145jmp +61
146acc +45
147nop +444
148jmp +218
149jmp -131
150acc +36
151jmp -142
152nop +361
153acc -3
154acc +6
155jmp +161
156acc +24
157acc -7
158acc +4
159acc +31
160jmp +91
161jmp -20
162jmp +1
163nop -11
164jmp -146
165acc +25
166acc +33
167jmp +52
168acc -7
169jmp +82
170acc +7
171acc +21
172acc +6
173jmp +397
174acc +12
175acc +5
176acc -9
177acc +24
178jmp +371
179acc +50
180acc +47
181acc +19
182jmp +238
183jmp +396
184acc -16
185nop +394
186jmp +180
187acc +1
188acc +40
189jmp +237
190acc +22
191nop -30
192jmp -129
193acc +22
194jmp +232
195acc +23
196acc +27
197acc +47
198jmp +133
199acc +0
200nop +30
201acc +11
202acc -9
203jmp +381
204jmp +75
205jmp -64
206acc -15
207acc +29
208acc +49
209jmp +195
210nop +113
211acc -16
212nop +312
213acc +6
214jmp -44
215acc +26
216acc +40
217jmp +272
218jmp +83
219jmp +365
220acc +24
221acc +4
222jmp +29
223acc +8
224jmp -137
225acc +13
226jmp +1
227acc +33
228nop -182
229jmp +22
230jmp +9
231nop +20
232acc +14
233nop +291
234jmp -28
235jmp -83
236acc +18
237acc +5
238jmp +32
239acc +48
240nop -128
241acc +28
242jmp +225
243acc +29
244nop +280
245jmp +304
246acc +37
247acc +50
248acc +30
249jmp +131
250jmp -60
251acc +27
252jmp +272
253jmp +358
254acc -1
255acc +37
256jmp +203
257acc +1
258acc +37
259acc +12
260acc -16
261jmp +263
262acc -16
263acc +30
264jmp +86
265acc +26
266acc +6
267jmp +344
268jmp -147
269jmp -185
270acc -5
271acc -3
272acc +7
273acc +9
274jmp -205
275nop -85
276acc -4
277acc -1
278jmp +266
279acc +19
280nop -143
281acc -3
282jmp -12
283acc +12
284acc -18
285jmp +326
286acc +39
287jmp +165
288nop -279
289acc +19
290acc +46
291acc +5
292jmp -163
293acc -13
294jmp +1
295acc +33
296acc +44
297jmp -62
298acc -10
299acc +7
300jmp +240
301acc -19
302jmp -190
303acc -12
304jmp -167
305acc -2
306nop -288
307acc -13
308jmp +303
309acc +24
310jmp -283
311jmp +309
312nop +190
313acc +38
314acc -12
315jmp -47
316acc +15
317acc +31
318jmp -259
319nop +154
320acc +25
321acc +8
322jmp -295
323acc +37
324acc +34
325acc -18
326acc +41
327jmp +156
328acc +17
329acc +37
330jmp -243
331nop -318
332acc +45
333acc +33
334jmp +139
335acc -6
336acc +34
337acc +25
338acc +3
339jmp +260
340jmp +1
341acc +24
342jmp +154
343acc +34
344acc -19
345jmp +211
346acc +28
347jmp +98
348acc +45
349jmp -143
350acc +41
351acc +8
352acc +33
353nop +217
354jmp +119
355acc +21
356jmp -150
357acc +25
358acc +19
359jmp +1
360acc +20
361jmp +209
362acc +43
363acc +18
364acc +2
365jmp -159
366acc +25
367acc +20
368acc -4
369acc +45
370jmp +89
371nop +33
372acc +27
373jmp +190
374acc +47
375acc +36
376jmp +180
377acc +3
378jmp +1
379jmp -349
380jmp -6
381jmp -244
382acc +2
383acc +42
384jmp -357
385acc +3
386jmp -377
387acc +31
388nop -292
389acc +6
390acc +9
391jmp -212
392jmp -91
393acc +11
394jmp +119
395acc -18
396acc +38
397acc +31
398jmp -261
399jmp +1
400acc +2
401jmp -197
402acc +0
403jmp +1
404acc +40
405acc +31
406acc +4
407acc +45
408jmp -68
409acc -17
410acc +8
411nop -384
412jmp -193
413acc +22
414nop +170
415acc -19
416acc +34
417jmp -321
418acc +46
419jmp +130
420acc -19
421jmp +115
422acc -12
423acc +23
424acc +16
425jmp -94
426acc +11
427nop -286
428jmp -276
429acc +36
430acc +25
431jmp -32
432acc +6
433acc +39
434jmp +171
435acc -5
436nop -131
437jmp -368
438acc +41
439acc -7
440nop -336
441jmp -428
442acc +21
443acc +45
444jmp -225
445acc -2
446acc +14
447acc +29
448jmp -439
449acc +36
450acc +26
451jmp -433
452acc +29
453acc +36
454acc +31
455jmp -232
456nop -210
457nop -44
458jmp -382
459nop -119
460acc +43
461jmp +1
462jmp -24
463acc -13
464acc +22
465acc +16
466jmp +90
467nop -443
468acc +23
469acc +15
470acc -3
471jmp -225
472jmp -448
473acc +21
474acc -19
475acc +23
476jmp +1
477jmp -447
478acc +36
479acc -1
480acc +31
481nop +8
482jmp +97
483jmp -96
484acc -16
485acc +7
486acc -2
487jmp +1
488jmp -237
489jmp +1
490acc -12
491acc +29
492acc -1
493jmp -188
494acc +8
495jmp -453
496nop -234
497acc +46
498acc +20
499acc +24
500jmp -68
501jmp -178
502acc +42
503jmp -469
504acc +19
505acc +35
506jmp -4
507acc +49
508jmp +65
509nop +15
510nop -209
511acc +27
512jmp -261
513acc +15
514jmp -344
515acc +13
516acc +43
517jmp -194
518jmp +1
519jmp -335
520nop -424
521acc -13
522nop -387
523jmp -333
524acc +33
525acc +30
526jmp -272
527acc +16
528acc +5
529acc +21
530acc +41
531jmp -312
532acc +50
533jmp -429
534nop +57
535jmp -212
536acc +7
537acc -13
538jmp -252
539jmp -277
540jmp -114
541jmp -528
542jmp -40
543jmp -275
544acc +27
545nop -322
546jmp -356
547acc -11
548jmp -96
549nop -9
550acc -15
551jmp -194
552acc +9
553acc +47
554acc +44
555jmp -459
556acc -2
557acc -12
558nop -354
559jmp -166
560acc +44
561acc +23
562jmp -503
563acc +47
564acc +39
565acc +10
566acc +14
567jmp -543
568acc +43
569jmp -25
570jmp -52
571acc -19
572jmp -423
573acc +35
574acc +22
575acc +10
576acc +16
577jmp -527
578jmp -482
579acc +2
580acc +21
581acc -17
582jmp -417
583jmp -282
584acc +16
585nop -424
586nop -527
587jmp -207
588acc +23
589acc +21
590jmp -503
591acc +17
592acc -14
593jmp -189
594acc +43
595acc +14
596acc +11
597nop -427
598jmp -54
599acc +8
600nop -37
601nop -542
602jmp -332
603acc +27
604jmp +7
605jmp -98
606acc +50
607acc +0
608acc +48
609acc +0
610jmp -517
611acc +15
612acc +10
613jmp -478
614jmp -141
615acc +0
616acc +18
617jmp -468
618acc +49
619jmp -112
620nop -536
621acc -14
622acc -13
623acc +34
624jmp +1 \ No newline at end of file
diff --git a/day9/__init__.py b/day9/__init__.py
deleted file mode 100644
index 0cf3770..0000000
--- a/day9/__init__.py
+++ /dev/null
@@ -1,63 +0,0 @@
1from typing import Any, Iterator, List
2
3from aoc import BaseAssignment
4
5
6class Assignment(BaseAssignment):
7 def __init__(self, path, preamble_length=25):
8 super().__init__(path)
9 self.preamble_length = int(preamble_length)
10
11 def read_input(self, example=False) -> List:
12 return list(super(Assignment, self).read_input(example))
13
14 def parse_item(self, item: str) -> Any:
15 return int(item)
16
17
18class AssignmentOne(Assignment):
19 def find_invalid(self, input: List, preamble_length: int = 25) -> int:
20 preamble = sorted(input[:preamble_length])
21 to_check = input[preamble_length]
22
23 front_position = 0
24 end_position = preamble_length - 1
25
26 while True:
27 if front_position is end_position:
28 return to_check
29
30 sum = preamble[front_position] + preamble[end_position]
31
32 if sum > to_check:
33 end_position -= 1
34 elif sum < to_check:
35 front_position += 1
36 else:
37 break
38
39 return self.find_invalid(input[1:], preamble_length=preamble_length)
40
41 def run(self, input: List) -> int:
42 return self.find_invalid(
43 input, preamble_length=int(self.preamble_length))
44
45
46class AssignmentTwo(AssignmentOne):
47 def find_weakness(self, input: List, invalid_nr: int) -> int:
48 for index, current_num in enumerate(input):
49 if index < 2:
50 continue
51
52 items_to_check = input[:index]
53 sum_list = sum(items_to_check)
54
55 if sum_list > invalid_nr:
56 break
57 elif sum_list == invalid_nr:
58 return min(items_to_check) + max(items_to_check)
59
60 return self.find_weakness(input[1:], invalid_nr)
61
62 def run(self, input: List) -> int:
63 return self.find_weakness(input, super().run(input))
diff --git a/day9/example.txt b/day9/example.txt
deleted file mode 100644
index cda4246..0000000
--- a/day9/example.txt
+++ /dev/null
@@ -1,20 +0,0 @@
135
220
315
425
547
640
762
855
965
1095
11102
12117
13150
14182
15127
16219
17299
18277
19309
20576 \ No newline at end of file
diff --git a/day9/input.txt b/day9/input.txt
deleted file mode 100644
index e9932d5..0000000
--- a/day9/input.txt
+++ /dev/null
@@ -1,1000 +0,0 @@
118
219
346
414
529
645
740
847
925
1043
1136
1222
1321
144
1532
1633
1737
1838
1926
202
2142
2215
235
2413
2531
269
276
2830
297
3014
3110
328
3369
3411
3512
3625
3716
3817
3922
4019
4118
4220
4351
4421
4524
4623
4726
4815
4960
5013
5129
5227
5344
5442
5528
5638
5730
5836
5931
6032
6133
6234
6335
6437
6555
6639
6740
6870
6941
7043
7178
7258
7373
74101
7560
7656
7757
7875
7959
8067
8171
8261
8368
84110
8569
8680
8772
88112
8976
9079
91144
92129
93114
9484
9599
96113
97132
98115
99148
100116
101118
102120
103128
104126
105187
106130
107190
108152
109229
110141
111151
112155
113299
114209
115163
116239
117183
118197
119331
120212
121228
122270
123231
124234
125236
126244
127246
128355
129256
130392
131271
132342
133292
134360
135296
136306
137318
138346
139602
140375
141380
142395
143534
144456
145440
146459
147470
148502
149478
150480
151490
152517
153527
154548
155563
1561082
1571136
158896
1591044
160614
161693
162698
163988
164755
1651065
1661352
167835
168899
169915
170942
171929
1721173
173958
1741043
175970
1761007
1771075
1781090
1791529
1801750
1811663
1821307
1831312
1841533
1851369
1861391
1871705
1881590
1891654
1901734
1911764
1921805
1932923
1942649
1951936
1961899
1972633
1981928
1992681
2001977
2013956
2022165
2032981
2042619
2053926
2062676
2072840
2082703
2094292
2104547
2114383
2124628
2133244
2143388
2153539
2166659
2176602
2185143
2193827
2205316
2218558
2223905
2235322
2244142
2254817
2264784
2279069
2285379
22911206
2305516
2317536
23210701
2336242
2347293
2356632
23615190
23711260
2387366
2397732
2407681
2417969
2428959
2439521
2448611
2458047
24610139
2478689
24816605
2498926
25010300
25110163
25210895
25315262
25412148
25513925
25612874
25715025
25813974
25919229
26014313
26115047
26215098
26315335
26415413
26516370
26616016
26716658
26827899
26916736
27018852
27135245
27217615
27319089
27419821
27529984
27623769
27723043
27830309
27931705
28026799
28126848
28235105
28328287
28430382
28542183
28630748
28730433
28831351
28931429
29032386
29132674
29233394
29344635
29434351
29550281
29636704
29760293
29869456
29942864
30049891
30146812
30249842
30353647
30455086
30585047
306119298
30760961
30875099
30962099
31073297
31194916
31261784
31362780
31463815
31575250
31696654
31767745
318104928
31971055
320111242
321133358
32289676
32392706
324151460
325134938
326101898
327158753
328108733
329122831
330122745
331123060
332293691
333126595
334165971
335142995
336125599
337130525
338146305
339194115
340402424
341179788
342138800
343226064
344160731
345182382
346235256
347191574
348194604
349210631
350224643
351269464
352231478
353231564
354245576
355253585
356248659
357252194
358276830
359256124
360411266
361371362
362299531
363354846
364654618
365340519
366330374
367459212
368343113
369695365
370431041
371386178
372402205
373405235
374435274
375456121
376633683
377504783
378477140
379586095
380701736
381500853
382508318
383654377
384555655
385640050
386741024
387642644
388673487
3891288060
390802325
391716552
392729291
3931497690
3941073685
3951273733
396821452
397807440
398891395
399912414
400933261
401977993
4021117190
4031140903
4041210054
4051009171
4061143497
4071063973
4081445843
4091195705
4101282694
4112428963
4121316131
4131390039
4141518877
4152095183
4162337706
4171536731
4181628892
4191698835
4202076758
4211712847
4221803809
4231824656
4241845675
4252962865
4261987164
4272073144
4282150074
4292152668
4302204876
4312207470
4322981529
4332478399
4343128369
4352908916
4364192040
4372706170
4382926770
4393055608
4403790973
4413165623
4423235566
4433327727
4443502644
4455835686
4463516656
4473628465
4483670331
4497131109
4505941736
4515116386
4524278020
4534913640
4544412346
4555186405
4564685869
4577293617
4585834539
4595615086
4606383335
4615632940
4629001309
4635982378
4646221231
4656401189
4666493350
4676563293
4686830371
4698188513
4707145121
47110907100
47210354082
4737948351
47411998421
4758690366
4769528732
4778963889
47815987022
47910318809
4809872274
48113376235
48216136864
48311248026
48412016275
48514983687
48617469257
48712203609
48812383567
48926433146
49012894539
49113056643
49213393664
49313975492
49415093472
49526270774
49616638717
49716912240
49818492621
49917654255
50022066601
50125440210
50218836163
50320191083
50421120300
50523264301
50626870031
50733085622
50823451635
50924399842
51024587176
51125098148
51251578243
51335095792
51434176943
51537980840
51635460265
51727369156
51829068964
51937160073
52033550957
52136146876
52262568016
52347164749
52441311383
52544778259
52645631293
52739027246
52852333265
52955938995
53048549783
53150321666
53277431413
53347851477
53448987018
53565898559
53652467304
53783311625
53868646749
53974487511
54069011222
54180925135
54276187319
54362619921
544115214565
545167547830
546136864130
54791943008
548131266670
54980338629
55083805505
55186878723
55287577029
553100184742
554117561005
555139346027
556116498226
55796838495
558129912153
559101454322
560115087225
561213051449
562150674830
563246410379
564154562929
565216668887
566138807240
567195425854
568142958550
569164144134
570267732572
571167217352
572167915658
573170684228
574185259827
575171382534
576244412872
577184415524
578265598456
579198292817
580211925720
581213336721
582334233094
583216541547
584240261562
585253894465
586369675351
587281765790
588335133010
589323222764
590505860018
591328218377
592354884270
593307102684
594331361486
595337901580
596379143072
597338599886
598342066762
599456803109
600355798058
601382708341
602594634061
603410218537
604536559485
605425262441
606429878268
607547903033
608523644231
609535660255
610585255951
611753480818
612588868474
613630325448
614662900742
615788164595
616635321061
617638464170
618645004264
619669263066
620734941130
621680666648
622694397944
6231055587889
6241363661010
625738506399
626792926878
627945878792
6281277125049
6291108900182
6301357298686
6311298221803
632776203571
6331275329712
6341124528729
6351174124425
6361343567390
6371219193922
6381310992096
6391759849790
6401527868008
6411428247939
6421283468434
6431314267330
6441349929714
6451375064592
6461917455607
6472517415725
6481531433277
6491514709970
6502328094104
6512959681216
6521722082363
6532811336442
6541885103753
6551900732300
6562126133285
6571950327996
6582884378519
6592552776668
6602549189017
6612502662356
6622530186018
6632594460530
6642633398148
6652597735764
6662658533026
6675542911545
6682664197044
6692724994306
6704032125695
6713046143247
6724048849002
6733236792333
6743399813723
6753607186116
6766636606056
6773622814663
6786048128775
6796109848472
6803851060296
6814076461281
6827094992249
6835032848374
6845051851373
6855079375035
6865097122886
6875124646548
6885192196294
6895231133912
6906843978449
6915322730070
6925771137553
6937268918028
6947448662725
6956445956970
6967122604528
6976859606996
6987006999839
6997022628386
70010068771633
70114029628225
7027473874959
70310514926364
70413866606835
7057927521577
7069109309655
70710084699747
70812705008871
70912219727414
71010176497921
71110316842842
71210355780460
71312253762298
71410553863982
71519522680326
71621340481794
71712630744549
71813305563966
71913452956809
72013468585356
72113882235382
72214480874798
72314934521416
72417199126307
72519663173637
72615401396536
72716583184614
72817036831232
72923021851713
73018104019498
73132584894296
73224022449338
73337475406147
73430076544308
73520672623302
73637709454534
73720909644442
73822807626280
73923184608531
74025936308515
74126083701358
74227187799348
74328240085382
74426921542165
74528403106772
74628363110180
74729415396214
74846507126270
74948026283817
75035140850730
75140058682945
75241059280570
75343480249582
75443694475015
75538776642800
75649268309889
75746993345800
75841582267744
75943717270722
76055590906120
76149272754622
76244094252973
76371720334964
76449120917046
76592815392061
76653005243523
76754109341513
76891506533399
76955284652345
77079835923370
771104405569391
77276408742014
77391720758832
77473917493530
77578835325745
77685769988600
77780358910544
778140841675878
779124053385559
780113302602708
781120126012736
78285299538466
783123190248152
784142088146683
785125529659060
78693367007595
787236492850860
788107114585036
789102126160569
790108289895868
791130518083527
792174235354249
793165424026929
794140584190811
795170556084577
796150326235544
797161708280480
798192137928453
799180961486314
800205425551202
801166128899144
802165658449010
803178666546061
804200481592631
805233951198406
806307551711771
807187425699035
808306713089955
809201656903463
810195493168164
811209240745605
812366092245096
813238807979395
814210416056437
815366610491775
816302292471291
817290910426355
818374535389217
819311140275388
820312034516024
821331787348154
822327366729490
823402138496094
824344324995071
825344795445205
826353084148045
827387907291666
828374159714225
829491392018986
830434301147559
831382918867199
832389082602498
833503949374754
834397150071627
835715274021156
836419656802042
837449224035832
838512708527728
839612554552531
840593202897646
841776673885311
842685675664605
843623174791412
844638507004878
845736003015244
846659154077644
847886868241953
848733878047703
849763981797113
8501269787109152
851750234219672
852763242316723
8531248711542972
854780068938826
8551048236680142
8561862990006798
8571418575943704
8581620746289656
8592003665156855
8602198644882530
861868880837874
8622005790124396
8631205757450177
8641216377689058
8651297661082522
8661324182669483
8673868780131194
8681261681796290
8691372385052581
8701393032125347
8711409388297316
8721497120364426
8731484112267375
8741513476536395
8751530303158498
8761543311255549
8771632123154597
8781648949776700
8791828305618968
8802532348947517
8812241265890455
8822946610859222
8832074638288051
8842193063507357
8852517830614574
8862085258526932
8872422135139235
8882585864465773
8892514038771580
8902654713921637
8912893804950887
8922634066848871
8932745794063665
8942765417177928
8954424108109385
8962893500564691
8972981232631801
8987009972575158
8993043779694893
9003073614414047
9013175434410146
9026249048824193
9034606987235568
9044250440758203
9054827130356228
9064159896814983
9077588219867369
9084599297298512
9097672911712559
9104507393666167
91110418705776224
9125076849060872
9135099903237353
9145689473181726
9155527871799758
9165399484026799
91714682884287717
9185511211241593
9195658917742619
9207497722523432
9215874733196492
9226025012326694
9236117394108940
9247425875168349
9257233511229030
9267335331225129
9278410337573186
9289327289819075
92910127169098270
9308987027171211
93112734815251928
93219190277953884
9339906877692966
93422180606811149
9359584242727039
93612825359195148
93710176752298225
93815596350874692
93910910695268392
94011170128984212
94111058401769418
94211385944438085
94311533650939111
94411683930069313
94514435349899880
94613210064421621
94728298000920089
94813350905337970
94921660820037381
95016560801048105
95116919573952168
95220713234257160
95318314316990286
95418571269898250
95524120759690013
95619491120420005
95719760995025264
95820083629991191
95920494937995431
96020642644496457
96129372718759704
96221235154067643
96331146939463349
96431469574429276
96539831651859200
96631553339764849
96723069874507398
96826560969759591
96945904924329156
97050681729449604
97132842025757975
97230270479290138
97331665222328256
97433480375000273
97534875118038391
97655785982018269
97740255933020695
97836885586888536
97938062390318255
98039252115445269
98139844625016455
98240403639521721
98347055907755022
98467698552251479
98541877798564100
98653340353797536
98759297544385898
98849630844266989
98954539448936674
99062321989952667
99154623214272247
99283941494643558
99372686650774430
99463112505048113
995113794234497717
996123786119660013
99768355493038664
99888215471835927
99998549659831167
100071760704926927 \ No newline at end of file