summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYigit Sever2021-12-13 10:38:11 +0300
committerYigit Sever2021-12-13 10:38:11 +0300
commit74b27ccca31bb757c737dd7fdc02f513f57561b2 (patch)
treee27db4cd0873c81a53d32277446d926d176304e0
parent3919f90cfbfbba26c8e39f979280649f5e08aea8 (diff)
parentac8125750abed263619da4cc6d653bb5ab76f007 (diff)
downloadaoc-74b27ccca31bb757c737dd7fdc02f513f57561b2.tar.gz
aoc-74b27ccca31bb757c737dd7fdc02f513f57561b2.tar.bz2
aoc-74b27ccca31bb757c737dd7fdc02f513f57561b2.zip
Merge remote-tracking branch 'origin/main'
-rw-r--r--2020/day1/README.md13
-rw-r--r--2020/day1/input200
-rw-r--r--2020/day1/sumto.pl28
-rw-r--r--2020/day1/threesum.pl44
-rw-r--r--2020/day10/input94
-rw-r--r--2020/day10/joltage.pl29
-rw-r--r--2020/day2/input1000
-rw-r--r--2020/day2/pwcountcheck.pl22
-rw-r--r--2020/day2/pwindexcheck.pl19
-rw-r--r--2020/day3/README.md11
-rw-r--r--2020/day3/input323
-rw-r--r--2020/day3/toboggan.pl30
-rw-r--r--2020/day3/toboggans.pl40
-rw-r--r--2020/day4/input1000
-rw-r--r--2020/day4/passport.pl68
-rw-r--r--2020/day5/boarding.py52
-rw-r--r--2020/day5/input824
-rw-r--r--2020/day6/declaration.pl30
-rw-r--r--2020/day6/group_declaration.pl32
-rw-r--r--2020/day6/input2190
-rw-r--r--2020/day7/haversacks.py35
-rw-r--r--2020/day7/input594
-rw-r--r--2020/day7/inside_shiny.py45
-rw-r--r--2020/day8/gamechild.py55
-rw-r--r--2020/day8/handheld.py27
-rw-r--r--2020/day8/input642
-rw-r--r--2020/day9/input1000
-rw-r--r--2020/day9/xmas_encoder.pl70
-rw-r--r--2021/day5/Cargo.toml8
-rw-r--r--2021/day5/input500
-rw-r--r--2021/day5/input.example10
-rw-r--r--2021/day5/input.mini.example2
-rw-r--r--2021/day5/src/main.rs95
-rw-r--r--2021/day6/Cargo.toml9
-rw-r--r--2021/day6/input1
-rw-r--r--2021/day6/input.example1
-rw-r--r--2021/day6/src/main.rs33
37 files changed, 9176 insertions, 0 deletions
diff --git a/2020/day1/README.md b/2020/day1/README.md
new file mode 100644
index 0000000..f8ae070
--- /dev/null
+++ b/2020/day1/README.md
@@ -0,0 +1,13 @@
1# Day 1
2
3## First Part
4
5Simple two sum problem
6
7 perl sumto.pl
8
9## Second part
10
11[Three sum problem](https://www.callicoder.com/three-sum-problem/), which is like two sum problem after fixing the first index
12
13 perl threesum.pl
diff --git a/2020/day1/input b/2020/day1/input
new file mode 100644
index 0000000..b221b17
--- /dev/null
+++ b/2020/day1/input
@@ -0,0 +1,200 @@
1997
21582
31790
41798
51094
61831
71879
81730
91995
101702
111680
121869
131964
141777
151862
161928
171997
181741
191604
201691
211219
221458
231749
241717
251786
261665
271724
281998
291589
301828
311953
321848
331500
341590
351968
361948
371323
381800
391986
40679
411907
421916
431820
441661
451479
461808
471824
481825
491952
501666
511541
521791
531906
541638
551557
561999
571710
581549
591912
601974
611628
621748
631411
641978
651865
661932
671839
681892
691981
701807
71357
72912
731443
741972
751816
761890
771029
781175
791522
801750
812001
821655
831955
841949
851660
86233
871891
881994
891934
901908
911573
921712
931622
941770
951574
961778
971851
982004
991818
1001200
1011229
1021110
1031005
1041716
1051765
1061835
1071773
10815
1091914
1101833
1111689
1121843
1131718
1141872
115390
1161941
1171178
1181670
1191899
1201864
1211913
1222010
1231855
1241797
1251767
1261673
1271657
1281607
1291305
1301341
1311662
1321845
1331980
1341534
1351789
1361876
1371849
1381926
1391958
140977
1411709
1421647
1431832
1441785
1451854
1461667
1471679
1481970
1491186
1502000
1511681
1521684
1531614
1541988
1551561
1561594
1571636
1581327
1591696
1601915
1611045
1621829
1631079
1641295
1651213
1661714
1671992
1681984
1691951
1701687
1711842
1721792
17387
1741732
175428
1761799
1771850
1781962
1791629
1801965
1811142
1821040
183131
1841844
1851454
1861779
1871369
1881960
1891887
1901725
1911893
1921465
1931676
1941826
1951462
1961408
1971937
1981643
1991069
2001759
diff --git a/2020/day1/sumto.pl b/2020/day1/sumto.pl
new file mode 100644
index 0000000..931f5e2
--- /dev/null
+++ b/2020/day1/sumto.pl
@@ -0,0 +1,28 @@
1use strict;
2use warnings;
3use DDP;
4use Smart::Comments;
5
6open my $fh, '<', "input" or die "no input present, $!";
7chomp(my @nums = <$fh>);
8close $fh;
9
10@nums = sort { $a <=> $b } @nums;
11
12my $l_idx = 0;
13my $r_idx = $#nums;
14
15my $total = $nums[$l_idx] + $nums[$r_idx];
16
17while ($total != 2020) {
18
19 if ($total < 2020) {
20 $l_idx++; # total too low, increase
21 } else {
22 $r_idx--; # total too high, decrease
23 }
24
25 $total = $nums[$l_idx] + $nums[$r_idx];
26}
27
28print $nums[$l_idx] * $nums[$r_idx];
diff --git a/2020/day1/threesum.pl b/2020/day1/threesum.pl
new file mode 100644
index 0000000..8f2083a
--- /dev/null
+++ b/2020/day1/threesum.pl
@@ -0,0 +1,44 @@
1use strict;
2use warnings;
3use DDP;
4# use Smart::Comments;
5
6open my $fh, '<', "input" or die "no input present, $!";
7chomp(my @nums = <$fh>);
8close $fh;
9
10@nums = sort { $a <=> $b } @nums;
11
12# fix one index, solve two sum problem
13my $fixed_idx = 0;
14my $l_idx = 1;
15my $r_idx = $#nums;
16
17my $total = $nums[$fixed_idx] + $nums[$l_idx] + $nums[$r_idx];
18
19while ($total != 2020) {
20
21 if ($total < 2020) {
22 $l_idx++; # total too low, increase
23 } else {
24 $r_idx--; # total too high, decrease
25 }
26
27 # fixed index might not be correct
28 if ($l_idx > $r_idx) {
29 $fixed_idx++;
30 $l_idx = $fixed_idx + 1;
31 $r_idx = $#nums;
32 }
33
34 $total = $nums[$fixed_idx] + $nums[$l_idx] + $nums[$r_idx];
35 ### $total
36
37 ### $fixed_idx
38 ### $l_idx
39 ### $r_idx
40
41 # print("fixed: $nums[$fixed_idx]\nleft: $nums[$l_idx]\nright: $nums[$r_idx]\n");
42}
43
44print $nums[$fixed_idx] * $nums[$l_idx] * $nums[$r_idx];
diff --git a/2020/day10/input b/2020/day10/input
new file mode 100644
index 0000000..8d69912
--- /dev/null
+++ b/2020/day10/input
@@ -0,0 +1,94 @@
126
297
331
47
52
610
746
838
9112
1054
1130
1293
1318
14111
1529
1675
17139
1823
19132
2085
2178
2299
238
24113
2587
2657
27133
2841
29104
3098
3158
3290
3313
3491
3520
3668
37103
38127
39105
40114
41138
42126
4367
4432
45145
46115
4716
48141
491
5073
5145
52119
5351
5440
5535
56150
57118
5853
5980
6079
6165
62135
6374
6447
65128
6664
6717
684
6984
7083
71147
72142
73146
749
75125
7694
77140
78131
79134
8092
8166
82122
8319
8486
8550
8652
87108
88100
8971
9061
9144
9239
933
9472
diff --git a/2020/day10/joltage.pl b/2020/day10/joltage.pl
new file mode 100644
index 0000000..3a22057
--- /dev/null
+++ b/2020/day10/joltage.pl
@@ -0,0 +1,29 @@
1use strict;
2use warnings;
3use DDP;
4use Smart::Comments;
5use List::Util qw(sum min);
6
7my @jolts = sort { $a <=> $b } map { int } <>;
8
9@jolts = (0, @jolts, $jolts[-1] + 3);
10
11my %diffs;
12
13my $curr = 0;
14
15foreach my $joltage (@jolts) {
16 $diffs{$joltage - $curr}++;
17 $curr = $joltage;
18}
19
20p %diffs;
21
22print($diffs{1} * $diffs{3});
23
24my @memoi = (1);
25for my $k (1..$#jolts) {
26 push @memoi, sum map {$memoi[$k-$_]} grep {$jolts[$k-$_]+3 >= $jolts[$k]} 1..min($k,3);
27}
28
29print "\n$memoi[-1]"
diff --git a/2020/day2/input b/2020/day2/input
new file mode 100644
index 0000000..8903fa4
--- /dev/null
+++ b/2020/day2/input
@@ -0,0 +1,1000 @@
113-16 k: kkkkkgmkbvkkrskhd
25-6 p: qpppvzp
33-4 p: psppxhlfpvkh
43-10 w: wwwwwwwwwwdwww
54-5 r: rcgrrcr
63-4 c: clvccc
71-5 x: xfsfxmctb
89-14 k: kpkmkkckhkkkkvkk
95-6 s: gsfsss
104-8 c: cccdcqdcr
112-5 k: kmkpkkfgkkkkdkkk
129-11 f: pfnsfffwxsn
138-9 w: wjwnwcwxc
147-8 q: rrxhplqs
155-10 n: gpnkqnxnbjzgjnb
1618-19 p: fvpkgfkfjgwllqwhrjd
1712-13 v: kvvvbmdvvvvvvcvvvv
183-5 m: mdmkmvhszpjcxl
192-7 v: qjmvzdwxc
201-4 b: bbbbbbbb
212-5 c: fzcdccfkcsjhckccrcx
222-10 d: fhdwdbdddrsldrtdjdr
231-7 z: ztszzfzztcqzrz
244-6 j: mmjjjrj
2511-12 b: smbgkbbmbpbbmkbbbb
263-5 r: jxzrk
2713-15 d: fppsvgqrdgrbddd
2812-14 w: wwwwkcwwwpwzwzwwsz
295-6 v: lmcvvv
3012-14 x: xxxxxxvxxmxbjnx
311-2 p: hpgpt
3210-11 k: qmktzklkgkcknfwkh
336-7 r: ntcrrrjrznk
347-8 v: vshxvzxw
359-13 c: cncccccclcdwccwmc
365-6 r: srrrgv
376-9 w: bwfswqthk
385-7 f: hfvsfjf
3911-14 v: zbksgqcrclvvwpfvfr
408-9 v: vvvvvmvvvkv
411-12 n: gnnnnnnndnqnd
4210-11 j: jtjjjvbjjhj
433-10 x: vgxxxwqxkxn
445-6 z: zzzztr
452-4 z: rzdhz
4610-11 m: mmmmmmmmmmvj
472-4 z: jzczpvzzs
481-4 k: rkkhk
494-8 n: nwcwmnflpbnnl
502-4 w: dwwgwwssf
511-3 m: smzm
522-6 d: dsddwwljd
5313-15 w: wwwwrwwwdvwwpwg
547-10 f: bhsfffzfjdbfmf
556-7 w: wwwwtwww
563-6 b: bbbbbbxb
577-9 d: dvwdxjgdhf
5812-14 n: znnnnnnnnlnfnrn
591-7 v: qvkvvvgv
602-15 x: xsxxxxxxxxxxxxbx
615-11 n: nckpwnmmnzg
624-13 d: dzdddcdkxgqddqdp
635-17 m: mkxmzbmmmmvfvmmjvmmm
6411-13 p: pppzppppswhqhpppp
654-5 b: bbbgg
665-8 v: vvvvvvsv
679-10 j: jnlkmhmvjvnbjcsvlwb
682-4 x: zxxxxv
691-17 r: drrrrrrrrrrrrrrrcr
7011-17 w: wqmwlszsnnwwwzwwwww
712-3 m: mmmmmmmmm
729-10 n: nrnngngnvr
734-8 z: bxjtzkdzwkzz
745-8 g: vjtvqtgqjgtggggmj
752-5 q: qfgcqw
766-11 c: cgccccchcccvc
776-8 t: tpjgfjpr
785-10 h: hhhnhbhhczhh
7911-14 d: gdddddddddwdddr
801-2 l: twngrmgrckmlmh
8110-12 r: rrrrrrfprfrr
827-8 m: bmmmmsrhqm
832-11 w: wlwwwwdnqsvw
8410-13 j: jjjjjjtjzjjjj
854-16 f: fdvgffxfzcffffff
862-6 q: wbfvkm
874-6 d: ddddddd
882-4 p: jpxprdpn
895-6 s: tgssrrpbvsgs
903-10 j: spjgjjjcbjsjxj
915-10 w: wwqrdvwwwpwwwr
923-4 x: hpxxxzf
934-8 d: dxcpddddddrddddddqj
9415-16 z: zhfxlzzkzzgzhzzz
953-5 s: ssslsnc
962-3 j: rrjrwg
977-13 x: xxxxxxpxxxxxtxx
985-8 x: xxxxxxxrxxxxxxxgx
994-10 g: dmhcmbwnwwggcw
1006-8 s: qtsxflsfshzvsgpxg
1017-9 c: cbvccckcwc
10215-16 r: rlrrrrrrnrrrrrsx
1038-10 r: kjrbrrrbrnvrrx
1046-7 q: zpsmcjmmr
1055-10 p: ppgpsppppkpp
1063-4 k: kbkkk
1071-2 b: bbbbb
1088-11 s: sssvssssbsw
1095-7 m: lmwrmmmmgmfhd
11016-18 j: jjjjjjjjjjjjjljsjt
1111-14 b: bcjlbbcwbjbxbbvbf
1122-5 z: qzzrfv
1134-17 t: tttrtzttttttttttxttt
1145-6 w: kwwwjw
1157-9 l: bclgtbghdtd
1161-8 h: mqhbhhhhhhh
1175-6 j: zznjjfvvjwcths
1185-7 t: tttbmttd
1195-14 v: vvvvpjvvvvvvhm
1202-4 x: vxlx
1215-15 g: gfgfnnqkbgngpdpp
1221-8 n: jnnnnpnvntrp
1233-4 b: bbbb
1246-7 z: frszzzfz
1256-9 f: pbbmlvfpwvw
1264-15 g: gbjgggfgvggggdgbq
1271-9 w: tgwljtgwlm
12814-15 k: kkkkkkkkkkkkkzk
12911-12 p: ppppppppppklp
1304-8 n: nnnvpkzsn
13113-16 m: fmjsqwtmwbdxmnwmlmb
1322-7 c: qccgccczcc
1338-11 x: xxxxkxxbxxx
1341-4 g: gcgb
1356-7 l: pkjllll
1362-3 n: mnntpwsrlqkxkgnlb
1379-10 s: sssssssscss
1386-16 n: rtthnbsrfvndnsnnj
1391-2 h: hjdhh
1401-3 f: ffff
1416-9 l: xqtvlllllpmlxtl
1426-11 r: rrrrrrrrrrr
1431-6 z: fzzzzzzzzzz
1442-7 q: qqdqqqgqqqqtxqqqq
1459-13 k: dbfkszjjmkkkfkdkklxk
1465-6 j: mdjjljdfzjvqd
1475-10 s: tsbskgsbtsqdd
14812-14 j: tjjsjdjfjtjjfjj
1499-10 x: xxxxxxxxgx
1508-11 r: rrgrrrrbrrcrrr
1516-18 m: vmnmhmbmmmmmmmmmmz
1526-8 k: llkkqrkc
1531-2 c: cccc
1542-8 x: xxxxxxxxxx
1557-10 p: ppzppppppwp
1569-17 v: cdjwncwrbcgkfvwzvkf
1576-11 w: wwftwjwwwcwwvwwvw
15812-16 g: gggggggggxggggggggh
1591-4 z: kzxzcdnpgczhn
1603-5 t: tttmtttvxtd
1614-5 h: hhhwh
1624-8 d: dvddddln
1638-15 l: lvllfllllxllllwmpl
1647-9 s: dbsksbwtj
1658-15 q: qkbqmqqqqqqqccqhq
1662-6 r: grcsrrqz
16714-18 s: sssssssssssssssssss
1687-10 r: ffrrttnrrrrs
1692-11 c: csccccccfdgccgcccccc
1703-5 r: rrrrr
1713-4 h: qrhh
1727-9 k: kkzqkrkwk
1731-5 k: khkkfgkj
1743-6 l: pplnxl
17510-13 k: chsxfrtrkkjgq
1766-9 b: lbbblnbrbbb
1773-5 n: hqnlfpnj
1785-8 f: shffkcnfdmswfrnsfrpg
1792-7 j: jjjjcdcnwxnbr
1804-13 z: dvxnzpcbfkngk
18111-13 h: hwzpzbphjhrhk
1821-10 v: vqptqpbbtq
1831-4 b: bdfpt
18413-18 p: pppppppppppppppppp
18514-15 h: hhhfhhhhhhhhhnmhh
1864-14 x: wxsbxxxjvxxbxx
1879-10 m: mmdmmxsrjdmpdmzsmm
18811-16 s: szsbssssssszsxss
1899-13 h: hhhhbhvhthhvnh
1905-6 q: qqqqqq
1911-3 d: ddldcqrdmd
19211-17 f: ffcfkfffffpwfqffm
1933-6 m: rmmmqm
1949-11 l: vlblgszllwbvpn
19513-15 z: ghzvdlzrvrzzcnz
1963-5 l: bglllcll
1971-8 h: hhhhhhhhhh
1982-7 j: qjsgtjjt
1991-2 d: ddbctlvpdf
20011-14 v: vvvbvvvvvvtvvvvv
20114-15 g: ggzgggggggswgrjggm
2029-13 v: hqtcqvnbvqnmv
20312-13 b: bbbbbbbbbbbjzbbbbb
2045-6 r: rrfrcv
2054-6 p: pppppppppppp
2066-12 d: fdddddddddddrd
20712-17 g: ggghgggggggxggggfgp
2082-7 h: hqhhhhjhh
2098-12 v: vvvlvvvvvvvv
2104-5 n: nnkpg
2113-12 m: mmzmmmmmmmmmmmm
21211-14 b: bbbbbpbbbbbbdbbbb
2136-7 z: zzzzzzr
2144-7 n: snnnnfnkn
2151-2 h: hnshhqvmjpghntx
21615-16 b: bbbbbbbbbbbrbbbb
2174-6 n: nxnnpnnnh
2182-9 v: sdghvmxtkz
2195-7 j: jjjjjjj
2204-10 l: plbhsmlllrl
22112-18 g: ggtggdlghcjwqwggggg
2225-7 b: bzbxrbxgwcdbb
2235-15 m: mmmmmmmmmmmmmmmmm
2244-13 j: jjjjjjjjjjjjjjj
2254-11 k: kshkkwlkkkkkdkbk
2261-15 w: bwwwzbwwwnwwwmcww
22719-20 l: pblvxmgslllnnsplldnv
2283-4 z: skzx
2291-5 x: xxqdxgb
2302-3 g: wgggc
2315-9 d: dgcddwrdf
2323-6 m: mfkzjg
2335-8 s: hmssmgwxhssg
23410-11 s: ssssshqssll
23517-19 v: vvsvfvvvvxvvvgvvvbv
23611-12 t: cwssdtfqkdttjv
2371-5 b: hcptprhlpbwkg
2382-8 j: ljjxjjjljp
2392-5 q: qqqlqr
2402-8 r: jrcwdbhrcltrnsgswpm
2413-4 f: ffvff
2425-10 h: hhhhhhhhhhzph
2435-6 z: mzzmctzz
24410-13 w: wwwwwjwqwwwwwwwwww
2451-4 m: mmtm
24611-12 z: tddzcrptcnlmbjj
2473-6 l: llmllpl
2482-4 f: ffsf
2495-11 g: gggrvgggggg
2502-10 k: zbmpktfnddfs
2515-9 l: lsbblgpjlms
2521-12 s: sssssssssssss
2535-7 f: fffdrsc
2549-11 z: rzzzzkfzzwqzrz
2553-6 z: zwzrbzv
25617-18 r: rrrrrrrrrrrrrrrrrg
2572-4 n: nnnrgnnn
2583-4 n: nfqq
2592-3 h: khhc
2609-10 x: xxxffbxxxnr
2615-6 d: mtgnrjdnmzhddks
2623-4 b: bbbb
26311-15 p: kppxppppppppppppp
26413-18 t: tttdtttttttttttttttt
2651-7 p: frjpppwgdpzvvfwds
2661-6 k: qkzkkvpk
2674-15 n: nnnxnnnnnnnnnnpqn
2686-7 l: ndlrqrl
2694-5 r: rchrwr
27011-12 f: ffffffffhfff
2711-3 j: xjjjj
2729-10 z: zzzzlzzzgn
2736-17 g: tgrhpggcqbjwjggmgql
27411-15 v: vvvvvvvvvvlvvvhv
27510-13 w: wwwwwwwtwwwwswwfwww
2761-2 l: plllllllllllpll
2778-9 k: kkckklwkc
2782-4 b: bvbp
2791-6 r: rrrnqrrrrrrrrrrrrr
2808-10 d: pwnvkxddpddd
2813-6 k: kkkwkf
2828-15 v: vvvvvvvvvvvvvvvvvvv
28313-17 g: lhqgggcxlgcvgwgdg
2846-13 x: kxxxxsxxxmxxxx
2853-4 r: rrrqr
2862-3 r: kvrsxjrmtvtr
2871-2 h: jtbh
2888-9 w: wwwwwdfckw
28913-18 v: vvqwvvvnvvvvvvvsvv
2906-14 t: mpfthffdnmtxmx
2914-5 d: dddcsd
2926-7 m: mlmmmnfmmh
2935-7 x: xhxpkpqxqnx
2949-11 v: vgvvqgvvwmkpfvvlv
29515-18 l: jlxqvmjgrrnbhccpdl
2962-9 k: kkkkznkkbf
29714-15 w: wwwwwwwwwwwwwbwww
2989-10 k: wkkvvmkkvgfkkk
29910-15 g: bfggggggggggggg
3007-8 x: xxxxxxxx
30112-14 t: dmtmwtztltfsthtb
3026-7 k: kkkkkwk
3034-5 c: ccvsz
3043-4 c: mclvcfjcqh
30516-17 k: skkpknhxxsrqmcvkj
30612-13 v: vvvvrfdfsdtvf
3071-2 q: fpqp
3087-8 b: bwbbbqbbb
3095-6 h: hhhhhh
3105-7 z: zzvzdzzxzwz
31117-18 w: wwwwjhggnwbwwwwwzb
3126-8 g: gggggtggg
3134-8 n: lnnnzhbn
31417-18 g: lggggggggcggglgggg
3152-8 v: vbvvvvvkv
3161-9 v: vvxvrvvtvvvvv
31713-15 j: fhvxdngcrjdqxmnz
3185-17 n: nnnnnnnznnnnnnwnnn
3191-4 f: fnxdmjdsqbfffnjsnkf
3203-8 q: dqqgbnbrpxqclq
3214-6 b: xkpbbbk
32211-12 l: llqllllllldjll
3239-10 c: cwvlcdnmzr
3246-8 l: zkjlllvlgvlnlblspm
3254-9 b: lbbbbbbbbbwbbbw
3269-12 g: gfgrggvgbggg
32716-17 r: rrrrrrrrrrprrrrtc
3282-16 r: mrbmrrxgrrbzrrmrrj
32916-17 v: vnsvvczmjwfkvjvvvsrv
3302-11 l: lglrllnlllqlll
3312-8 t: sllgjrxkthl
3323-7 d: ddldddk
3338-13 c: ccckchmcdxccccccsf
3348-9 t: cttbtztttfqdqh
3354-5 b: tbbxh
33612-17 w: wwwwwwwwlwwtwwwvtww
3371-5 t: krfwxtzxcwphw
3383-10 w: wwwwwwwwwwwww
3391-2 n: nnjqqkspswql
3409-13 w: wwwwwwwwfwwwwww
3411-3 s: ssss
34213-14 x: xfxxxxxtxxxxnx
3434-5 x: xxxcj
3445-15 k: kkkktkkkkkkkkkf
34514-16 l: lrlzjxlllpqltlblvlll
3465-6 t: ttttfct
34711-14 z: zzzzzzrczdkzzz
3486-8 f: ffffftfj
3499-11 d: ljdngglsdvdsv
35010-15 c: ccrqhcqzccnnjvcfcj
35111-15 w: jwvwnccwwxzcwwww
3529-10 s: ssssssssss
3532-4 r: vzfmrr
3545-8 l: blhlnlsqb
3556-7 c: ccxxcfxldckpcc
3562-4 j: czjkj
3572-14 d: rlxksvpqsnhhpkds
35816-19 k: kkkkkkkkkkkckvkjkkwp
3593-9 j: kcjcbjjjjjjjjgljml
3602-7 l: ljjzdll
3614-8 r: fqnqjbsssqrrwrrrrr
3625-15 t: xtnvhtttdsrhtttt
3631-3 l: xlzl
3646-10 g: ggggncchghgggghgg
36510-11 m: msmmmmmcmgj
3664-6 c: mcnprhmcfcclcl
36712-13 s: ssssswssssstsss
36813-14 m: mmmmmmmmmmmmmmmmm
3699-11 p: kqvrdbpppcpgqh
3706-7 q: qqqqqqq
3719-10 b: bpbbnbbbkdbbsbblqrfb
37212-13 b: bbbbbbbbbbstsb
3738-11 g: ggbbfrsgdxhldnt
3747-8 d: dddwddssdbd
3756-7 b: bbbbkbfj
3763-5 z: jtdklzthgz
3775-6 l: hlnlllltmvhmlmq
3783-6 q: qqpxqvqp
3791-3 z: zskzmzzzhzzzhzvzrzzq
3802-8 h: sskhzhlhkht
3812-9 r: rltcgrrrrrrr
3823-16 f: zrxffkfcvffffncffgff
3831-2 r: rrcrhkns
38414-17 b: bbbbbbbbbbbhjbgbdblb
3854-15 c: cccccccwcckclccrcc
38613-14 l: lkzlclbnlhlcnk
38713-14 r: rrrrrrrrrrbrrr
3884-5 k: cvhkkkbj
3892-5 m: kmfnmzh
39014-15 n: nnnnfnnnxnnnnnnndnnn
3917-10 t: wttwkbhtpf
3923-9 n: qjgzpnkpn
3936-7 n: nhnnnzn
3945-10 n: nngtndngcn
3952-5 x: rdxnp
39610-13 s: sssssssssxssssssss
3976-8 n: mnjnnxnnvckn
3982-10 p: gpxpglqwpppp
3995-7 t: twtktdts
40018-20 c: cccccccccccccccccccc
4016-7 d: dddddddw
40210-11 x: xxxjxxxxxvzxxxx
4034-7 z: zrphzzlzhgfwd
4044-8 l: lllnlllkl
4052-7 q: kkwsgndmdrmsvfqj
4064-7 m: mmnmjfmm
4072-5 s: flhkzzs
40812-15 x: xxxxxlxxxxxmxxs
4099-11 v: vvvvvhvkbndjvx
4101-9 n: kpqgbxnkx
4115-10 f: ffdfrpfffffwfffff
4121-3 f: jsvqkff
4135-7 j: jsjjjfxl
4148-14 z: zzznrzzzzzqzzz
4151-12 d: dzlbdzhgmrdddc
41612-13 k: kkkkkkkkkkkbk
4177-8 m: pmmmmmmmm
4181-6 s: bsssssvslx
4196-8 d: dddgdgrtbfdm
42011-14 k: gkplwxkmskwmdpm
4216-10 x: xxxxxkxxlr
4224-10 l: lllxlllllklllll
4231-2 t: ttstmpksrrp
42410-12 s: ssssdsssshscs
42510-12 z: zzzzzzzzpwjszzzz
4262-4 r: grrrctkzmw
4271-2 l: fspl
4283-5 k: kkkkk
4295-12 b: bcbbbbjbbbbb
4308-9 c: ccccccctcc
4313-8 p: pmplmhpp
4326-7 b: bjhfsbbx
43316-19 d: dddddddddwdvddddkdg
4345-6 j: sjrzcj
4355-8 f: mfdffdgf
4361-3 q: qcqqq
4379-10 s: sbsssssspm
4382-4 f: dffl
4393-4 n: nnnn
4404-10 t: wttthjpdmtlthttgwtkt
4419-10 d: jpxdmbnddddd
44210-19 q: sqhswtjrpqbxwjqzfqmr
4432-6 w: swwzvgwbww
4441-2 m: cfmmsl
4459-14 w: pwdbjwwhbnpwllm
4464-5 q: qqqqqqqqk
4478-15 m: mmkdmwzkrvlmpmnmmmmf
44817-18 q: qqqqqqqqqqqqgqqqnvq
4493-6 g: gkkngh
4501-8 g: gghdzwkg
4513-11 j: vxdspqtvkpj
4525-7 q: qqtqgpmqdq
4536-8 d: bdmddddvd
4545-6 w: zwwwwwvwxfw
4552-11 n: bnplrmpvbpn
4567-14 k: kkktbkkkkkkkkk
4573-11 b: fmkqvvbztnxzqvjc
4583-6 q: sscqqq
4594-7 c: cfrrdrzbjmvpk
4606-9 w: pwrtzwrww
4612-5 v: vvcvv
4622-4 f: ffmf
4638-10 k: kkkkkkkpkd
4646-7 v: mvjvvvv
4658-11 c: vccvcckccfk
4667-8 b: bbbbbbbsr
4672-3 x: xxxmvx
4686-7 l: llbllwsl
4698-10 r: rrrrrbrrgrrrrnrb
47012-16 g: ggggggzsggmwgggv
47118-19 p: pprppppppppppppppppp
4723-6 s: ssssssss
4732-6 x: lwxkdx
4742-3 n: xgbnf
4752-4 p: dzrk
4762-4 h: hlhpjhh
4774-5 b: bmnbb
4781-7 z: zczvzczsxmxpzznp
4792-9 l: nlwxdwlblzl
4801-4 r: xbtcqrfkv
48113-16 k: skkkkkkvkkjkxrkfqk
4829-14 b: bbbfcbwfjbbcbg
4831-13 r: frrrrrrrrrrrfr
4841-4 w: hwwxwnvvt
4852-6 l: zzhlrx
4863-8 v: vmzvggqtslnlqrj
48715-16 s: dhssknsjztzssssssss
4882-6 q: qqqqqqqq
4892-3 t: mkktlt
4907-17 b: bbbbbbbbbbbbbbbbdb
49111-17 s: sssssszfssxssssskj
4922-7 h: hnhkhshhhhhhhh
4932-15 x: xzxjxnxxpxxkzxxxxj
49415-16 p: pmcmpclzphppxplp
4958-9 k: kkkkkkkdpkks
4962-4 r: vrwt
4978-12 r: qrrrhhwjrrrhrrr
4983-4 j: vjjzq
4998-10 q: qqqqqqqqgs
5006-7 j: zjjjjjjj
5011-11 m: mdgkdkmqzmmsrhxxmmj
5021-7 x: pxxxrbq
5033-4 z: zrhkzz
5044-5 s: ssqlss
5055-8 f: vtrfffffff
5067-13 j: jjjjjjdjjjjjtj
5071-7 n: dnnfxwz
5082-11 n: nzgnqncnnnjg
5094-5 x: xxxxx
5105-7 v: rhbvvvvhvxvpz
51110-11 z: zlbbddzlzwzv
51210-13 v: vvvvvvvvvvvvvv
5133-4 s: ssrs
51411-12 m: mmmcmmfdmmsmmmmnm
5155-7 s: sdstsssssrs
5161-3 w: bwzw
5173-4 h: hphq
5187-16 q: qqqfqqdwksqlfcqjxq
5196-7 x: kndcxfv
52010-11 m: mmmmmmmmmmm
5211-4 n: fvsvnfhgwcgcnp
52213-14 s: ssssssssrssswrss
5235-9 x: xmvkxwgrxrtwxmrxhxx
5243-5 q: jdbvvxvdg
5253-15 w: zlzcksssjbwcvgp
52616-19 x: bxxxxxxxxxxxxxxxxxx
5273-5 z: rzzhz
5284-10 f: hpttvbtjmq
5293-6 n: wsngjn
5304-5 p: ppphg
53110-12 c: bqlccfctmchqbchhcg
5329-10 z: zzzzdzzzzhzzvz
5337-9 w: nwgwcvdcxqqwmzq
53414-19 x: pxtxxlbrxdpvspwmxxx
5352-8 t: ssktwbft
5368-9 j: jjjjjgjsjzjj
5377-9 v: vvvvvvdvlvvwv
5384-6 x: qxxkssx
53911-13 g: ggggggggkgvgg
5408-9 t: tttttvttjttwt
5412-8 b: pfbbcsbwbbbb
5428-16 r: mkrcrtsrrrrbxmprftvx
5439-10 k: hvwlqvktkkb
5441-6 w: wsbwwvjwwrwh
54510-19 f: nfftfffrdhjffjsnffd
54613-16 h: hhzghvhhhfhhhhhhhhh
54714-16 x: kskxbwrwrvjxfvfg
5481-4 k: rflk
5496-7 b: bbbbbbgb
5504-17 v: vvvvvvvvvvvvvvvvv
55112-13 s: sdstmsspfwsssscqf
5529-11 z: zzwzvmrzzczzzz
5534-8 s: skslmgsqtszbswsssscs
5544-12 h: bdshxnpgvwhktdwgdp
5553-5 t: tltst
5564-5 h: hhhhh
5579-11 w: wwwwwnwxxwwwwwww
5586-7 n: dcnngffnnzn
5591-3 l: clflll
5606-7 x: xxxzxxgx
5616-7 n: nnnnnkgnnnnnn
5621-6 m: mmmmmmmm
5635-7 t: tktttpt
5644-8 v: zpcvqvzvrvgttntrbl
5656-7 d: dddrddd
5663-5 k: jskdkswqjfftgkfr
5675-6 f: ffffgrffn
5686-8 l: lwlkllgl
56910-13 p: ppppkpppppppd
5704-5 d: hbjdd
5719-15 r: rrxrrrrrrrrrrrrrgr
5724-5 b: bbbbtbx
5738-11 b: brbbtlvvlbdbbbqjsb
5746-8 g: zgzqgwmg
5754-9 r: qstrmxrtr
5765-8 m: mbmjmmmmmr
5775-7 v: tvvzqvgrvqvmvncshv
57817-18 g: fgggggggggggggggwr
5792-12 t: nttpgcjtkdjt
5806-10 k: kkkkklkkkk
5812-7 q: qqqmtgqq
5823-6 n: npccknvnn
5835-16 k: rtlhkbtdkmmntdbl
5842-3 b: wwkb
5857-17 q: qqqqqqqqqqqqqqqqqq
5861-4 g: ltgc
5872-6 l: lxlnln
58813-15 q: qqqqqqqqqqqqqqxq
5893-4 j: jvjj
5905-15 c: cpmzlhcckwlnhwmwgzw
5913-8 b: qvblmmchbcc
5925-8 b: fqhdwtcxb
5934-15 k: kkvkkkcwgkkbkkdkkkkn
59411-12 f: fnffffffffffffff
5959-10 t: tttttttpfvt
5964-10 f: nfffpftfffffffnf
5972-4 m: scgxnm
5987-8 z: zzzzzzxhbz
5996-9 z: vznwkzzzz
6003-5 k: hkcdn
6013-10 k: kkskkkkkkz
6022-3 p: pbdf
6031-4 m: mdhmm
6046-10 b: lfbbwdbbtv
6058-10 g: gggggggggggg
6062-3 t: qgthtztbwtppb
60715-17 n: nnnnnnnnnnnnnnbnjn
6088-17 v: vvvvvvgkvfvvzvvvpv
6094-5 f: vwffff
6108-15 w: wwbvwwwwdwwkzwwwwwwf
6117-13 n: srmzrmnvcgshljkchp
6125-15 q: dqjvfqvpwqnmpwqzh
6131-2 h: hhfs
6142-6 h: jhqwhh
6153-4 t: tthg
6162-4 b: sxsqrrxkjb
6176-8 q: qqqqqqqqqq
6186-7 c: rqcxcclxccwqcgwq
6194-5 v: vvmfv
6206-7 m: mmmcmmmm
6212-4 j: bqfj
6222-12 k: kkkkvkkkkskkkkkk
6235-9 q: xjtqqrnnkdplrnqq
6241-6 k: bqkrfpkcrwwkk
6251-4 r: mrblr
62612-18 s: ssssbfdlqbbssplswpsl
6278-9 b: bhbhhbbkbzbnbcbh
6283-7 t: tsdtthx
62912-15 f: xcmghffxtgfffjf
63012-16 n: bxnnhnhnnzfnnnwrtgl
6317-9 q: qqqcqmnqdq
6322-3 m: rpbjgkxqtmjrzm
63311-12 s: hssssssssshc
6343-5 x: xxldx
6353-4 k: kkkxt
6367-9 k: wlgkqndkz
6375-7 l: llmtllv
6382-6 v: svzvfv
6395-6 d: djdddvddd
6405-6 k: mhkkkkkwvkkcfk
6413-4 c: rjcc
6424-8 t: ttttzfttc
64310-11 g: ggzggngbzgg
64414-16 w: qzqwdwbcwwwmllndzlsm
6452-4 z: zzpz
64612-13 g: gwxpwcbsvwgtthn
6471-4 b: bbbbmzc
6485-7 f: cnxlfdffmt
6493-4 z: znsdz
65010-13 c: mrckljhmrcmnc
6512-9 m: dxmdhndrwpmpgc
6527-16 z: zzzzzzzzzzzzzzzzz
6531-3 j: jjjjjjjjjjjjjjjj
65415-18 g: mmglvtgzggzgnggggg
6554-10 c: cccncccccz
6561-8 n: mnnnnnntn
65710-13 l: llllllltzhlvvld
6582-3 r: gnnd
6593-7 v: vcnfzzbd
6606-7 p: pprpctdp
6615-8 g: gggggqgggg
6621-13 f: wfffdfpbfjlfhb
6633-8 j: dmjjkqwj
6644-10 j: vfjhnswwwtzlfvmcdn
6652-4 v: bnjd
6664-7 w: btwwlfwkwzmzhhlsvs
66714-15 g: gggggggggggggpgg
66810-11 w: zwwwwwwpwgrww
6692-3 b: dbbcgwqfzlhwcbs
6701-9 f: qfpfvffffffmfxbcpf
6719-10 t: tttbpttttmttcnt
6722-3 l: lgll
6738-9 s: vzgvjsnns
6746-8 w: wwwdwsbtswrww
67513-14 h: dhhhxhdjnvhrhrflhh
6767-8 d: dddddvjd
67714-15 l: lllqlllllllllnlxlh
67812-13 d: ddddzdjdddhhkdd
6799-14 p: pvtplhjvpzdvqjqvh
6809-10 r: rjrrrrrtrrrr
6816-8 g: gjjgfwgg
6829-14 j: jjjjjjtjcjjjjhjjj
6838-9 q: phxjqqnqq
6845-6 k: lkkkkk
68514-15 x: xxxxxgwxxxxxxtwxq
6861-4 x: xqfxx
6871-8 m: mmgmnmvm
6882-3 n: hnwr
68914-15 z: zzzzzzzzzzzzssz
6902-6 p: pspppp
6911-6 z: zzxzzx
6929-18 z: zzzzzzgzzzzzzzzzzgz
6936-11 z: wzhtdzzfxjz
6943-4 v: vzvv
69516-19 q: qqqqqqqlqqqqqxqqqqq
6962-4 v: vvhvvvv
6972-9 p: lpxppwppppgppspb
69811-12 m: mmmmmmmmmmndm
6998-9 v: vvvpjvvvpvv
70016-19 k: kkkkkkkkkkkkkkfkkkk
7019-10 z: zxlzfzczzzczrdn
70212-18 p: ppppppppppbjpplpphp
7031-3 p: pvpppx
7041-2 x: vxlx
70510-12 l: lllnlllllwlll
7064-5 b: bphwg
7077-10 c: gcjjpprxxjcwvk
7086-9 l: llwqklmpxlszgzlvl
7099-15 s: fsxsscswksvrmsh
71015-16 q: lqxqqwqpqwptqqmg
71110-13 r: xmpmqrdjkrzkpzc
7123-5 c: kcbcclt
71317-18 f: jffffsffffffffffbsff
7141-3 t: vqcqdmmgc
7151-2 n: qnnn
71616-18 n: nnjzhnznnnxlrmmnsn
71713-19 q: srxlcdznhbfxqtsqtsqx
7182-7 m: vmmmnjmmmmz
7196-7 v: vlvmjvg
7207-15 k: xnpkbtzwgntptwkgmxm
72115-19 g: wggggggggggsggkggxg
7228-17 h: hhhhhhhwhhhhhhhhhh
7232-5 w: kwwwww
7244-12 k: kkkqkkkkkkkqkkkkkkk
7257-11 d: hddcndsgddgz
7262-7 t: tdzxnth
7271-7 z: lzzcrvz
7285-10 h: shvchmxxdh
72912-13 f: kffwgtfsssfqnvff
7301-9 b: mbbbbtxbrbbc
7314-12 r: rnfvrprrrrzrrr
7322-6 p: qzltppwqljg
7332-4 w: hwdxwmmqphfkhthczx
7343-4 r: rrwj
7353-4 b: lbbbpldfj
7364-12 g: gggggggggggggkv
7374-5 r: rrqjtrrr
7384-8 n: nnnrfhnfn
7394-11 h: lrnxkwkbhgnhh
7401-8 l: lvjlhbffl
7416-10 g: ggtgghghghpfgg
7421-2 s: szsss
7433-6 s: dszxsdsssskssbs
74411-14 x: xxxncxxxxxxxxq
7455-10 m: mtmmmmmmmdmm
7461-3 r: qrgr
7472-7 m: gmhmmtd
7481-3 c: cccswmjcmnm
7492-9 x: qbcdsxxlx
7506-7 s: nsswzssv
7511-14 m: trmlzmsmgqmmmnfdsmtm
7525-7 d: cdddzdtdd
7533-4 k: tvczkxvvrw
7542-8 s: slvmswvs
75510-16 p: pppppppppgpptpptpp
7562-11 l: jqxsjlvpzkgzjdmt
7574-7 t: ttmtpttp
7584-11 r: twbrxccwcrtffpnv
7596-8 k: kkckkkkqkk
76010-12 v: vvvvvvvvvvvv
7614-6 k: gqzkkk
7623-4 r: rrmxr
76312-13 p: npgppsppppqnw
7641-16 x: mxxxxxxxxxxxxxxv
7655-6 l: llllll
7661-4 k: bkkckkkkk
76710-11 v: vkvtvkjltmlvtxlnlrsj
7683-11 h: mzhrhlhhhhhwl
7695-6 p: pppppp
7701-17 m: mmmmmmmmmmmmmzmjmmmm
7712-6 v: cvvcvfbgcvvvcq
7724-7 n: nnsnnwj
7732-3 k: xvkxkksvb
77416-17 x: xxtxxxxxxxxxxxxxr
7751-13 w: lwwwwwwwwwwwxw
7763-14 d: ddjdddbddddddtdddd
7774-10 g: jrxggnqmjg
7781-3 b: bbfbbbbb
7794-5 d: pdhdm
7805-7 d: mvdsdnd
78117-19 m: mlmmmmmmmmhmmmmmmmm
7824-6 g: gtlgxggggsgc
7836-7 m: mzvmhglmmmpmmxf
78410-14 j: jrjjjxcjjtjjjhpljl
7859-15 w: wwwwlwwwwwwwwwjwwdw
7861-3 g: wtzgjgr
7875-7 m: dmmmtmm
7881-8 g: ggkdgpggg
7895-6 x: xnjhmx
7901-7 b: bbbbbbbfbbbb
7913-11 n: mnnnngnnnvnnqnnvn
7922-3 l: jglgdrczl
79312-14 f: tffpffsmfffffg
79410-13 d: mndmdwdxjdxpd
7959-10 m: mlmmmmmmzvxm
7966-8 l: ptpjwltl
7977-8 r: rrdrprlqrr
7988-9 n: nnnnnnnrc
7996-7 p: ppppphn
8004-8 t: smtptgwtmlttw
8014-10 j: jsjjjjjjjj
80215-18 k: kkhwkkkkkkkkkkkkkk
8031-2 s: sksxb
8042-10 g: sggchblktg
8058-12 r: rrrrrrrrbwrr
80613-14 v: vvvvvvvvzvcvvvvv
8073-4 p: kppp
8084-14 m: mmmsmmmmmmmmmzm
8095-6 n: kndmnnnnpnznjqb
8103-10 d: xlddcdbdlddpqdkdl
81117-18 n: tnmcvdcznnnfnznldt
8126-11 g: wgbgzgggggg
81316-18 z: zzzzzttzzzzzzzzkzq
81411-13 x: pxxlgmtvbjrlb
8152-13 p: bmphpwxpsmmthppprdk
81614-16 r: rmrrrrrdmrrrrztrjr
8171-5 x: xdxxx
8181-3 d: dgdddfzddfd
8191-9 m: ddfmgwfgf
8207-11 x: xwnqqtxdmns
8215-6 v: ffvvvv
8223-15 g: dggggggzggggggb
82310-13 p: pptpppkdpwcngppf
82411-12 x: xxngxbxxdxxxxnzxbxx
8253-4 n: nxqc
8261-2 x: dvxxx
8274-5 h: zhvhh
8283-5 j: jqpjj
8292-7 f: ffffffpfz
8308-10 k: kkkkkkkkkk
8315-12 x: xxtxxxxxxxxxxx
83212-14 c: cccccccccccccc
8338-9 s: vhlssssws
8341-4 k: dqkk
8354-10 r: rrbrrrrrrdrr
8361-3 r: hqljfr
8378-12 c: qcccccszgjgcccddccw
8386-14 m: mmmmmxmmpmmqmcmmdm
8395-6 r: mwrrdtm
8401-5 t: rdjtts
8416-14 c: gpcbczvfbcbcckblzc
8425-6 w: wxwwww
8433-4 p: rjppp
84410-13 t: ttttttctdtgtttts
8453-14 c: cvlcpqscwgzgxzxvkmh
8463-7 h: kxqfwfddhllhj
84710-18 r: mdqrrmrdxkkvxftrrr
84813-14 m: cmmmcgmmmmhvmm
8492-7 h: khvhhjhhjbv
8505-9 r: rrrzgrrrlr
8511-8 c: gccccccsccc
85215-17 v: vvvvvvvvvvvvvvdvn
8539-13 v: vbvdgpvjvhvhwxv
8546-9 z: zzxbqznzqjzh
8553-6 r: rrrrrrrrrrrrrrrrrrrr
8563-4 x: nxxxxst
8577-10 q: qqqqqqfqqf
8589-10 j: jjbjdjqcqw
8599-13 z: dhzzzzzzzzzwxkzzzzjk
8603-9 q: pqxgqqcqqjql
86110-11 h: ljhgjwhzdrhhhh
86218-19 v: vvvvvvvvvvvvvvvvvvvv
86310-11 l: vgxrhvtfblwl
8642-3 v: rvvvvpj
8658-9 c: smchcscccdmf
8662-3 n: nqmnn
86715-17 x: xxxxxxxxxxxxxxqxrxk
86811-14 j: jjjjjjjjjjljjvj
8697-9 z: zvzzmzjkfbvzzczczlzm
8702-6 z: zzzjzjzzmfzk
8719-11 m: mvcmmbmlzrmmz
8726-7 r: rrrrrrr
8733-6 c: jtcfscccvvf
8742-5 s: cssbntxggkwvwnchn
8758-10 x: xxsxjzxqxx
8766-7 n: ndnnnbg
8779-16 j: jgzxxsmljbhbttqjw
8783-4 k: gjsk
8799-10 q: qqcrqqqpqq
8802-4 t: thtt
8813-4 w: wrfxww
8829-14 v: vvsvvkqgzvmvvvvvlvvv
8839-15 m: mmmmkmxdmdmmhmmwjw
8843-9 b: bbbbwcwbb
8853-6 c: ctdccs
8867-8 k: kkqrkkkk
8875-7 l: llmllcqjljlh
8885-7 w: wnzbwgw
88915-17 f: fcffffffffffffffpf
8901-2 t: tttft
8911-7 n: zctqhnxvbn
8923-8 z: hdpqzzzlzsw
8933-15 l: llslllllllllllml
8948-19 w: rwtbwrwjwtwxcclthdw
8954-5 g: zggggg
8965-14 v: vvvvhvvvvvvvmlvv
8971-7 l: mlgxllpgl
8982-12 b: mvwbfjcddqjb
8991-3 m: qmzm
9002-3 r: rrrrrffr
9011-7 x: xxsgxxv
9028-10 d: tdrrqdzcdddddxddl
9032-4 n: crnnfdcnnnzn
9043-4 n: nnnz
9059-10 z: zzzzqfzzzzz
90610-16 n: nnnhmnnznsnntnnc
9079-16 s: vssssbsscssssssjss
9089-13 w: wwkwwwqqwvwwww
9094-5 d: hkdhwddtdkqwvl
9103-4 l: llll
9114-5 f: ffzffftld
9127-9 d: ddddddddgd
9136-7 t: ttthptttqxlfddstsq
9145-16 c: clhwccvlnmttjqcc
9154-5 k: pkkkk
9167-11 m: xwmmmmchmmt
91716-17 n: nnnnnnnnnnhnnnnrm
9185-8 b: bbbbbbbbb
9191-4 s: jsss
9203-4 h: rhhhtjwfvdhz
9219-10 r: rrrprlrwrrw
9221-6 n: nnnnnkn
92318-19 p: ppppppppppppppppppp
9244-5 l: ljlrcl
9253-7 m: mmmmmjmdmtm
92612-13 b: bbbbbbbbbbbvf
9276-11 g: hcghdwfpcqk
9284-6 q: krpfvw
92910-13 j: jsjkvjjjjjzjjfj
9305-6 n: lcnnnnzndqkfnsq
9312-4 j: nvdj
9322-5 p: hppnpmpq
9332-4 w: wnwbw
9342-7 f: fwfxfmfszmcxf
9356-8 d: dqrdbsnjds
9361-3 f: ffffffmff
9375-8 s: lnbwqnkxws
93810-12 n: nnnnnnjnnnnnjcn
9399-12 c: pccvnbccxrncrcclccc
94014-18 s: ssssssssslsssstsssss
9413-6 l: lldllczl
9426-11 g: gggggwgggghg
94311-12 h: chhhmjhzhqfh
9445-6 n: qhnvcw
9456-7 k: nckkkkmnkkkzkkk
9466-8 d: wddgbdpdzdqxrwddjlz
9471-3 h: qghp
9483-5 j: mnjjjxjkgnrdzjbtdr
9491-9 g: gfgcgggxgjggggggf
9508-20 b: vptprmjbwwtnbhwjtnjb
9517-8 j: jjjjjjjj
9523-4 t: tqtt
9535-10 f: fffzbxxszjjvjfhn
9543-4 t: tttttttbtt
9554-7 p: wjrgpnj
9561-9 g: pgzllxgfg
95714-15 c: cccccccccccccqm
95811-12 b: btmcbzbnzcbbxr
9595-6 h: hhhhhhh
9601-6 s: nssmsssss
96111-12 d: ddddddbddthfdddd
96211-13 j: jtjjjjjjpjjjjwfjj
9632-4 j: gjjj
9643-9 v: vvgvvvvvrv
9651-2 l: tqjjljxcsl
9665-6 q: nqqqqr
96712-16 h: hkhhhhhjhhhhqxhhhhhh
9682-6 p: lpppkpbpzg
9692-7 v: vzvvvvfv
97013-16 g: ggggggggggggwggb
9713-14 j: ghsjjcgmkwsdchlslpf
9721-3 s: ssplw
9737-8 x: xxxnxxxxxxx
9743-4 h: zghhvtwtmlplvxxhsbf
9754-5 g: sqgsnf
97614-17 z: zzzzzzzzzzzzzwczc
9771-2 z: cpzzzzk
97816-17 s: ssssssssssfsqssss
9793-9 j: jvjjfjdjjjjjh
9801-6 v: vtvrvvj
9814-8 c: clzcccccccf
9824-5 d: dwldw
9832-4 l: lwlrllllllll
9846-11 s: zxgcsdxkrcns
98514-17 r: vrhvhrprrfrsrrrrr
9863-6 p: mrcztppnl
9874-6 w: wwwwwwwwww
9881-6 w: zwjccrqpwmnthz
9892-7 t: mnjntdcq
9901-5 b: bbjbbbbb
99110-11 w: wwwwwtwwwwww
9924-6 d: dddxdfd
9932-4 f: fjfff
99413-15 b: vbbbbbbbbbbbbbb
9958-9 n: ncbnnnnnn
9962-6 d: hdfphnnmbbdt
9971-4 f: wffz
9987-15 f: ffsffffffffffvzff
9998-10 c: zchrckkcqcr
10002-6 h: thvbvh
diff --git a/2020/day2/pwcountcheck.pl b/2020/day2/pwcountcheck.pl
new file mode 100644
index 0000000..636a5d0
--- /dev/null
+++ b/2020/day2/pwcountcheck.pl
@@ -0,0 +1,22 @@
1use strict;
2use warnings;
3
4open my $fh, '<', "input" or die "no input present, $!";
5
6my $valid = 0;
7
8while (my $line = <$fh>) {
9 chomp $line;
10 if ($line =~ m/(?'first'\d+)-(?'second'\d+) (?'char'\w): (?'rest'\w+)/) {
11
12 my $first = $+{first};
13 my $second = $+{second};
14
15 # https://www.effectiveperlprogramming.com/2010/12/count-the-number-of-things-in-a-string/
16 my $count = () = $+{rest} =~ /$+{char}/g;
17
18 $valid++ if $count >= $first and $count <= $second;
19 }
20}
21
22print("$valid");
diff --git a/2020/day2/pwindexcheck.pl b/2020/day2/pwindexcheck.pl
new file mode 100644
index 0000000..69a26b5
--- /dev/null
+++ b/2020/day2/pwindexcheck.pl
@@ -0,0 +1,19 @@
1use strict;
2use warnings;
3
4open my $fh, '<', "input" or die "no input present, $!";
5
6my $valid = 0;
7
8while (my $line = <$fh>) {
9 chomp $line;
10 if ($line =~ m/(?<idx_1>\d+)-(?<idx_2>\d+) (?<char>\w): (?<rest>\w+)/) {
11
12 my $first = substr( $+{rest}, $+{idx_1} - 1 , 1 );
13 my $second = substr( $+{rest}, $+{idx_2} - 1 , 1 );
14
15 $valid++ if $first eq $+{char} xor $second eq $+{char};
16 }
17}
18
19print("$valid");
diff --git a/2020/day3/README.md b/2020/day3/README.md
new file mode 100644
index 0000000..75737af
--- /dev/null
+++ b/2020/day3/README.md
@@ -0,0 +1,11 @@
1# day 3
2
3## first part
4
532 places per row, right 3 and down 1 is
6
7```
8idx = (idx + 3) % 32
9```
10
11per line but this will _probably_ change for the part 2.
diff --git a/2020/day3/input b/2020/day3/input
new file mode 100644
index 0000000..831458f
--- /dev/null
+++ b/2020/day3/input
@@ -0,0 +1,323 @@
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..#..#........#...#.......#....
diff --git a/2020/day3/toboggan.pl b/2020/day3/toboggan.pl
new file mode 100644
index 0000000..d424a83
--- /dev/null
+++ b/2020/day3/toboggan.pl
@@ -0,0 +1,30 @@
1use strict;
2use warnings;
3# use Smart::Comments;
4
5open my $fh, '<', "input" or die "no input present, $!";
6
7my $right_m = 3;
8my $toboggan = 0;
9
10my $trees = 0;
11
12while (my $line = <$fh>) {
13 chomp $line;
14
15 ### $line
16 my $curr = substr($line, $toboggan, 1);
17 ### $curr
18
19 if ($curr eq "#") {
20 $trees++;
21 }
22
23 ### $toboggan
24
25 $toboggan = ($toboggan + $right_m) % 31;
26
27}
28
29print($trees);
30
diff --git a/2020/day3/toboggans.pl b/2020/day3/toboggans.pl
new file mode 100644
index 0000000..ebf7ae4
--- /dev/null
+++ b/2020/day3/toboggans.pl
@@ -0,0 +1,40 @@
1use strict;
2use warnings;
3# use Smart::Comments;
4use DDP;
5
6open my $fh, '<', "input" or die "no input present, $!";
7chomp(my @forest = <$fh>);
8close $fh;
9my $len = scalar @forest;
10
11my @right_ms = qw/1 3 5 7 1/;
12my @down_ms = qw/ 1 1 1 1 2/;
13my $runs = $#right_ms;
14
15my $all_trees = 1;
16
17foreach my $run (0..$runs) {
18
19 my $toboggan = 0;
20 my $trees = 0;
21 my $down_mov = $down_ms[$run];
22 my $right_mov = $right_ms[$run];
23
24 for (my $line = 0; $line < $len; $line += $down_mov) {
25 my $curr = substr($forest[$line], $toboggan, 1);
26 if ($curr eq "#") {
27 $trees++;
28 }
29 $toboggan = ($toboggan + $right_mov) % 31;
30 }
31 $trees ||= 1;
32 $all_trees *= $trees;
33 ### this run is
34 ### $right_mov
35 ### $down_mov
36 ### got: $trees
37 ### so far: $all_trees
38}
39
40print("$all_trees");
diff --git a/2020/day4/input b/2020/day4/input
new file mode 100644
index 0000000..734e50b
--- /dev/null
+++ b/2020/day4/input
@@ -0,0 +1,1000 @@
1pid:827837505 byr:1976
2hgt:187cm
3iyr:2016
4hcl:#fffffd
5eyr:2024
6
7hgt:189cm byr:1987 pid:572028668 iyr:2014 hcl:#623a2f
8eyr:2028 ecl:amb
9
10pid:#e9bf38 hcl:z iyr:2029 byr:2028 ecl:#18f71a hgt:174in eyr:2036
11
12hcl:#cfa07d byr:1982 pid:573165334 ecl:gry eyr:2022 iyr:2012 hgt:180cm
13
14cid:151 hcl:#c0946f
15ecl:brn hgt:66cm iyr:2013 pid:694421369
16byr:1980 eyr:2029
17
18ecl:brn
19pid:9337568136 eyr:2026
20hcl:#6b5442
21hgt:69cm iyr:2019 byr:2025
22
23cid:66 hcl:#efcc98 pid:791118269 iyr:2013
24eyr:2020 ecl:grn hgt:183cm byr:1993
25
26eyr:2022
27hgt:160cm iyr:2016 byr:1969 pid:767606888 ecl:gry hcl:#6b5442
28
29hgt:157cm eyr:2026 ecl:oth hcl:#efcc98 byr:1938 iyr:2014
30
31byr:1931 iyr:2015
32ecl:gry
33hgt:76in
34cid:227 hcl:#09592c eyr:2024 pid:276365391
35
36ecl:gry hgt:170cm iyr:2014 cid:285 pid:870052514
37hcl:#866857 byr:1925 eyr:2025
38
39eyr:2021
40byr:1960 pid:569950896
41iyr:2010 hgt:179cm hcl:#888785 cid:167
42
43hgt:154in cid:194
44pid:8142023665 byr:2010 hcl:7d22ff ecl:utc iyr:2026 eyr:1976
45
46ecl:blu eyr:2030 hgt:192cm
47pid:363860866 iyr:2019 hcl:#ceb3a1 byr:1963
48
49byr:1947 hgt:167cm hcl:#7d3b0c ecl:amb
50cid:70 eyr:2022 iyr:2019 pid:756932371
51
52hgt:185cm pid:871945454
53iyr:2020
54hcl:#866857 ecl:amb
55byr:1989 cid:184 eyr:2030
56
57byr:1935 pid:322117407
58hgt:153cm iyr:2011
59cid:244 eyr:2022 hcl:#efcc98 ecl:hzl
60
61ecl:blu hcl:#5e6c12
62eyr:2029 iyr:2011 hgt:191cm byr:1992
63
64hcl:#7d3b0c eyr:2029
65hgt:163cm
66pid:625292172 byr:1932 ecl:brn
67iyr:2020
68
69hgt:158cm
70eyr:2030 iyr:2016 byr:1969
71cid:173 pid:092921211 hcl:#602927 ecl:grn
72
73hcl:#733820
74iyr:2016 eyr:2029
75ecl:hzl hgt:180cm pid:292904469 byr:1984
76
77ecl:amb pid:901224456 hgt:190cm
78iyr:2013
79hcl:#733820
80byr:1922
81
82pid:262285164 iyr:2010
83byr:2018 eyr:2026 hcl:#602927 hgt:179cm ecl:gmt cid:349
84
85byr:1956 eyr:2027 pid:351551997 hgt:71in cid:277 hcl:#cfa07d iyr:2010 ecl:grn
86
87eyr:2027 hcl:#602927 hgt:157cm ecl:gry
88cid:128 byr:1953
89pid:231551549 iyr:2012
90
91iyr:2011 pid:771266976
92cid:264 byr:1955 hcl:#b6652a
93hgt:189cm ecl:blu
94eyr:2030
95
96eyr:2026 pid:698455242
97byr:1949 ecl:gry hgt:190cm
98iyr:2013 hcl:#efcc98 cid:139
99
100ecl:blu hgt:181cm byr:1977 iyr:2011 eyr:2022
101pid:454163967 hcl:#b6652a
102
103pid:534506872 hgt:155cm iyr:2012
104byr:1968
105cid:333 eyr:2024 hcl:#623a2f
106ecl:amb
107
108hgt:162cm
109iyr:2020
110hcl:#733820 eyr:2027 byr:1995 ecl:gry pid:084994685
111
112iyr:2016 byr:1990
113ecl:amb pid:185689022 eyr:2025
114hgt:184cm hcl:#866857
115
116byr:2016 hcl:z iyr:2022 hgt:166in
117eyr:2040
118
119byr:1943 hgt:152cm hcl:#cfa07d ecl:hzl iyr:2016 cid:300 pid:376088014
120
121iyr:2020 eyr:2026 hcl:#602927 ecl:gry byr:1962 pid:453907789 hgt:172cm
122
123eyr:2023 hgt:185cm
124hcl:#623a2f pid:963767258 byr:1977
125iyr:2019 ecl:oth
126
127hgt:159cm byr:1965 cid:349 ecl:blu pid:962908167
128iyr:2013 eyr:2024
129hcl:#fffffd
130
131eyr:2026
132pid:912822238 hgt:66in byr:1985 iyr:2018 hcl:#c0946f ecl:hzl
133
134hgt:167cm hcl:#ceb3a1
135byr:1990 eyr:2027 ecl:grn
136iyr:2011 pid:642877667
137
138hcl:#7d3b0c byr:1921 pid:976412756 hgt:192cm
139iyr:2013 ecl:gry
140
141iyr:2030 pid:283599139
142eyr:2039 cid:203
143hcl:f943cb
144hgt:111
145
146hgt:190cm
147iyr:2027 ecl:blu hcl:z
148byr:2004 eyr:2039
149pid:734570034
150
151hcl:#6b5442 hgt:191cm
152ecl:oth byr:1989 pid:669414669 cid:196 iyr:2016 eyr:2023
153
154ecl:brn eyr:2028 byr:1965 pid:630674502 hcl:#602927 iyr:2020 hgt:61in
155
156iyr:2016 eyr:2022 cid:225
157hcl:#733820 ecl:hzl hgt:166cm
158byr:1934
159pid:232742206
160
161ecl:amb hcl:#602927 eyr:2029
162pid:897535300
163hgt:189cm byr:1952
164iyr:2017
165
166pid:853604345
167hgt:161cm cid:269
168hcl:#fffffd eyr:2030 iyr:2011 ecl:grn byr:1966
169
170hgt:151cm hcl:#18171d eyr:2026 ecl:grn iyr:2016 pid:176cm
171byr:2000
172
173hcl:#341e13
174eyr:2022
175pid:536989527 cid:73 byr:1971
176ecl:hzl
177
178pid:739005658 hcl:#b6652a
179eyr:2026 hgt:154cm ecl:hzl
180iyr:2019 byr:1935
181
182pid:373465835 ecl:oth byr:1932 cid:333 hgt:165cm
183hcl:#b6652a eyr:2021 iyr:2014
184
185byr:1967 pid:486658617 hcl:#18171d hgt:174cm
186eyr:2021 iyr:2015 ecl:gry cid:53
187
188eyr:2024
189cid:124 iyr:2017 hgt:152cm pid:095649305 hcl:#341e13
190byr:1920 ecl:oth
191
192hcl:#623a2f
193byr:1951 pid:993284548
194cid:106
195hgt:186cm
196ecl:amb iyr:2017 eyr:2029
197
198cid:308 pid:080673934
199hgt:193cm
200byr:1967 hcl:#623a2f iyr:2016 ecl:hzl
201eyr:2021
202
203iyr:2010 eyr:2024 byr:1946 hgt:156cm
204cid:199
205ecl:blu hcl:#866857
206
207ecl:blu byr:1955 eyr:2022 cid:95 pid:139391569
208iyr:2019 hgt:180cm
209hcl:#efcc98
210
211ecl:brn pid:579889368
212eyr:2023 hgt:158cm byr:1935
213iyr:2018 hcl:#cfa07d
214
215byr:1920 pid:90919899 hcl:#18171d
216hgt:152cm
217eyr:2029 ecl:oth iyr:2014
218
219byr:1961 eyr:2024
220ecl:#d401e3 iyr:2011 hgt:172cm pid:919145070
221cid:100
222hcl:#efcc98
223
224ecl:gry
225hgt:168cm
226hcl:#888785 byr:1942 pid:731032830 iyr:2014
227eyr:2028
228
229hcl:#6b5442 pid:265747619 hgt:191cm
230cid:217
231eyr:2028
232iyr:2019 ecl:amb
233byr:1948
234
235iyr:2011 ecl:brn
236hgt:183cm hcl:#fffffd cid:258 byr:1983
237pid:835909246
238
239byr:2030
240iyr:2024 ecl:#f66808
241hcl:fd548d cid:183
242pid:#fced33
243hgt:160in
244
245ecl:utc hgt:183in hcl:a92c31 pid:0394222041
246iyr:2008
247eyr:1976 byr:2020
248
249pid:126195650 iyr:2019 hcl:#341e13
250ecl:blu
251hgt:150cm
252eyr:2025
253byr:1964
254
255cid:71 iyr:2016 hgt:157 ecl:grt
256hcl:#18171d pid:#1ab5ea eyr:2027
257
258eyr:2026 hcl:#b5266f
259byr:1971
260cid:269 hgt:192cm iyr:2012
261pid:736578840 ecl:amb
262
263pid:152109472 hcl:#ceb3a1 ecl:grn hgt:188cm eyr:2027
264byr:1923
265
266hcl:#341e13 pid:535175953 hgt:63in eyr:2028 iyr:2015 byr:1999 ecl:gry
267
268hgt:183cm pid:611738968 byr:2001
269eyr:2020 hcl:#a97842 iyr:2014
270ecl:gry
271
272eyr:2038 ecl:gmt pid:113210210 iyr:2012 byr:2011
273hcl:z
274hgt:157cm
275
276hgt:157cm
277pid:699449127
278iyr:2014 ecl:gry byr:1980 hcl:#fffffd eyr:2029
279
280iyr:2028 hcl:z pid:152cm
281eyr:2039
282ecl:#4760fb hgt:177in
283byr:2017
284
285eyr:2026 hcl:#efcc98
286iyr:2020 hgt:180cm ecl:hzl pid:747449965 byr:2016
287
288byr:1974 iyr:2019
289cid:89 eyr:2023 pid:421418405
290hcl:#fffffd hgt:192cm
291ecl:gry
292
293hcl:26c2ef eyr:2029 cid:309 byr:1931 ecl:grn pid:#4eb099 iyr:2024
294hgt:174cm
295
296ecl:gry
297hgt:183cm
298cid:281
299eyr:2022 pid:050492569
300byr:1968 hcl:c88145
301iyr:2015
302
303eyr:2028
304iyr:2014 pid:712984515 hgt:187cm cid:206 hcl:#866857 byr:1927
305ecl:brn
306
307byr:1936 hgt:61in ecl:oth iyr:2012 pid:447813841
308hcl:#c0946f
309cid:126 eyr:2021
310
311ecl:gry pid:791970272
312eyr:2020
313byr:1932 hcl:#623a2f hgt:161cm
314iyr:2015
315
316hcl:#c0946f
317byr:1935 pid:721144576 eyr:2025 hgt:162cm
318iyr:2017 ecl:oth
319
320byr:1959
321pid:551109135
322ecl:hzl hgt:68in
323eyr:1977 hcl:#888785
324iyr:1955 cid:100
325
326hgt:190in eyr:1993 pid:8358180772 iyr:1975
327ecl:oth
328byr:2024
329hcl:3de172
330
331eyr:2030 hgt:190cm hcl:#a40ef3 byr:1935 pid:484932501
332ecl:amb iyr:2016
333
334iyr:2015
335byr:1964
336hgt:176cm
337pid:819552732 hcl:#c0946f ecl:amb cid:263
338eyr:2024
339
340hgt:65cm cid:59 eyr:2027 pid:074880819 ecl:utc iyr:2023
341byr:1954 hcl:#623a2f
342
343byr:1954 hgt:167cm iyr:2020
344eyr:2023 hcl:#602927
345pid:280295309
346ecl:hzl cid:168
347
348hgt:168cm pid:311043701 iyr:2017 byr:1965
349ecl:hzl
350eyr:2026 hcl:#fffffd
351
352hcl:#fffffd ecl:grn pid:672987232 iyr:2012 eyr:2022 hgt:66in
353
354iyr:2012 ecl:#6f4f9f
355hgt:133 byr:1937
356eyr:1953 pid:7177768428 hcl:#602927
357
358iyr:2010
359byr:1922 hcl:#c0946f
360eyr:2029 ecl:gry
361hgt:165cm
362pid:893045052
363
364iyr:2013 eyr:2028 hcl:#866857 pid:137143403
365ecl:brn hgt:170cm byr:1940 cid:194
366
367hgt:161cm
368eyr:2027 pid:3966920279 ecl:gry iyr:2015 byr:1997 hcl:#cfa07d
369
370ecl:amb
371hgt:157cm byr:1971
372pid:562746894 cid:305 hcl:#0b0e1a eyr:2021 iyr:2016
373
374hcl:8b821d hgt:157cm pid:187cm cid:298 eyr:1926 iyr:2019
375ecl:amb
376byr:2030
377
378hgt:155cm hcl:#341e13 byr:1924 pid:779847670
379ecl:hzl iyr:2015
380eyr:2024
381
382pid:768590475 hcl:#a97842 iyr:2014 cid:128 eyr:2029
383ecl:oth hgt:164cm byr:1990
384
385iyr:2019 hgt:181cm cid:342
386eyr:2020 ecl:gry byr:2001
387hcl:#623a2f
388pid:473165431
389
390byr:1928 eyr:2026 hcl:#42a9cb iyr:2010
391ecl:grn hgt:157cm pid:638074984
392
393eyr:2028
394byr:1951
395pid:239781647 iyr:2020 hgt:156cm
396ecl:hzl cid:215 hcl:#efcc98
397
398pid:636605355 ecl:hzl
399iyr:2017 cid:323 eyr:2025
400byr:1995
401hcl:#18171d hgt:187cm
402
403byr:1933 hcl:#866857 hgt:152cm ecl:oth iyr:2014 pid:900790914 eyr:2030 cid:267
404
405ecl:brn byr:1999 eyr:2027 hcl:#623a2f iyr:2017
406pid:853165955
407hgt:152cm
408
409eyr:2030 pid:316704688 hcl:#c0946f ecl:brn iyr:2014 hgt:193cm
410
411iyr:2012 byr:1928
412hgt:154cm pid:570535769 hcl:#623a2f eyr:2026 ecl:hzl
413
414iyr:2016 cid:252 eyr:2030 hcl:#888785
415hgt:177cm ecl:grn byr:2002 pid:568715162
416
417pid:570999226 iyr:2012 hgt:150cm
418byr:2024
419ecl:brn hcl:z eyr:2029
420
421pid:174002299 iyr:2019 hcl:#cfa07d ecl:brn byr:1927
422cid:77 hgt:159cm eyr:2027
423
424ecl:#d16191 eyr:2022 pid:166cm hgt:165cm hcl:#18171d iyr:2015
425
426pid:112585759
427hcl:#341e13 eyr:2025 byr:1962 hgt:164cm ecl:hzl iyr:2018
428
429pid:478415905 eyr:2025 cid:315
430ecl:amb hgt:91
431iyr:2014 hcl:#cc9d80
432byr:1985
433
434pid:561885837 hcl:#7d3b0c
435hgt:169cm
436byr:1921 iyr:2014 cid:178
437eyr:2022 ecl:gry
438
439ecl:#c87497 hcl:5321a2 eyr:2020 hgt:74in
440pid:#7a62c6 iyr:1976
441
442eyr:2037
443pid:858202391 hgt:162cm
444ecl:grn byr:2003
445cid:278
446iyr:2010 hcl:cbf662
447
448ecl:blu iyr:2012 hgt:183cm hcl:#623a2f pid:848200472 byr:1997 eyr:2027
449
450byr:1942
451hgt:164cm
452pid:464257339
453iyr:2016
454hcl:#7d3b0c ecl:gry
455
456iyr:2012 hcl:#ceb3a1
457hgt:193cm ecl:amb
458pid:667987561 eyr:2024 byr:1960
459
460hgt:187cm
461pid:222340640
462iyr:2018 eyr:2022
463ecl:oth
464byr:1957
465hcl:#336667 cid:83
466
467eyr:2025 iyr:2015 hcl:#733820
468ecl:brn
469pid:131195653
470
471hgt:185cm eyr:2026
472ecl:amb byr:1998 pid:938587659 hcl:#733820
473iyr:2016
474
475ecl:oth pid:300949722
476eyr:2028 iyr:2016
477byr:1933
478hgt:179cm
479hcl:#cfa07d
480
481byr:1974 iyr:2019
482ecl:hzl hcl:#c0946f eyr:2024 pid:484547079
483cid:112
484hgt:185cm
485
486eyr:2022 iyr:2018 hcl:#fffffd pid:118568279
487hgt:153cm ecl:gry byr:1941 cid:341
488
489iyr:2018
490eyr:2027 hcl:#888785
491byr:1970 hgt:165cm pid:773715893
492ecl:amb
493
494hcl:#623a2f hgt:156cm byr:1938 iyr:2012 pid:745046822
495ecl:amb
496eyr:2030
497
498iyr:2012
499pid:097961857
500eyr:2023 hgt:66in hcl:#fffffd byr:1962 ecl:utc
501
502byr:1943 hgt:150cm
503iyr:2012
504pid:740693353 eyr:2023
505hcl:#18171d cid:101 ecl:blu
506
507iyr:2018 pid:183728523 byr:1924 hgt:154cm eyr:2030
508cid:167 ecl:blu hcl:#ceb3a1
509
510hgt:69cm
511eyr:2025 hcl:z ecl:brn byr:1982 pid:250782159
512iyr:2011
513
514byr:1998 iyr:2018 hcl:#341e13 eyr:2022 hgt:157cm pid:497100444 cid:266 ecl:gry
515
516eyr:2027 iyr:2011 hcl:#6b5442 hgt:156cm pid:494073085
517byr:1998
518ecl:hzl
519
520byr:1947 hcl:#b6652a
521iyr:2011 pid:228986686 eyr:2030 hgt:175cm cid:70 ecl:brn
522
523eyr:2026 hgt:159cm
524byr:1946 pid:534291476
525iyr:2018 ecl:gry cid:225
526hcl:#18171d
527
528pid:439665905
529cid:311 ecl:amb iyr:2018
530eyr:2030
531hgt:186cm byr:1950
532hcl:#cfa07d
533
534pid:250175056 hcl:#efcc98
535byr:1981 cid:262 hgt:154cm ecl:gry iyr:2020 eyr:2027
536
537pid:461335515 iyr:2014 hcl:#f1cf00 hgt:180cm ecl:amb eyr:2027
538byr:1956
539
540iyr:2014 eyr:2030 cid:194
541pid:234623720 hcl:#733820
542hgt:164cm byr:1929
543ecl:blu
544
545byr:1992
546eyr:2024 hcl:#ef8161 cid:216
547ecl:brn hgt:177cm iyr:2018
548pid:101726770
549
550hcl:#341e13 hgt:178cm iyr:2016 eyr:2029 byr:1945 pid:045325957 ecl:grn cid:99
551
552ecl:gry
553iyr:2012
554cid:52 hgt:168cm byr:1943
555hcl:#cfa07d
556pid:899608935 eyr:2030
557
558cid:241
559byr:1934 hgt:161cm eyr:2027 iyr:2011 hcl:#c0946f ecl:amb pid:346857644
560
561iyr:2019 hgt:178cm
562hcl:#c0946f byr:1957
563eyr:2026
564ecl:brn pid:222885240
565
566ecl:blu
567eyr:2021 cid:312 hcl:#733820 hgt:186cm iyr:2012 byr:1969
568pid:821704316
569
570hcl:#6b5442 cid:159
571hgt:180cm
572iyr:2018
573eyr:2028
574ecl:hzl byr:1966
575pid:#e0238e
576
577pid:622400994 eyr:2022 hcl:#5b6635 iyr:2012 byr:1980
578hgt:190cm ecl:oth
579
580byr:1976 ecl:gry eyr:2020 iyr:2020 hgt:171cm pid:219878671 hcl:#6b5442
581
582hgt:163cm byr:1968
583pid:003521394 ecl:oth
584iyr:2010
585cid:61 hcl:#888785
586
587cid:115 pid:810722029 hgt:166cm byr:1955
588ecl:blu eyr:2030 iyr:2018
589
590hgt:176cm
591eyr:2025
592pid:617393532 hcl:#733820 byr:1975 iyr:2018 ecl:grn
593
594hcl:#733820 byr:1979 pid:838168666
595hgt:190cm ecl:oth cid:330
596eyr:2029 iyr:2018
597
598eyr:1940 hgt:67cm iyr:2009 ecl:gry pid:#e76a62 byr:2020 hcl:z
599
600hgt:190cm ecl:brn pid:396113351
601byr:1956 iyr:2010
602hcl:#6b5442 eyr:2024
603cid:256
604
605hcl:#efcc98
606hgt:178cm byr:1984 iyr:2013 pid:752620212 eyr:2021 ecl:gry
607
608iyr:2014 hcl:#a97842
609hgt:166cm ecl:blu eyr:2024
610byr:1935
611pid:836748873
612
613cid:236 ecl:amb hgt:168cm iyr:2010 hcl:#602927 byr:1950 eyr:2026 pid:404810674
614
615eyr:2030 ecl:grn
616byr:1975 pid:064596263 hgt:193cm
617iyr:2019 cid:71 hcl:#a97842
618
619iyr:2014
620pid:298386733 hcl:#c0946f
621hgt:180cm ecl:hzl cid:115 byr:1940 eyr:2023
622
623iyr:1960 hgt:139 ecl:#9db7b8 byr:1980 pid:#ef597b cid:54 eyr:2028 hcl:fdcda3
624
625iyr:2015 byr:1954 ecl:blu hgt:62in hcl:#ceb3a1 pid:253593755 eyr:2028
626
627eyr:2025 ecl:blu pid:216388098 iyr:2017 byr:1968 hgt:151cm hcl:#602927
628
629eyr:2022 hcl:#a97842
630pid:606979543 iyr:2013 ecl:grn cid:63
631hgt:186cm byr:1992
632
633ecl:gry
634hgt:168cm hcl:#18171d iyr:2017 pid:670898814 byr:1983
635eyr:2022
636
637hgt:155cm ecl:grn iyr:2012 pid:837979074 eyr:2024 hcl:#888785 byr:1972
638
639iyr:2015 pid:970743533 hcl:#866857 eyr:2027
640byr:1921 ecl:brn
641
642eyr:2022
643hgt:160cm
644byr:1964 hcl:#efcc98 iyr:2019 ecl:oth pid:141923637
645
646byr:2029 pid:3313111652 ecl:brn eyr:2034
647iyr:2013 hgt:193cm hcl:z
648
649pid:853890227 eyr:2029
650hcl:#efcc98 iyr:2021 byr:2003 ecl:#037c39 hgt:160cm
651
652iyr:1927
653byr:1992
654eyr:2030
655hcl:#efcc98
656ecl:amb hgt:152cm pid:436765906
657
658iyr:2014
659hcl:#c0946f pid:207052381
660eyr:2024 ecl:hzl
661hgt:177cm
662byr:1923
663
664ecl:blu
665iyr:2014
666eyr:2025 hgt:165cm
667hcl:#733820 pid:343011857 byr:1967
668
669ecl:xry
670eyr:2028
671iyr:2011 hgt:166in hcl:#c0946f
672pid:805297331
673cid:167 byr:1926
674
675byr:1947
676pid:468012954 eyr:2026 ecl:oth iyr:2018 hgt:170cm hcl:#b6652a
677
678hcl:#6b5442 ecl:brn
679hgt:180cm cid:233
680pid:029789713
681byr:1920 iyr:2010 eyr:2024
682
683iyr:2010 eyr:2027
684hgt:156cm
685hcl:#c0946f
686byr:1960 pid:312723130 ecl:hzl
687
688eyr:2023 byr:1959 iyr:2010 hgt:186cm pid:066768932 ecl:grn hcl:#602927 cid:310
689
690eyr:2030 pid:460535178 hgt:171cm ecl:gry iyr:2020 byr:1934 hcl:#888785
691
692hgt:64cm eyr:2021 byr:1995 cid:336
693ecl:gmt pid:926714223 iyr:2017 hcl:#18171d
694
695eyr:2022 iyr:2010
696ecl:grn pid:285994301 cid:215
697hgt:186cm byr:1978
698
699hgt:63in hcl:#866857
700pid:386128445 iyr:2020 byr:1971 eyr:2021 ecl:gry
701
702hgt:183cm hcl:#733820 iyr:2015
703ecl:blu pid:216205626 eyr:2022 byr:1941
704
705cid:150 ecl:amb pid:872515243 byr:1926
706eyr:1996
707hcl:#dedc39 hgt:67in iyr:2020
708
709byr:1927 ecl:brn cid:153 iyr:2011
710pid:165190810 hcl:#fffffd
711eyr:2028 hgt:64in
712
713pid:502603734
714byr:1966 iyr:2015 hgt:176cm cid:205 ecl:brn hcl:#fffffd eyr:2021
715
716hcl:#18171d hgt:158cm byr:1943 iyr:2019
717pid:058840094
718eyr:2023
719
720byr:1962 hcl:#b6652a ecl:grn
721cid:297
722iyr:2010 pid:990422650
723hgt:154cm eyr:2020
724
725eyr:1934 iyr:2011
726ecl:gry
727hcl:z byr:2004 hgt:63cm pid:6173356201
728
729pid:329432364 eyr:2029
730ecl:grn hcl:#18171d iyr:2013
731hgt:158cm byr:1960
732
733hcl:#efcc98 iyr:2016 hgt:186cm cid:215
734pid:852781253 eyr:2027 ecl:blu byr:1937
735
736hcl:#623a2f ecl:gry iyr:2020 byr:1972 hgt:182cm pid:073426952 eyr:2027
737
738hcl:#3317b9 byr:1950 pid:304511418 hgt:177cm cid:124 eyr:2020 ecl:hzl iyr:2014
739
740eyr:2029
741pid:034754507 byr:1936
742cid:265 ecl:#b50997 hgt:183cm
743hcl:#623a2f iyr:1924
744
745eyr:2024 byr:1927 cid:243 ecl:gry hcl:#6b5442 pid:714355627 hgt:160cm
746iyr:2016
747
748hgt:152cm
749ecl:gry hcl:#a97842
750eyr:2029 byr:1952
751pid:555308923 iyr:2010
752
753byr:2008
754pid:19681314 hgt:180in iyr:2030 ecl:gry cid:272
755eyr:2023
756hcl:#b6652a
757
758cid:234
759iyr:2014 byr:1940 ecl:hzl pid:042231105 hcl:#3bf69c hgt:172cm eyr:2029
760
761hcl:#efcc98 pid:831567586 hgt:190cm iyr:2017
762byr:1966 eyr:2024 ecl:blu
763
764hcl:#341e13 ecl:blu
765eyr:2022 cid:161 pid:197839646 iyr:2014
766
767hcl:#cfa07d
768byr:1957
769iyr:2019 hgt:181cm
770pid:543775141 ecl:oth eyr:2021
771
772hcl:z
773pid:#596c41 eyr:2035
774byr:2008 iyr:1975
775ecl:#c66ee6
776hgt:150in
777
778ecl:grn
779hcl:#7d3b0c iyr:2016
780pid:804255369 eyr:2028 byr:1983 hgt:69in cid:82
781
782eyr:2022
783iyr:2013 hgt:191cm ecl:gry
784hcl:#a97842 pid:186827268 byr:1969
785
786pid:871672398 eyr:2026 byr:1946 ecl:oth
787iyr:2015
788hcl:#866857 hgt:185cm
789
790byr:1973
791hgt:150cm
792pid:905076707
793iyr:2017
794hcl:#2edf01 ecl:oth cid:221 eyr:2026
795
796eyr:2024 ecl:grn pid:955444191 hcl:z iyr:2015 byr:2008 hgt:151cm
797
798byr:1958 hcl:#fffffd pid:218986541 cid:203 ecl:brn hgt:154cm
799iyr:2014
800eyr:2026
801
802hcl:#623a2f byr:1964 ecl:oth iyr:2010 pid:525843363 hgt:164cm eyr:2025
803
804ecl:blu iyr:2013 hgt:193cm byr:1990 pid:612387132 hcl:#18171d cid:280 eyr:2028
805
806ecl:oth eyr:2022
807pid:110447037 hgt:187cm byr:1967 hcl:#efcc98
808
809byr:1930
810eyr:2026 hgt:159cm
811iyr:2011
812ecl:hzl hcl:#6b5442 pid:923471212
813
814cid:350
815eyr:2029 pid:823592758 iyr:2018
816ecl:grn byr:1972 hgt:167cm hcl:#18171d
817
818cid:76 eyr:2027 hcl:#6b5442 pid:099579798 byr:1930
819iyr:2020
820ecl:gry hgt:153cm
821
822byr:1957 ecl:brn
823hcl:z iyr:2016 pid:352677969 hgt:189cm
824eyr:2029
825
826cid:143 eyr:2035 pid:602952079
827ecl:#9b73f0 hcl:#602927
828iyr:2022 byr:1975
829hgt:174cm
830
831byr:1971 pid:741305897 hgt:192cm
832ecl:amb hcl:#888785 eyr:2028 iyr:2011
833
834ecl:oth iyr:2016
835byr:1942 hgt:189cm hcl:#888785 eyr:2024 pid:054290182
836
837hcl:#a97842
838byr:1945
839ecl:amb pid:370849304
840eyr:2028
841iyr:2016 hgt:168cm
842
843hgt:154cm iyr:2015 eyr:2030 byr:1952 ecl:hzl hcl:#341e13 pid:996518075
844
845byr:1941 ecl:amb iyr:2014
846hcl:#fffffd pid:560990286 eyr:2022 hgt:173cm
847
848ecl:blu byr:1974
849hgt:150cm hcl:#ceb3a1 eyr:2020 iyr:2013
850pid:827415351
851
852hcl:#623a2f eyr:2027 iyr:2011 pid:913199234 ecl:oth
853byr:1990 hgt:178cm
854
855ecl:blu byr:1989 hcl:#b6652a
856eyr:2026 pid:724881482 hgt:185cm iyr:2014
857
858cid:115 pid:255002731 eyr:2025 ecl:amb
859byr:1934 iyr:2020 hcl:#7d3b0c
860
861hgt:150cm byr:1969 ecl:blu iyr:2023
862hcl:#866857 pid:754288625 eyr:2029
863
864iyr:2011 hcl:#7d3b0c ecl:hzl
865byr:1930
866hgt:188cm
867eyr:2023
868pid:256556076 cid:136
869
870iyr:2025 byr:1978
871ecl:#fe30a9 hcl:#efcc98 eyr:2029
872pid:392032459 hgt:178cm
873
874eyr:2027 iyr:2017 hgt:160in
875byr:1990 pid:131099122 hcl:#623a2f ecl:amb
876
877ecl:grn
878byr:1978
879eyr:2029 hcl:#18171d
880hgt:165cm pid:172369888
881cid:93
882iyr:2011
883
884ecl:hzl
885hcl:#733820 iyr:2010 eyr:2029 pid:127253449
886hgt:156cm
887byr:1963
888
889hcl:#6c8530
890iyr:2020
891byr:1929 eyr:2021 hgt:177cm ecl:oth pid:347925482
892
893eyr:2037 iyr:2026
894pid:163cm
895hgt:174in byr:2007 hcl:c1305f cid:134
896ecl:#0cf85c
897
898iyr:2011 pid:033811215
899hcl:#a97842 byr:2002 eyr:2021 hgt:186cm
900ecl:brn
901
902hcl:#a97842
903iyr:2020 eyr:2029 byr:1972 pid:535511110 hgt:160cm ecl:oth
904
905ecl:grn cid:89 hgt:193cm pid:73793987 iyr:2021 eyr:2027 byr:1939 hcl:z
906
907hcl:#623a2f
908hgt:182cm cid:154
909pid:873863966 iyr:2018 byr:1999 ecl:brn eyr:2031
910
911iyr:2014 eyr:2029
912cid:71 hcl:#fffffd byr:1924 hgt:63in
913ecl:gry pid:897972798
914
915hgt:76cm
916hcl:z eyr:1955
917iyr:2012 byr:2001 pid:9425090 ecl:hzl
918
919eyr:2021
920pid:501861442
921ecl:grn hcl:#d71ae9
922byr:1977
923hgt:167cm iyr:2015
924
925iyr:2014
926hgt:170cm ecl:gry byr:1928 cid:314 hcl:#602927 eyr:2029
927pid:836710987
928
929eyr:2027 hcl:#efcc98 ecl:amb iyr:2016 byr:1995 pid:603705616 hgt:179cm
930
931eyr:2030 hcl:#602927 cid:105 byr:1943 ecl:hzl
932pid:381601507
933hgt:188cm iyr:2020
934
935iyr:2011
936byr:1993 hcl:#c0946f pid:292649640 hgt:139 ecl:hzl cid:268
937eyr:1999
938
939cid:339 byr:1928
940ecl:brn eyr:2022 hcl:#733820 hgt:191cm pid:282733347 iyr:2019
941
942hgt:176cm
943byr:1935 ecl:brn cid:252 eyr:2023 pid:105060622 iyr:2020 hcl:#18171d
944
945ecl:hzl eyr:2029
946hgt:193cm pid:770254253
947hcl:#efcc98 iyr:2020 byr:1926
948
949pid:977785261 eyr:2022 iyr:2015 byr:1978
950hcl:#733820 hgt:172cm
951ecl:brn
952
953byr:2021
954hgt:160in
955ecl:gmt
956eyr:2032 cid:345 pid:179cm
957hcl:8f5c13 iyr:2029
958
959iyr:2018 hgt:182cm ecl:gry
960pid:897076789 eyr:2023 hcl:#866857
961byr:1980
962
963hgt:88 eyr:2039 cid:99 byr:2007 hcl:a1bb42 ecl:#a2f6bb
964pid:2264966188
965iyr:2022
966
967iyr:2012 cid:59 ecl:gry eyr:2021
968byr:1931
969hgt:172cm hcl:#7d3b0c pid:862416147
970
971byr:1962 eyr:2025
972ecl:grn
973hcl:#866857 hgt:180cm iyr:2014 pid:313647071
974
975eyr:2030 hgt:157cm byr:1985
976iyr:2020
977hcl:#7d3b0c pid:911544768
978ecl:grn
979
980hgt:175cm
981byr:1938
982iyr:2020 ecl:amb hcl:#602927 eyr:2026 pid:144411560
983
984iyr:2019 ecl:amb hcl:#888785 eyr:2025 hgt:187cm
985pid:942054361 byr:1939
986
987cid:168 pid:722146139 byr:1952 ecl:grn
988iyr:2014 hgt:97
989hcl:z
990eyr:2023
991
992eyr:2024 pid:567528498 ecl:gry iyr:2012 byr:1990
993hcl:#733820 hgt:193cm
994cid:293
995
996hcl:#bc352c pid:321838059 byr:1930 hgt:178cm cid:213 eyr:2023 ecl:amb
997iyr:2017
998
999hgt:173cm byr:1925 pid:070222017 iyr:2013 hcl:#ceb3a1 ecl:gry eyr:2024
1000
diff --git a/2020/day4/passport.pl b/2020/day4/passport.pl
new file mode 100644
index 0000000..26c6e32
--- /dev/null
+++ b/2020/day4/passport.pl
@@ -0,0 +1,68 @@
1use strict;
2use warnings;
3use Smart::Comments;
4use DDP;
5
6my $batch;
7{
8 local $/;
9 open my $fh, '<', "input" or die "no input present, $!";
10 $batch = <$fh>;
11}
12
13my $valid = 0;
14
15# the file has to end with a empty line...
16while ($batch =~ m/((?:[^\n][\n]?)+)/gm ) {
17 my $person_passport = $1;
18 my %passport;
19
20 if ($person_passport =~ m/byr:(?<byr>\d{4})\s/) {
21 if ($+{byr} >= 1920 and $+{byr} <= 2002) {
22 $passport{"byr"} = $+{byr};
23 }
24 }
25
26 if ($person_passport =~ m/iyr:(?<iyr>\d{4})\s/) {
27 if ($+{iyr} >= 2010 and $+{iyr} <= 2020) {
28 $passport{"iyr"} = $+{iyr};
29 }
30 }
31
32 if ($person_passport =~ m/eyr:(?<eyr>\d{4})\s/) {
33 if ($+{eyr} >= 2020 and $+{eyr} <= 2030) {
34 $passport{"eyr"} = $+{eyr};
35 }
36 }
37
38 if ($person_passport =~ m/hgt:(?<hgt>\d+)(?<unit>\w{2})\s/) {
39 if ($+{unit} eq "cm") {
40 if ($+{hgt} >= 150 and $+{hgt} <= 193) {
41 $passport{"hgt"} = "$+{hgt}" . $+{unit};
42 }
43 } elsif ($+{unit} eq "in") {
44 if ($+{hgt} >= 59 and $+{hgt} <= 76) {
45 $passport{"hgt"} = "$+{hgt}" . $+{unit};
46 }
47 }
48 }
49
50 if ($person_passport =~ m/hcl:(?<hcl>#[a-f0-9]{6})\s/) {
51 $passport{"hcl"} = $+{hcl};
52 }
53
54 if ($person_passport =~ m/ecl:(?<ecl>amb|blu|brn|gry|grn|hzl|oth)\s/) {
55 $passport{"ecl"} = $+{ecl};
56 }
57
58 if ($person_passport =~ m/pid:(?<pid>[0-9]{9})\s/) {
59 $passport{"pid"} = $+{pid};
60 }
61
62 if (keys %passport == 7) {
63 $valid++;
64 $valids{$passport{"pid"}} = \%passport;
65 }
66}
67
68print("$valid");
diff --git a/2020/day5/boarding.py b/2020/day5/boarding.py
new file mode 100644
index 0000000..336cd63
--- /dev/null
+++ b/2020/day5/boarding.py
@@ -0,0 +1,52 @@
1import math
2
3seat_ids = list()
4
5with open("input", "r") as passes:
6
7 for seat in passes:
8 front = 0
9 back = 127
10
11 left = 0
12 right = 7
13
14 for i in seat:
15 if i == "F":
16 back = math.floor((front + back) / 2)
17 elif i == "B":
18 front = math.ceil((front + back) / 2)
19 elif i == "L":
20 right = math.floor((right + left) / 2)
21 else:
22 left = math.ceil((right + left) / 2)
23
24 assert front == back
25 assert left == right
26
27 row = front
28 col = left
29
30 seat_id = row * 8 + col
31
32 seat_ids.append(seat_id)
33
34seat_ids.sort()
35
36# answer to the first part
37print(seat_ids[-1])
38
39# answer to the second part
40lent = len(seat_ids)
41left = 0
42right = lent - 1
43cursor = 0
44
45while right - left > 1:
46 cursor = math.ceil((left + right) / 2)
47 if (seat_ids[left] - left) != (seat_ids[cursor] - cursor):
48 right = cursor
49 elif (seat_ids[right] - right) != (seat_ids[cursor] - cursor):
50 left = cursor
51
52print(seat_ids[cursor] + 1)
diff --git a/2020/day5/input b/2020/day5/input
new file mode 100644
index 0000000..6ef4cd6
--- /dev/null
+++ b/2020/day5/input
@@ -0,0 +1,824 @@
1FFBBBFBLRL
2BFFFBFBRRR
3BFFFBFBLRL
4BFFBFBBLRR
5BBFFBFFRLL
6BFFFBFBRLR
7FFFFBBBRLR
8BBFFFBBRRR
9BBFBFBBRRR
10BFFBBBFLRR
11FFBBFBBRLR
12BBFFBFFLLL
13BFFFBFBLLR
14FBBFFBFLRR
15FBBFBBFRRL
16BFFBBBBRRR
17BFBBBBFLLL
18BFFBFBFLRR
19FBBFFBFRRR
20FFBFBFBLRL
21BFFFFBFLRR
22FBBFFFFLRR
23BFFFBBBLLL
24BFBFFFBRLL
25FFBBBBBRLL
26FFBBFFBLLR
27FBFFBBFLRL
28FFBFFBBRRL
29BFBBBBFLLR
30BFFFFBFRRL
31BFFBFFFLLL
32FBFFFBFLRL
33FBBBFFFLLL
34FFBFBBFRLR
35FBBBFBFRRL
36BFBBBFBLLL
37FBFFFBFLRR
38FBFBFFBLRR
39BFFFFBFLRL
40FBFBFFFRRL
41FBBFBFBLRL
42FBBFFBFLLL
43FBFBBBBRRR
44FBBBBBFLRR
45FBBBFBBLLR
46FFFBFBFRLL
47FFFBBFFLRR
48BFBBFFBRRL
49FFBFBFBRRL
50FBFBBBBLRR
51BFFBBFFLLL
52FFFBFBBRRL
53BFBBFFFLRR
54FBFBFBFLRL
55BFBFFBFLLL
56FBBBFBFRLR
57FBBBFBFLLL
58BFBFFFBLRR
59BFFBFBFLRL
60BFBBFFFRRR
61FFFBFFFRLR
62FFFBBBBRLL
63FFBBBBBLLL
64BFBBBFBRLL
65FFFBBBFLLR
66BBFFFFFRRL
67FBFBBFFRLL
68BFFBFBFRLR
69FBFBBFFRRL
70FBFBBFFLLL
71FBFBBBBRLL
72FBBFFBFLRL
73BFFBFBBRRL
74FBBFBFBRRL
75FFFBBFBLRR
76BFFBBBFRLL
77FBFFFFFRRR
78BFFFFBBLRR
79FBBFFFBRRL
80FBBBBBBRRR
81FFFBBFFLLR
82BBFBFFFRRL
83BBFFFFBRRL
84FBBBFBFLRL
85FFBFBBFRRR
86FFBBBFFLRL
87BFFBFFFLRL
88BFBFBFBRRR
89BFBBFFBRLL
90BFFFFBBLLR
91FBBBFBBLRR
92BFFBFFFLRR
93BFFFBFBLLL
94FBBBBBFRRR
95BFFBFBFLLL
96FBFFBFFRRL
97BFBBFBBRRR
98FBFFFBFRRL
99BFBBBFBLLR
100BFBBBBBRRR
101FFFBFBFRRL
102BFFFBFFLLL
103BFFFFFFLRR
104FFBBFFFRLL
105BFFBFFFRRR
106BBFFBBFLRL
107FBFBBBBLLR
108FFFBFFBLRL
109FFBBBBBRLR
110FBFFBFFRRR
111BFBBFBBRLR
112FBFBBBBLRL
113BFBBFFFLLR
114FBBBFBBLRL
115BFFBBBFLLR
116FFFBBBBRRR
117BBFBFFFLRL
118FBFBBFFLLR
119BBFFFFBLRR
120FFBBFFBRRR
121FFBBBFBRLL
122BFFFFBFLLL
123BBFFBFBRLR
124FBFBBFBRRL
125FFFBBBFRRR
126FBBBFBBRRL
127FFFBFBBRRR
128FBFFBBBRLL
129FFBFBBBRLR
130BFFFBBBRLL
131FBBFBBBRLL
132FBBBBBBLLR
133FBFBBFBLRR
134BFBFBFBLRL
135FFFBFFBRLR
136BFFFFFFRLL
137BFFBFBBLRL
138FBFFBFFLRR
139FBFBBBBRLR
140BBFFFBBLRL
141FBBBFBBRRR
142BBFBFBFRRR
143FBFBFFFLRR
144BBFBFFBLLL
145FBBBFFFLLR
146BFBFFBFRRL
147BFBBBBFRLL
148FFBFBFFLRL
149FBBBBFBLRR
150FBBBBFFLLR
151FFBBFFBLLL
152FBFFFBBRRR
153FFBBBBFLLR
154BFBFBFFRRL
155FFBBBBBLRR
156BFFFFFFRRL
157BBFBFFFLRR
158BFFBFBFRRL
159BBFFBBBRRR
160BBFFBFFLRL
161FFFBFFBRRR
162BFBFBBFRLR
163BBFBFBBLRR
164BFBBBBBRLL
165FBBBFFBRRL
166FBBBBBBRLL
167FBBFBBFRLR
168FBBFFFFRRL
169BFBFFBFRRR
170BFBBFFFLLL
171FBFFBFFLLR
172BFBBBFBLRR
173BFFBBBBRLL
174FBBBBBBLRR
175FFBFFBFRRL
176BBFFFBBRLL
177FBFFFBBRLL
178FFBBFFFLRL
179BFBBBBFRRL
180FFBFFBBRRR
181BFFBBFBRLL
182FFBFFFBLLR
183FFBFFFFLLL
184FBBBBBFLLR
185FBFBFBBLLR
186FBFBBFBRRR
187BFBFFFFLRR
188BFBBFFBRRR
189FBFBFFFRRR
190FFBFBBBRLL
191BFBBBFBRRL
192BFFBBBFLRL
193BBFBFFFRLR
194BBFBBFFLRR
195FBBFFBBRRL
196FBFBBBFLRL
197FFBFBBFRRL
198BFBFFBFLRL
199BFFFBFFRLR
200BBFBBFFRLR
201FFBFBFBLLL
202BFBFFBBRRR
203BBFFBBBRRL
204FBBBFBBLLL
205FFFBFFFLRL
206BBFFBFBLLL
207BFBBFFFRLR
208FBBBBFBLRL
209BFBFBBBLRL
210FFFBFBFRLR
211FBFFFFBRRL
212BFFBBFFLLR
213FBFFFFFRRL
214FBBFFBFRLR
215FBBBFBBRLL
216FBFFFFFLLR
217BFBFBBBLLR
218FFBBBBBRRR
219BFFFBBFLLR
220FBFBBFBLLL
221FBBFFFFLLR
222FBFFFFBLRL
223FBBBFBBRLR
224FBBFBBFLRR
225FBBBBBBRRL
226BBFBFBFLRL
227FFBBBBFRRL
228BFBBFBFLRL
229BFFFFFFRRR
230BBFBFBBLRL
231BFBFFFFRLL
232BBFFBFBRRR
233BFBFFBBLLR
234FBFBFFBRRL
235FFBBFBFLLL
236BFBFBBBRLR
237FFBBFBFLRL
238BBFFFFFRRR
239FBFFFFFLRL
240FFBFBFBRLL
241BBFFFFFLRR
242BBFFFBBRLR
243FBFBBFBRLR
244FBBBBBFLRL
245FBBFFFBLRR
246FFFBBFBLLL
247BBFBFFBRLL
248FFBFBFBLLR
249BFBBFBBRRL
250BFFBFFBLLL
251BBFFBFFRLR
252BBFFBBFLLR
253BFFFFFBLRL
254FBBFFFBLLL
255FBFFFFBLLR
256FBBFBFFRRL
257BFBBBFFRRL
258BBFFFBFLRL
259FBFBFBFLLR
260FBFFFBBRLR
261BBFFBFBRLL
262BBFFBFFRRL
263BBFFBBFRLR
264FBFFBFBRLL
265BFBFBBFRRR
266BFBBFBBLRL
267FFBBFFBRLL
268FBFFBFBRLR
269BBFBFBBLLR
270BFBBBFFRLL
271FFBFFBFLLL
272BFBFFBFRLR
273BFFFBBFLRL
274BFFFBBBLRL
275BFBBBFFLLR
276FBBFBBFRRR
277BFFBFFBRRL
278BFBFFBBRRL
279BFBBFBFRLL
280FBBFFBFRLL
281FFBBBBFRLL
282FBBBFFBRLL
283BBFFBFBLRL
284BBFFFFFLLL
285BBFFFFBRRR
286FBBBBFBRLR
287BFFBFFBRRR
288FFBFBFFRLL
289FFFFBBFRRR
290BBFBBFFLRL
291FFFBBBFLRR
292BFFBFBBLLL
293BFBBFFFLRL
294BFFBFFFRLL
295BFBFFBBRLL
296FFBBBBFLLL
297BFFBFBBRRR
298BFBBBBFRRR
299FFBFFFFRLR
300BFBFBFFRRR
301BFBFBBBLRR
302FBBBFFFLRR
303FFBFFFBRRL
304FBBFFFBRLR
305FFFBFFBRLL
306BFBBFFBLLR
307FFBBFBBLRL
308FFBFFFBRLR
309BFBBFFFRLL
310FBBFBBBLLL
311FBBFFFFLLL
312FFBFBBBRRR
313FFFBBBFLRL
314BBFFBBFLRR
315FFFBFFFRLL
316FFBBFBFRRR
317FBFFBFBRRR
318BFFBBFBLRL
319FFFBBBFRLL
320FBBBFFBRRR
321FFBBBBFLRL
322FFBFBBBRRL
323FBFBFFBRRR
324FBFFFBBLLL
325FBBFFFFLRL
326BFFFFBBRLR
327BFBBBBBRLR
328BBFFFBBRRL
329BBFBFBFRLR
330FBFFFFFLLL
331FBFBBBBRRL
332BFBFFFBLRL
333FFFFBBBLLR
334FFBBBFBRLR
335FBBFFFFRRR
336BBFBFFBLRL
337BBFFFFBLRL
338BFBFFBFLRR
339FFFBBBBLRR
340FBBBBBBLRL
341FBBFFBFRRL
342FBFFBBBRRL
343FBFFBBFRRL
344FFFBFBFLLR
345BBFFFFFRLL
346FFFBBBBLLR
347BBFFBBBLRR
348FBFBFFBLLR
349BFBBFBBRLL
350BFFFFFBRLR
351FFFBFBBLRR
352BFFBBBBLLL
353BFFBBFBLLR
354FBBBBBFRLR
355BBFBFFBRLR
356FBFFBFFLLL
357FBBFBBBLLR
358FFFFBBBRRL
359FBBFBBFRLL
360BFBFFFFRLR
361FFFFBBBRLL
362BFBBBFFLLL
363BFBFBFFRLR
364FBFBFFBRLL
365FBBBFFFRLL
366FBFBFFBRLR
367FBBBBFFRLR
368BBFBFFFRLL
369BFFBBBBRLR
370BFBFFFFRRL
371FBBBFFFRRR
372FFBFFBBRLR
373FFBBBBFLRR
374BBFBBFBRRL
375BFFBFFBLLR
376BBFBBFBRLL
377FBFFBFBLLR
378BBFBFBFLLR
379FBFBFBBRLR
380BBFBBFFRRL
381BFBFFFBLLR
382BFBFFBBLLL
383FBFFBFBLRR
384BFBBBBBLLL
385BFFFBFFRRL
386BFBBBFBRLR
387BBFFFBFRLL
388BFFBFFBRLL
389BBFBBFFLLL
390BFBBBBBLRR
391FFFBFFBLLL
392BBFFBBBRLL
393FFFBBBBLRL
394FFBBBFBLLR
395FFBBFFBLRL
396FFBBFFBLRR
397FBBBBBBRLR
398BFFFBBBLLR
399FBBFBFBLRR
400FBFBFBFRLR
401FFBFBBBLRR
402FFFFBBBLRL
403FFFBBFFRLL
404FFFBFFFLRR
405BBFFFFBLLR
406BFBFBFFLLL
407FFBBBFFRLR
408FBBFBFBRLL
409FFBBBFBLLL
410FBBFFFBLLR
411BBFBFFBLRR
412BFFFFBBLLL
413FBBBFBFLLR
414FFBBBFFLRR
415BFFBBBFRRR
416FFBFFFBLRR
417FBBFFBBRLR
418BFBBFBFLRR
419FFFBBFFRRR
420FFBFFFFRLL
421FFFBFBFRRR
422FFBFFFFRRR
423FBBFBBBLRL
424FFFBFBBRLR
425FBBFFFBRLL
426FFBFBFFRLR
427FBBBBFFRRR
428BFBFFBBLRR
429FBFFBBBLRL
430FBBFBBFLLR
431BBFFFFFLRL
432BFBBFBFRLR
433BFFBFFBLRR
434FFBFFFBRLL
435FBFBFFBLLL
436BFFFFFBLLL
437FBFFBBFLLL
438BFBFFBBRLR
439FBFBBFBRLL
440FFBBFBBRLL
441BFFFBBBRLR
442BFFFFFFLRL
443BBFFFBBLLR
444BFBFBBFLRL
445FFBBBFFRRL
446BBFFFBFLLL
447BBFFBBBLLL
448BBFFBFBLLR
449FBFBBBFRLL
450FFBBBBBRRL
451FFBBBFFLLR
452FFBFBBBLRL
453BFFBFFBLRL
454BFFFBFFRRR
455BFBFFFBRRR
456FFFBBBFRLR
457FFBBFBBLLR
458BFFFBBFLRR
459FFBBBBFRRR
460BFBFBBFLRR
461FFFBBBBRRL
462BFBFFBFRLL
463FBFFBFFRLR
464FBBFFFFRLR
465BFBBBBBLRL
466FFBBFBBLLL
467FFBFBBFLLR
468BFFBBBBLRL
469BFBFFFFLRL
470BBFFFBFRRL
471FFBFFBBLRR
472FBFBFBFRRR
473BBFFFBFRLR
474BFBBBFFLRR
475BBFBFFBLLR
476BBFBBFBLLR
477FBFFFBFRLL
478BFBFBBBLLL
479FBBFBFFLRL
480BFFFBBBLRR
481BBFBFFBRRR
482FBBFFFFRLL
483BFFFBBBRRL
484FBBFBBBRRR
485FBBFFBFLLR
486BFFFFFBRRL
487FBFFFFBRLR
488FBFBFBBRRR
489FBFBFBFRLL
490BFFBFFFRRL
491FFFBBFFRRL
492BFBFFFBRLR
493FBBFBFFLRR
494BFFFBFBRRL
495FBFBBBFLLR
496FBFBBBFRRR
497FBFFBFBLRL
498FFFFBBBRRR
499FFBBBFFRRR
500FFFBFBFLLL
501BFBBFFBLRR
502FBBFBFBRRR
503BBFFBBFRRL
504BBFFBFFRRR
505BBFFBFFLRR
506FBBFFBBLRR
507BFBFFFFRRR
508BFFBFBBRLR
509BFFFBBFRLL
510BFBFBBBRLL
511BBFFFBBLRR
512FFBBFBFLRR
513FBFBBBFLLL
514BBFFBBBLLR
515FFBBFFFLRR
516FBFFFBFRRR
517BFBBFBBLLR
518FFBBFBFRLR
519BFBFFFFLLR
520FBBBFBFRRR
521BFBBFBFRRR
522BFFBFBFRRR
523FFBFBBBLLR
524FBFBFFFRLR
525FBBFBFBLLL
526BFFBBFFRLL
527FBBBBFBLLR
528FFFBBBFLLL
529BFBFBBFRLL
530FFFBFBFLRR
531FBBBBFBLLL
532FFBBFBFRLL
533BBFFBBFRRR
534FFBFFBFRLL
535FBFBFBBLLL
536FBFFBBBLLR
537FFFBFBBLRL
538FFFBBFBRRR
539FBFFBFFLRL
540FBBFBFBLLR
541BFBBBBFRLR
542FBBFBFBRLR
543FFFBFFBRRL
544FBFBBFBLLR
545BFFBFFFRLR
546FFBFBFBLRR
547BFBFBBBRRL
548FBFFFFFLRR
549FFFBBFFLLL
550BFFFBBFRLR
551FFBFFBFRLR
552BBFFFFBRLR
553BFFBFFBRLR
554BFBFBFBRLR
555FFBFFBBRLL
556FBBBFFBLLL
557BFBBBBBLLR
558BFFFFBFRLL
559FBBFFFBRRR
560FFFFBBBLLL
561FBFBFBBRRL
562FBFFFFFRLR
563FBFFBBFRRR
564BFFBBFFLRL
565BFBFBBBRRR
566FBBFBFFRLR
567BFFBBFBRRL
568BFBBFBFRRL
569FBFFFBBRRL
570FBBFFBBLLL
571FBFBFBBRLL
572BFFFFBFRRR
573FBBBFFBLLR
574FBBFBBBLRR
575FFBFBFFLLR
576FBFFBFFRLL
577FBBBFFBRLR
578FBFFBBBLLL
579FBFBFBFRRL
580BBFBBFBLLL
581FFBFBFFRRL
582FBBBFFFRRL
583FBFFBBFLRR
584FBFBFFFLLR
585BFFFFBBLRL
586BFBFBFFLRL
587FBFFFFBLLL
588FBBBFFFLRL
589BFFBBBBLLR
590BFFBBBFLLL
591BFFBBFBRRR
592FBBBFBFRLL
593BBFBFFFRRR
594BFBBBFFRLR
595FFBFBFBRRR
596FBFFBBFRLL
597FFFBBBBLLL
598FBFFBFBRRL
599BFFFFFBLLR
600BFBFFFBLLL
601FBFBBBBLLL
602BFFBBFFRRL
603BBFFBFBRRL
604FBBFBFFRRR
605BFBBFFBLLL
606BFBFFBBLRL
607BBFFFFFLLR
608FFBFBBFRLL
609FFBFFBFLLR
610FBBFFBBLRL
611BBFFFFBLLL
612BFFFBFFLLR
613FBFFFBFLLL
614BBFBFBFLLL
615FFBFFBBLRL
616FBFFBBBRLR
617BFFFFBBRRL
618FFBBBBBLLR
619FFBBFBFRRL
620FFBFBBFLRL
621FFBFBFFLRR
622FFFBFFBLLR
623BBFBFBBRLL
624BFBBBBBRRL
625FBFBBBFRLR
626FBFBFFFRLL
627BFFFFFFLLR
628FBBBBFFLLL
629FBBBFFBLRR
630BFFFBFBLRR
631FBBBFFFRLR
632BFFFFFBRLL
633FBBBBFBRRL
634BFBBBFBLRL
635FFBBFBBLRR
636BFFBBFBLLL
637BFBBFFFRRL
638FBBBBFFRRL
639BFFFBBFRRR
640FFFBFFFRRR
641FBFBBFBLRL
642BFBBFFBLRL
643BBFBBFBRLR
644BBFBBFBLRL
645FFBFBFFRRR
646BBFFBBFLLL
647FBBBFFBLRL
648FBBFFBBRRR
649BFFBFBFLLR
650FBFBFBBLRR
651BFFFBBBRRR
652FBBFBFFLLL
653FBFBBFFLRR
654FFBBFFBRLR
655FFBBBBBLRL
656FFBBBFBRRL
657BFBFBFBLRR
658FBFFFFFRLL
659BFBFBBFLLL
660BBFBFBBRRL
661FBFBFBFLLL
662FFBFFBBLLR
663FFFBFFFLLR
664BFFFBFBRLL
665FBBFFBBRLL
666FBBFBFFLLR
667BFFFFBFLLR
668BFFFFFBLRR
669BBFFFBFLRR
670FBFBBFFRLR
671BFBBFBFLLL
672BFFBBBFRLR
673BBFBFBBRLR
674FFBBFBFLLR
675BBFBFBFRRL
676FBFBFBBLRL
677FBFFFBBLRR
678FBFBBFFRRR
679BFFFFBFRLR
680FBFFFBFLLR
681FFBBBFFRLL
682FBFBFFFLRL
683BFFFBBFLLL
684FFFBBFBRLL
685FFBBBFFLLL
686BFBBFBFLLR
687FFBFBBFLLL
688BFFBBBBRRL
689BBFFBBBLRL
690FBFFFFBLRR
691BFBBFBBLRR
692BFBBBFBRRR
693BBFBFFFLLL
694BFFBBFFRLR
695BFFFBFFLRL
696FBBBBFFRLL
697FBFFBBFLLR
698FBFBFFFLLL
699BFFBBFFLRR
700FFBBFBBRRL
701BFBFBBFLLR
702FFFBBFBLRL
703FFBBFFFRRR
704BBFFFBFRRR
705FBBBBFFLRL
706FFFBFBBLLL
707FFFBBFFRLR
708FBFFFBBLRL
709BBFBFBFRLL
710BBFFBBBRLR
711FFFBBFBRLR
712BBFBBFFRLL
713BBFFFFFRLR
714BFBFBFBLLL
715BBFBFFFLLR
716FBFFBFBLLL
717BBFFFBBLLL
718FBFFFFBRLL
719BBFFFFBRLL
720FFBFFFBRRR
721BFFFFFFRLR
722BBFFBBFRLL
723BFBFFFBRRL
724FFBBBBFRLR
725FFBFFBFRRR
726BBFBFBFLRR
727FFBFFBFLRL
728BFBFBFFLLR
729FBBBBBFLLL
730FFBFFFBLLL
731FFBBBFBLRR
732FFFFBBFRRL
733FBFBBBFLRR
734BFFBBFFRRR
735FBFBBBFRRL
736BFFFFFBRRR
737BFBFBBFRRL
738BFBFBFBRLL
739BFBFFFFLLL
740FBBBBBFRRL
741BFBBBBFLRR
742BBFBBFFRRR
743BFFBFFFLLR
744BFBBFBBLLL
745FBFFFFBRRR
746FBFFFBFRLR
747BFFBFBBRLL
748FFBBBFBRRR
749FFBBFFFLLR
750BBFBBFFLLR
751BFBBFFBRLR
752FFFBBFFLRL
753BFFFFFFLLL
754FFBBFFFRLR
755BFFBFBFRLL
756FFBFFBBLLL
757BFFFBFFLRR
758FFBFFFFLRR
759FBBBBFBRLL
760BFBFFBFLLR
761FFBBFFBRRL
762BFFBBFBLRR
763FFBFFBFLRR
764BFFBFBBLLR
765FBBFBBFLLL
766FBFFBBBLRR
767BBFFBFFLLR
768BFBBBFFRRR
769FFFBFFFRRL
770FBBFBBBRRL
771FFFBFBBLLR
772BFFFBFFRLL
773BBFBFFBRRL
774FFBFFFFRRL
775FFBFBFBRLR
776FBBFBFFRLL
777FFFBBFBLLR
778FFFBBBFRRL
779FBBBBBFRLL
780BFFFBBFRRL
781BFBFBFBRRL
782FBBBBFFLRR
783FFFBBFBRRL
784BFFBBFBRLR
785BBFBFBBLLL
786FFBFFFFLLR
787FFBFFFFLRL
788FFFFBBBLRR
789BBFBBFBLRR
790FBBBFBFLRR
791FFFBFBBRLL
792FBFFBBFRLR
793FFBFBBFLRR
794FFFBFBFLRL
795FFFBBBBRLR
796FBBFBBBRLR
797FBFBFFBLRL
798BFBBBBFLRL
799BFFFFBBRRR
800BFFBBBFRRL
801BFFFFBBRLL
802BFBFBFFLRR
803BBFFBFBLRR
804FBBFBBFLRL
805FFFBFFFLLL
806FBBBBFBRRR
807FBFFFBBLLR
808FBBFFBBLLR
809FFBBFFFLLL
810FFBFBFFLLL
811FBFBFBFLRR
812BBFFFBFLLR
813BFFBBBBLRR
814FBBFFFBLRL
815FFFBFFBLRR
816BFBFBFBLLR
817FBFBBFFLRL
818BFBFBFFRLL
819FFBFBBBLLL
820FBFFBBBRRR
821FFBBFFFRRL
822FFBBFBBRRR
823FFBFFFBLRL
824BFBBBFFLRL
diff --git a/2020/day6/declaration.pl b/2020/day6/declaration.pl
new file mode 100644
index 0000000..7c87461
--- /dev/null
+++ b/2020/day6/declaration.pl
@@ -0,0 +1,30 @@
1use strict;
2use warnings;
3use Smart::Comments;
4use DDP;
5use List::Util 'sum';
6
7my $batch;
8{
9 local $/;
10 open my $fh, '<', "input" or die "no input present, $!";
11 $batch = <$fh>;
12}
13
14my $total_yes = 0;
15
16while ($batch =~ m/((?:[^\n][\n]?)+)/gm ) {
17 my $group_answers = $1;
18 chomp $group_answers;
19
20 my %counts;
21 while ($group_answers =~ m/^(\w+)$/mg) {
22 my $person_answers = $1;
23 $counts{$_} = 1 for split(//, $person_answers);
24 }
25 # p %counts;
26
27 $total_yes += sum values %counts
28}
29
30print $total_yes;
diff --git a/2020/day6/group_declaration.pl b/2020/day6/group_declaration.pl
new file mode 100644
index 0000000..6370e2f
--- /dev/null
+++ b/2020/day6/group_declaration.pl
@@ -0,0 +1,32 @@
1use strict;
2use warnings;
3use Smart::Comments;
4use DDP;
5
6my $batch;
7{
8 local $/;
9 open my $fh, '<', "input" or die "no input present, $!";
10 $batch = <$fh>;
11}
12
13my $all_yeses = 0;
14
15while ($batch =~ m/((?:[^\n][\n]?)+)/gm ) {
16 my $group_answers = $1;
17
18 # count the newlines = number of people
19 my $peeps = $1 =~ tr/\n//;
20
21 chomp $group_answers;
22
23 my %counts;
24 while ($group_answers =~ m/^(\w+)$/mg) {
25 my $person_answers = $1;
26 ++$counts{$_} for split(//, $person_answers);
27 }
28
29 $all_yeses += scalar grep { $_ == $peeps } values %counts;
30}
31
32print $all_yeses;
diff --git a/2020/day6/input b/2020/day6/input
new file mode 100644
index 0000000..6a9f009
--- /dev/null
+++ b/2020/day6/input
@@ -0,0 +1,2190 @@
1vmzodatscnrfek
2epjkrabmiusofzclt
3
4qfvg
5vnduc
6mab
7krxowtje
8
9jitvf
10fbrl
11guazkfqy
12fehw
13efosi
14
15n
16ipsl
17k
18
19wgzjxectsfbuqkyihpvrml
20uzgtkwvicqymshjpbxeflr
21kplwuvtcbhjqsyfgzexrim
22
23kuibxgzwpaqvlny
24dblsifnutpkzyxqg
25qpeijbyzgxmklnrc
26ipkbgylznhqx
27qlzpbigwynxk
28
29xyvdorhgskfczpl
30qzaodbmxytiu
31
32fxdogrbqmu
33xdqocgjbrm
34rbdmoqcg
35qemgdtorbhpz
36mbklgqosdr
37
38bpgoqryv
39ajlsknwmdufc
40
41smj
42sjmh
43mjs
44
45qvkxiesuczwm
46gdncrjpaz
47rtfdabhczg
48dozycln
49
50fulhpr
51hubwrp
52wlhpqztu
53jydgcpanuh
54huwzp
55
56sncd
57slydx
58
59a
60la
61a
62a
63a
64
65qtlcnozhbivwjrmsa
66xzinjehdyslbtpkmfrowvuqac
67whbocitrlnvjzgamqs
68mclshazqiotbrwnjv
69
70mhndikourgvjplsa
71dlmxwopuzenvyg
72
73l
74l
75l
76
77mgsocef
78oecgfm
79xiamjfecuvl
80
81cgjvewai
82dcoxwzeaqgvi
83svkwcmagieb
84vclpufwgarhtnyei
85azeigcvw
86
87pnfwujv
88jvuwpg
89mpknvwgtsju
90uglwvspo
91pudvweqb
92
93cjunkibsfzmgry
94mchpuejwitb
95xjacdmvioqbutl
96
97r
98r
99rkd
100
101vuwnpmytzojdh
102gynrhmdozjtuwv
103
104pmugoknftl
105qncisjodve
106boyhwnm
107
108v
109v
110v
111
112awrd
113acl
114oiapejknusvh
115zabfytl
116
117ouyvwh
118huwo
119
120djweohkzratfqug
121rukgaezdwhoqfjt
122tzqhdyfokgjruwcea
123rhqtauzkjoefwygd
124gprwsfqzuaeodjhkmt
125
126lmrxedynzjhouaqpki
127dnylahikjzomp
128inlgykhmjptofza
129
130nhukeywbxpjg
131kyxngujbeph
132kesxijuhpqgnby
133nbkjuyhxpezg
134ehpxbnkzgujy
135
136xipcz
137wcvap
138
139jczryhid
140iehucld
141dhci
142ihldtogncq
143
144uevrf
145qbvrpefa
146rfev
147
148rws
149qsji
150spy
151swrb
152mzaoxdgvs
153
154aysor
155zhlvaw
156jekdmqbip
157
158wqtzsk
159qkwtzs
160qwstzk
161qtkzws
162
163joph
164dnhopiwkt
165gomqhpv
166zhqypso
167
168zplmswug
169mklgjpsf
170dmltrxgs
171wlmgs
172
173finvhsdy
174tjkinh
175
176hzteqfmdsarbng
177qnszgbefmahdtr
178
179dihptjsucv
180tupvsecjdh
181
182gcspdaqnlwmj
183jqpagnmscelw
184gneclwpamvjsq
185njamswlgqpc
186zqylsxpjwcnarmg
187
188pykcaoqfizng
189fpqokzgni
190nigzfopkq
191fzungkqoip
192nufgkzipoq
193
194pisnjflxcwqvrdko
195fdazpbxermuh
196
197e
198e
199e
200e
201e
202
203mgtze
204jgmz
205gmz
206vgmbz
207gmjz
208
209tjg
210uyprlxbzqi
211
212yicftxgpnsakoumbhejzlrw
213swukeibgmflrjocayxzpnth
214izpjolebrafgkytwnmsuxcvdh
215taueopgncshzwfrjlbmyxki
216ghousnkaxjczylpwbirfmet
217
218wqie
219qe
220pmrdgzco
221yws
222
223rltvm
224vrlmt
225
226smanxywjp
227mipuxysawtj
228xawomsjlpy
229msyajxwp
230
231bmyjdokqvea
232jmyqlbufvkare
233aefuqmbnzojykv
234qckgjyevpbam
235
236xkoengaq
237gqxnoeak
238oqaekxgn
239akxnoqge
240aenqoxkg
241
242gkszoexurnca
243fdomckulz
244
245p
246spu
247
248ixa
249xai
250iax
251xai
252
253ujm
254mj
255mj
256
257fevxazmtcuy
258mfguzyaetx
259yaueifzmndt
260huafmgytzec
261
262ugzi
263kiuzg
264
265gjfrzisuyml
266bmgedhzfwynir
267fgrcxami
268
269ulaqyxjmes
270hejkqlxp
271
272dwmes
273edw
274wde
275iwgqdye
276dew
277
278hcsolbi
279boz
280bo
281
282cjmuofeaxzbkv
283bejcfxmouvzka
284uavkemoyfjxzbc
285
286gyu
287lyuhg
288
289s
290nvdg
291ju
292jsb
293
294bxacvrgknlihpfudteoqmys
295asryxlvneomqfuikpbcd
296qyolmuxknsvarfpbzcide
297dcyaspmzqerokvnlfxuib
298kunsaxmbfoqiecyrpldv
299
300bskjodwgaqplftvzxncruyh
301wyqdvutskafrnzxhbcgplj
302
303k
304k
305k
306k
307h
308
309dbv
310b
311b
312bp
313b
314
315htardyuoexn
316eniadrhyu
317eagnhpurdy
318haygndure
319ndehlsaburzkfywm
320
321d
322d
323d
324d
325
326ztawekhv
327khwazre
328xdfwzsmkep
329
330wbq
331wqb
332wbvqc
333qwb
334wqb
335
336yqzctgrli
337cqrtiglwz
338gctzirkql
339qigrzltco
340qgitlbnrcz
341
342zrtvjqxyshowbfkecidnpmu
343qujemalvbfytwpikozsnxrd
344
345svokapl
346plsoakvm
347qxhpavlos
348pnaovsl
349
350tswmgeorcqudnfbijxyk
351jmrfozxnyqwbictudks
352bhsuwpoxtnkmirfycjaq
353xobfyqcwijlrmutskn
354tbjusyixfcrmhdoqpnkw
355
356xfmgwboyuqihv
357rpifewmgcbduohty
358
359kp
360pk
361pk
362pkfz
363kp
364
365gaitb
366mbavq
367
368cbevphgyoznqlrui
369ovidcqreumpgnb
370yqciomufrpgknveb
371cuepbnvrsioxqtg
372
373trngydpvcquwlh
374pbgotihdelkru
375dalzhgmsrtkeupo
376
377htnq
378et
379tv
380lt
381
382csfzparoyimutn
383ytoinamcpsfr
384pmsnfywcortaiv
385qirmtoncspyfa
386tnycmsfiordapu
387
388jtauexdnhkclpi
389deinucbapqtljkx
390ckeipjstluabndzx
391knjpiadculewxbt
392nlxtdeaiukjcp
393
394gezsvid
395zivdegs
396edsgizv
397sevidgz
398vszeidg
399
400gtpbmuyahd
401fqtelauodx
402azdtmsgkyu
403
404knys
405vuir
406
407ywn
408nyw
409gynw
410
411dgz
412cahdgz
413
414qhpavgeijfckozu
415xzclkfgsbtu
416
417xphfmcniugqlwdbe
418nwfqiezambylhxouvpc
419nfqchsibumexpwrl
420xbnehqjkgulmfwicpr
421ftmbnlcwixeqhup
422
423uncjehvmps
424ohjmcpu
425cyfupmhij
426
427jmdtsfe
428jetfd
429jftde
430edtjf
431tfdje
432
433pqtrac
434capltq
435
436scvlufnkadzj
437txbygih
438rempgqotw
439
440kf
441kf
442
443apbdsw
444fdluwhjcxesvi
445
446xgpcrtjydbkoa
447aqpjiyuodt
448oatydpuej
449adpoymjzt
450modhtpyja
451
452kigvcfjuyzbldtrwo
453rtqvlkgyohiafbecpm
454
455vlcesthidg
456yhetdvzcgl
457civxtdghela
458wivlcghted
459
460zemvtkbjg
461ogizbjlvekcqatu
462pxgktbzjevrnm
463kjzbtvge
464
465mpyrclkes
466fqobuzjvxtgi
467
468aeobkgs
469emajsklgod
470efkiapqycsog
471oegakls
472
473dfhruzlm
474mcuhdrzs
475zdumgrh
476
477c
478cj
479c
480
481funok
482nofukg
483fbkmunho
484
485ejxvl
486lehmvg
487kwvlie
488elkv
489livqrde
490
491filvuoxy
492lyixfovhu
493viflexycu
494hluvifyx
495
496vwprofci
497ovfrcwpi
498
499dbsy
500bsyd
501sdyb
502bysd
503
504brizpvscfmqletj
505gnwyaxkuohd
506
507axbgortewjkdcn
508cgdsnxbeavwhkrtj
509adupxwcgkrzeibtjnm
510cnbatrwjexgqkd
511
512soeq
513cq
514
515klguybtdir
516gkdtalriysub
517rlutbkdiyvg
518dgyrutbilk
519gyblktviudr
520
521wkfmlsexbvqojpzr
522gixblkseprvjqfmzwo
523okpfmezjxvrslbwq
524kfwxbvojmpszlqre
525qorsvljkmezbpfwx
526
527knol
528lkn
529lkn
530liwnkp
531
532jqceghowuid
533uwaeiqdbjg
534gqawxdejui
535wiudegpjqv
536
537tfjocaivykunqrm
538nyiqtacvjfkmu
539tuaqfivcjykmn
540
541ixvecpwrsbfkqaozj
542scbwftzaeyqumhvpdn
543
544sytdlcibnkqgfjuavxhwz
545taxqbudsnhwgcfz
546xudmatnbwcfpghzsoq
547
548ptielykb
549byiwekl
550blieyk
551
552auwxpqlifktnvdjczog
553wvdkpfujaolxictz
554zmrecfyiwsxdhjouabkv
555
556rmhdlqgwajy
557gwylamhqrdj
558hlgywrdmjaq
559
560tkmxv
561itxhkgv
562tvxkfwz
563atxkhv
564qxvtkau
565
566vaezqdxfbumylrg
567tbdenuxmflzsvihoragqy
568gdxmerzvalufyqb
569ezxfdmlgabquvyr
570
571dvgfzkti
572dizfkv
573kjbahfvdiqn
574
575tdpkb
576jtadq
577tsbj
578unevhcwlfrtog
579tyzx
580
581wt
582t
583
584ytuxlndcm
585yutgdxlncm
586nlxcdtmyu
587dcmunylxet
588
589t
590t
591t
592tr
593
594zpagqd
595dqpgnzla
596dgpqaz
597
598bwdzsuaogitrqpknj
599sworntpqgkdujia
600agiwurdpotknjsq
601gwpdanqotijkurfs
602
603sp
604ps
605pjs
606ps
607sp
608
609owfixjnlu
610owxinufjl
611oaniuflwx
612qfiulnoxwcg
613onjfiwuxl
614
615bogejcmqwkz
616qgcwmobk
617zqmtkbocgw
618owgcbqmkrp
619
620kui
621niuw
622
623gskrcqufjaybtxiwpv
624xgdmryvlpjsbiktcwafqu
625rpkcnxysuwatfvbqgij
626rpyqgfbexujcitkasovw
627twvjfgqupskycibarx
628
629oxkzbnjtydic
630lgzave
631vrhsqwz
632uvzafsl
633
634wvhn
635inxwkvj
636jnpfv
637dvazmtcn
638
639fsvghzlanejckiyptuwo
640lofwqkpiaegsvujnhmxdztb
641
642vdocn
643vdcon
644dovcn
645
646xftpok
647pkoftx
648pkftxo
649pktxof
650
651hulqzd
652ludhqaz
653kuhlwqzd
654dqhzul
655
656oavcie
657ajsntbxry
658
659lfycorabtwqzi
660rbwflaqoizmyt
661atbifylqzoruw
662fwlboztarqy
663fltyopwnaqbdhzr
664
665zosualjhpwdxitknrgyemq
666rgtailouxmnehsykwdjqz
667ouskwmrgjxnzdaeyiqlht
668jrzmihdsuneayqkglxwot
669
670dm
671j
672e
673ej
674
675cbsjvmudeywt
676mutdwcsjbvey
677tuvdscybmjew
678
679tleckmrn
680tnlscekm
681hzcnmkltes
682
683xkqlsahnfvureowit
684resufihltvxqnowak
685uhtskfoxqrvnwaile
686fuxyvntwsiqlkzreoah
687
688gvcwo
689hpgyinve
690lgxv
691
692zkrl
693lvi
694vilb
695
696ghtud
697hgdut
698utdgh
699tghud
700dhugt
701
702yx
703gwyxuzlb
704vxy
705
706fhcwtskbpa
707kbwhpstcaf
708
709zqjm
710jmz
711zjm
712
713clwysmfkoxvjqhazupd
714fyadtvouswqklpmxzch
715kxzlpmhfqdcoyuawnsv
716spaqvyokzclufhwdxmj
717
718fvpjlahmdgk
719lujafdmhg
720
721uyki
722uvk
723
724funtydwobxhjmapl
725lsqdexyjmptgv
726idltxszmkjpy
727
728gwidnshycjtka
729bzdwlq
730rmwedpuo
731
732ygvurmkxaw
733vrmakgwyxu
734wcmuxvayonrskg
735
736jnvtubeqwhxd
737bfemdwl
738fdiekwbl
739
740ulxjdiw
741szc
742
743osxyfdljchivgtqua
744ldsgitzjywavf
745
746i
747g
748
749tk
750kt
751tk
752
753cnldkubrhoagfmwej
754xiarjsqkfcmlnuhp
755
756g
757q
758e
759e
760e
761
762pxayhgoqv
763oyqvgwa
764yqvxgeiaom
765vgyjnrlqsoad
766
767hfalndysgpqcbjtwkmzre
768fakebsrlzwcjdpqgtmhyn
769kpwzsjtyedlafncmbrqgh
770
771stcefhmkxydwv
772wxhtomkdyfsprcev
773hswqagvzkcmbtdjyef
774
775ms
776m
777jzm
778m
779m
780
781dhm
782mghpd
783dhym
784mdyh
785hmd
786
787cbxnyfijlvthdqo
788ybqcdkxjpinh
789wiphqnbjgcyxmd
790bdhcxyenjiq
791drbyqjcpxnih
792
793yjvg
794habgzy
795jgy
796gyj
797ygj
798
799vdmfwnszkjhobtre
800gyfduoqihlcxar
801
802rbqounyt
803yuqrnobt
804
805k
806k
807
808ocjtaxknh
809nqteajo
810
811mbexguhtnzq
812sjuqedxflbpvzo
813nywuzeqxcabik
814
815rdyhsljnabg
816uzkqofaps
817
818bzsvylh
819dzfywv
820zyjvb
821
822avzxqltie
823extbiqyzva
824zivxaeqt
825zqxetiva
826iztveaxq
827
828xvz
829nqca
830khspzi
831e
832b
833
834m
835z
836z
837m
838ilnk
839
840kyl
841ky
842kya
843ktlyin
844yrske
845
846z
847ry
848y
849r
850r
851
852eqlkwoyxcsvhfdp
853xhscvjwugyfmlab
854ihfntwzslcryvx
855
856xvcegjr
857yxcksge
858jegxc
859ecgxj
860xfecg
861
862rlatcvg
863tzcqfjvkxaoh
864auteyvnipc
865
866emdvwukslifrgp
867ifrgleawspdvuk
868gsdcrvwiepukftl
869vdfiprsglwkue
870
871sde
872ew
873s
874kcmi
875
876ubcp
877b
878bih
879fb
880
881rglwpmbhey
882lbxwc
883
884jvhglanmwfcbeyuridkzpsoq
885gvyunocmjqhdzlpwakeftsirb
886yjahowdgivxzblekqnsucfmpr
887
888rpyxbztoadcl
889tauh
890at
891tavg
892sta
893
894idajwuk
895akiuwdj
896jyiwseaud
897
898vuqhyftonbges
899qnhogtbeyafs
900ysengbxqthfo
901
902ukcnqeomjdbw
903ndxkywtmquo
904hfaogsvrwlpdzim
905
906v
907vt
908
909c
910c
911
912ampurkeiqtycn
913pbfdlwytasquizmckrjneg
914teqickhuanvmrxpy
915
916qj
917qj
918bqj
919
920neswkv
921vwsjkfen
922spneawkvo
923swkenv
924
925jmazyqxftgphuden
926gnjhxbmdypafrqut
927xmqupntayfdhjg
928
929azwqbhd
930aquhbwye
931wqab
932lbqa
933astrombcvq
934
935pzqaouvrtyjbwih
936jptrhoyvqgxn
937
938uxseftzharjvncib
939hrntbaxiczkusfejv
940zbaxvnsfjcuither
941xutaensvjhbizcfr
942
943eydbqwkxsczjrfmihnlpuga
944syutawiqgnkjxclrmzdeph
945jemwauzrsliknqxpghycd
946cjnrvhusizxleqpkdgmyaw
947
948jcsuwtbivrpdzm
949pdmcrwjzbivsu
950cdmjsibpwfhuvrlqz
951ebipvtjdsmrcuwz
952rpwvmuiscbejdz
953
954crxuwedjbspizlf
955tiryzsjlcnbmd
956qrlcudwisjzb
957rihjsoclzbdaf
958
959mekcbdihzg
960ysqvcgzbwjrxak
961obzmlgtkchfdn
962
963wpklreqngztdojsba
964nkeopazqlbrdsgjt
965nplgqsbdjkewarzot
966qkcplisxonbjdhgferzavt
967
968fljxziya
969kylijfo
970
971ido
972qhd
973rdqh
974
975wqxjvlgpfabszoidunceryhmt
976zvsweftdrmyhcqjonxligkapbu
977acjzlfsmdvixbqgetrpuhwyno
978uornshfajyqcxzvmbigpwltde
979ncwrdstvjpuoebihyzgxmlafq
980
981i
982i
983
984w
985iynw
986w
987w
988dw
989
990ir
991ir
992ri
993
994rcqlpuoyh
995yqrjapu
996yraupq
997qyupar
998
999uwxarmftshpj
1000umwtzjshre
1001bwjehtrmsu
1002
1003bzkuxwqy
1004kuwbqyzx
1005
1006mnrhlsvcbaq
1007qcrhxljasbn
1008hcduzaplsnotyrq
1009ashclqrn
1010
1011edxqbszjiyhongfklm
1012eilqxykjzhnbdgms
1013jlxmseihqzkndybg
1014knlyzhsbdimqxgje
1015mykglhqenizdjsbx
1016
1017dqxvzlbnyjetiwfo
1018esdbjtnqclfyphowaz
1019
1020zlmbhvi
1021hvbzi
1022zbvih
1023esaugpzbwivnh
1024
1025qfjgzbpthodilcm
1026jcmizkgdftpqoblh
1027rgjbiqamhlzofdtpc
1028
1029onayebrqpz
1030rqyebpzoan
1031onbyrqpeza
1032
1033lyrciegthpvfajzn
1034sgjkzuxoqbw
1035
1036ahibusqrotmndvezkpwy
1037mqnhywikxzoavdgprlfu
1038
1039qrcax
1040xracq
1041lxqdrcza
1042
1043kap
1044awr
1045adu
1046a
1047a
1048
1049hridasxejplzwvm
1050kutnoyqf
1051
1052htl
1053whtl
1054hlt
1055
1056enkqgxc
1057xqcegnk
1058kmxecqgn
1059exnkqgc
1060kxqgnce
1061
1062ncqublgdxpht
1063lszcxigoertjbaqmdn
1064oclbtgdnimxq
1065
1066uhcmyri
1067mr
1068mrd
1069
1070qjxnkbcprlm
1071pcqjsmkrlx
1072rclqfjkxaum
1073
1074cz
1075fcz
1076
1077yl
1078y
1079y
1080y
1081y
1082
1083onciyxtgbrlvhwfakdsum
1084qkcnozhegvmbajyixr
1085
1086ifjhxqgekcbd
1087jfhkuc
1088jcuhfk
1089hfcjk
1090chjkfo
1091
1092vdwfpzqtlkeixu
1093fwqidktuevxplz
1094kewvtdlixquzfp
1095
1096ntyvelizqfbxcmdgj
1097qnakiemyfrpshx
1098ernwxyoqmfi
1099xhafqyemniku
1100
1101smwqlhndtupokcriyxfegvjazb
1102oecdjyuhizxrnmbwatflvp
1103rfbaxzwcnvomeljdpytihu
1104
1105vjegptfqsowax
1106tdaczwbfvjqrsmyknliuxoh
1107
1108v
1109x
1110i
1111w
1112i
1113
1114sh
1115hp
1116h
1117
1118udzqvrcbafosknlpjihwtexg
1119vlbieudchtxjozrfpkwansgq
1120tjozawesdbqpkhnuixrcgfvl
1121gabtdlehijurnxczvwskoqpf
1122
1123rjyekxacdqfmgis
1124zjoqhpvmebdiu
1125
1126vdnsbauglczjrtiqow
1127ongavlsbtrczjuwqdi
1128soncjdutlgraibwvqz
1129btavciudrslgznwjoq
1130aczitldqwgsvbjnuro
1131
1132rhlvuwyadgpiscqf
1133yqsgpikfevlrh
1134hqyrszltpgfiv
1135gvhlqirfspy
1136
1137hecgmbaytsdf
1138rqjwahzx
1139pkuinhazovxwl
1140
1141rdjtxphaefwunkgsziv
1142nswdxriztjakpfeg
1143pkaxgiwdzhvfestnruj
1144hgitjdrkznpywasfex
1145awmkrctzgjldoneipfxs
1146
1147meyvhqusdpxrfboikwztagj
1148haeibuptyomjfqdwrvxsgk
1149
1150dagcsljo
1151xwpvs
1152
1153uqs
1154fs
1155sp
1156cpqsnu
1157
1158gyxksbqjfmnviopcetw
1159acvgqhblrewst
1160
1161pinxmhofarzqbkgd
1162bihpraxmgondfkq
1163
1164zxeqvpwnchbs
1165dqpvebgshoczn
1166hdvnkqcbzspwe
1167vhqcpzesab
1168vnqcbghzsep
1169
1170kqc
1171ucjwmk
1172
1173n
1174fwn
1175gne
1176
1177stekfuxoqjwzy
1178jfdmcxaltvsi
1179
1180c
1181dcs
1182c
1183c
1184hc
1185
1186audck
1187iukc
1188zkcuif
1189
1190wj
1191f
1192fr
1193
1194c
1195c
1196c
1197c
1198c
1199
1200lhgx
1201eivdlnaxhborg
1202xghl
1203xhglc
1204xlgh
1205
1206mqase
1207amnbqo
1208mlqa
1209
1210q
1211q
1212q
1213hq
1214
1215crqlexg
1216pjxbgryi
1217grxlq
1218
1219leoh
1220scohae
1221oeh
1222hero
1223
1224bzdke
1225dktze
1226zdek
1227kzevd
1228kdzet
1229
1230zsinhduclpj
1231slznhjvupicw
1232uchnjizfspl
1233pnlhrzugjsekciy
1234jnfscphuzil
1235
1236vthmsnuxpwycladirgokz
1237psnhcoxykrgzumidwvalt
1238otunzwpymgvlhisdrcxka
1239yuoxlcsadznwihktmgvpr
1240
1241uyidejc
1242fueaijdpcyb
1243
1244nwczduye
1245ncwudzye
1246unzdewcy
1247hydznwcuge
1248
1249cyiprjdkln
1250poey
1251hypabt
1252gpsomy
1253fphy
1254
1255gypwus
1256jrsmqf
1257awkv
1258ctihxodn
1259
1260n
1261qen
1262n
1263
1264rn
1265sq
1266z
1267
1268cvuzahfgy
1269cnfyazbxe
1270
1271ygznbrfaxdmiovujsl
1272zyogvxrbmjdainluf
1273lfgdjxozuyarvimbn
1274yfjgnlmvurziaxbod
1275odbqumjvnafgrxiylz
1276
1277vmkxe
1278vefdtxk
1279eqvckoxy
1280exlkv
1281
1282ubvpqaire
1283rhvjugpem
1284wkcfeyxuznsv
1285
1286elipaymtoxjrcq
1287clukfmnreihzqtobsy
1288
1289nt
1290nt
1291tvnx
1292
1293azebispg
1294ziaybsgde
1295guzeblnishka
1296axosibgzjfec
1297ewztgasmib
1298
1299pm
1300pm
1301
1302ahmcfneqypg
1303mnhgkapyef
1304yenhpbdalfgmju
1305
1306xorshpayckgmjlqbvd
1307ficvhyxogzarjqdspklmb
1308
1309z
1310m
1311ulyhw
1312
1313rcpvaoeg
1314vpzidxojarbe
1315egzblrpaov
1316wrqkoympauh
1317
1318bqf
1319yhqsb
1320pbqw
1321bpq
1322bfqu
1323
1324afxblgjyrudnmvekqh
1325nxhbjcpidfsal
1326gjnbtdwzyxlfrhak
1327
1328mhbocqir
1329hmibocqr
1330oqrmhibc
1331oricqmhb
1332qombchir
1333
1334ky
1335yk
1336hyk
1337yk
1338
1339niogxwzmjbvufs
1340fxnujgwaoivm
1341kgsueanxotfvijw
1342lrgfxuocvihpjwnq
1343vjkafxgiuyndotw
1344
1345anfizhcmgoe
1346keicrfnzvmhoa
1347czvfmhianeo
1348
1349trovy
1350ugzybvinq
1351jpvfey
1352
1353htek
1354dncuk
1355
1356ueqjpgkn
1357tidywmxzcnr
1358osan
1359onjb
1360
1361ofwsujk
1362kwiq
1363wkb
1364qwk
1365kwebi
1366
1367orpui
1368proiu
1369uoipr
1370
1371trkigzfwaodmeqybu
1372sayuogrzbwdefkitmq
1373dzrqgoeyifuawmtsbk
1374dwfpeybktuomizargq
1375
1376tqo
1377tq
1378qt
1379qt
1380
1381sjtuezvbin
1382evzsnutijb
1383ieujnbtvzs
1384tuzvensjbi
1385
1386ervjluczbfwk
1387rlbvfkocuwzej
1388frluvwkejzcb
1389cjzkflruwvetb
1390xzlvfgukjwbhrscnde
1391
1392lrfe
1393irlf
1394wfrl
1395ulfir
1396rfl
1397
1398yadwotpf
1399
1400qtkljhmpfwnsdzvubaye
1401zoyekplhdbwunmvjqsa
1402whklqjndsmyvbauczpe
1403wjeyzcbhuanplsqrkdmv
1404
1405ismaohz
1406nozehyvwg
1407
1408sfabkpigc
1409plcgk
1410
1411hmuqgc
1412ucksg
1413cgum
1414fcug
1415gmchu
1416
1417yisfpmvdjunwzeghq
1418phfeqnxjszmvdgwiu
1419wgejshvzpqymidfun
1420
1421dirlfjqzvx
1422vxrqjtfznd
1423qwojxszdrfvp
1424qdxzvrlfj
1425rxzqfvdj
1426
1427sbkupemaqojhz
1428beuamjhokqzsp
1429eopqubmskzjah
1430pyhvjabuzkemscoq
1431
1432pmgsxjzbcvdhetiun
1433fvopxtuhydsjzgencbi
1434nvzxajpgcihutsdbe
1435egxiczqusbdhjnktrpv
1436
1437osbjan
1438n
1439rmn
1440nz
1441
1442eskfqymcnxa
1443ibusymlt
1444yljmpsvz
1445ybmds
1446
1447vrluacpomgdkitefzyb
1448gexfpiyzaruvloktm
1449frtmeakylvuogpcziq
1450avsfeikgohzyutrmlpj
1451
1452fhojbavzqmxilgyt
1453yqbhadmopgxvrljti
1454
1455w
1456kcvwe
1457g
1458suzj
1459b
1460
1461qwj
1462j
1463je
1464
1465lxauzr
1466dxblctarf
1467
1468txfuwvimnc
1469rhegosdzpk
1470
1471ruonip
1472nvaiw
1473bneiq
1474rikzn
1475zqni
1476
1477myzfxcw
1478xfyczmw
1479cfmyxozw
1480fzxcwmy
1481zfcywmx
1482
1483jzcd
1484jcd
1485
1486sk
1487sk
1488ks
1489
1490pkgwmcqisxoh
1491knrwcpxishmtgoyj
1492
1493uigypkbmcqaxen
1494drjcofvswhlzt
1495
1496kijsex
1497jpdaut
1498juczf
1499
1500trsneafvcgwxzkbp
1501xpscqrhtfeywlg
1502
1503qjrtgakfxpdbvey
1504vixbeopgmsurwykfa
1505
1506iylbjpzqdgmewus
1507dlbmruyipsejzg
1508
1509vmdpynczjs
1510cpjuvdnyzsam
1511vypjdcnmsz
1512dncypzvmswj
1513edmynczsjvp
1514
1515isafzcqtvrdywkhojxpmgube
1516wqbhkvpdnjgxzulferit
1517
1518hcnodru
1519klizonvbdh
1520sndmhaxyo
1521ngjfpohd
1522djpshuno
1523
1524hvjsbf
1525mqdvs
1526nmlvxf
1527tcvkguweoziayrp
1528
1529ykdnuqhoavrzefw
1530nisabfeokzhwvgqryu
1531nyahvqfruzkwoe
1532
1533u
1534u
1535u
1536u
1537
1538urpk
1539clfbgy
1540
1541kcvjspimowhxzqt
1542fvkarmpwiqsxzbc
1543qkswczxivpylgdm
1544pqezykcvimxsw
1545ioyqclvkuwxhpmzs
1546
1547vebntwira
1548ejwpifavm
1549yqzhascoweuvil
1550wpiegfmtajv
1551
1552rqajtfoyighbulvwcenx
1553xwovyidkzpljmngcers
1554
1555frimhksougxjq
1556stfjkqoigrnxhlmu
1557jucrqonfihxkg
1558rkfouqihgapjezdbx
1559yrwjoxvqusghkcimf
1560
1561hrnt
1562rntd
1563dtnr
1564
1565a
1566nceproam
1567ka
1568
1569z
1570zo
1571z
1572z
1573z
1574
1575wh
1576jb
1577
1578rnjewh
1579rhjew
1580hrjwe
1581rjhwe
1582jhwre
1583
1584fnyplqztgaiskmcox
1585xnckyoqmigzf
1586gnymkocqizxf
1587gxzmnfiqkcyo
1588xcyhfnozqmikg
1589
1590ckafxul
1591fujakg
1592dkwtuafp
1593ufcakvj
1594
1595jochwluqemtnxydbikasgfprvz
1596xnwkerzpibgthmvajqydfcluos
1597
1598spe
1599kv
1600
1601kr
1602c
1603c
1604c
1605
1606ohfrjpcqniblv
1607njbflvhiocqrp
1608nqbifhvjclrpo
1609
1610mgjcfpktz
1611jpfgktmc
1612cpfgjkmt
1613mkjfgpctu
1614
1615vjcyr
1616rsmv
1617vcyrk
1618vrj
1619
1620nqsvlgr
1621tlgnrsb
1622
1623jhi
1624kjih
1625jhi
1626
1627pthfdwzagysjerux
1628keulitwrbnxfpah
1629
1630rsqjn
1631sfqeurtn
1632qnrs
1633qsnr
1634snqr
1635
1636mfjhwyrxzgcbed
1637dzgewjcyqmbrnfhx
1638zxyrjfecbgwdhm
1639
1640npew
1641eznr
1642neli
1643ngfe
1644nke
1645
1646ljmbfe
1647jmflbe
1648ebmflj
1649fjbmle
1650bjefml
1651
1652hvql
1653kdpthm
1654oeiuyhsfan
1655
1656wohrc
1657hz
1658glxqb
1659rkpd
1660
1661aivbqfdghlk
1662zvlidkqbafg
1663qflagivzdkb
1664akqtvecldgbmfi
1665
1666lpgdm
1667pgmd
1668pfcmg
1669
1670aodivlrsneqxbpz
1671furbcxiqdgysnlao
1672
1673g
1674g
1675g
1676g
1677
1678aglritbeompn
1679rmcianbe
1680crmanbei
1681
1682hds
1683sdh
1684shd
1685dsh
1686
1687optduxeybrfgs
1688ufxhyqeodspztgw
1689pdgkxemulicfstn
1690dtuxjfeahpvgs
1691
1692sdyljvnmrf
1693vknwydlrm
1694upmtelixygradozcvqh
1695bmyslrvd
1696
1697xnhbglkwe
1698mysaxfckbqi
1699wbhkzpxv
1700ktjnduoxbrv
1701
1702ixgtsb
1703ajizbgvt
1704ktbxlgcip
1705
1706gt
1707tg
1708tg
1709txg
1710tg
1711
1712woy
1713wop
1714
1715qglnhukax
1716ohluktegqan
1717
1718nrwfazobyievthjpdgklx
1719pceqaghbty
1720tuyqgbmahcpse
1721
1722afpyvbxkedmwj
1723emwnxjipdfkvy
1724vbyekdxfwapmj
1725
1726cinaloh
1727hlonic
1728ilnhsco
1729colhin
1730lncihso
1731
1732ugxdniwa
1733dnwubgaix
1734
1735bxopkm
1736xkob
1737obkx
1738bkox
1739xokb
1740
1741lqcrsnvijt
1742ylrekmaiq
1743dlohriuwfxpzbg
1744
1745dmcilpebrxnkagzqtswhvf
1746gxrahicelqdfskynzptmbw
1747criamhnkxolpzsqdbwfgte
1748rpkfnvhclmqdbixzweastg
1749
1750t
1751r
1752d
1753r
1754j
1755
1756xptge
1757gpxet
1758gxtpej
1759xctgzyeup
1760eproxtg
1761
1762iodwuh
1763uwdnoih
1764ouhwid
1765hwuodi
1766
1767lzgpeimjysnhafudtbv
1768zktnlrfjxgmybcwosve
1769
1770bqk
1771xlfjopzwc
1772by
1773dvi
1774
1775chj
1776jch
1777hacjqtnx
1778
1779fgiqkwbe
1780gfbzw
1781cnauygpjrvdxsm
1782
1783o
1784o
1785ro
1786o
1787o
1788
1789cy
1790c
1791tc
1792ecy
1793
1794ewfqylsaun
1795tgdrpibxzkoj
1796
1797reagywmqpoltx
1798mcefsvzrbgx
1799xgemrfkb
1800hgexrmui
1801
1802zwgnfqsblcm
1803mqbzylegfns
1804
1805k
1806o
1807h
1808
1809ics
1810ics
1811
1812ufanbvkotzlmegchdiw
1813ufdkaoyczigbelnqmh
1814nmhekbuzlpcqfioagd
1815inmcgldboekafzuh
1816ogzfkuencqhibldma
1817
1818tevp
1819tlevp
1820eptv
1821
1822wjxurkon
1823qxjrdnokw
1824jxkwnrto
1825
1826zuibqrjvkteapdo
1827oapeizjrdlu
1828edupjihorz
1829pidnecurzoj
1830jeuidrzshpok
1831
1832jdo
1833dj
1834
1835x
1836x
1837x
1838
1839cbikoyuwlvnhe
1840kbuheoclyivnw
1841ickhnlovuwyeb
1842ehkbwocvyiuln
1843cenhibokulwyv
1844
1845caumpvyok
1846uogrthvplq
1847excunpoksv
1848
1849kxlijpgmwaqhfbo
1850pfgkzrmljxnhoa
1851
1852trmisbo
1853sbjimr
1854rmbqgndysi
1855boimlrs
1856hmouiarsb
1857
1858fwbyqo
1859tevn
1860vxjmp
1861ugdrz
1862ijcgzm
1863
1864dkai
1865ikd
1866widk
1867dwki
1868driukz
1869
1870nzmvyqba
1871amnqzubv
1872
1873iwhvx
1874tivhkx
1875vidzshr
1876vqbighpf
1877
1878qlnygosbhdtp
1879qldotfgyhpmsn
1880bngosyqltdhp
1881dptynlgoqsh
1882glohqntysdp
1883
1884kgbls
1885nigwxk
1886mgtz
1887
1888wzrh
1889aupdeo
1890ghbu
1891ntiqmkj
1892dw
1893
1894tmjibcky
1895tbcijkmy
1896bcjyimtk
1897
1898pyqtlkrzwjmbxfohaiegv
1899tzoglunifwscdk
1900
1901x
1902x
1903x
1904x
1905
1906qupnkiwvbzetyh
1907wenzmifsxdgtkqly
1908
1909ozmqecv
1910mrcnazqbhdg
1911mcqzot
1912fljkxsioqcmz
1913kzqxcm
1914
1915ideu
1916udeic
1917idu
1918widu
1919diytboujqa
1920
1921y
1922p
1923e
1924y
1925vrij
1926
1927wmacjrfvtb
1928puvgcxkhafwt
1929vbwfdtca
1930
1931xlhzeay
1932flnukvws
1933
1934r
1935r
1936r
1937r
1938r
1939
1940s
1941s
1942s
1943s
1944
1945pivre
1946eipvr
1947iepvr
1948
1949wzn
1950nwfz
1951wnz
1952
1953djeoxq
1954dxogjhq
1955neqpudxo
1956cqwtobaxklyrd
1957
1958gpvlrtdbucyjawizfxonh
1959ydhcvapgiubonrwjztxfl
1960wpuxocaiyfgkznlbvthdjr
1961zwrfivtmldpxoaucbjhnyg
1962
1963xagpvdzioyctqwufkb
1964tvybxakouwgcpizdq
1965gkcwelrthupjdaoqxvzyi
1966qagctokpxvzwudiy
1967
1968oalnbjdmwhsvciupxzykqf
1969hdlmxiyqjfboncvzpkuaws
1970nfizbdcyxsahwrjkuvpmgqlo
1971icnsbmvkyqxfhopzwudjal
1972
1973qhmz
1974qb
1975
1976nfqcoajmkugrpiltbv
1977lkqecpjrfgamvutbno
1978mraglyfonukvbpctjq
1979luvjnikfqtcorpbmga
1980
1981rkbnldoxjgiazucpmvetq
1982wmskhaqudrynlocfb
1983
1984lxahfjpyctwinesgk
1985haknfcespyilxvwjb
1986nhwsxlikfapjecy
1987hnfwpkylstjxieuac
1988entfjilhypxsckaw
1989
1990rqbsjgpn
1991sjkhbxdmvnw
1992
1993sq
1994zw
1995ia
1996z
1997
1998wyfugxnakdheivlmjsct
1999hnrjgivusekfwycdmtaqz
2000yjtpvgxmdukwiahcsenf
2001ahicfumtesjowykgdvn
2002
2003xhgdiekv
2004vxehgkdi
2005edkhgvix
2006kdhtixevg
2007
2008evctsliwqjbhuzrxpof
2009cqlbxtgpwjfvorehumi
2010
2011cvdsatreguklb
2012gtuecdarlkvsb
2013udgvcrlabeskt
2014dkueatcrbslvg
2015asudctgkbvlre
2016
2017xgfp
2018px
2019pizxa
2020epx
2021
2022cbgfhiqrwupxtsklmva
2023mgsxtfbpurawiclkqhv
2024fapxbtuqlkgwcivsmhr
2025spqmlwitcufhkvrgbax
2026
2027xsvtwcrfi
2028wvexcfrti
2029wfviacretbx
2030
2031shgbpv
2032sbpgh
2033gpbzfixush
2034
2035t
2036t
2037ukt
2038
2039duapw
2040fw
2041w
2042w
2043xmw
2044
2045iudtnpfgv
2046igfdnutv
2047gndtuvif
2048ivgundft
2049gdifteuvn
2050
2051nypodhsjctw
2052dmygicjhq
2053
2054bpdrxj
2055jevxbr
2056itarxblm
2057bxrv
2058bxeyrv
2059
2060cgns
2061gcsn
2062cdsgn
2063snbcg
2064cydngs
2065
2066oqz
2067oz
2068noz
2069omvhzs
2070odz
2071
2072ufetwbosghqarzc
2073abjklnqhgfosci
2074
2075toi
2076tcio
2077
2078uwlpanmdzceqb
2079buthjwzgmsrqxa
2080ikofjbmvtquzhawx
2081
2082fyri
2083iry
2084iyr
2085irgvhy
2086
2087cyednmbkljaut
2088caktfjmludegy
2089tmuakczjpldiyqe
2090
2091rpowcxneyfalvuzh
2092rlwzuahoxncvpefy
2093chzvfenaprsxiyouwl
2094
2095wftiyuj
2096nsetw
2097
2098w
2099xi
2100lq
2101
2102exow
2103u
2104i
2105
2106nujelpthdrkbq
2107sxkmzacgfyouw
2108
2109ebzsafxvp
2110fmrgzp
2111wyzfp
2112pgijzfm
2113
2114gmqavtzb
2115baqztmvgr
2116mbtsgvaquzxd
2117bakmvqzgt
2118tqzarmgvb
2119
2120qyedxmc
2121iaexmw
2122
2123cm
2124cm
2125mc
2126mc
2127cm
2128
2129zruilkg
2130rligzku
2131uilkrgxqz
2132lgikzhur
2133
2134r
2135tr
2136or
2137
2138fts
2139fts
2140fst
2141tsfay
2142fst
2143
2144wcbyd
2145qfdyeptm
2146
2147fiyzwouejgbh
2148jawuezocykpvsmg
2149
2150tpskydl
2151sklpdty
2152
2153kjm
2154aik
2155auk
2156ki
2157
2158wsxfctnqrijgh
2159wgicndsebfqzktrx
2160
2161djlgp
2162djgvepuw
2163jgpfd
2164
2165xhgzakdpfurm
2166gzdsomeky
2167kidgyzms
2168
2169w
2170jc
2171e
2172
2173kyigvc
2174gybvtcpik
2175ygvkic
2176kicvgy
2177
2178rqywfmcisa
2179oabmcj
2180
2181po
2182hop
2183oph
2184pe
2185
2186mozselrxb
2187sfjomkzl
2188stlomz
2189mlsjoqz
2190amoszl
diff --git a/2020/day7/haversacks.py b/2020/day7/haversacks.py
new file mode 100644
index 0000000..4f7292d
--- /dev/null
+++ b/2020/day7/haversacks.py
@@ -0,0 +1,35 @@
1import networkx as nx
2import re
3
4bagtree = nx.DiGraph()
5bagremover = re.compile(r" bags?\.?$")
6numremover = re.compile(r"^\d+ ")
7
8with open("input", "r") as baglines:
9 for line in baglines:
10 (miniroot, child_str) = list(map(str.strip, line.split("contain")))
11
12 miniroot = miniroot.replace(" bags", "")
13
14 children = list(
15 map(
16 lambda b: re.sub(numremover, "", b),
17 list(
18 map(
19 lambda a: re.sub(bagremover, "", a),
20 list(map(str.strip, child_str.split(","))),
21 )
22 ),
23 )
24 )
25
26 if "no other" in children:
27 continue
28
29 for kid in children:
30 bagtree.add_edge(kid, miniroot)
31
32lengths = dict(nx.all_pairs_shortest_path(bagtree))
33
34# we don't count the shiny gold itself
35print(len(lengths["shiny gold"]) - 1)
diff --git a/2020/day7/input b/2020/day7/input
new file mode 100644
index 0000000..820cca0
--- /dev/null
+++ b/2020/day7/input
@@ -0,0 +1,594 @@
1muted lavender bags contain 5 dull brown bags, 4 pale maroon bags, 2 drab orange bags.
2plaid aqua bags contain 1 posh violet bag, 5 pale yellow bags, 4 bright salmon bags.
3wavy lime bags contain 3 vibrant indigo bags, 1 posh gray bag.
4pale coral bags contain 5 mirrored olive bags, 2 posh salmon bags.
5faded chartreuse bags contain 1 plaid blue bag, 4 clear salmon bags, 5 muted teal bags.
6vibrant indigo bags contain 4 pale red bags, 1 vibrant violet bag.
7vibrant salmon bags contain 1 dull crimson bag, 5 dim coral bags, 4 pale salmon bags, 3 pale fuchsia bags.
8light yellow bags contain 5 clear beige bags, 3 dotted beige bags.
9muted plum bags contain 5 posh silver bags, 3 pale turquoise bags, 3 faded chartreuse bags.
10mirrored indigo bags contain 4 pale tan bags, 1 posh indigo bag, 3 shiny salmon bags, 4 wavy indigo bags.
11pale indigo bags contain 3 dark white bags.
12plaid indigo bags contain 4 mirrored teal bags.
13shiny brown bags contain 1 striped gold bag.
14drab violet bags contain 1 drab magenta bag, 5 posh orange bags, 1 mirrored brown bag, 4 wavy salmon bags.
15pale olive bags contain 2 light black bags, 2 faded tomato bags.
16dark teal bags contain 3 striped fuchsia bags.
17plaid white bags contain 4 shiny salmon bags.
18muted gold bags contain 5 faded lavender bags, 3 striped aqua bags.
19pale cyan bags contain 3 muted tan bags, 5 bright purple bags, 1 posh blue bag.
20pale tan bags contain 3 bright teal bags.
21bright aqua bags contain 5 plaid magenta bags, 5 muted lavender bags, 4 dim turquoise bags, 1 shiny turquoise bag.
22dark gold bags contain 4 dull indigo bags, 5 mirrored orange bags, 5 bright teal bags, 1 dim gold bag.
23muted salmon bags contain 3 muted gray bags, 4 pale salmon bags.
24striped plum bags contain 1 dark indigo bag, 1 vibrant violet bag.
25posh yellow bags contain 3 shiny tan bags, 4 dull lavender bags, 5 pale yellow bags.
26plaid lime bags contain 2 bright brown bags, 4 dull lavender bags.
27mirrored gray bags contain 4 mirrored teal bags, 3 muted indigo bags.
28muted olive bags contain 3 dim fuchsia bags, 2 dim salmon bags, 4 shiny maroon bags.
29dotted blue bags contain 4 plaid orange bags, 5 faded black bags, 2 muted black bags, 5 mirrored lime bags.
30wavy beige bags contain 5 dark aqua bags, 3 mirrored lavender bags, 3 drab fuchsia bags.
31shiny indigo bags contain 3 wavy black bags, 2 dull plum bags.
32drab lavender bags contain 4 mirrored chartreuse bags.
33vibrant tomato bags contain 3 wavy white bags, 1 dull plum bag.
34plaid teal bags contain 3 mirrored bronze bags.
35pale chartreuse bags contain no other bags.
36muted coral bags contain 1 striped lavender bag, 5 dotted crimson bags, 2 faded tomato bags.
37faded aqua bags contain 2 bright plum bags, 3 faded gold bags, 1 mirrored bronze bag, 2 dull lavender bags.
38pale brown bags contain 1 clear salmon bag, 4 drab tan bags, 1 light orange bag, 1 light silver bag.
39drab orange bags contain 3 faded beige bags.
40pale blue bags contain 3 pale plum bags, 3 dotted green bags, 4 dark lime bags, 5 clear beige bags.
41dull purple bags contain 5 posh aqua bags, 1 muted blue bag, 1 bright gray bag, 1 muted chartreuse bag.
42bright silver bags contain 5 dark turquoise bags, 2 dark teal bags, 1 muted tan bag, 3 vibrant tan bags.
43dim silver bags contain 4 plaid black bags.
44faded violet bags contain 5 dark maroon bags.
45pale maroon bags contain 5 dark maroon bags, 4 drab chartreuse bags.
46shiny green bags contain 1 bright chartreuse bag.
47vibrant crimson bags contain 3 dotted red bags, 2 striped violet bags, 1 light bronze bag.
48clear lavender bags contain 1 faded teal bag, 5 clear cyan bags.
49mirrored red bags contain 2 dim gray bags, 2 drab orange bags, 4 muted purple bags, 3 muted white bags.
50striped green bags contain 2 light purple bags, 4 light gold bags, 3 posh magenta bags.
51dim yellow bags contain 1 light crimson bag, 2 muted indigo bags.
52dotted orange bags contain 3 wavy salmon bags, 1 dim fuchsia bag.
53vibrant gray bags contain 1 plaid brown bag, 5 mirrored black bags, 4 plaid olive bags.
54mirrored silver bags contain 2 striped magenta bags, 3 striped coral bags.
55pale magenta bags contain 4 posh tomato bags, 4 plaid blue bags, 2 shiny gold bags, 3 faded beige bags.
56vibrant black bags contain 4 dotted brown bags.
57muted violet bags contain 1 clear tomato bag, 1 striped beige bag.
58clear salmon bags contain 1 drab chartreuse bag, 4 dotted beige bags, 5 light crimson bags, 3 dotted orange bags.
59posh indigo bags contain 3 mirrored teal bags, 5 drab gold bags.
60wavy black bags contain 5 dotted purple bags, 5 plaid chartreuse bags, 3 striped gold bags.
61mirrored lavender bags contain 2 dim black bags.
62shiny maroon bags contain 2 dotted beige bags.
63drab magenta bags contain 2 dim yellow bags.
64pale orange bags contain 1 shiny purple bag, 5 striped turquoise bags, 2 light crimson bags.
65shiny beige bags contain 5 clear white bags, 2 striped turquoise bags, 4 pale yellow bags, 1 muted black bag.
66striped cyan bags contain 2 plaid yellow bags, 2 clear teal bags, 3 wavy olive bags, 4 posh violet bags.
67dull cyan bags contain 1 striped salmon bag.
68vibrant green bags contain 4 dull coral bags, 4 drab yellow bags, 4 dark cyan bags.
69wavy cyan bags contain 5 light salmon bags, 5 dim blue bags, 2 pale green bags, 1 faded indigo bag.
70drab plum bags contain 3 dark magenta bags.
71light aqua bags contain 4 bright bronze bags, 3 wavy lavender bags, 3 dull cyan bags, 2 bright green bags.
72pale plum bags contain 5 clear plum bags.
73vibrant silver bags contain 1 dim lavender bag, 4 bright teal bags.
74wavy white bags contain 1 light crimson bag, 4 wavy salmon bags.
75shiny chartreuse bags contain 2 plaid gray bags, 5 mirrored white bags.
76dull chartreuse bags contain 1 dull cyan bag, 3 striped white bags, 4 posh indigo bags.
77clear magenta bags contain 1 plaid coral bag, 5 light plum bags, 1 bright yellow bag.
78muted white bags contain 2 dull salmon bags, 5 bright turquoise bags, 3 wavy gray bags, 1 plaid black bag.
79dull brown bags contain 3 faded lavender bags.
80muted turquoise bags contain 4 mirrored plum bags, 4 mirrored brown bags, 4 drab salmon bags, 4 mirrored tomato bags.
81posh tomato bags contain 2 drab orange bags, 4 dim lavender bags.
82shiny fuchsia bags contain 3 dull black bags, 5 wavy coral bags.
83dim gray bags contain 3 drab gray bags.
84striped olive bags contain 5 light purple bags, 5 wavy yellow bags, 1 striped fuchsia bag.
85muted maroon bags contain 2 bright white bags.
86light tomato bags contain 1 striped indigo bag, 5 plaid plum bags, 4 clear indigo bags, 4 drab tan bags.
87plaid violet bags contain 2 dim coral bags.
88striped chartreuse bags contain 2 shiny gray bags.
89mirrored white bags contain 4 striped beige bags.
90dim beige bags contain 3 wavy bronze bags, 4 vibrant silver bags, 1 striped white bag, 2 dark plum bags.
91striped violet bags contain 5 dull teal bags, 2 vibrant red bags.
92drab green bags contain 1 striped olive bag, 2 light salmon bags, 1 faded cyan bag, 3 vibrant fuchsia bags.
93clear lime bags contain 2 plaid coral bags, 1 light lavender bag, 4 posh salmon bags.
94striped indigo bags contain 2 pale maroon bags, 5 dotted aqua bags, 3 drab gray bags.
95dim blue bags contain 5 faded bronze bags, 4 dark blue bags.
96faded fuchsia bags contain 3 muted fuchsia bags, 1 light orange bag, 2 striped beige bags, 1 dotted red bag.
97plaid red bags contain 5 pale maroon bags, 3 dark beige bags, 2 striped fuchsia bags.
98drab silver bags contain 1 dim salmon bag, 2 shiny salmon bags.
99dark chartreuse bags contain 1 dull aqua bag.
100clear chartreuse bags contain 5 faded brown bags, 3 dotted aqua bags.
101plaid silver bags contain 5 pale red bags.
102wavy chartreuse bags contain 5 mirrored red bags, 1 dull teal bag.
103clear gray bags contain 5 striped salmon bags, 5 plaid silver bags, 1 clear black bag.
104shiny white bags contain 1 shiny gray bag, 5 vibrant gray bags.
105posh coral bags contain 2 muted white bags.
106light red bags contain 5 muted indigo bags, 1 wavy fuchsia bag.
107dull fuchsia bags contain 4 light plum bags, 4 faded red bags.
108dotted gold bags contain 1 plaid brown bag, 4 dotted aqua bags, 2 pale purple bags.
109faded orange bags contain 3 dotted beige bags.
110bright coral bags contain 2 dark cyan bags, 1 wavy tan bag, 1 vibrant yellow bag.
111striped brown bags contain 5 light yellow bags, 4 dull indigo bags, 4 clear maroon bags.
112light fuchsia bags contain 3 dotted gray bags, 1 striped orange bag, 1 mirrored olive bag, 2 wavy fuchsia bags.
113dotted bronze bags contain 2 dull salmon bags.
114faded red bags contain 2 posh indigo bags, 5 dotted aqua bags.
115wavy teal bags contain 3 faded tomato bags, 4 dark silver bags, 3 shiny cyan bags.
116dim tomato bags contain 4 wavy silver bags, 3 drab red bags.
117muted beige bags contain 1 bright gray bag, 1 dark red bag.
118shiny yellow bags contain 2 light plum bags.
119wavy indigo bags contain 1 faded red bag, 1 plaid yellow bag, 2 dull aqua bags.
120plaid maroon bags contain 5 vibrant beige bags.
121wavy tan bags contain 5 plaid maroon bags.
122striped coral bags contain 1 pale silver bag, 4 clear beige bags, 3 dotted aqua bags, 3 striped turquoise bags.
123shiny black bags contain 1 clear silver bag, 1 mirrored blue bag.
124muted silver bags contain 1 posh teal bag, 4 faded teal bags, 4 plaid aqua bags, 2 striped olive bags.
125pale gray bags contain 4 dotted silver bags.
126light white bags contain 2 dull salmon bags, 5 vibrant violet bags, 1 dull black bag.
127mirrored beige bags contain 3 dark teal bags, 3 wavy coral bags, 3 plaid black bags.
128mirrored tomato bags contain 5 muted bronze bags, 2 drab gold bags, 4 dark plum bags.
129dull magenta bags contain 1 wavy black bag, 5 dull gray bags.
130pale crimson bags contain 3 wavy brown bags, 5 dark green bags, 3 pale fuchsia bags.
131pale beige bags contain 3 posh black bags, 4 dotted gold bags, 1 plaid blue bag.
132dull red bags contain 2 light chartreuse bags, 1 striped tomato bag, 4 plaid green bags, 3 dull chartreuse bags.
133dotted violet bags contain 4 dark plum bags, 3 dull plum bags, 4 pale red bags.
134muted bronze bags contain 2 muted teal bags, 5 shiny purple bags, 4 pale chartreuse bags, 4 wavy salmon bags.
135dark coral bags contain 5 dull indigo bags, 1 vibrant plum bag, 2 mirrored black bags, 4 drab gold bags.
136shiny magenta bags contain 5 light turquoise bags, 4 striped olive bags.
137faded olive bags contain 2 clear white bags.
138pale aqua bags contain 2 vibrant fuchsia bags.
139vibrant yellow bags contain 4 muted teal bags, 1 mirrored teal bag.
140dotted lime bags contain 5 dotted white bags, 2 wavy aqua bags, 3 pale salmon bags.
141dark bronze bags contain 1 clear beige bag, 1 muted olive bag.
142dim lavender bags contain 1 dull indigo bag, 2 shiny purple bags, 4 dull teal bags.
143wavy gold bags contain 5 dull black bags, 1 muted fuchsia bag, 4 dark red bags, 1 light crimson bag.
144striped crimson bags contain 5 shiny gray bags, 3 mirrored crimson bags, 2 drab chartreuse bags, 4 dull aqua bags.
145dark aqua bags contain 1 bright indigo bag, 5 muted white bags, 2 shiny crimson bags, 3 mirrored orange bags.
146posh black bags contain 3 pale tan bags, 1 dim brown bag, 5 clear green bags.
147bright beige bags contain 4 dotted black bags.
148dull maroon bags contain 1 drab red bag, 4 faded turquoise bags, 1 pale olive bag.
149dull salmon bags contain 3 mirrored olive bags, 3 dull indigo bags, 1 dim brown bag, 4 shiny lime bags.
150faded purple bags contain 4 faded indigo bags.
151light beige bags contain 1 posh gray bag, 3 dotted white bags, 1 striped silver bag.
152vibrant magenta bags contain 4 drab red bags, 1 dotted white bag, 5 striped aqua bags.
153light maroon bags contain 1 dull black bag.
154light olive bags contain 3 dull tan bags.
155vibrant lime bags contain 2 dim lavender bags.
156muted aqua bags contain 3 bright olive bags, 1 muted teal bag, 3 dull crimson bags.
157dotted beige bags contain no other bags.
158dotted indigo bags contain 2 light lavender bags, 5 dark white bags, 3 wavy gray bags, 4 plaid chartreuse bags.
159drab yellow bags contain 4 mirrored aqua bags, 5 plaid olive bags, 5 dull black bags, 4 striped turquoise bags.
160light lime bags contain 3 striped turquoise bags, 4 muted coral bags, 5 muted yellow bags, 4 mirrored silver bags.
161dark crimson bags contain 2 light bronze bags, 1 vibrant chartreuse bag.
162clear plum bags contain 1 muted indigo bag, 5 dim red bags, 2 pale orange bags, 5 light black bags.
163mirrored violet bags contain 3 wavy salmon bags.
164striped silver bags contain 5 bright olive bags, 5 dim brown bags, 2 posh blue bags, 1 posh purple bag.
165posh gold bags contain 5 faded lavender bags.
166striped lime bags contain 4 striped coral bags.
167plaid tomato bags contain 2 dull white bags, 1 wavy white bag, 5 drab red bags.
168drab tan bags contain 1 mirrored bronze bag, 1 mirrored tomato bag, 2 mirrored green bags.
169posh purple bags contain 4 dull cyan bags.
170plaid blue bags contain 2 muted fuchsia bags, 1 bright teal bag, 2 pale chartreuse bags.
171dim lime bags contain 4 drab gold bags, 1 muted fuchsia bag, 1 posh tomato bag.
172dark white bags contain 2 wavy gold bags.
173bright red bags contain 4 light fuchsia bags, 1 plaid orange bag, 1 pale red bag.
174wavy blue bags contain 4 striped red bags, 1 mirrored black bag.
175light teal bags contain 1 faded orange bag, 5 muted white bags.
176shiny blue bags contain 1 drab red bag, 3 shiny brown bags, 2 dark teal bags, 2 dotted silver bags.
177bright gray bags contain 3 muted teal bags, 2 clear plum bags, 5 light olive bags, 5 dark red bags.
178bright black bags contain 5 posh yellow bags, 1 striped maroon bag.
179shiny gold bags contain 3 wavy gold bags, 2 plaid chartreuse bags, 2 shiny lime bags, 5 dull indigo bags.
180striped teal bags contain 4 dark lime bags, 4 light yellow bags, 2 dull brown bags.
181wavy coral bags contain 3 dim yellow bags, 1 clear red bag, 4 pale chartreuse bags.
182plaid chartreuse bags contain 1 striped maroon bag, 5 dotted yellow bags.
183pale turquoise bags contain 3 clear yellow bags, 2 dim coral bags.
184vibrant plum bags contain 3 dotted yellow bags.
185drab cyan bags contain 5 vibrant green bags.
186wavy crimson bags contain 1 mirrored gray bag, 2 dim teal bags.
187wavy maroon bags contain 3 pale tan bags.
188light orange bags contain 4 vibrant silver bags, 2 dim olive bags, 2 drab red bags.
189plaid brown bags contain 2 bright turquoise bags, 4 shiny tan bags, 2 dull indigo bags, 3 plaid olive bags.
190posh silver bags contain 5 wavy coral bags.
191wavy bronze bags contain 1 plaid yellow bag, 1 dim gold bag.
192shiny violet bags contain 5 plaid coral bags, 2 mirrored brown bags.
193posh lime bags contain 3 wavy bronze bags, 2 striped tomato bags, 2 pale tan bags.
194dim salmon bags contain 3 dim brown bags, 5 drab chartreuse bags.
195faded beige bags contain no other bags.
196dotted gray bags contain 5 dark lime bags, 2 posh black bags, 3 muted fuchsia bags.
197dull crimson bags contain 5 vibrant fuchsia bags.
198drab brown bags contain 5 pale maroon bags, 5 light crimson bags.
199bright blue bags contain 5 vibrant brown bags.
200bright violet bags contain 1 light white bag, 5 clear beige bags, 2 dull crimson bags.
201plaid magenta bags contain 2 light plum bags, 1 wavy white bag, 5 pale green bags, 1 bright tomato bag.
202faded silver bags contain 5 light black bags, 5 mirrored teal bags, 5 vibrant plum bags.
203wavy brown bags contain 4 faded gray bags, 3 dotted olive bags, 1 light silver bag.
204clear teal bags contain 2 mirrored black bags, 2 wavy gold bags, 2 striped red bags, 5 light silver bags.
205posh crimson bags contain 5 drab tan bags.
206clear fuchsia bags contain 4 faded tomato bags, 1 dotted beige bag.
207bright maroon bags contain 2 wavy teal bags, 2 shiny gray bags, 5 dull gray bags, 3 dull teal bags.
208drab gray bags contain 3 dark white bags, 2 pale salmon bags, 4 bright teal bags.
209vibrant brown bags contain 4 wavy salmon bags.
210bright green bags contain 2 clear cyan bags, 3 wavy lavender bags, 2 plaid blue bags, 2 faded gold bags.
211light salmon bags contain 1 muted tan bag, 5 plaid plum bags.
212plaid bronze bags contain 4 mirrored chartreuse bags, 3 plaid turquoise bags, 2 wavy orange bags, 5 dotted yellow bags.
213dull bronze bags contain 2 vibrant lime bags, 2 muted purple bags, 2 dark magenta bags.
214bright orange bags contain 4 pale violet bags, 2 light fuchsia bags, 3 dull purple bags.
215wavy fuchsia bags contain 4 dotted olive bags, 1 dull brown bag.
216mirrored olive bags contain 4 muted fuchsia bags, 4 striped turquoise bags.
217shiny salmon bags contain 2 dark white bags.
218striped tan bags contain 4 mirrored purple bags.
219dull coral bags contain 3 posh coral bags, 1 dotted green bag.
220drab teal bags contain 4 wavy yellow bags, 5 mirrored aqua bags.
221shiny tan bags contain 5 striped maroon bags, 5 vibrant red bags.
222bright crimson bags contain 1 muted magenta bag.
223shiny lime bags contain 1 faded teal bag, 1 light crimson bag.
224posh white bags contain 3 posh orange bags, 4 pale gray bags, 5 dull maroon bags, 5 plaid plum bags.
225dotted brown bags contain 1 vibrant indigo bag, 1 plaid olive bag.
226faded coral bags contain 5 muted bronze bags, 3 mirrored lavender bags.
227faded brown bags contain 1 bright turquoise bag, 3 posh indigo bags, 2 pale fuchsia bags, 3 dark indigo bags.
228vibrant aqua bags contain 2 clear beige bags, 3 posh olive bags, 3 dark turquoise bags, 2 posh magenta bags.
229dark turquoise bags contain 1 striped gold bag, 1 mirrored red bag.
230drab gold bags contain 2 clear beige bags, 4 striped turquoise bags, 1 pale orange bag, 1 clear salmon bag.
231mirrored green bags contain 4 dotted beige bags, 3 pale chartreuse bags, 3 light crimson bags.
232clear violet bags contain 3 posh orange bags, 4 faded beige bags, 3 drab red bags, 4 shiny salmon bags.
233posh plum bags contain 1 shiny white bag, 1 striped lavender bag.
234vibrant purple bags contain 5 bright teal bags.
235dark salmon bags contain 4 striped olive bags, 5 mirrored crimson bags, 5 plaid lime bags, 3 dark tomato bags.
236shiny silver bags contain 2 vibrant red bags.
237dull turquoise bags contain 3 faded crimson bags, 1 drab maroon bag, 5 drab gold bags.
238dull orange bags contain 1 dark yellow bag, 3 bright beige bags.
239bright bronze bags contain 3 posh salmon bags, 1 mirrored violet bag, 2 muted white bags, 3 dotted orange bags.
240bright teal bags contain 4 dim fuchsia bags.
241clear turquoise bags contain 1 faded teal bag, 2 dull teal bags.
242wavy magenta bags contain 4 dim teal bags, 3 mirrored bronze bags, 3 plaid plum bags, 5 wavy lavender bags.
243faded bronze bags contain 2 striped salmon bags, 3 dark red bags, 1 dark indigo bag.
244faded plum bags contain 1 clear green bag.
245faded maroon bags contain 1 striped maroon bag, 5 dim black bags, 1 vibrant indigo bag.
246muted teal bags contain 4 light crimson bags, 5 drab chartreuse bags.
247vibrant maroon bags contain 3 dark fuchsia bags, 3 plaid turquoise bags, 1 pale silver bag, 4 shiny cyan bags.
248plaid crimson bags contain 3 mirrored olive bags.
249clear tan bags contain 1 vibrant purple bag, 1 wavy aqua bag.
250clear aqua bags contain 4 bright white bags.
251striped red bags contain 3 wavy coral bags, 3 dark white bags, 4 muted fuchsia bags, 4 posh tomato bags.
252posh violet bags contain 1 muted fuchsia bag, 3 dim coral bags, 2 drab orange bags.
253plaid cyan bags contain 2 shiny indigo bags.
254light chartreuse bags contain 5 wavy tan bags, 4 clear indigo bags.
255vibrant lavender bags contain 3 light gray bags, 4 striped beige bags, 5 dark maroon bags, 3 drab fuchsia bags.
256dim red bags contain 4 pale orange bags, 3 drab chartreuse bags.
257vibrant turquoise bags contain 3 clear tomato bags, 4 posh blue bags.
258muted green bags contain 4 clear bronze bags, 3 dotted black bags, 3 dull beige bags.
259faded salmon bags contain 2 drab gold bags, 2 clear red bags, 2 dark indigo bags, 5 plaid teal bags.
260posh chartreuse bags contain 4 dotted orange bags.
261dotted turquoise bags contain 5 shiny fuchsia bags, 2 vibrant indigo bags, 3 vibrant fuchsia bags, 5 muted green bags.
262wavy turquoise bags contain 1 dark white bag, 4 posh tan bags.
263clear purple bags contain 2 vibrant gray bags, 3 dark plum bags, 1 shiny fuchsia bag, 4 plaid indigo bags.
264pale tomato bags contain 2 striped silver bags, 1 mirrored aqua bag.
265pale salmon bags contain 4 muted indigo bags, 4 faded teal bags.
266dark maroon bags contain 5 dotted orange bags, 5 faded beige bags, 3 wavy salmon bags, 5 dim lavender bags.
267faded green bags contain 3 wavy coral bags, 5 dull indigo bags, 4 dim salmon bags, 1 pale gray bag.
268bright gold bags contain 4 drab lavender bags.
269dull white bags contain 4 clear salmon bags, 2 shiny gold bags.
270drab olive bags contain 3 pale lime bags, 3 striped crimson bags, 5 plaid gray bags, 2 posh magenta bags.
271bright cyan bags contain 4 dotted black bags.
272drab beige bags contain 4 shiny yellow bags.
273dotted salmon bags contain 5 light maroon bags, 5 dotted gray bags.
274posh gray bags contain 3 dark red bags, 2 mirrored gray bags, 2 dim brown bags, 4 dotted aqua bags.
275dull gray bags contain 2 shiny beige bags, 5 posh silver bags.
276light blue bags contain 1 dim coral bag, 5 vibrant plum bags, 1 clear salmon bag, 1 clear yellow bag.
277striped gray bags contain 5 striped indigo bags, 1 faded lime bag, 2 light tomato bags.
278dark violet bags contain 1 posh gray bag, 5 shiny cyan bags, 2 pale indigo bags, 4 light coral bags.
279striped black bags contain 5 dotted maroon bags, 1 drab blue bag.
280shiny coral bags contain 1 clear yellow bag, 5 striped plum bags, 4 dull tomato bags.
281faded tan bags contain 5 vibrant bronze bags, 5 muted fuchsia bags, 1 pale coral bag, 4 dull indigo bags.
282pale white bags contain 4 clear cyan bags, 2 bright yellow bags, 4 vibrant tomato bags.
283plaid plum bags contain 5 pale violet bags, 3 posh yellow bags, 3 faded silver bags.
284bright fuchsia bags contain 5 clear black bags.
285dotted red bags contain 3 dark magenta bags, 5 clear indigo bags, 1 faded bronze bag, 4 dotted gray bags.
286plaid turquoise bags contain 2 dark indigo bags.
287pale lavender bags contain 4 posh fuchsia bags, 1 clear black bag, 4 wavy lime bags.
288bright lavender bags contain 2 wavy magenta bags, 5 plaid blue bags, 1 drab yellow bag, 1 muted gray bag.
289bright white bags contain 4 light gray bags.
290dull black bags contain 2 shiny lime bags, 3 muted indigo bags, 5 faded beige bags.
291muted tomato bags contain 2 dark yellow bags.
292plaid fuchsia bags contain 2 dull lavender bags.
293dark indigo bags contain 2 dim lavender bags, 3 shiny maroon bags.
294mirrored magenta bags contain 1 mirrored chartreuse bag.
295vibrant violet bags contain 5 dotted beige bags, 5 plaid olive bags.
296pale lime bags contain 1 vibrant silver bag, 4 shiny white bags, 2 wavy orange bags, 3 plaid coral bags.
297mirrored aqua bags contain 5 light yellow bags, 3 plaid silver bags, 2 dark white bags, 2 dull teal bags.
298striped turquoise bags contain 1 bright turquoise bag, 2 faded beige bags.
299faded indigo bags contain 2 dotted purple bags.
300plaid green bags contain 3 dim orange bags.
301dotted lavender bags contain 5 dotted crimson bags, 5 bright turquoise bags, 3 muted lavender bags, 4 mirrored olive bags.
302muted tan bags contain 2 faded orange bags, 5 mirrored gray bags, 1 faded green bag.
303dark plum bags contain 2 mirrored olive bags, 4 muted fuchsia bags, 2 shiny maroon bags, 1 dim fuchsia bag.
304light cyan bags contain 4 dotted gray bags, 4 wavy red bags, 1 dull white bag.
305striped gold bags contain 2 wavy silver bags, 2 muted purple bags, 3 wavy coral bags.
306striped white bags contain 4 wavy coral bags, 4 pale plum bags, 2 wavy black bags, 5 dim olive bags.
307mirrored yellow bags contain 3 plaid chartreuse bags, 4 muted gold bags, 1 mirrored bronze bag.
308clear tomato bags contain 3 striped indigo bags, 3 dim fuchsia bags, 2 wavy gray bags.
309faded teal bags contain no other bags.
310faded lavender bags contain 2 clear bronze bags, 3 muted teal bags, 2 dotted yellow bags, 5 shiny purple bags.
311posh lavender bags contain 5 posh gray bags.
312bright brown bags contain 2 dull crimson bags, 5 muted bronze bags, 4 dark indigo bags, 5 mirrored orange bags.
313faded crimson bags contain 3 dotted crimson bags.
314mirrored teal bags contain 1 plaid blue bag, 1 clear red bag, 5 striped turquoise bags, 4 dotted beige bags.
315dark fuchsia bags contain 1 faded green bag.
316dim coral bags contain 5 clear salmon bags, 4 dotted beige bags, 1 pale salmon bag, 2 plaid chartreuse bags.
317posh blue bags contain 3 pale maroon bags, 5 dim coral bags.
318light indigo bags contain 1 vibrant silver bag, 1 bright chartreuse bag, 1 light black bag.
319shiny lavender bags contain 4 dotted olive bags, 5 faded brown bags, 1 plaid tomato bag.
320dotted white bags contain 4 dim olive bags.
321dotted chartreuse bags contain 4 striped turquoise bags, 1 dotted silver bag.
322faded black bags contain 2 muted white bags, 3 drab teal bags, 3 wavy gray bags.
323vibrant white bags contain 4 dark white bags, 4 clear violet bags, 3 plaid magenta bags, 5 dark green bags.
324faded magenta bags contain 3 faded green bags, 4 plaid olive bags, 5 plaid brown bags, 1 wavy salmon bag.
325dull plum bags contain 3 muted purple bags.
326dim indigo bags contain 5 dotted fuchsia bags, 5 drab red bags, 1 dull green bag, 5 dim fuchsia bags.
327pale yellow bags contain 4 mirrored bronze bags.
328light violet bags contain 5 dull black bags.
329posh green bags contain 1 plaid plum bag, 3 pale violet bags, 5 muted salmon bags.
330mirrored purple bags contain 3 mirrored aqua bags, 1 plaid blue bag.
331clear orange bags contain 3 light beige bags.
332striped tomato bags contain 4 dark orange bags, 1 bright aqua bag.
333dark gray bags contain 1 posh violet bag.
334plaid beige bags contain 5 pale beige bags.
335plaid gray bags contain 3 mirrored bronze bags, 3 clear green bags, 5 dark chartreuse bags.
336mirrored coral bags contain 1 pale tan bag, 2 plaid coral bags, 5 striped bronze bags.
337dull silver bags contain 1 vibrant purple bag, 3 drab lavender bags, 2 mirrored salmon bags.
338clear yellow bags contain 1 shiny gold bag, 4 dotted beige bags, 4 dark lime bags.
339light gold bags contain 3 shiny white bags, 4 dim violet bags, 1 light olive bag.
340drab white bags contain 5 shiny lavender bags, 4 dotted lavender bags.
341faded yellow bags contain 2 dull crimson bags, 3 muted indigo bags, 2 plaid crimson bags, 3 clear green bags.
342light gray bags contain 2 plaid orange bags, 5 plaid lavender bags.
343dim bronze bags contain 1 vibrant coral bag, 1 wavy teal bag, 1 pale crimson bag.
344shiny gray bags contain 5 light lavender bags, 3 drab red bags, 1 plaid chartreuse bag.
345striped beige bags contain 3 light black bags, 1 dull teal bag.
346dotted fuchsia bags contain 3 faded indigo bags, 2 dim gray bags.
347plaid yellow bags contain 4 pale maroon bags, 5 dull black bags, 1 plaid chartreuse bag, 3 drab orange bags.
348muted orange bags contain 3 muted lavender bags.
349muted crimson bags contain 4 muted cyan bags, 1 dull plum bag.
350muted red bags contain 5 faded turquoise bags, 5 light silver bags, 5 dotted aqua bags.
351vibrant chartreuse bags contain 4 wavy violet bags, 1 plaid beige bag, 2 clear cyan bags, 2 dull lavender bags.
352pale fuchsia bags contain 3 plaid blue bags, 3 muted bronze bags, 4 faded blue bags.
353dotted tomato bags contain 4 dark tomato bags, 3 plaid orange bags, 5 posh teal bags.
354dim green bags contain 1 dull white bag.
355dim aqua bags contain 2 light silver bags, 3 faded silver bags, 3 dotted orange bags, 4 vibrant salmon bags.
356dim brown bags contain no other bags.
357muted chartreuse bags contain 2 dark coral bags, 5 striped plum bags.
358drab indigo bags contain 2 posh brown bags.
359dark orange bags contain 4 plaid blue bags, 1 dark brown bag, 2 striped indigo bags, 1 dark magenta bag.
360bright yellow bags contain 3 clear tomato bags.
361clear bronze bags contain 4 wavy salmon bags.
362dotted olive bags contain 4 striped beige bags, 3 drab orange bags, 3 bright teal bags.
363dull violet bags contain 4 plaid salmon bags, 5 faded olive bags.
364clear white bags contain 2 plaid coral bags, 1 muted indigo bag, 1 striped beige bag.
365dull tan bags contain 5 dim red bags, 5 posh gold bags, 2 clear red bags.
366mirrored plum bags contain 4 dim beige bags.
367wavy purple bags contain 2 posh silver bags, 5 shiny tan bags, 3 pale red bags, 3 dull salmon bags.
368dim black bags contain 3 light yellow bags.
369dotted coral bags contain 3 pale violet bags.
370posh bronze bags contain 1 posh tomato bag, 1 drab purple bag, 3 dim fuchsia bags, 2 bright brown bags.
371wavy salmon bags contain no other bags.
372dull blue bags contain 5 dark plum bags, 4 light yellow bags.
373faded lime bags contain 2 dim red bags, 3 drab lavender bags, 5 muted black bags, 2 light coral bags.
374vibrant coral bags contain 4 muted purple bags, 5 pale chartreuse bags, 5 dotted black bags.
375mirrored chartreuse bags contain 5 muted olive bags.
376dark lime bags contain 1 dark magenta bag.
377light coral bags contain 2 dull lavender bags.
378bright lime bags contain 2 wavy bronze bags.
379mirrored orange bags contain 1 pale salmon bag, 1 light orange bag.
380muted brown bags contain 3 clear beige bags, 1 faded salmon bag, 2 vibrant cyan bags, 4 clear white bags.
381posh orange bags contain 2 dark lime bags, 3 wavy purple bags.
382posh magenta bags contain 2 dark teal bags.
383drab salmon bags contain 5 drab tomato bags.
384muted fuchsia bags contain no other bags.
385wavy tomato bags contain 4 wavy black bags, 4 faded teal bags.
386dim chartreuse bags contain 5 drab green bags, 4 drab magenta bags.
387dotted crimson bags contain 2 dark white bags, 5 wavy black bags, 4 dull crimson bags.
388posh maroon bags contain 4 plaid silver bags, 4 vibrant lime bags, 4 posh gray bags, 3 dull maroon bags.
389dull green bags contain 5 muted tan bags, 5 drab red bags.
390clear maroon bags contain 3 faded brown bags.
391striped yellow bags contain 4 faded lavender bags, 1 wavy coral bag, 5 clear maroon bags.
392dull tomato bags contain 2 shiny white bags, 2 light silver bags, 4 dotted chartreuse bags, 4 dark brown bags.
393drab chartreuse bags contain 3 dotted beige bags, 3 pale chartreuse bags, 2 muted fuchsia bags, 5 light crimson bags.
394plaid purple bags contain 3 drab yellow bags.
395light plum bags contain 1 dotted aqua bag, 2 dark white bags.
396mirrored brown bags contain 3 mirrored teal bags, 2 dull cyan bags.
397mirrored crimson bags contain 3 dull chartreuse bags, 2 dark silver bags, 5 bright cyan bags, 4 dark tomato bags.
398dull gold bags contain 4 muted salmon bags.
399wavy olive bags contain 3 mirrored brown bags, 5 clear indigo bags.
400faded turquoise bags contain 2 clear salmon bags, 2 mirrored gray bags, 1 dark lime bag.
401bright indigo bags contain 2 faded lavender bags, 1 shiny gray bag, 4 mirrored indigo bags.
402pale teal bags contain 3 dark violet bags, 5 shiny salmon bags.
403plaid orange bags contain 5 faded green bags, 5 pale magenta bags.
404shiny crimson bags contain 5 shiny green bags, 1 bright tomato bag, 3 vibrant lime bags, 3 clear purple bags.
405muted indigo bags contain 4 dim brown bags, 1 dotted beige bag.
406dark cyan bags contain 2 striped yellow bags.
407dull teal bags contain 1 muted indigo bag, 2 drab chartreuse bags, 5 faded beige bags.
408striped fuchsia bags contain 1 mirrored teal bag, 3 dull black bags, 2 dim salmon bags, 5 wavy salmon bags.
409drab crimson bags contain 5 dim teal bags, 2 wavy red bags, 3 dark brown bags.
410dull olive bags contain 1 clear yellow bag, 4 plaid indigo bags, 4 posh tomato bags, 1 dotted orange bag.
411muted lime bags contain 2 light white bags, 5 dotted violet bags, 5 posh gold bags, 2 bright cyan bags.
412dark purple bags contain 1 light lavender bag, 2 plaid olive bags, 5 striped maroon bags, 1 dotted gold bag.
413dull yellow bags contain 5 mirrored beige bags.
414dotted maroon bags contain 3 clear salmon bags, 1 light salmon bag.
415dull beige bags contain 5 shiny fuchsia bags.
416clear green bags contain 4 muted lavender bags, 5 faded orange bags, 4 faded silver bags, 4 clear red bags.
417striped magenta bags contain 2 dotted plum bags.
418posh beige bags contain 5 vibrant maroon bags, 1 dim lavender bag.
419striped blue bags contain 3 clear turquoise bags, 3 dark purple bags, 3 shiny yellow bags, 5 clear teal bags.
420muted magenta bags contain 3 striped orange bags, 5 dim brown bags.
421vibrant orange bags contain 1 bright teal bag, 1 drab salmon bag, 5 dull silver bags.
422pale violet bags contain 4 shiny tan bags, 2 clear turquoise bags, 2 pale salmon bags, 2 dotted aqua bags.
423dotted aqua bags contain 2 striped turquoise bags, 1 dim fuchsia bag, 2 pale chartreuse bags, 2 bright turquoise bags.
424clear black bags contain 4 dotted beige bags, 1 dull brown bag, 2 dull teal bags.
425light tan bags contain 3 dotted red bags, 1 dark red bag.
426pale green bags contain 4 dull salmon bags, 4 dim brown bags.
427dim tan bags contain 2 posh silver bags, 2 dark fuchsia bags.
428plaid coral bags contain 2 vibrant plum bags, 5 vibrant red bags, 3 dim salmon bags.
429wavy lavender bags contain 2 dark gold bags, 5 plaid blue bags, 1 dim yellow bag.
430dim violet bags contain 2 clear tan bags, 5 pale magenta bags.
431dotted black bags contain 4 dark magenta bags.
432mirrored salmon bags contain 3 vibrant beige bags, 3 vibrant purple bags.
433dark green bags contain 4 dotted yellow bags, 1 faded green bag, 3 muted lavender bags.
434faded blue bags contain 4 clear turquoise bags, 1 posh indigo bag, 2 faded green bags.
435pale black bags contain 2 pale coral bags, 3 faded black bags, 3 mirrored teal bags, 4 muted chartreuse bags.
436plaid black bags contain 3 posh brown bags, 3 dark maroon bags, 1 mirrored black bag.
437dim olive bags contain 5 posh indigo bags.
438dark lavender bags contain 3 light gold bags, 5 dim purple bags.
439shiny turquoise bags contain 3 dim fuchsia bags, 4 faded silver bags, 4 dim salmon bags.
440light green bags contain 1 drab red bag.
441wavy plum bags contain 2 wavy gold bags, 5 bright tan bags.
442vibrant tan bags contain 3 drab gray bags.
443shiny orange bags contain 2 clear plum bags, 1 posh red bag.
444dull lime bags contain 3 pale silver bags.
445shiny cyan bags contain 3 shiny purple bags.
446posh brown bags contain 1 striped salmon bag, 2 dotted beige bags.
447mirrored blue bags contain 2 muted olive bags, 5 mirrored aqua bags.
448dark red bags contain 2 shiny purple bags, 4 dim salmon bags, 2 wavy salmon bags.
449wavy gray bags contain 4 striped fuchsia bags, 2 wavy salmon bags, 4 faded silver bags.
450clear gold bags contain 2 vibrant plum bags.
451dark silver bags contain 4 striped gold bags, 4 plaid teal bags, 1 pale yellow bag.
452dim cyan bags contain 4 mirrored blue bags, 1 vibrant red bag, 5 shiny indigo bags, 5 muted gray bags.
453bright chartreuse bags contain 4 light yellow bags, 3 faded lavender bags.
454dotted green bags contain 3 pale indigo bags, 3 drab gray bags, 2 dark white bags, 4 light yellow bags.
455vibrant bronze bags contain 5 light white bags, 1 dim lime bag, 5 dim brown bags, 5 plaid coral bags.
456muted purple bags contain 3 dark maroon bags.
457bright salmon bags contain 3 clear beige bags.
458mirrored lime bags contain 1 wavy coral bag, 1 mirrored gray bag.
459faded cyan bags contain 2 pale bronze bags, 3 vibrant plum bags.
460dull aqua bags contain 2 dark coral bags, 3 clear turquoise bags.
461posh aqua bags contain 1 pale teal bag, 2 dim coral bags.
462wavy aqua bags contain 2 posh indigo bags, 4 shiny cyan bags, 3 muted tan bags.
463dark magenta bags contain 1 pale red bag, 1 dull brown bag, 3 faded lavender bags.
464striped lavender bags contain 4 striped gold bags, 3 mirrored olive bags, 2 dim lime bags, 1 muted indigo bag.
465bright turquoise bags contain no other bags.
466dim teal bags contain 5 dark white bags, 2 faded chartreuse bags, 1 striped beige bag, 4 muted gold bags.
467wavy yellow bags contain 4 pale fuchsia bags.
468muted black bags contain 1 striped salmon bag, 1 shiny gold bag, 3 plaid gray bags.
469dark beige bags contain 3 wavy gray bags, 5 dim red bags.
470mirrored tan bags contain 2 faded purple bags, 4 faded lime bags, 5 dull lavender bags, 4 dark plum bags.
471vibrant teal bags contain 1 dark teal bag, 4 dotted chartreuse bags.
472bright plum bags contain 1 vibrant silver bag.
473dotted purple bags contain 3 faded beige bags, 3 muted lavender bags.
474faded tomato bags contain 1 muted olive bag, 5 faded orange bags, 5 light yellow bags.
475light crimson bags contain no other bags.
476drab fuchsia bags contain 2 vibrant silver bags, 1 dim fuchsia bag, 3 clear plum bags, 1 drab gold bag.
477muted blue bags contain 1 dotted silver bag, 5 dull beige bags, 3 posh silver bags.
478dark brown bags contain 1 clear red bag, 2 light yellow bags, 1 wavy gold bag, 2 plaid olive bags.
479dim gold bags contain 4 dotted purple bags, 3 plaid blue bags.
480dim crimson bags contain 5 muted magenta bags.
481shiny teal bags contain 1 dotted bronze bag, 4 vibrant teal bags, 4 pale blue bags.
482drab blue bags contain 3 dark salmon bags.
483bright olive bags contain 5 pale fuchsia bags.
484mirrored gold bags contain 2 posh brown bags, 2 bright purple bags, 5 shiny cyan bags.
485dim turquoise bags contain 4 pale cyan bags, 2 mirrored violet bags.
486clear silver bags contain 4 dark plum bags, 4 pale gray bags, 5 mirrored bronze bags.
487clear olive bags contain 4 muted green bags.
488drab lime bags contain 3 dotted aqua bags, 2 faded blue bags, 3 faded salmon bags, 3 dim yellow bags.
489dim fuchsia bags contain no other bags.
490mirrored black bags contain 1 dark white bag.
491clear cyan bags contain 3 plaid chartreuse bags, 3 plaid teal bags, 5 dark gold bags, 5 dim lime bags.
492bright tomato bags contain 4 dark green bags.
493dim white bags contain 2 shiny yellow bags, 1 pale maroon bag.
494light turquoise bags contain 5 posh blue bags, 2 light fuchsia bags.
495shiny olive bags contain 5 vibrant white bags, 3 dark salmon bags, 5 dotted tan bags.
496striped maroon bags contain 1 mirrored olive bag.
497striped salmon bags contain 3 muted indigo bags, 5 wavy salmon bags, 4 shiny maroon bags, 4 dim fuchsia bags.
498striped orange bags contain 2 dotted purple bags, 4 shiny cyan bags, 1 drab gold bag, 4 dark beige bags.
499posh olive bags contain 3 faded tomato bags, 5 posh blue bags, 1 clear red bag.
500shiny plum bags contain 3 pale purple bags, 3 dim beige bags.
501dark olive bags contain 4 dull coral bags.
502dotted teal bags contain 5 plaid lavender bags, 4 clear bronze bags, 4 dim lime bags, 3 pale maroon bags.
503clear brown bags contain 2 wavy teal bags, 1 faded green bag, 5 light white bags.
504clear crimson bags contain 4 pale turquoise bags, 5 plaid green bags, 3 shiny aqua bags, 5 wavy turquoise bags.
505mirrored maroon bags contain 5 bright coral bags, 5 drab orange bags.
506wavy violet bags contain 4 mirrored tomato bags, 4 striped gold bags.
507plaid olive bags contain 3 dotted silver bags.
508light purple bags contain 2 dark red bags, 5 dull cyan bags, 4 plaid black bags.
509wavy orange bags contain 1 dim green bag, 4 dark coral bags.
510vibrant red bags contain 4 posh brown bags.
511wavy silver bags contain 5 faded orange bags, 2 wavy coral bags, 4 faded silver bags.
512dark tan bags contain 3 mirrored brown bags, 2 bright plum bags, 2 plaid silver bags.
513vibrant blue bags contain 1 wavy salmon bag, 5 pale green bags.
514shiny bronze bags contain 5 wavy white bags, 1 dim indigo bag, 5 muted crimson bags, 5 shiny lime bags.
515clear red bags contain 1 dotted aqua bag, 3 pale chartreuse bags, 2 muted teal bags, 5 posh brown bags.
516dotted silver bags contain 2 dark maroon bags, 3 dim brown bags.
517bright tan bags contain 1 posh black bag, 5 striped orange bags, 5 drab gold bags.
518drab red bags contain 5 posh gray bags.
519striped purple bags contain 1 striped silver bag, 1 pale blue bag, 4 mirrored black bags.
520striped bronze bags contain 2 striped gold bags, 5 light crimson bags, 5 faded tomato bags, 3 wavy indigo bags.
521pale red bags contain 2 mirrored olive bags, 5 faded orange bags, 4 faded chartreuse bags, 2 plaid chartreuse bags.
522dim plum bags contain 4 vibrant coral bags, 3 clear purple bags, 3 dull blue bags.
523muted yellow bags contain 2 clear red bags, 3 pale plum bags.
524posh salmon bags contain 3 pale tan bags, 3 wavy gold bags.
525mirrored bronze bags contain 4 faded bronze bags, 1 clear black bag, 5 dark white bags.
526muted cyan bags contain 2 dim plum bags.
527vibrant fuchsia bags contain 1 faded teal bag, 2 muted teal bags, 3 pale chartreuse bags, 3 bright teal bags.
528mirrored fuchsia bags contain 4 dull red bags, 1 light cyan bag, 3 wavy crimson bags, 3 wavy yellow bags.
529clear indigo bags contain 5 clear bronze bags, 4 dark coral bags, 4 drab chartreuse bags.
530pale bronze bags contain 2 faded salmon bags, 1 shiny black bag, 3 pale yellow bags, 3 dotted chartreuse bags.
531pale purple bags contain 4 mirrored black bags, 1 vibrant silver bag, 2 striped beige bags, 5 dotted chartreuse bags.
532muted gray bags contain 4 shiny purple bags, 4 light green bags, 1 pale fuchsia bag.
533clear blue bags contain 5 dotted olive bags, 4 light purple bags.
534posh cyan bags contain 5 muted tan bags, 1 dotted cyan bag, 4 wavy gold bags.
535bright purple bags contain 4 wavy salmon bags, 1 dark teal bag, 4 pale yellow bags.
536drab aqua bags contain 1 vibrant red bag.
537pale silver bags contain 4 light lavender bags, 2 mirrored bronze bags, 1 striped teal bag.
538dark blue bags contain 3 dull beige bags, 4 faded salmon bags, 1 dull black bag, 5 posh salmon bags.
539plaid tan bags contain 1 plaid lavender bag, 5 pale lavender bags, 4 light aqua bags.
540posh tan bags contain 3 dotted lime bags.
541drab maroon bags contain 5 mirrored chartreuse bags.
542dim magenta bags contain 1 pale fuchsia bag, 2 light fuchsia bags, 5 bright bronze bags, 1 faded gray bag.
543shiny purple bags contain 2 pale chartreuse bags.
544drab turquoise bags contain 4 light turquoise bags.
545light bronze bags contain 2 posh black bags, 3 dark yellow bags, 3 faded plum bags.
546plaid gold bags contain 4 dark teal bags, 4 shiny plum bags.
547dim maroon bags contain 2 clear plum bags, 3 striped aqua bags, 2 striped teal bags.
548drab coral bags contain 3 faded chartreuse bags, 2 drab plum bags, 3 faded red bags, 1 dark blue bag.
549faded gray bags contain 3 pale gray bags, 2 dull beige bags, 5 wavy indigo bags.
550dotted magenta bags contain 2 light salmon bags.
551light magenta bags contain 3 posh yellow bags, 3 dotted green bags, 1 drab violet bag.
552dotted cyan bags contain 2 faded plum bags.
553dim orange bags contain 5 light brown bags, 5 bright yellow bags.
554posh teal bags contain 1 faded beige bag, 5 mirrored gold bags, 5 bright teal bags.
555dim purple bags contain 2 light silver bags, 5 muted red bags, 1 mirrored gold bag, 2 posh orange bags.
556shiny tomato bags contain 3 striped coral bags, 3 dark plum bags, 5 plaid turquoise bags.
557vibrant olive bags contain 3 vibrant lime bags, 5 mirrored white bags, 1 pale bronze bag, 2 striped cyan bags.
558dull lavender bags contain 5 muted gold bags, 5 pale maroon bags.
559light black bags contain 1 dark plum bag, 1 shiny gold bag.
560bright magenta bags contain 3 striped turquoise bags, 3 dim gray bags.
561drab tomato bags contain 3 vibrant purple bags, 4 shiny purple bags, 2 light maroon bags.
562posh turquoise bags contain 2 bright aqua bags, 2 striped salmon bags, 5 muted green bags.
563dotted yellow bags contain 3 dark red bags, 3 wavy gold bags.
564plaid lavender bags contain 4 striped turquoise bags, 1 dotted olive bag, 1 clear green bag, 4 shiny beige bags.
565drab black bags contain 5 dotted magenta bags, 2 drab yellow bags, 2 striped turquoise bags, 1 dark bronze bag.
566clear beige bags contain 4 striped salmon bags.
567light lavender bags contain 1 wavy silver bag, 1 dark indigo bag.
568posh red bags contain 4 muted olive bags, 3 light tan bags, 4 clear gray bags, 2 dim lime bags.
569clear coral bags contain 3 light lime bags, 2 posh violet bags.
570plaid salmon bags contain 2 pale yellow bags, 5 dark plum bags.
571pale gold bags contain 2 striped teal bags, 3 faded crimson bags.
572wavy red bags contain 4 faded green bags, 5 dim coral bags, 4 wavy silver bags, 4 plaid brown bags.
573faded white bags contain 2 posh tomato bags, 1 posh green bag, 4 vibrant lavender bags.
574dull indigo bags contain 3 muted olive bags, 4 shiny purple bags, 3 drab chartreuse bags, 1 dotted orange bag.
575wavy green bags contain 3 pale indigo bags, 1 striped purple bag, 5 dotted coral bags, 1 shiny tan bag.
576shiny red bags contain 4 pale fuchsia bags, 2 posh salmon bags.
577vibrant cyan bags contain 1 faded salmon bag, 1 faded black bag, 4 striped coral bags.
578dark tomato bags contain 3 clear maroon bags, 4 plaid maroon bags, 5 dotted aqua bags.
579vibrant gold bags contain 1 shiny fuchsia bag.
580dark black bags contain 2 wavy lime bags, 1 pale cyan bag, 4 posh brown bags.
581posh fuchsia bags contain 4 pale purple bags, 2 dull lavender bags.
582light silver bags contain 2 vibrant plum bags, 2 pale magenta bags, 4 pale chartreuse bags, 3 plaid chartreuse bags.
583dark yellow bags contain 1 dotted crimson bag, 3 faded orange bags, 5 posh teal bags, 1 clear plum bag.
584mirrored turquoise bags contain 2 muted teal bags.
585drab purple bags contain 5 dotted plum bags, 1 plaid plum bag.
586dotted tan bags contain 1 pale plum bag, 1 dotted aqua bag.
587drab bronze bags contain 4 vibrant red bags, 4 light blue bags.
588mirrored cyan bags contain 1 dark white bag, 4 dark lime bags, 5 vibrant silver bags.
589shiny aqua bags contain 5 wavy plum bags, 4 drab maroon bags, 2 drab chartreuse bags.
590striped aqua bags contain 1 plaid blue bag, 1 dark plum bag, 4 faded lavender bags.
591dotted plum bags contain 5 mirrored green bags, 1 dark plum bag, 4 dark maroon bags.
592faded gold bags contain 4 pale yellow bags.
593vibrant beige bags contain 2 light lavender bags, 3 faded indigo bags.
594light brown bags contain 3 drab brown bags, 4 dark violet bags, 3 faded indigo bags.
diff --git a/2020/day7/inside_shiny.py b/2020/day7/inside_shiny.py
new file mode 100644
index 0000000..00df40b
--- /dev/null
+++ b/2020/day7/inside_shiny.py
@@ -0,0 +1,45 @@
1import networkx as nx
2import re
3
4
5def fits_in(root):
6 """recursively count the number of bags that fit in other bags
7
8 :root: the node to count bags from
9 :returns: total
10
11 """
12 total = 1
13 for neighbour in bagtree[root]:
14 total += int(bagtree[root][neighbour]["weight"]) * fits_in(neighbour)
15 return total
16
17
18bagtree = nx.DiGraph()
19bagremover = re.compile(r" bags?\.?$")
20countandbag = re.compile(r"(\d+) (\w+ \w+)")
21
22with open("input", "r") as baglines:
23 for line in baglines:
24 (miniroot, child_str) = list(map(str.strip, line.split("contain")))
25
26 miniroot = miniroot.replace(" bags", "")
27
28 children = list(
29 map(
30 lambda a: re.sub(bagremover, "", a),
31 list(map(str.strip, child_str.split(","))),
32 )
33 )
34
35 if "no other" in children:
36 continue
37
38 for kid in children:
39 matches = re.match(countandbag, kid)
40 bagtree.add_edge(miniroot, matches.groups()[1], weight=matches.groups()[0])
41
42lengths = dict(nx.all_pairs_shortest_path(bagtree))
43
44# we don't count the shiny gold itself
45print(fits_in("shiny gold") - 1)
diff --git a/2020/day8/gamechild.py b/2020/day8/gamechild.py
new file mode 100644
index 0000000..3763c78
--- /dev/null
+++ b/2020/day8/gamechild.py
@@ -0,0 +1,55 @@
1boot_code = list()
2
3
4def gameon(acc, cx, sf):
5 """emulates the game until a loop or the end"""
6
7 while cx not in sf:
8 sf.add(cx)
9
10 if cx == len(boot_code):
11 print(acc)
12 exit(0)
13
14 if boot_code[cx][0] == "acc":
15 acc += boot_code[cx][1]
16 elif boot_code[cx][0] == "jmp":
17 cx += boot_code[cx][1] - 1
18 else: # nop
19 pass
20
21 cx += 1
22
23
24with open("input", "r") as file:
25 for line in file:
26 line = line.strip()
27 oparg = line.split(" ")
28 boot_code.append((oparg[0], int(oparg[1])))
29
30
31cursor = 0
32accumulator = 0
33sofar = set()
34
35# we are allowed to keep a 'main' branch and keep jmp/nops separate because
36# task calls for only one instruction change over the whole code
37
38while cursor not in sofar:
39 sofar.add(cursor)
40
41 if boot_code[cursor][0] == "acc":
42 accumulator += boot_code[cursor][1]
43 elif boot_code[cursor][0] == "jmp":
44 # one for the jmp
45 gameon(accumulator, cursor + boot_code[cursor][1], sofar.copy())
46 # one for the nop
47 gameon(accumulator, cursor + 1, sofar.copy())
48 cursor += boot_code[cursor][1] - 1
49 elif boot_code[cursor][0] == "nop":
50 # one for the nop
51 gameon(accumulator, cursor + 1, sofar.copy())
52 # one for the jmp
53 gameon(accumulator, cursor + boot_code[cursor][1], sofar.copy())
54
55 cursor += 1
diff --git a/2020/day8/handheld.py b/2020/day8/handheld.py
new file mode 100644
index 0000000..6197a2f
--- /dev/null
+++ b/2020/day8/handheld.py
@@ -0,0 +1,27 @@
1boot_code = list()
2with open("input", "r") as file:
3 for line in file:
4 line = line.strip()
5 oparg = line.split(" ")
6 boot_code.append((oparg[0], int(oparg[1])))
7
8
9cursor = 0
10
11accumulator = 0
12
13sofar = set()
14
15while cursor not in sofar:
16 sofar.add(cursor)
17
18 if boot_code[cursor][0] == "acc":
19 accumulator += boot_code[cursor][1]
20 elif boot_code[cursor][0] == "jmp":
21 cursor += boot_code[cursor][1] - 1
22 else:
23 pass
24
25 cursor += 1
26
27print(accumulator)
diff --git a/2020/day8/input b/2020/day8/input
new file mode 100644
index 0000000..a73cabd
--- /dev/null
+++ b/2020/day8/input
@@ -0,0 +1,642 @@
1acc +40
2acc -14
3nop +386
4jmp +262
5acc -4
6nop +25
7jmp +500
8acc +13
9acc -1
10acc -7
11acc +37
12jmp +319
13acc +46
14jmp +429
15acc -4
16acc -8
17jmp +335
18acc +12
19jmp +78
20acc +16
21acc -11
22nop +137
23acc +41
24jmp +210
25jmp +83
26acc +7
27jmp +48
28nop +374
29acc +11
30jmp +268
31acc +1
32acc -17
33acc +15
34jmp +178
35acc +23
36jmp -5
37jmp +374
38acc +8
39acc +5
40nop +231
41jmp +1
42jmp -22
43acc +44
44acc +39
45jmp +415
46acc +44
47acc -8
48acc -10
49jmp +36
50nop +385
51acc +6
52jmp -37
53nop +245
54acc +5
55jmp +261
56acc -3
57jmp +23
58acc +37
59jmp +532
60acc -18
61acc -8
62nop +405
63jmp +499
64acc -1
65acc +3
66acc +47
67acc +38
68jmp +67
69jmp -9
70acc +16
71acc -4
72acc +23
73acc +6
74jmp -14
75jmp +229
76nop +235
77acc +3
78acc +17
79jmp +521
80acc +49
81acc -8
82acc +10
83jmp +103
84jmp +75
85acc +22
86nop +527
87acc +36
88acc +32
89jmp -46
90nop +434
91jmp +447
92jmp +159
93acc +37
94acc -19
95acc +39
96jmp +181
97jmp +1
98jmp +162
99jmp +1
100acc +0
101acc +0
102acc +34
103jmp +241
104acc +42
105acc +12
106jmp -75
107jmp -70
108acc +42
109acc -4
110acc +49
111jmp +456
112jmp +277
113jmp +302
114acc +45
115acc +19
116nop -41
117jmp +318
118jmp +153
119acc +9
120nop +323
121jmp -113
122nop -9
123jmp +1
124acc +37
125acc +12
126jmp +448
127acc +3
128acc +38
129jmp -114
130acc +7
131jmp +180
132acc -5
133acc -10
134jmp +117
135jmp +320
136acc +9
137jmp +330
138acc +18
139jmp +1
140jmp +330
141nop +450
142acc +10
143jmp +22
144acc +44
145jmp +298
146acc +38
147nop +433
148acc +1
149jmp +431
150jmp +339
151nop +251
152jmp -126
153nop +191
154jmp +294
155acc -7
156acc +30
157acc -15
158jmp +400
159jmp +441
160acc +5
161acc +17
162nop +35
163nop +103
164jmp +410
165nop -122
166acc +35
167jmp +73
168acc -13
169jmp +291
170acc -11
171jmp +95
172acc -12
173acc +19
174acc -16
175acc +34
176jmp +140
177acc -15
178acc +6
179acc -4
180jmp +190
181acc +11
182acc +0
183acc +19
184acc +43
185jmp +167
186acc +29
187nop +371
188jmp +1
189jmp -36
190acc +20
191acc +20
192acc +26
193jmp +374
194jmp -76
195acc +20
196jmp +115
197acc +13
198acc +25
199acc +39
200jmp -115
201acc -18
202nop -64
203jmp +133
204acc -18
205acc +32
206nop -198
207jmp -157
208acc +6
209acc +41
210nop +36
211jmp -136
212jmp +1
213jmp +41
214acc -14
215acc -17
216acc +1
217jmp +280
218jmp +1
219jmp +72
220acc +7
221jmp +1
222acc -12
223acc -8
224jmp +291
225acc -13
226acc +36
227acc +0
228jmp +97
229acc +20
230acc +0
231acc +12
232acc -16
233jmp -196
234nop +342
235jmp -122
236acc +21
237nop -33
238acc +38
239jmp +285
240acc -9
241acc -17
242acc -2
243acc +25
244jmp +232
245jmp +146
246jmp +312
247acc +11
248nop -54
249nop +351
250jmp -46
251acc +27
252jmp -244
253jmp +262
254acc +42
255acc +5
256nop +4
257acc +20
258jmp +239
259jmp -62
260nop -147
261jmp -169
262acc -12
263acc +40
264acc +29
265jmp +178
266nop +310
267jmp +49
268acc -18
269acc +5
270jmp +297
271jmp +244
272acc +31
273acc +21
274acc +47
275acc +41
276jmp +76
277acc +29
278acc +22
279acc +16
280jmp -121
281jmp -244
282acc +45
283acc -9
284acc +36
285acc +5
286jmp +265
287acc +13
288acc +47
289acc -11
290jmp +338
291acc +0
292jmp +85
293acc +18
294acc +27
295jmp +1
296acc +43
297jmp +227
298jmp +276
299acc +42
300nop +52
301acc -15
302nop +311
303jmp -199
304acc +45
305jmp +286
306acc -8
307acc +7
308acc +9
309acc -18
310jmp -273
311acc +50
312jmp +239
313nop +31
314acc +16
315jmp -162
316acc +12
317nop -204
318acc +27
319jmp -166
320acc -4
321acc +38
322acc +50
323nop +120
324jmp +243
325acc +29
326jmp -300
327acc +0
328nop +179
329acc -6
330jmp -136
331nop -305
332acc +15
333jmp -136
334acc -6
335jmp +172
336jmp +41
337acc -7
338nop +81
339jmp +199
340jmp +54
341acc +1
342acc +25
343jmp -283
344nop -132
345acc +47
346jmp +239
347acc +45
348acc -14
349acc +1
350acc +0
351jmp +10
352acc -15
353nop -338
354nop -257
355jmp +1
356jmp -218
357acc +36
358acc +33
359acc +28
360jmp -230
361acc -5
362acc -14
363jmp +1
364jmp -87
365acc +48
366nop +141
367nop +224
368acc +42
369jmp +22
370nop +140
371acc +16
372jmp +1
373acc +16
374jmp -92
375acc +37
376jmp -368
377acc +27
378jmp +155
379acc +11
380nop +196
381acc +5
382jmp -269
383nop -92
384jmp -276
385acc +46
386acc +6
387acc +34
388jmp -258
389jmp +2
390jmp +80
391jmp +36
392acc +20
393jmp -181
394nop -54
395acc +48
396nop +166
397nop +165
398jmp -263
399acc +47
400acc +33
401jmp +54
402nop -216
403acc +37
404acc +19
405jmp -349
406acc +12
407nop -156
408nop +7
409acc -5
410jmp -390
411acc -10
412jmp -315
413nop -393
414jmp -89
415jmp +1
416jmp -312
417acc +4
418jmp -120
419acc -2
420nop +23
421acc +42
422acc +28
423jmp -205
424acc +43
425acc +6
426jmp -49
427acc -13
428acc +1
429acc +10
430acc +19
431jmp -394
432acc -15
433acc +0
434jmp -365
435acc +23
436acc -17
437nop +23
438acc +0
439jmp -37
440acc +9
441acc +31
442jmp -7
443jmp -278
444nop +147
445acc +5
446acc +43
447jmp -149
448nop -65
449acc +19
450acc +46
451jmp +59
452acc +29
453nop +169
454jmp +131
455acc +43
456acc +50
457jmp +10
458acc -4
459jmp -390
460acc +24
461jmp -236
462acc +10
463acc +19
464nop -160
465acc +32
466jmp +162
467acc +29
468jmp +170
469jmp -14
470acc +36
471jmp -88
472acc +2
473acc +1
474acc +1
475jmp -86
476nop +48
477acc +21
478jmp -356
479acc +0
480nop -321
481nop -247
482nop +127
483jmp -279
484jmp +40
485acc +23
486acc +47
487acc +6
488jmp -438
489acc +26
490acc +35
491nop +120
492acc +2
493jmp -58
494acc +30
495acc +2
496jmp +42
497acc +8
498acc +24
499acc +9
500acc +19
501jmp -351
502acc +40
503acc +18
504acc +43
505acc +29
506jmp +9
507jmp +1
508jmp -210
509jmp -82
510acc +41
511acc +45
512jmp -28
513nop -395
514jmp +71
515acc +38
516acc -13
517nop -251
518acc -9
519jmp -366
520acc +34
521acc +7
522acc -7
523jmp -212
524acc +6
525acc +24
526acc +1
527acc -11
528jmp +94
529acc +20
530acc -14
531acc -5
532jmp +81
533acc +37
534jmp +77
535acc -15
536nop -486
537jmp +39
538jmp +1
539acc +39
540acc +49
541jmp -371
542acc +5
543nop -446
544jmp -267
545acc +39
546jmp +67
547acc +35
548acc +8
549nop -419
550jmp -53
551acc +20
552acc -9
553acc +46
554acc +30
555jmp -136
556acc +35
557jmp +56
558jmp +70
559acc +13
560acc +48
561jmp -290
562acc -18
563acc +48
564acc +50
565jmp -225
566jmp -226
567acc +34
568jmp -391
569acc +49
570nop -324
571acc -10
572acc +41
573jmp -130
574jmp +6
575jmp -555
576acc -17
577jmp -433
578acc +33
579jmp -64
580jmp -476
581nop -138
582nop -556
583acc +47
584jmp +27
585jmp -78
586acc -16
587acc -4
588acc -3
589acc +48
590jmp -292
591acc +43
592acc +3
593acc +44
594jmp +15
595acc +49
596acc +5
597acc +4
598acc +27
599jmp -491
600acc +6
601acc +38
602acc +31
603nop -70
604jmp -379
605acc +0
606acc +2
607acc +49
608jmp -297
609jmp -405
610jmp -72
611jmp -371
612jmp -115
613acc +7
614acc -15
615acc -9
616jmp -486
617acc +3
618acc +16
619nop -19
620acc +14
621jmp -296
622jmp -233
623acc +40
624nop -342
625nop -58
626acc -9
627jmp -316
628acc +4
629acc +15
630acc +14
631acc +50
632jmp -296
633acc -11
634acc +14
635acc +43
636acc +38
637jmp -391
638acc +43
639acc +25
640acc -5
641acc +27
642jmp +1
diff --git a/2020/day9/input b/2020/day9/input
new file mode 100644
index 0000000..c27e1a4
--- /dev/null
+++ b/2020/day9/input
@@ -0,0 +1,1000 @@
130
217
344
45
510
633
719
831
922
1025
1139
1249
131
1426
1538
1636
1714
1827
1915
2050
2128
2241
2320
2434
2518
266
2724
2816
2911
3081
317
328
3363
3465
3558
369
37109
3810
3913
4026
4186
4217
4357
4432
4514
4615
4742
4822
4921
5030
5140
5239
5328
5437
5520
5616
5718
5824
5919
6023
6135
6233
6325
6456
6529
6631
6734
6892
6975
7064
7161
7236
7338
7441
7542
7678
7743
7839
7944
8048
8137
8297
8359
8455
8562
8658
87106
88105
8979
9060
9187
9293
9373
94114
9574
9675
97149
98116
9999
100108
10182
10276
103162
10481
105110
106118
107150
108113
109220
110120
111131
112133
113213
114134
115142
116147
117148
118196
119221
120156
121151
122157
123181
124175
125242
126158
127186
128214
129384
130233
131231
132244
133251
134253
135254
136352
137467
138276
139281
140347
141304
142299
143308
144313
145307
146309
147315
148475
149783
150389
151575
152400
153445
154464
155477
156482
157624
158504
159851
160622
1611079
162923
1631251
164704
165603
166606
167795
168620
1691158
170616
171773
172715
173789
1741477
175834
1761794
177845
178909
179941
180986
1811318
1821695
1831981
1841209
1851219
1861222
1871223
1881226
1891307
1902304
1912012
1921236
1931549
1941331
1951786
1961488
1971504
1982649
1992272
2001679
2013183
2022727
2032131
2042177
2052195
2062428
2072431
2083667
2092432
2102445
2112905
2123874
2132543
2142567
2152724
2162785
2174862
2183932
2193635
2202992
2213167
2224584
2234563
2245423
2255159
2264308
2274326
2284859
2296521
23010285
2316080
2325110
2334877
2344975
2354988
2365267
2375291
2387895
23910153
2407773
2415777
2427730
2436627
24413196
2457751
24610887
2478892
2488634
2499167
2509185
2519314
2529203
25310126
2549963
2559865
25610255
2579852
25810144
25910242
26010279
26116492
26211068
26314378
26412404
26514944
26613507
26716622
26815261
26916385
27016954
27117526
27217801
27317819
27425695
27518388
27618517
27728796
27820534
27919717
28019996
28120131
28220094
28326734
28420521
28524657
28623472
28726012
28841995
28935392
29028451
29133339
29243119
29334186
29447184
29534773
29638611
29735620
29845729
29940251
30062126
30139811
30239713
30358328
30439848
30544653
30643993
30740615
30856141
30955294
31048129
31151923
31261404
31389480
31483706
31561790
316102321
31795989
31868959
31970393
32073384
32174231
32275333
32379524
32479561
325114846
32679659
32780328
32880463
32983841
33084608
33188744
33292538
333100052
334107217
335109533
336113327
337131797
338130749
339179711
340136021
341144292
342172099
343139352
344257619
345272151
346149564
347154857
348159085
349352479
350164304
351159987
352207269
353176379
354168449
355231890
356181282
357244344
358340548
359291784
360276089
361268184
362262546
363275041
364275373
365280313
366283644
367429877
368318013
369304421
370495405
371308649
372366354
373323389
374328436
375324291
376336366
377344828
378491838
379460233
380544273
381425626
382519385
383607033
384543225
385537587
386551828
387642304
388550414
389555686
390641402
391847646
392613070
393805061
394627810
395632038
396632940
397659755
398647680
399972638
400660657
401681194
402895242
4031099959
4041073303
4051230687
4061479684
4071056972
4081080812
4091089415
4101168756
4111811060
4121210169
4131293597
4141183496
4152458740
4161246010
4171508312
4181259848
4192597727
4201620318
4211737095
4221905765
4231328874
4241341851
4251555899
4261576436
4271984657
4282146387
4292130275
4302137784
4312900475
4322170227
4332352252
4342258171
4353356556
4362393665
4372836284
4382983105
4394428398
4402884773
4412505858
4423518019
4433430075
4442670725
4452897750
4463890422
4473461664
4484758949
4495335357
4503132335
4514122441
4525967522
4534268059
4544300502
4556558673
4564522479
4579429186
4588319774
4594651836
4605176583
4614899523
4627251164
4635390631
4645568475
4655403608
4665935933
4678012863
4685803060
4697549586
4706030085
4716593999
4727254776
4738919895
4747400394
4759477085
4768390500
47714832794
4789422002
4798822981
4809174315
4819551359
4829828419
48313496357
48411770582
48514598585
48610290154
48710794239
48811738993
48910972083
49017674926
49111833145
49212397059
49312624084
49413284861
49513430479
49614984499
49715645276
49815790894
49916574709
50028263273
50140660332
50222046086
50354156689
50417997296
50522564821
50619379778
50721567412
50821084393
50933306405
51021262237
51121766322
51222533232
51354390798
51422805228
51543028559
51624230204
51726715340
51825908945
51928269360
52028414978
52141425864
52231436170
52350461064
52439259533
52542227500
52637377074
52739081689
52839564708
52945492441
53040464171
53140642015
53244100644
53342346630
53459910306
53561025855
53644299554
53750948210
53863447243
53986447274
54054323923
54150139149
54252624285
54359851148
54456684338
54572515622
54670517859
54783360177
54883381243
54978019089
55076458763
55177841245
55278646397
553130465530
55484763725
55595247764
55684742659
55786646184
55893294840
559109308623
560111165004
561136586423
562101087359
563102763434
564123142144
565104463072
566106823487
567112475433
568116535486
569133143101
570148359104
571155105160
572155860334
573154300008
574154477852
575197239158
576156487642
577187506093
578197218092
579191587212
580219298920
581171388843
582199121617
583223358973
584220473627
585203850793
586205550431
587207226506
588323761992
589235617577
590211286559
591344429660
592229010919
593374951479
594404672048
595302659112
596353078426
597312347976
598401089951
599310965494
600353726800
601360338435
602370510460
603382675402
604362976055
605423149713
606375239636
607434739194
608409401224
609673941549
610518192000
611412776937
612783765353
613440297478
614446904136
615646025753
616400480901
617687587612
618783156303
619613624606
620615007088
621623313470
622975345523
623664692294
624720366718
625714065235
6261036774319
627733486515
628772377279
629875036672
630775720537
631840778379
632809882125
633847385037
634813257838
6351616498916
636853074415
637887201614
6381014105507
6391310718047
6401023794371
6411015487989
6421310901082
6431228631694
6441236938076
6451238320558
6461378757529
6471942696929
6481385059012
6491453853233
6501700459452
6512510341577
6521505863794
6531548097816
6541588978375
6551623105574
6561623139963
6572198102696
6581876868786
6592429756754
6602125522172
6611740276029
6622253808547
6632029593496
6643094842169
6653408351025
6662244119683
6672465569770
6682466952252
6692475258634
6702617078087
6712763816541
6722933156828
6733171237779
6742959717027
6755426669279
6765338961852
6773053961610
6784815180783
6793329254404
6803246245537
6813363415992
6823769869525
6835046834841
6843865798201
6854357354116
6866013678637
6874273713179
6885203836710
6894709689453
6904711071935
6914719378317
6924932522022
6936288971431
6945092336721
6956296572820
6965696973369
6975892873855
6986130954806
69912189446675
7007133285517
7016300207147
7026383216014
7036575499941
7046609661529
7057016115062
7067635667726
7078043582704
70812193081002
70910849213120
7108631067295
7118983402632
7128984785114
71310024858743
7149429067770
7159430450252
71612431161953
71715558902573
71810789310090
71910985210576
72011589847224
72111827928175
72212023828661
72322379157314
72412683423161
72512875707088
72612909868676
72716040111781
72814211167667
72921614705967
73023860917664
73134650227754
73216674649999
73339901029445
73420814168833
73517614469927
73617968187746
73724273270385
73829558034970
73918859518022
74033527090319
74122617238265
74223417775399
74324703635263
74422575057800
74523613675885
74623851756836
74724899535749
74854341259152
74925559130249
75041887740312
75127121036343
75281788769757
75330885817666
75434289119926
75542318105190
75635534168021
75734642837745
75842711274858
75941466226763
76035582657673
76183784331953
76241434575822
76397052534010
76452386608341
76547031451284
76682614108957
76745992833199
76852020572092
76965501416197
77081674289029
77148751292585
77250458665998
77352680166592
77484177501621
77579507644684
77676968743843
77777017233495
77868931957671
779113796764610
78070177005766
78170225495418
78276109064508
78377048884436
78481575490872
78584333950258
786149684650450
78788466027106
78893024284483
789130170334820
790116169838965
79194744125784
792104700738684
793102479238090
794149733140102
795128789231100
79699209958583
797164921131550
798122905662010
799169993028326
800169386964349
801139157453089
802139108963437
803223442913695
804164575091614
805140402501184
806195503522573
807153157948944
808197223363874
809238199167208
810183210152890
811181490311589
812187675985689
813292315402033
814193954084367
815201689196673
816199444864468
817207179976774
818279511464621
819322743315467
820222115620593
821238318922020
822262014625447
823363947112693
824278266416526
825500213792655
826304977592798
827321892812773
828293560450128
829352251077303
830323612654074
831380935176057
832347112033311
833460434542613
834369166297278
835364700464479
836387120850157
837381630070056
838393398948835
839423804817266
840566389661152
841477711280994
842445498898794
843484130246040
844500333547467
845500382037119
846531879372148
847540281041973
848921216218030
849615453262901
850598538042926
851770916850577
852617173104202
853784047196687
854913501694463
855704547830131
856711812497790
8571000715584586
858751821314636
859901516098260
860746330534535
8611093442567846
862775029018891
863817203766101
864924186854385
865923210179788
866929629144834
867945880935913
8681445381066611
8691157454146175
8701032261409267
8711130417415074
8721401220300889
8731215711147128
8741213991305827
8751388089954779
8761321720934333
8771363503638737
8781416360327921
8791450878364666
8801456369144767
8811698239198679
8821592232784992
8832722941235222
8841741390620486
8852672080291895
8861699215873276
8872138532657628
8881763084702014
8891847397034173
8901852839324622
8914060170246674
8921978142345180
8932162678824341
8942189715555442
8952664869670493
8962344408720901
8973303717689288
8982429702452955
8993403706861269
9002685224573070
9012738081262254
9023104894259223
9032872729472688
9042907247509433
9053594901802395
9063887954754121
9075652403031666
9084384440446346
9094568235110583
9103462300575290
9113546612907449
9127979342248741
9133610481736187
9144015518148963
9156237279770968
9164140821169521
9175610810734942
9186295706309257
9194534124276343
9205790118832293
9215977623731911
9225167783715209
9236795202263554
9246147525148360
9257291687955779
9266419342380137
9278757297290889
9288129026078738
9296369548084723
9309699580346258
9317625999885150
9327008913482739
93314084020792604
93411363437374137
9357072782311477
9367157094643636
9377751302905708
9389183301864172
93911400929567235
9408674945445864
94110511748008254
9429701907991552
94311537331799932
94410903672361066
94510957902547502
94617684856948292
94711315308863569
94813214544643691
94913773525033510
95013378461567462
95112788890464860
95213442330396200
95313526642728359
95414698782196627
95514824085217185
95614166008126375
95714229876955113
95814908397549344
95919695049872426
96016774690303029
96115832040089500
96216426248351572
96318376853437416
96419186693454118
96530530822286127
96620213655999806
96720605580352618
96822441004160998
96921861574908568
97022273211411071
97124529853507260
97235651672978533
97328038629860876
97426167352032322
97528620930554360
97626231220861060
97756762043147187
97828225424924986
97928395885081488
98030592256477947
98136121298223998
98229138274504457
98330740437638844
98435527089961926
98533200938654601
98640650064848487
98734803101788988
98839400349453924
98939792273806736
99058756247211113
99140819236352424
99246836801213678
99344134786319639
99446391428415828
99546803064918331
99675319363768662
99754205981893198
99852398572893382
99954392776957308
100059213187032307
diff --git a/2020/day9/xmas_encoder.pl b/2020/day9/xmas_encoder.pl
new file mode 100644
index 0000000..4fdcb9b
--- /dev/null
+++ b/2020/day9/xmas_encoder.pl
@@ -0,0 +1,70 @@
1use strict;
2use warnings;
3use DDP;
4use Smart::Comments;
5use Tie::File;
6use List::Util qw(min max);
7
8tie my @xmas, 'Tie::File', "input" or die "no input present, $!";
9
10my %preamble;
11# because it's easier this way trust me
12my @also_queue;
13my $goalnum;
14
15foreach my $idx (0 .. $#xmas) {
16 if ($idx < 25) {
17 my $t = int($xmas[$idx]);
18 $preamble{$t} = 1;
19 push @also_queue, $t;
20 } else {
21 my $nextnum = int($xmas[$idx]);
22 my $tester = 0;
23 foreach my $num (keys %preamble) {
24 $tester++;
25 if (exists $preamble{$nextnum - $num}) {
26 my $old = shift @also_queue;
27 delete $preamble{$old};
28 push @also_queue, $nextnum;
29 $preamble{$nextnum} = 1;
30 last;
31 }
32 }
33
34 if (not scalar grep { $_ == $nextnum } @also_queue) {
35 $goalnum = $nextnum;
36 print("XMAS weak num: $goalnum\n");
37 last;
38 }
39 }
40}
41
42# find the contiguous set
43
44my @contiguous;
45my $total = 0;
46
47foreach my $curr (@xmas) {
48 if ($total + $curr < $goalnum) {
49 $total += $curr;
50 push @contiguous, $curr;
51 } elsif ($total + $curr > $goalnum) {
52 while ($total + $curr > $goalnum) {
53 my $evictee = shift @contiguous;
54 if (not defined $evictee) {
55 last;
56 }
57 $total -= $evictee;
58 }
59 push @contiguous, $curr;
60 $total += $curr;
61 }
62
63 if ($total == $goalnum) {
64 print(min(@contiguous) + max(@contiguous));
65 p @contiguous;
66 exit;
67 }
68}
69
70untie @xmas;
diff --git a/2021/day5/Cargo.toml b/2021/day5/Cargo.toml
new file mode 100644
index 0000000..f9b62bf
--- /dev/null
+++ b/2021/day5/Cargo.toml
@@ -0,0 +1,8 @@
1[package]
2name = "day5"
3version = "0.1.0"
4edition = "2021"
5
6# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
8[dependencies]
diff --git a/2021/day5/input b/2021/day5/input
new file mode 100644
index 0000000..45eb5f4
--- /dev/null
+++ b/2021/day5/input
@@ -0,0 +1,500 @@
1957,596 -> 957,182
2763,144 -> 69,144
3761,794 -> 911,944
4510,440 -> 147,440
5859,33 -> 859,409
6602,518 -> 748,518
7980,545 -> 676,241
860,528 -> 616,528
937,242 -> 37,892
10216,966 -> 216,120
11372,910 -> 372,307
12688,864 -> 94,864
13691,17 -> 167,17
14989,928 -> 989,816
15207,84 -> 982,84
16890,714 -> 502,326
17286,329 -> 686,329
18959,62 -> 460,62
19840,82 -> 780,82
20960,12 -> 14,958
21418,45 -> 983,610
22318,264 -> 988,934
23458,11 -> 861,11
24805,197 -> 380,622
25261,907 -> 261,734
26409,617 -> 826,617
27285,457 -> 759,931
28104,241 -> 913,241
29781,141 -> 781,671
3048,956 -> 348,956
31921,517 -> 974,517
32565,621 -> 724,621
33381,276 -> 381,59
3482,25 -> 946,25
35978,16 -> 17,977
36850,438 -> 125,438
37313,850 -> 313,195
38789,963 -> 789,29
39110,156 -> 241,156
40925,974 -> 458,974
4193,153 -> 696,756
42748,312 -> 120,312
43566,367 -> 360,367
44687,295 -> 687,284
45219,925 -> 180,925
4659,952 -> 59,140
47641,333 -> 361,53
48158,587 -> 158,96
49857,278 -> 857,195
50653,45 -> 34,664
51639,384 -> 814,384
5267,24 -> 902,859
53850,278 -> 850,448
54342,505 -> 342,287
55504,924 -> 536,956
56408,666 -> 408,310
57747,347 -> 747,176
58766,468 -> 54,468
59283,905 -> 283,421
60476,334 -> 476,59
61490,935 -> 753,672
62385,772 -> 940,772
63907,316 -> 853,370
64144,717 -> 746,115
65741,819 -> 230,819
66524,397 -> 524,237
67411,824 -> 288,824
68160,719 -> 744,135
69252,550 -> 440,738
70902,64 -> 902,422
71392,194 -> 955,757
72937,735 -> 937,446
73292,49 -> 985,49
74899,464 -> 481,46
75304,369 -> 648,369
76247,723 -> 247,697
77665,941 -> 185,461
78548,25 -> 446,127
79663,558 -> 154,558
8052,47 -> 872,867
81983,68 -> 983,795
82492,705 -> 654,867
8382,888 -> 33,888
84550,443 -> 229,764
85868,508 -> 375,15
86120,829 -> 652,829
87787,296 -> 814,296
88705,643 -> 351,643
8952,23 -> 558,23
90390,92 -> 390,393
91713,520 -> 897,520
92280,481 -> 827,481
93599,181 -> 599,235
94483,140 -> 773,140
95571,227 -> 571,779
96830,45 -> 830,745
97617,745 -> 449,745
9889,176 -> 841,928
99358,868 -> 906,320
100897,669 -> 654,669
101717,729 -> 123,135
102305,330 -> 305,598
103220,964 -> 600,964
104607,715 -> 492,715
105837,561 -> 820,561
106542,38 -> 542,118
107390,970 -> 915,445
108343,160 -> 475,160
109163,60 -> 972,869
110786,500 -> 946,500
111401,393 -> 401,910
112336,962 -> 528,962
113520,489 -> 520,525
114558,584 -> 363,584
115786,880 -> 584,678
116704,435 -> 153,986
117356,522 -> 235,643
118225,67 -> 229,71
119389,381 -> 55,47
120918,229 -> 332,229
121558,989 -> 558,370
122307,821 -> 307,447
12313,232 -> 742,961
124659,809 -> 467,809
125905,942 -> 456,942
126234,810 -> 234,497
127421,287 -> 643,65
128183,164 -> 312,164
129652,955 -> 977,630
130157,820 -> 853,124
131278,480 -> 278,384
132504,399 -> 298,605
133955,76 -> 798,76
134565,352 -> 109,352
135912,16 -> 66,862
136972,786 -> 235,49
137146,15 -> 146,186
138944,149 -> 497,596
139485,84 -> 762,84
140975,983 -> 16,24
14111,896 -> 887,20
142826,924 -> 126,224
143246,648 -> 158,736
144773,377 -> 582,377
145296,947 -> 378,865
146592,291 -> 592,861
147331,470 -> 16,470
148239,85 -> 705,85
149409,842 -> 409,966
150145,438 -> 145,340
151239,859 -> 239,409
152651,508 -> 314,845
153720,39 -> 176,583
154762,444 -> 762,29
155983,962 -> 60,39
156745,248 -> 91,902
157990,18 -> 990,503
158441,472 -> 441,211
159524,837 -> 248,561
160160,215 -> 842,897
161469,544 -> 989,544
162311,241 -> 103,33
163887,610 -> 746,610
164377,942 -> 377,803
165920,401 -> 823,401
16610,142 -> 10,486
167850,955 -> 850,578
168887,728 -> 887,678
169555,749 -> 84,749
170839,620 -> 32,620
171432,709 -> 432,183
172312,164 -> 859,711
17320,119 -> 739,838
174930,871 -> 324,265
17541,702 -> 41,520
17648,210 -> 794,956
177479,526 -> 479,123
178364,739 -> 364,379
179920,969 -> 73,122
180382,314 -> 382,604
181969,877 -> 129,37
182274,893 -> 52,671
183696,296 -> 696,221
184469,735 -> 626,892
185682,435 -> 682,937
186626,550 -> 626,604
187898,904 -> 898,755
188836,849 -> 445,458
189405,237 -> 405,724
190253,74 -> 908,729
191837,802 -> 597,802
192375,450 -> 316,450
193621,784 -> 314,784
194856,136 -> 188,804
195983,11 -> 29,965
19682,134 -> 752,134
197677,299 -> 573,299
19843,726 -> 43,304
199886,629 -> 886,603
200439,471 -> 74,836
201973,879 -> 122,28
202550,246 -> 497,246
20349,109 -> 816,876
204294,493 -> 271,493
205495,397 -> 495,342
206846,892 -> 881,927
207267,397 -> 72,592
208670,168 -> 22,816
209482,302 -> 482,681
210309,692 -> 453,692
211597,369 -> 597,589
212518,475 -> 633,475
213391,484 -> 493,382
214177,135 -> 139,135
215458,17 -> 825,17
216514,292 -> 272,50
217410,734 -> 142,734
218465,975 -> 542,898
21932,901 -> 346,587
220390,478 -> 571,659
221835,839 -> 189,839
222769,407 -> 769,788
223974,40 -> 103,911
224710,709 -> 246,709
225468,857 -> 343,982
226777,552 -> 951,552
22723,490 -> 346,490
228270,384 -> 855,384
229386,454 -> 166,454
230166,388 -> 319,388
231698,514 -> 698,180
232554,162 -> 528,162
233651,363 -> 879,363
234327,123 -> 327,255
235439,492 -> 719,212
236903,438 -> 903,356
23799,611 -> 99,552
238512,652 -> 45,185
239565,284 -> 565,180
24081,710 -> 637,154
241321,769 -> 164,769
24232,307 -> 32,204
243310,338 -> 310,914
244239,691 -> 357,691
245573,164 -> 559,164
246887,961 -> 693,767
247362,904 -> 362,944
248467,294 -> 236,294
249182,53 -> 182,264
25019,950 -> 951,18
251191,575 -> 440,824
252192,168 -> 690,666
253538,552 -> 891,905
254243,38 -> 243,403
255417,140 -> 417,818
256894,45 -> 726,213
257245,898 -> 245,527
258567,946 -> 567,983
259572,675 -> 363,675
260318,618 -> 735,618
261616,580 -> 981,580
26237,881 -> 134,881
263624,675 -> 271,322
264323,686 -> 770,686
26593,385 -> 626,385
266715,382 -> 862,382
267170,342 -> 170,84
268747,221 -> 380,221
269981,311 -> 981,577
270372,186 -> 372,826
271961,91 -> 130,922
27248,603 -> 48,110
27334,975 -> 935,74
274707,18 -> 707,192
275261,149 -> 41,369
27635,589 -> 35,247
277544,522 -> 437,522
278797,712 -> 346,712
279622,47 -> 78,591
280642,390 -> 642,414
281793,29 -> 69,29
282978,905 -> 978,296
283212,515 -> 212,920
284835,166 -> 68,933
285168,742 -> 168,720
286390,276 -> 666,276
287507,792 -> 987,792
288895,242 -> 895,402
289121,950 -> 943,128
290303,336 -> 303,205
291293,390 -> 293,736
292433,963 -> 433,867
293824,327 -> 620,531
294553,689 -> 867,689
295226,984 -> 226,284
296153,308 -> 173,308
297855,959 -> 345,959
298830,895 -> 830,981
299557,63 -> 557,205
30051,857 -> 328,857
301224,243 -> 224,517
302830,773 -> 830,520
303607,210 -> 782,385
304876,330 -> 327,330
305985,11 -> 18,978
306352,936 -> 111,936
307900,39 -> 986,39
30810,626 -> 10,795
309369,942 -> 11,942
310136,770 -> 654,252
311209,541 -> 209,557
31269,671 -> 848,671
313811,451 -> 194,451
314149,46 -> 850,747
315704,386 -> 704,953
316117,346 -> 387,346
317238,701 -> 688,251
318789,220 -> 789,815
319967,512 -> 967,213
320641,652 -> 151,162
32191,942 -> 312,942
32242,226 -> 801,985
323166,37 -> 603,37
324854,976 -> 951,976
325392,23 -> 772,23
326299,196 -> 299,288
327514,560 -> 844,890
328618,699 -> 348,429
329604,947 -> 604,735
330189,851 -> 407,633
331907,719 -> 907,449
332167,421 -> 864,421
333491,383 -> 538,383
334939,504 -> 939,433
33578,649 -> 78,975
336817,246 -> 322,741
337395,195 -> 205,195
338872,275 -> 872,500
339196,621 -> 280,621
340634,619 -> 634,422
341395,30 -> 395,232
342895,628 -> 619,904
34358,66 -> 186,194
344626,477 -> 708,559
345747,712 -> 747,28
346935,798 -> 220,798
347459,530 -> 704,530
348648,679 -> 79,110
349778,135 -> 778,66
350657,352 -> 906,352
351499,160 -> 615,160
352830,226 -> 830,489
353364,971 -> 826,971
354879,923 -> 543,923
355914,984 -> 612,984
356594,810 -> 508,810
35755,467 -> 269,253
358360,478 -> 360,902
359176,890 -> 176,431
360867,121 -> 16,972
361728,876 -> 65,213
362606,112 -> 842,112
363563,532 -> 914,532
364783,139 -> 369,139
365564,359 -> 846,359
36679,326 -> 15,390
367972,419 -> 972,35
368686,839 -> 755,839
369427,856 -> 77,856
370102,410 -> 925,410
371468,177 -> 901,610
372865,249 -> 930,314
373784,447 -> 863,368
374684,708 -> 223,708
375555,228 -> 555,900
376380,600 -> 222,600
377900,408 -> 188,408
378773,677 -> 773,16
379560,287 -> 560,790
380130,851 -> 959,22
381338,951 -> 626,663
382678,726 -> 405,726
383243,469 -> 243,276
384783,486 -> 66,486
385469,536 -> 469,770
386689,148 -> 689,340
387396,689 -> 396,673
388848,759 -> 848,770
389965,775 -> 965,605
390889,907 -> 284,302
391161,169 -> 942,950
392619,267 -> 394,492
393323,786 -> 18,481
394953,643 -> 884,643
395371,446 -> 371,252
396890,915 -> 192,217
397674,259 -> 674,247
398877,479 -> 877,117
399620,843 -> 620,734
400597,722 -> 597,939
401935,663 -> 935,469
402108,844 -> 108,596
403211,447 -> 211,482
404123,657 -> 721,59
405774,858 -> 774,86
406978,500 -> 978,305
407152,890 -> 937,105
408728,356 -> 728,261
409354,373 -> 433,452
410586,627 -> 586,949
411764,381 -> 735,410
412986,899 -> 199,112
413251,418 -> 251,596
414897,379 -> 897,388
415149,901 -> 253,901
416650,229 -> 46,229
417446,707 -> 446,44
418953,898 -> 697,898
419772,422 -> 762,432
420608,756 -> 927,756
421138,911 -> 716,333
422414,583 -> 244,583
423219,267 -> 219,751
42469,746 -> 69,886
425444,243 -> 493,194
426604,950 -> 244,950
427450,198 -> 31,617
428918,852 -> 109,43
429967,800 -> 267,100
430388,516 -> 760,516
431656,954 -> 513,954
43280,680 -> 80,44
433360,848 -> 360,800
43410,10 -> 989,989
435889,927 -> 104,142
436882,187 -> 812,187
437416,522 -> 356,522
438797,795 -> 273,271
439175,371 -> 12,371
440726,595 -> 956,595
441852,355 -> 852,357
442959,83 -> 338,83
443822,766 -> 140,84
444968,129 -> 181,916
44517,28 -> 975,986
44615,913 -> 624,304
447589,322 -> 468,443
448894,21 -> 309,606
44983,25 -> 963,905
450143,380 -> 377,146
451587,151 -> 507,151
452257,967 -> 257,882
453770,552 -> 770,573
454128,90 -> 886,848
455456,953 -> 456,669
456930,434 -> 668,434
457501,835 -> 796,540
45836,980 -> 989,27
459494,690 -> 626,690
460105,945 -> 972,78
461409,730 -> 409,62
462901,160 -> 831,90
463881,490 -> 28,490
464736,244 -> 38,942
465295,770 -> 199,770
466866,416 -> 808,416
467875,716 -> 875,189
468763,393 -> 241,915
469583,237 -> 704,237
47029,153 -> 637,153
471767,282 -> 767,107
472456,242 -> 456,165
473455,232 -> 749,232
47454,128 -> 766,840
475901,73 -> 939,73
476928,118 -> 854,118
47715,983 -> 975,23
478600,92 -> 260,92
479247,714 -> 247,490
480511,332 -> 19,824
48155,15 -> 968,928
482246,29 -> 25,29
48322,101 -> 761,840
484876,177 -> 139,914
485165,150 -> 822,807
486258,707 -> 773,707
48768,788 -> 68,875
488858,142 -> 758,142
489719,642 -> 810,642
490928,904 -> 928,338
491287,977 -> 978,286
492883,13 -> 883,31
493681,301 -> 681,957
494762,863 -> 405,506
495194,657 -> 733,118
49678,41 -> 497,41
497840,627 -> 840,168
498335,54 -> 335,822
499136,983 -> 526,593
500120,156 -> 120,630
diff --git a/2021/day5/input.example b/2021/day5/input.example
new file mode 100644
index 0000000..b258f68
--- /dev/null
+++ b/2021/day5/input.example
@@ -0,0 +1,10 @@
10,9 -> 5,9
28,0 -> 0,8
39,4 -> 3,4
42,2 -> 2,1
57,0 -> 7,4
66,4 -> 2,0
70,9 -> 2,9
83,4 -> 1,4
90,0 -> 8,8
105,5 -> 8,2
diff --git a/2021/day5/input.mini.example b/2021/day5/input.mini.example
new file mode 100644
index 0000000..b775b12
--- /dev/null
+++ b/2021/day5/input.mini.example
@@ -0,0 +1,2 @@
11,1 -> 3,3
29,7 -> 7,9
diff --git a/2021/day5/src/main.rs b/2021/day5/src/main.rs
new file mode 100644
index 0000000..498deb0
--- /dev/null
+++ b/2021/day5/src/main.rs
@@ -0,0 +1,95 @@
1use std::cmp::{max, min};
2use std::collections::HashMap;
3use std::env;
4use std::fs::File;
5use std::io::{BufRead, BufReader};
6
7fn main() {
8 let reader = open_file();
9
10 let mut coords: HashMap<(i32, i32), i32> = HashMap::new();
11
12 for line in reader.lines() {
13 if let Ok(line) = line {
14 let vents = line.split(" -> ").collect::<Vec<&str>>();
15 let first = vents[0].split(",").collect::<Vec<&str>>();
16 let second = vents[1].split(",").collect::<Vec<&str>>();
17
18 let first: Vec<i32> = first.into_iter().map(|s| s.parse().unwrap()).collect();
19 let second: Vec<i32> = second.into_iter().map(|s| s.parse().unwrap()).collect();
20
21 let xstep: i32;
22 let ystep: i32;
23 let start_x = min(first[0], second[0]);
24 let end_x = max(first[0], second[0]);
25 let start_y = min(first[1], second[1]);
26 let end_y = max(first[1], second[1]);
27 let distance = max(end_x - start_x, end_y - start_y);
28
29 if first[0] > second[0] {
30 xstep = -1;
31 } else if first[0] < second[0] {
32 xstep = 1;
33 } else {
34 xstep = 0;
35 }
36
37 if first[1] > second[1] {
38 ystep = -1;
39 } else if first[1] < second[1] {
40 ystep = 1;
41 } else {
42 ystep = 0;
43 }
44
45 for step in 0..=distance {
46 let counter = coords
47 .entry((first[0] + step * xstep, first[1] + step * ystep))
48 .or_insert(0);
49 *counter += 1;
50 }
51 }
52 }
53
54 // println!("coords: {:?}", coords);
55 // visualize(&coords);
56
57 let result = coords.iter().filter(|(_, &y)| y >= 2).count();
58 println!("{}", result);
59}
60
61fn visualize(map: &HashMap<(i32, i32), i32>) {
62 let start_x = map.iter().map(|((x, _), _)| x).min().unwrap();
63 let start_y = map.iter().map(|((_, y), _)| y).min().unwrap();
64 let end_x = map.iter().map(|((x, _), _)| x).max().unwrap();
65 let end_y = map.iter().map(|((_, y), _)| y).max().unwrap();
66 println!("start_x: {}", start_x);
67 println!("start_y: {}", start_y);
68 println!("end_x: {}", end_x);
69 println!("end_y: {}", end_y);
70
71 for y in *start_y..=*end_y {
72 for x in *start_x..=*end_x {
73 if let Some(val) = map.get(&(x, y)) {
74 print!("{}", val);
75 } else {
76 print!(".")
77 }
78 }
79 println!("");
80 }
81}
82
83fn open_file() -> BufReader<File> {
84 let args: Vec<String> = env::args().collect();
85
86 if args.len() != 2 {
87 eprintln!("Usage: {} <filename>", args[0]);
88 std::process::exit(1);
89 }
90
91 let filename = &args[1];
92
93 let file = File::open(filename).unwrap_or_else(|_| panic!("No such file: {}", filename));
94 BufReader::new(file)
95}
diff --git a/2021/day6/Cargo.toml b/2021/day6/Cargo.toml
new file mode 100644
index 0000000..9957f8b
--- /dev/null
+++ b/2021/day6/Cargo.toml
@@ -0,0 +1,9 @@
1[package]
2name = "day6"
3version = "0.1.0"
4edition = "2021"
5
6# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
8[dependencies]
9itertools = "0.10.3"
diff --git a/2021/day6/input b/2021/day6/input
new file mode 100644
index 0000000..9bb513a
--- /dev/null
+++ b/2021/day6/input
@@ -0,0 +1 @@
1,1,3,5,3,1,1,4,1,1,5,2,4,3,1,1,3,1,1,5,5,1,3,2,5,4,1,1,5,1,4,2,1,4,2,1,4,4,1,5,1,4,4,1,1,5,1,5,1,5,1,1,1,5,1,2,5,1,1,3,2,2,2,1,4,1,1,2,4,1,3,1,2,1,3,5,2,3,5,1,1,4,3,3,5,1,5,3,1,2,3,4,1,1,5,4,1,3,4,4,1,2,4,4,1,1,3,5,3,1,2,2,5,1,4,1,3,3,3,3,1,1,2,1,5,3,4,5,1,5,2,5,3,2,1,4,2,1,1,1,4,1,2,1,2,2,4,5,5,5,4,1,4,1,4,2,3,2,3,1,1,2,3,1,1,1,5,2,2,5,3,1,4,1,2,1,1,5,3,1,4,5,1,4,2,1,1,5,1,5,4,1,5,5,2,3,1,3,5,1,1,1,1,3,1,1,4,1,5,2,1,1,3,5,1,1,4,2,1,2,5,2,5,1,1,1,2,3,5,5,1,4,3,2,2,3,2,1,1,4,1,3,5,2,3,1,1,5,1,3,5,1,1,5,5,3,1,3,3,1,2,3,1,5,1,3,2,1,3,1,1,2,3,5,3,5,5,4,3,1,5,1,1,2,3,2,2,1,1,2,1,4,1,2,3,3,3,1,3,5
diff --git a/2021/day6/input.example b/2021/day6/input.example
new file mode 100644
index 0000000..55129f1
--- /dev/null
+++ b/2021/day6/input.example
@@ -0,0 +1 @@
3,4,3,1,2
diff --git a/2021/day6/src/main.rs b/2021/day6/src/main.rs
new file mode 100644
index 0000000..378764e
--- /dev/null
+++ b/2021/day6/src/main.rs
@@ -0,0 +1,33 @@
1use std::env;
2
3fn main() {
4 let args: Vec<String> = env::args().collect();
5
6 if args.len() != 2 {
7 eprintln!("Usage: {} <filename>", args[0]);
8 std::process::exit(1);
9 }
10 let mut smart_lanternfish: [u64; 9] = [0; 9];
11
12 let foo: String = std::fs::read_to_string(&args[1]).unwrap().parse().unwrap();
13 let mut lanternfish: Vec<u8> = Vec::new();
14 lanternfish.extend(foo.trim().split(",").map(|x| x.parse::<u8>().unwrap()));
15
16 for initial_fish in &lanternfish {
17 smart_lanternfish[*initial_fish as usize] += 1;
18 }
19
20 // println!("{:?}", smart_lanternfish);
21 for _day in 0..256 {
22 smart_lanternfish.rotate_left(1);
23 smart_lanternfish[6] += smart_lanternfish[8];
24 // println!(
25 // "After {day:>width$} days: {lanternfish:?}",
26 // day = _day,
27 // width = 2,
28 // lanternfish = smart_lanternfish
29 // );
30 }
31
32 println!("{}", smart_lanternfish.iter().sum::<u64>());
33}