Compare commits

...

231 commits

Author SHA1 Message Date
c0ed69768b 2023 day16/rust: parallelize 2023-12-18 19:11:28 +00:00
603321cfbe 2023 day16/rust: add solution 2023-12-18 19:11:13 +00:00
5ada5288e8 2023 day16: add data 2023-12-18 19:10:29 +00:00
b9cda61f6d common/rust: derive Enum for vec2::Direction 2023-12-18 18:22:48 +00:00
839b787de2 common/rust: fix possible-panic clippy lint 2023-12-18 18:22:02 +00:00
ed41d840f5 cargo fmt 2023-12-18 18:19:29 +00:00
3e9c1ee1c1 2023 day15/rust: add solution 2023-12-18 17:42:48 +00:00
acea94bea5 2023 day15: add data 2023-12-18 17:42:40 +00:00
6a286a751e 2023 day11/rust: add solution 2023-12-11 17:27:34 +00:00
bfdbf455af 2023 day11: add data 2023-12-11 17:23:04 +00:00
91f1c1b609 2023 day9/rust: add solution 2023-12-09 12:43:14 +00:00
c1ceef4afd 2023 day9: add data 2023-12-09 12:42:55 +00:00
b2dc39f54a 2023 day8/rust: add solution 2023-12-09 11:27:03 +00:00
148bda1819 2023 day8: add data 2023-12-09 11:27:03 +00:00
2d93f5f748 2023 day7/rust: add solution 2023-12-07 17:37:52 +00:00
fbb486c683 2023 day7: add data 2023-12-07 17:37:52 +00:00
73b7c1c00e Cargo update 2023-12-07 17:36:50 +00:00
9e27a295ae 2023 day6/rust: use integer operations 2023-12-06 19:52:37 +00:00
4535a4d3e7 2023 day6/rust: add solution 2023-12-06 16:00:49 +00:00
f618e1620d 2023 day6: add data 2023-12-06 16:00:39 +00:00
3109623176 2023 day4/rust: add solution 2023-12-06 13:41:46 +00:00
a4568c199b 2023 day4: add data 2023-12-06 13:41:06 +00:00
29537d25aa 2023 day5: add data 2023-12-05 19:40:53 +00:00
b1e402180f 2023 day5/rust: add solution 2023-12-05 19:40:53 +00:00
61b478ca0e common: add more methods to SectionRange 2023-12-05 19:40:53 +00:00
90d2e1636a common/rust: add Grid type 2023-12-05 19:40:53 +00:00
e2433598c3 2023 day2/rust: add solution 2023-12-02 12:56:44 +00:00
02c5511c02 2023 day2: add data 2023-12-02 12:56:44 +00:00
eb9e0e3ed4 2023 day1/rust: add solution 2023-12-02 12:56:44 +00:00
609762cf0b 2023 day1: add data 2023-12-02 12:56:44 +00:00
54dde14bf4 fix missing resolver= key in workspace Cargo manifest 2023-12-02 12:56:44 +00:00
f0e123ec31 2022 day17: add input 2022-12-19 19:42:55 +01:00
7236d3f09b 2022 day16: add input 2022-12-19 19:42:42 +01:00
a330505361 2022 day18/rust: add solution 2022-12-19 19:29:01 +01:00
cc61c42178 2022 day18: add data 2022-12-19 19:27:26 +01:00
ce17a061f3 common/rust: add VecN type 2022-12-19 19:26:52 +01:00
6fb08930bc 2022 day15/rust: make part1 faster 2022-12-15 21:55:27 +01:00
b9b46aab5b common/rust: make SectionRange Ord+Hash 2022-12-15 21:55:16 +01:00
146e0d594c common/rust: make SectionRange generic over content 2022-12-15 21:17:35 +01:00
633591acf8 2022 day15/rust: add bad part1 solution 2022-12-15 20:11:55 +01:00
3d47372967 common/rust: add manhattan distance methods to Line 2022-12-15 20:11:38 +01:00
0b4b1d4f07 2022 day15: add part1 data 2022-12-15 20:08:21 +01:00
1b59efa250 2022 day14/rust: cleanup 2022-12-14 19:33:01 +01:00
f41c0177d8 2022 day14/rust: add solution 2022-12-14 19:20:45 +01:00
7db15c9cf7 common/rust: add Line type 2022-12-14 19:19:42 +01:00
26700274c3 2022 day14: add data 2022-12-14 19:13:49 +01:00
4022aa6e68 2022 day13/rust: clean up 2022-12-13 18:51:33 +01:00
f08a4aa274 2022 day13/rust: add solution 2022-12-13 18:48:50 +01:00
70fbd5ffaa 2022 day13: add data 2022-12-13 18:48:31 +01:00
b5c941c684 2022 day10/rust: cleanup 2022-12-12 20:00:20 +01:00
20981716c3 2022 day12/rust: add solution 2022-12-12 07:15:30 +01:00
8eab85c260 2022 day12: add data 2022-12-12 06:48:38 +01:00
8a48ba05b0 2022 day11/rust: clean up parsing 2022-12-11 17:58:18 +01:00
77e443e6c8 2022 day11/rust: add solution 2022-12-11 09:39:15 +01:00
d20c6632fa 2022 day11: add data 2022-12-11 09:05:05 +01:00
0618083106 2022 day10/rust: use generators 2022-12-10 09:42:00 +01:00
135a5017f7 2022 day10/rust: cleanup 2022-12-10 06:38:47 +01:00
e0ff12f770 2022 day10/rust: add solution 2022-12-10 06:29:51 +01:00
6cae81cd65 2022 day10: add data 2022-12-10 06:27:02 +01:00
daad18c6af 2022 day9/rust: abort early if knot doesn't move 2022-12-09 21:36:05 +01:00
e1862bdcbb 2022 day9/rust: rename some items for clarity 2022-12-09 16:19:29 +01:00
d627f1d00f common/rust: add more functionality to Vec2 2022-12-09 11:56:28 +01:00
7896aafcd7 2022 day9/rust: cleanup 2022-12-09 06:55:31 +01:00
298e4f0783 2022 day9/rust: add solution 2022-12-09 06:28:32 +01:00
1e27bf1353 2022 day9: add data 2022-12-09 06:28:20 +01:00
66fa9d1c35 2022 day8/rust: add solution 2022-12-08 07:25:38 +01:00
06aa5677e1 2022 day8: add data 2022-12-08 07:25:26 +01:00
a74b1f4bc6 2022 day7/rust: cleanup 2022-12-07 19:16:30 +01:00
5d846eb88c common/rust: add Path::parents helper method 2022-12-07 19:16:15 +01:00
23418f98be 2022 day7/rust: add solution 2022-12-07 06:29:48 +01:00
28718710cf 2022 day7: add data 2022-12-07 06:28:21 +01:00
59c1d54801 2022 day6/rust: relax type bounds 2022-12-06 17:32:44 +01:00
236b80b45c 2022 day6/rust: cleanup 2022-12-06 06:27:08 +01:00
8859be752a 2022 day6/rust: add solution 2022-12-06 06:12:56 +01:00
a3bc63b6ee 2022 day6: add data 2022-12-06 06:12:49 +01:00
92a60f149e 2022 day5/rust: cleanup 2022-12-05 18:40:02 +01:00
d75c49e8c4 2022 day5/rust: add solution 2022-12-05 06:39:20 +01:00
a000a1a7ea 2022 day5: add data 2022-12-05 06:35:20 +01:00
2c13f3de57 common/rust: implement union and difference for SectionRange 2022-12-04 21:30:45 +01:00
c7062a05e8 common/rust: add UpToTwo type 2022-12-04 21:29:57 +01:00
9b62590517 rust: move section ranges to library 2022-12-04 17:43:01 +01:00
1207b26a46 2022 day4/rust: use range type 2022-12-04 10:24:39 +01:00
8b15158631 2022 day3/rust: use tuple instead of struct 2022-12-04 09:59:33 +01:00
be02406c0f 2022 day4/rust: add solution 2022-12-04 09:59:17 +01:00
3e27ce8334 2022 day4: add data 2022-12-04 09:58:53 +01:00
d13125c4ad 2022 day3/rust: use bitwise arithmetic 2022-12-03 06:49:44 +01:00
c4268a0093 2022 day3/rust: cleanup 2022-12-03 06:49:24 +01:00
5ad4f56771 2022 day3/rust: add solution 2022-12-03 06:17:06 +01:00
f2f3697152 2022 day3: add data 2022-12-03 06:16:46 +01:00
e7f1e50aa6 2022 day2/rust: cleanup 2022-12-02 07:45:10 +01:00
56eb362c3d 2022 day2/rust: add solution 2022-12-02 07:36:35 +01:00
e904ed4d34 2022 day2: add data 2022-12-02 07:36:07 +01:00
bd13011a52 2022 day1/rust: avoid unnecessary allocations 2022-12-01 20:41:22 +01:00
8a192ddc42 test.sh: fix scoping 2022-12-01 19:24:06 +01:00
0ce9b79c20 test.sh: make shellcheck happy 2022-12-01 19:24:06 +01:00
bb0fbc0f8f test.sh: run all years 2022-12-01 19:24:06 +01:00
e271b0d585 2022 day1/rust: add solution 2022-12-01 19:24:06 +01:00
4be136b1a9 2022 day1: add data 2022-12-01 19:24:06 +01:00
cb3138f05c cargo update 2022-12-01 19:24:06 +01:00
8911a00d0b Add cargo workspace configuration 2022-12-01 19:24:06 +01:00
7aa3a53570 Rename rust crates 2022-12-01 19:24:06 +01:00
b0821bc945 2021 day13/rust: add solution 2022-04-10 16:09:05 +02:00
3d52da6074 2021 day13: add data 2022-04-10 16:08:28 +02:00
5a8d17a4e7 2021 day16/rust: make generic on error type 2022-01-23 20:02:10 +01:00
8e29118629 2021 day16/rust: fix assertion in bit-slicing implementation 2022-01-23 19:15:43 +01:00
e3c6a8f29c 2021 day22/rust: add solution 2022-01-23 17:50:55 +01:00
e5ae9b546a 2021 day22: add data 2022-01-23 17:50:46 +01:00
2f9adec8ff 2021 day12/rust: fix solution 2022-01-17 17:47:06 +01:00
0220f88e27 2021 day16/rust: clean up 2021-12-16 20:36:23 +01:00
f24e06da7d 2021 day16/rust: add solution 2021-12-16 18:48:50 +01:00
a771b98489 2021 day16: add data 2021-12-16 18:36:17 +01:00
f41e7a76ea 2021 day12/rust: add simple solution 2021-12-16 11:24:20 +01:00
acb52282b6 2021 day12: add data 2021-12-16 11:23:28 +01:00
37293ab29e 2021 day14/rust: add solution 2021-12-15 19:54:39 +01:00
7828e5a9d2 2021 day14: add data 2021-12-15 19:39:37 +01:00
f82eaa9490 2021 day10/python: add solution 2021-12-10 06:32:54 +01:00
0b617a70d0 2021 day10: add data 2021-12-10 06:32:29 +01:00
daec76d3d4 2021 day8/rust: speed up v3 to unsafe levels, remove v4 2021-12-09 21:39:13 +01:00
07a1391030 2021 day8/rust: make v4 function unsafe 2021-12-09 21:28:01 +01:00
591cde8631 2021 day8/rust: add test 2021-12-09 21:28:01 +01:00
11907cf8b5 2021 day8/rust: prettify calculation of output number
Now that `digits` is a fixed-size array, both methods get unrolled the
same and there is no performance difference.
2021-12-09 21:28:01 +01:00
edd8bdfa71 2021 day8/rust: only trim start of output digits 2021-12-09 21:28:01 +01:00
92aba2db95 2021 day8/rust: use ArrayVec
This avoids an allocation and, more importantly, turns `digits` into a
fixed size array, allowing the final calculations to be unrolled
completely.
2021-12-09 21:28:01 +01:00
a231883ea7 2021 day9/python: add cleaner solution 2021-12-09 21:28:01 +01:00
8775b26fe6 2021 day9/python: add dirty solution 2021-12-09 21:28:01 +01:00
b259572265 2021 day9: add data 2021-12-09 21:28:01 +01:00
891e9861ef 2021 day8/rust: add benchmarks 2021-12-09 21:28:01 +01:00
aa464884fe 2021 day8/rust: add solutions 2021-12-09 21:27:22 +01:00
6b9ff21a5a 2021 day8/python: add fast solution 2021-12-08 17:14:37 +01:00
66c78818fc 2021 day8/python: add brute force solution 2021-12-08 10:19:51 +01:00
3099e1e256 2021 day8: add data 2021-12-08 10:18:20 +01:00
96fe64f71f 2021 day7/python: add faster solution 2021-12-07 21:58:59 +01:00
4ea70f38ea 2021 day7/python: prettify 2021-12-07 20:03:46 +01:00
e9a47c1863 2021 day7/python: add solution 2021-12-07 06:24:59 +01:00
eb8110c355 2021 day7: add data 2021-12-07 06:24:31 +01:00
7f42d47cae 2021 day6/python: add solution 2021-12-06 19:35:48 +01:00
75d4a76a50 2021 day6: add data 2021-12-06 19:35:48 +01:00
196e812878 2021 day5/rust: avoid nightly for line point iterator 2021-12-06 19:35:48 +01:00
fff3899ae9 2021 day5/rust: use iterator to expand line points 2021-12-06 19:35:48 +01:00
83b9b79a28 2021 day5/rust: dedup using Vec matrix instead of HashMap 2021-12-06 19:35:48 +01:00
4ee0046b97 2021 day5/rust: add solution 2021-12-06 19:35:48 +01:00
d3c4e526f1 2021 day5: add data 2021-12-06 19:35:48 +01:00
59714dd83d 2021 day1/rust: prettify 2021-12-06 19:35:48 +01:00
ba68214754 2021 day3/rust: add solution 2021-12-06 19:35:48 +01:00
697377c22d 2021 day4/python: add solution 2021-12-06 19:35:48 +01:00
050a309460 2021 day4: add data 2021-12-06 19:35:48 +01:00
42f425198b 2021 day3/python: add solution 2021-12-06 19:35:48 +01:00
a5e00087f2 2021 day3: add data 2021-12-06 19:35:43 +01:00
e8c84a0cb6 2021 day2/python: add solution 2021-12-02 10:40:39 +01:00
1befbf9c37 2021 day2: add data 2021-12-02 10:40:21 +01:00
fc223c2746 2021 day1/vhdl: clean up 2021-12-01 15:05:25 +01:00
4e8d0e3f36 2020 day2/vhdl: split off util package 2021-12-01 14:53:03 +01:00
7a58f73e51 2021 day1/vhdl: add solution 2021-12-01 14:52:22 +01:00
d60b8c5371 common: add VHDL testbench and runner 2021-12-01 14:02:09 +01:00
dbcf8fa588 2020 day2/vhdl: rename source files 2021-12-01 13:53:50 +01:00
cabc7f314d 2020 day2/vhdl: update to split out runner, handle line feeds 2021-12-01 13:52:37 +01:00
ab5fda541c 2020 day25: add data 2021-12-01 09:26:12 +01:00
ba84afae67 test.sh: add rust/cargo runner 2021-12-01 09:18:38 +01:00
3b768f045c 2020 day23: add data 2021-12-01 09:14:48 +01:00
f8fb917a53 2020 day22: add data 2021-12-01 09:14:48 +01:00
6913282c43 2020 day20: add data 2021-12-01 09:14:48 +01:00
a02f2dbe26 2020 day12: add data 2021-12-01 09:14:48 +01:00
e087b24966 gitignore: Ignore cargo target directory 2021-12-01 09:14:48 +01:00
a692d567c0 2021 day1/rust: add solution 2021-12-01 09:14:48 +01:00
a29f0f3064 2021 day1: add data 2021-12-01 09:14:48 +01:00
a3fbb40b07 2020 day21/python: add solution 2021-12-01 09:14:48 +01:00
9bd4e811b6 gitignore: ignore haskell build artifacts 2021-12-01 09:14:48 +01:00
5c2320b5c2 2020 day24/haskell: add solution 2021-12-01 09:14:48 +01:00
17a0a2e8a4 common/haskell: move conway to common/ 2021-12-01 09:14:22 +01:00
0d3100b152 2020 day17/haskell: add solution 2021-12-01 09:08:24 +01:00
06203aee16 2020 day19/haskell: add solution 2021-12-01 09:08:24 +01:00
b0abe9abbb 2020 day18/haskell: add solution 2021-12-01 09:08:24 +01:00
e6c5f74b62 2020 day16/haskell: readability improvements 2021-12-01 09:08:24 +01:00
482522eab2 2020 day14/haskell: replace map-filter-enumerate with findIndices 2021-12-01 09:08:24 +01:00
c63c074114 2020 day16/haskell: prettify findSingletonChoice 2021-12-01 09:08:24 +01:00
b32a10b62f 2020 day16/haskell: rename iterateUntilDone to iterateUntilNothing 2021-12-01 09:08:24 +01:00
fb8094d5f4 2020 day16/haskell: add solution 2021-12-01 09:08:24 +01:00
e822334261 2020 day15/python: add solution 2021-12-01 09:08:24 +01:00
a2513d6d92 2020 day14/haskell: add solution 2021-12-01 09:08:24 +01:00
c1392a5259 2020 day2/haskell: add solution 2021-12-01 09:08:24 +01:00
e217c7894b 2020 day11/python: optimizations 2021-12-01 09:08:24 +01:00
89c5f6bb50 test.sh: ignore all example* files 2021-12-01 09:08:23 +01:00
bd9c5aa25c 2020 day13/haskell: add solution 2021-12-01 09:08:05 +01:00
47c6817eab 2020 day10/haskell: add solution 2021-12-01 09:08:05 +01:00
3645cd1985 test.sh: allow empty directories 2021-12-01 09:08:05 +01:00
0da19c92fd 2020 day11/python: add solution 2021-12-01 09:08:05 +01:00
81ec67e290 Add gitignore 2021-12-01 09:08:05 +01:00
eb12d4a13d 2020 day9/haskell: add solution 2021-12-01 09:08:05 +01:00
4428c8da66 README: update 2021-12-01 09:08:05 +01:00
92c03811e2 README: fix typo 2021-12-01 09:08:05 +01:00
73cbd0758c test.sh: skip hidden files and example.txt 2021-12-01 09:08:03 +01:00
8260604f97 test.sh: fix removal of test output files 2021-12-01 09:06:21 +01:00
04bd28abd3 2020 day8/haskell: add solution 2021-12-01 09:05:37 +01:00
9a45f980d5 haskell: remove unused import 2021-12-01 09:05:37 +01:00
ecd3d4102c haskell: explicitly export functions from AoC module 2021-12-01 09:05:37 +01:00
9e8462722e test.sh: write errors to stdout
stdout is swallowed by the result verification
2021-12-01 09:05:37 +01:00
70cc669fbc 2020 day7/python: rename functions 2021-12-01 09:05:37 +01:00
05e0930822 2020 day7/python: add solution 2021-12-01 09:05:37 +01:00
62b7b11f24 2020 day4/haskell: prettify 2021-12-01 09:05:37 +01:00
9dbea8448c Revert "2020 day2/vhdl: workaround ghdl#1529"
This reverts commit 2f1277c4b11de75e39bec5f83d0ec6446a1d07f2.
2021-12-01 09:05:37 +01:00
11b9dcb199 README: update 2021-12-01 09:05:37 +01:00
b9df6d7ceb add test script 2021-12-01 09:05:32 +01:00
77d05ea9e4 add test data 2021-12-01 08:54:50 +01:00
15203be615 2020 day2/vhdl: allow script to be run from outside its basedir 2021-12-01 08:54:50 +01:00
3ab9f6bb2e 2020 day2/vhdl: don't simulate synthesized design by default 2021-12-01 08:54:50 +01:00
33fb12e53d 2020 day4/haskell: fix wrongly removed import 2021-12-01 08:54:50 +01:00
753a0e7034 read problem inputs from stdin 2021-12-01 08:54:50 +01:00
c5409429e7 2020 day6/haskell: add solution 2021-12-01 08:54:50 +01:00
a5a8d7b926 haskell: simplify runAoC invocations 2021-12-01 08:54:50 +01:00
9c77daf539 haskell: don't force concatenation in splitOnEmptyLines 2021-12-01 08:54:50 +01:00
ecf310c031 haskell: move splitOnEmptyLines to AoC.hs 2021-12-01 08:54:50 +01:00
24556ff78d README.md: update 2021-12-01 08:54:50 +01:00
1006f83446 2020 day5/haskell: add solution 2021-12-01 08:54:50 +01:00
01afdce7ef haskell: move oneCompleteResult to AoC module 2021-12-01 08:54:50 +01:00
1e30302115 haskell: add simple run harness 2021-12-01 08:54:50 +01:00
a3c6a1d70c 2020 day4/haskell: fix typo 2021-12-01 08:54:50 +01:00
b923627c26 2020 day4/python: fix last passport not being read 2021-12-01 08:54:50 +01:00
d329518529 2020 day4/haskell parser: add solution 2021-12-01 08:54:50 +01:00
ef8671a794 2020 day3/haskell: make it more readable 2021-12-01 08:54:50 +01:00
892d42e6fb 2020 day4/pythong: add solution 2021-12-01 08:54:50 +01:00
63699367a5 2020 day3/haskell: add solution 2021-12-01 08:54:50 +01:00
c4acf55f42 2020 day3/python: add solution 2021-12-01 08:54:50 +01:00
7c453f7741 2020 day2/vhdl: update gitignore 2021-12-01 08:54:50 +01:00
7201d8c28a 2020 day2/vhdl: also run synthesized version 2021-12-01 08:54:50 +01:00
35c75c3aa5 2020 day2/vhdl: workaround ghdl#1529
https://github.com/ghdl/ghdl/pull/1529
2021-12-01 08:54:50 +01:00
61f8329811 README: add overview table 2021-12-01 08:54:50 +01:00
791b6f62aa 2020 day2/VHDL: add solution 2021-12-01 08:54:50 +01:00
6b4d4466ae 2020 day1/haskell: add solution 2021-12-01 08:54:50 +01:00
d447a9705c 2020 day2/python: add solution 2021-12-01 08:54:50 +01:00
486b5e779c 2020 day1/python: modify for part2 2021-12-01 08:54:44 +01:00
e78a627f19 2020 day1/python: add part1 2021-12-01 08:54:37 +01:00
280 changed files with 146140 additions and 0 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
example*
*.hi
*.o
target/

View file

@ -1,3 +1,34 @@
# Solutions for Advent of Code 2020
https://adventofcode.com/2020/
## Overview
|day| python | haskell | VHDL |
|---|--------|---------|------|
| 1 | `**` | `**` | |
| 2 | `**` | `**` | `**` |
| 3 | `**` | `**` | |
| 4 | `**` | `**` | |
| 5 | | `**` | |
| 6 | | `**` | |
| 7 | `**` | | |
| 8 | | `**` | |
| 9 | | `**` | |
|10 | | `**` | |
|11 | `**` | | |
|12 | | | |
|13 | | `**` | |
|14 | | `**` | |
|15 | `**` | | |
|16 | | `**` | |
|17 | | `**` | |
|18 | | `**` | |
|19 | | `**` | |
|20 | | | |
|21 | `**` | | |
|22 | | | |
|23 | | | |
|24 | | `**` | |
`test.sh` can be used to run all solutions and automatically compares them to (my) puzzle inputs and the expected outputs.

2
2020/data/day1.expected Normal file
View file

@ -0,0 +1,2 @@
1018336
288756720

200
2020/data/day1.input Normal file
View file

@ -0,0 +1,200 @@
1028
1987
1938
1136
1503
1456
1107
1535
1946
1986
855
1587
1632
1548
1384
1894
1092
1876
1914
1974
1662
1608
2004
1464
1557
1485
1267
1582
1307
1903
1102
1578
1421
1184
1290
1786
1295
1930
1131
1802
1685
1735
1498
1052
1688
990
1805
1768
1922
1781
1897
1545
1591
1393
1186
149
1619
1813
1708
1119
1214
1705
1942
1684
1460
1123
1439
1672
1980
1337
1731
1203
1481
2009
1110
1116
1443
1957
1891
1595
1951
1883
1733
1697
1321
1689
1103
1300
1262
1190
1667
1843
1544
1877
1718
1866
1929
1169
1693
1518
1375
1477
1222
1791
1612
1373
1253
1087
1959
1970
1112
1778
1412
1127
1767
1091
1653
1609
1810
1912
1917
935
1499
1878
1452
1935
1937
968
1905
1077
1701
1789
1506
1451
1125
1686
1117
1991
1215
1776
1976
846
1923
1945
1888
1193
1146
1583
1315
1372
1963
1491
1777
1799
1363
1579
1367
1863
1983
1679
1944
1654
1953
1297
530
1502
1738
1934
1185
1998
1764
1856
1207
1181
1494
1676
1900
1057
339
1994
2006
1536
2007
644
1173
1692
1493
1756
1916
1890
1908
1887
1241
1447
1997
1967
1098
1287
1392
1932

2
2020/data/day10.expected Normal file
View file

@ -0,0 +1,2 @@
1885
2024782584832

93
2020/data/day10.input Normal file
View file

@ -0,0 +1,93 @@
80
87
10
122
57
142
134
59
113
139
101
41
138
112
46
96
43
125
36
54
133
17
42
98
7
114
78
67
77
28
149
58
20
105
31
19
18
27
40
71
117
66
21
72
146
90
97
94
123
1
119
30
84
61
91
118
2
29
104
73
13
76
24
148
68
111
131
83
49
8
132
9
64
79
124
95
88
135
3
51
39
6
60
108
14
35
147
89
34
65
50
145
128

2
2020/data/day11.expected Normal file
View file

@ -0,0 +1,2 @@
2275
2121

98
2020/data/day11.input Normal file
View file

@ -0,0 +1,98 @@
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLL..LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLL.L
LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
......L.LL.....L.L..L.....L.L..LL.L.LL.L...L..L..............L..L......LL.....LL...L.L.....
LLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL..LLLLLLLLLLLL.LLLLLLLL.LLLLLLLL..LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLL.LLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL..LLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
...L..L....LL.L.L......LLLLL.....LL....L.......L.LL.L.L.L..LL...LLLLLL.LL........L.L.......
LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
.LLLLLLLL.LLLL..LLLL.LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LL.LLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLL.LL.LLLLLLL.LLLLLLLL
LLLLLLLLL.L.LL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
......L.L..L.L...LLL.....L.L..L......LL...L..L..L.L......L.L..L....LLLL....L..L....L.L..L.L
LLLLLL.LL.LLLLLLLLLL.LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLL.LLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLL.LLLL.LLLLLLLLL..LLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LLL.LLLLLLLLLLL.LLL.LL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLL.LL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLL.LLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.L.LL.LLLLL.LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
.LLL......L........L.....L..LL.L..L..L.L....L.L............L...........LLL..L..LL....LL..L.
LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLLLLLLLL..LLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
.......LL..L.LLL.L....L..L....L......L..L...LL...L.L...LL....L.L........L...L...L.L.......L
LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL..LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLL.LL.LLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
.L..LLL.L....LL.L..L..LL..L.LL.L......L........LLL.....L..LL...L.LL.LL.....L....L..LL.L....
LLLLLLLLLLL.LL.LLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLL..LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
L..L.LL....L..LL.L.....L.....L...L..L..L...L....L.L.L..LL.L......L...L......L....L.....L.L.
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLL..LLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.L.LLL.LLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.L.LLLLL.LLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
.L..L.L...LLL.LL.L.L...L........LLLLL.L..L......L.....L....L.LL.L.LLL...LL..LL.LL..LL.....L
LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLL..LLLLLLL.LLLLLLLL
..L.L..L...L..L.L........L.L.LLL..L.L...LLL..L..........L........L....LLLL.LL...L......LL..
LLLLLLLLL.LLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLL..LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLL
LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLL.LL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLL
....LL.L..L...LL......L.....L..LL.L.......LL...L....LLLLL..L..L.LLL.......LL..LL...LL.....L
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.L.LLLLLL
LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLL.L.LLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.
.L.LL..L.LLL.L...L.......L..LLL.....L...LL...LLL...L.LL............L.L....LL.....L.L..LL..L
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLL.LLLLL
LLLLLLLLL.LLLL.LLLLL.L.L.LLLLLLLLLLL.LLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLL.LLLLLLLLLL.L.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLL.LLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLL..L....L.LL..L.L.LLL.LL..L.......L.LL..L..L....L..L...L...L.L..L.L.L.L.L.L.LLL.L.....L.L
LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LL.LLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
.L..L..LL.L..L..L.L.L.LL..L....L.....L.LL..........L..L...LLL.L....LL...LL...L.LL.L.....LL.
LLLL.LLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL
LLLLLLLLLL.LLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL.LL.L.LLLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL
LLLLLLLLL.LLLL..LLLL.LLLLLL.LLLLLLLL.LL.L.LLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLL
LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLLLLL
LLLLLLLLL.LLLLLLLLLL.LLLLLL.LLLLL.LLLLLLL.LL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL..LLLLLLLL
LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLL.LLLLL

2
2020/data/day12.expexted Normal file
View file

@ -0,0 +1,2 @@
820
???

747
2020/data/day12.input Normal file
View file

@ -0,0 +1,747 @@
S2
W4
F31
N2
E4
F98
R180
W2
N4
E1
L180
W2
S5
F69
W5
F12
E3
F91
R90
E1
L90
F73
W4
N3
R90
F76
R90
F33
W2
L90
F51
E1
S3
L180
F62
N5
L180
N3
E1
L90
F83
R180
W4
F29
E2
L90
L90
N3
W1
S1
E2
L270
L180
N2
E1
F77
N2
F11
L180
E2
F45
N4
W5
S2
L90
N2
F14
L90
W3
F6
N5
E2
R90
E2
L90
F39
L90
F45
W2
F67
W4
F50
E1
F92
W5
F75
N2
W1
S3
R90
W5
F51
L90
E3
F71
N3
E3
F74
E4
S3
W2
L180
E2
S5
L270
R90
N2
R90
E4
L270
S5
E4
W3
L90
N2
F32
E3
N5
E2
R180
F27
S1
R90
F94
E2
F82
N3
L90
F100
W4
L90
S1
E4
F26
R90
R90
F12
W4
F70
L90
F100
W4
S2
R90
E3
F11
L90
F32
L180
S2
F11
S2
L90
S3
E4
F93
S1
R90
S2
F20
E2
F9
S5
F23
E4
S2
F38
L90
N3
F3
E2
F37
N2
F89
E5
F43
R90
F88
N5
F52
W5
F24
E4
L180
S4
E3
F14
L90
S2
E5
L180
N4
F98
N4
W2
S2
W1
S3
R90
F98
E4
R270
E2
F45
L90
F75
R180
W3
L180
F42
E2
N4
L90
F2
R180
W5
E5
N5
R180
F92
L90
F95
E3
F61
S5
E2
L180
E1
E2
F27
S3
W2
S1
F86
R270
S1
L90
R90
E5
S2
S2
F93
E2
R270
N3
W3
F74
R90
F94
E2
F88
S1
R90
W4
L90
N5
F59
R90
N1
F24
S2
F10
L90
F72
L90
F55
N2
E1
R90
N1
E1
F12
L90
S5
E5
F44
L180
S4
E2
E5
S1
E5
R180
S1
R90
N3
L90
E2
S4
L90
R90
W1
R90
E5
N1
L90
N1
E3
S5
W1
S1
L270
E2
E4
F31
S2
E4
N2
W3
L90
F7
S3
F23
S3
E1
F15
S1
L90
E4
S1
L90
N3
W1
F13
R180
S3
F37
N3
W5
S5
L90
F55
F54
R90
E1
N4
F68
S5
F3
L180
F75
N3
R90
W4
F78
S4
S3
R180
N2
R90
N1
F20
L180
F12
S4
E4
L180
F10
E2
N5
E3
F13
E3
L90
F55
E5
F96
W1
F100
R90
F97
W4
W2
N4
W4
N3
E4
R90
S1
W4
F80
W2
L90
F64
W5
S2
W3
R180
W1
S2
F83
R180
F37
W4
N4
F57
E3
R90
F37
S4
R180
F62
R90
S5
F9
E3
N4
L90
W4
R90
F97
W4
R180
F2
W4
S1
F77
L180
R90
E4
F58
S2
L90
E1
N3
L90
N2
W4
N1
L90
F94
E1
R90
F29
S3
L180
E2
R180
S5
F62
L90
N2
R90
E4
F93
L90
E5
N4
L180
N3
F20
R90
E3
L90
S3
F24
E4
R90
E4
F89
N1
F13
R180
W1
L90
S3
W5
S4
L180
W3
F90
S4
E3
F36
S3
E2
F37
E5
F31
L90
F68
S5
F74
L90
F59
R180
F20
N1
L180
N5
L90
E3
N2
W4
F54
L90
F77
R270
S5
F82
R90
E2
L180
F59
R90
E5
R90
F26
E4
F91
R90
W4
F6
W5
F34
S4
F61
W2
S2
R270
F45
R180
N5
L90
F26
L90
R90
S1
W3
N5
W5
L90
N3
L90
N3
E3
L90
F1
E4
L90
F60
N3
F7
S1
E1
F68
L90
N5
E5
F36
W3
S5
L270
N2
E1
R90
F8
S3
E1
R90
N1
E2
R90
N1
F90
E2
F63
S2
F17
S1
E3
L90
E4
L180
N4
W1
S4
L90
S5
F15
W1
N5
W3
F97
S3
L90
S2
F78
N3
W5
L90
F68
E3
F24
S3
L90
W2
L90
F49
W4
R90
F82
R270
S1
N3
L90
S4
R90
S2
F46
L180
E4
L180
W2
R90
L90
N1
F88
L180
S5
R90
S4
L90
F68
W5
F13
E4
S3
F91
W3
F85
L180
N4
W5
S3
F89
W1
L180
S2
E3
F82
L90
S4
W5
N5
W2
S4
S2
F82
E2
N4
L90
F80
E2
F49
W5
S3
F76
L90
S1
F41
S3
E1
F26
E3
F53
E2
F73
W3
R180
N2
R90
N3
R90
F16
L90
N3
N1
W5
F19
R90
N4
W5
F6
E3
N5
W2
N3
E4
S4
L90
E3
S2
F9
L180
F70
N5
S4
F63
N3
E1
R180
S3
L90
E5
L90
F76
R180
E2
L180
L90
F24
E5
S5
F98
S3
F97
N5
R90
N5
F43
W1
R180
F38
R180
F13
W2
F16
R90
F6
N1
F98
R180
N2
E1
F19
L90
S1
F33
R90
N3
F75
N4
L180
F35
W1
F61

2
2020/data/day13.expected Normal file
View file

@ -0,0 +1,2 @@
2215
1058443396696792

2
2020/data/day13.input Normal file
View file

@ -0,0 +1,2 @@
1005162
19,x,x,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,x,823,x,x,x,x,x,x,x,23,x,x,x,x,x,x,x,x,17,x,x,x,x,x,x,x,x,x,x,x,29,x,443,x,x,x,x,x,37,x,x,x,x,x,x,13

2
2020/data/day14.expected Normal file
View file

@ -0,0 +1,2 @@
12512013221615
3905642473893

572
2020/data/day14.input Normal file
View file

@ -0,0 +1,572 @@
mask = 101XX10X1X00001010011011X1XXX1001011
mem[12898] = 4515455
mem[39269] = 262864
mem[15998] = 27
mem[4565] = 896581
mem[35263] = 872262
mask = 110X1111000X000111001XX0110X010111XX
mem[5436] = 29453
mem[405] = 4591187
mem[36544] = 119659504
mem[4590] = 1754617
mask = 11001111000100XX11000000000XX0X0X001
mem[18971] = 65392
mem[12898] = 60445914
mem[51566] = 8117
mem[7267] = 99056
mem[25605] = 978
mem[33329] = 437436
mask = 10X0X100X00000101X0X0001111111X101XX
mem[43594] = 7609
mem[12898] = 126982257
mem[15065] = 4039
mask = 11XX11XX000100X10110111001101000X110
mem[2358] = 139154
mem[48424] = 361
mask = X00X0X000101010111111000X11001000111
mem[60868] = 1012242539
mem[13504] = 114153
mem[51015] = 34551413
mem[43984] = 708156
mem[58774] = 436301
mem[15489] = 243282402
mem[10963] = 81839
mask = 1001000X1100001001001101XX01000001X0
mem[63618] = 3428738
mem[16270] = 289636637
mem[45847] = 271443
mem[38518] = 2789
mask = X0010X000101X00111110010101010X001X1
mem[56985] = 14253068
mem[10578] = 869930
mask = 10000100010100010X11X01X00X011010001
mem[31893] = 32746
mem[57677] = 1423
mem[43667] = 94853349
mem[7624] = 76941001
mem[20508] = 1273351
mask = 10XX00100011X0X0110XX1X10011XX111000
mem[28963] = 125041
mem[42777] = 251362
mem[34873] = 155374451
mem[29355] = 886081
mem[16775] = 57795906
mem[42311] = 10111
mem[30652] = 4443965
mask = 10000111XX000001X1X0X001011110X00111
mem[31369] = 31024146
mem[23234] = 1046769566
mask = 00XX1010XX1X001011010111X11X1010011X
mem[20251] = 3138
mem[23672] = 28276
mem[48425] = 304
mem[51384] = 6985
mask = 110X011X00000001X100111001X010010X0X
mem[44366] = 985
mem[47430] = 127814906
mem[34576] = 41033794
mem[58183] = 11571792
mask = XX0001X0010100011X11101010000101X011
mem[47311] = 897443
mem[47179] = 457654457
mask = X100X11100010X0XX10X1000X11001001100
mem[57561] = 38620862
mem[63945] = 78
mem[37164] = 2722
mask = 0000XXXX0011XX0XX1110010X10000111000
mem[52440] = 14680631
mem[10040] = 482410861
mem[31369] = 1312217
mask = 10X1X0001000X01111X01011100111111001
mem[33657] = 127832235
mem[59700] = 232182856
mem[64183] = 32458630
mem[13528] = 56706903
mask = 00XX110X0X0XX00111010101X001110111X0
mem[34491] = 23031313
mem[16152] = 2473
mem[46572] = 58257
mask = 11X1011X00000001010XXX1010X10000X000
mem[36932] = 54890
mem[17249] = 518900642
mem[58586] = 27068931
mask = 1100011X0000X00111001000X00011X11001
mem[4203] = 11690902
mem[20122] = 399199895
mem[32417] = 379534
mem[50520] = 3253466
mem[23645] = 12184122
mask = 100000X00001010011X01011100X0010X010
mem[59410] = 3462
mem[51849] = 231731736
mem[31141] = 17505
mem[2661] = 20669501
mem[57030] = 225241
mem[37965] = 4947
mem[37475] = 120
mask = 10XX01110001000XX10001X0101111000011
mem[54239] = 21386681
mem[25423] = 49927683
mem[17991] = 24735
mem[26742] = 66457157
mask = 10000100100X00100X011X11100X10100100
mem[42442] = 2898
mem[33841] = 98213928
mem[1295] = 436390
mem[20533] = 26130
mask = 00X0001X000X000011001X1010000X101101
mem[12898] = 85396
mem[17781] = 96765096
mem[23645] = 156257533
mem[41542] = 25550
mem[23694] = 19768
mask = 00000000X0111101X11101110110X01X0001
mem[30165] = 9659654
mem[17417] = 840
mem[38700] = 20540407
mem[17514] = 266223622
mask = 1X0X0X100001000011001000101X11X0XX11
mem[1187] = 2633
mem[49568] = 13636
mem[41073] = 2493
mem[42442] = 562308
mask = 10000XXX0001000X1100010X111111000001
mem[18887] = 22856
mem[7241] = 580581
mem[20501] = 15343308
mem[8329] = 9182
mem[30265] = 1720165
mem[55589] = 56956
mem[56070] = 99398329
mask = 11X0111100010001X1X0101X0011X01XX1XX
mem[22677] = 289814
mem[57909] = 24289535
mem[2053] = 96654349
mem[12868] = 30681
mem[28491] = 26428
mem[52407] = 644
mem[26000] = 1537
mask = 100001X11100X00X0110010X111X100X0110
mem[61720] = 4504409
mem[18231] = 20747971
mem[7557] = 40802
mem[8177] = 1825
mem[16963] = 831395
mem[58488] = 32600
mask = 10000X001000001XX1XX101111X11X100XX1
mem[23493] = 1676
mem[14482] = 39198509
mem[12119] = 277
mem[34873] = 839193094
mem[59700] = 213967901
mem[44792] = 4486
mask = 11101111XX0X00010X100X101XX100000X00
mem[21304] = 749
mem[17415] = 1039713731
mem[56228] = 1653
mask = 0000X0X000X1X000X1XXX01000100010100X
mem[54745] = 258440
mem[9496] = 1382
mem[677] = 160442786
mem[18231] = 118264
mem[3314] = 7774920
mem[48978] = 58150
mask = 11010X11000000X1110011100X001001X0X0
mem[11295] = 1701
mem[43085] = 35120466
mem[36184] = 717214
mem[11085] = 797499853
mem[50040] = 100884
mem[12868] = 76327
mem[1094] = 17127824
mask = X1X0111100000001X100100111101111X000
mem[23009] = 56150703
mem[62945] = 187456
mem[16270] = 2148
mem[6558] = 226
mem[18104] = 116620
mask = 1100111X000100010X0X1XX0111101X00X1X
mem[20277] = 41195
mem[55507] = 497048
mem[65060] = 1392113
mem[39631] = 729
mem[20012] = 221
mem[38700] = 157
mask = 1011110X1100001010XX01X111X111X01110
mem[50095] = 329773464
mem[19363] = 23694
mem[23187] = 136735746
mem[41305] = 248581
mem[60810] = 36613
mask = 11X1010000000001X00001X0010010111X10
mem[23234] = 315410359
mem[61681] = 3806597
mem[57545] = 205794
mem[8173] = 743124
mem[33142] = 2265923
mem[50325] = 338694
mask = 11101XX10001X001X100101X0X11101000X0
mem[10886] = 92
mem[31621] = 49382572
mem[40094] = 381691821
mem[22404] = 25092613
mem[26046] = 540575313
mask = 1100X110000X000100X01X0X0X00X0X00001
mem[6401] = 12044
mem[51779] = 1254732
mem[49213] = 14771072
mask = 11001X1100X10X0111001110X10X0XX00100
mem[17960] = 1810
mem[58879] = 14547554
mask = 10110010X01110X01101000101100X011X01
mem[6271] = 43039
mem[42035] = 308023
mem[61809] = 14965999
mem[14482] = 22965
mask = 1000011111000X0X0110X111X1001XX00110
mem[34865] = 521885574
mem[32874] = 47758845
mem[49758] = 486116428
mem[4620] = 436
mem[8795] = 37336
mem[35355] = 1913
mem[24155] = 5028
mask = 100X00X100XXX0X011X111000001X00X1001
mem[12898] = 326718882
mem[41304] = 2217
mem[512] = 252187
mask = 00001X10X0111X0X01100010001010110011
mem[17133] = 9763003
mem[53861] = 20374202
mem[12411] = 11146
mem[44155] = 70710
mem[18558] = 1014374
mem[8244] = 27394
mask = 1100111100010X0X110X10X1X1110X100100
mem[6255] = 15673046
mem[27448] = 617665
mem[17549] = 1391
mem[9254] = 1191392
mask = 1110111X00010001X11XX110X01110100001
mem[27269] = 915739
mem[17886] = 2414578
mem[23234] = 10312308
mask = 1000111100010X01110X0101XX1010100001
mem[14210] = 3945538
mem[53570] = 152079
mem[42311] = 804
mem[20501] = 7528
mem[62486] = 44029
mask = 1X1X110X1X0X0010100001X111X11X10110X
mem[31020] = 10294
mem[36367] = 173644419
mem[3344] = 55087
mem[22404] = 3768102
mask = 0X000010000X00X01100XX1000110X001101
mem[8146] = 32084685
mem[25356] = 204754
mem[53100] = 31087
mem[16162] = 43271515
mem[7495] = 248175354
mask = 0X00111X000100000111000011000X11000X
mem[48425] = 16845
mem[21120] = 5932031
mem[18984] = 5971079
mem[22024] = 1139029
mem[57772] = 8264
mask = 1000X1X111X00000011001001X01X1000X11
mem[29416] = 214197264
mem[23107] = 16163
mem[35947] = 392
mem[3969] = 18827505
mask = 1X001111000XX10X1101110001X111100000
mem[23664] = 824737
mem[35051] = 6316
mem[23107] = 3396
mem[23133] = 93865
mask = 101000100011X000110101010110XX01010X
mem[64539] = 503222475
mem[49280] = 222415
mem[4908] = 6056
mask = X11011110001000111X000110X100X111101
mem[63002] = 227835267
mem[62736] = 2687
mem[35355] = 13135677
mem[30575] = 34622509
mem[6958] = 8289
mask = 1100111100X1X00111101011001110XXX011
mem[38931] = 50025
mem[5213] = 488636
mem[16162] = 6370
mem[49918] = 27948504
mem[10972] = 32144736
mem[25810] = 23808695
mem[59308] = 573239
mask = 1000001000X10X001100X011X01X11100X01
mem[8119] = 1356
mem[18765] = 16001283
mem[40681] = 81290249
mem[12898] = 1301
mem[26361] = 20784743
mem[27679] = 142542224
mask = 101X001X001X00001X0X0110001X111X01X1
mem[35355] = 805383617
mem[61993] = 4078154
mem[17549] = 1577966
mem[5900] = 111957340
mask = 0000001000010XX01X000000000100X10001
mem[14482] = 203210
mem[40789] = 103701945
mem[60901] = 165096
mem[9784] = 16634
mem[58840] = 2959
mask = 0X0000100001010XX1X0101X001X01X010XX
mem[35677] = 923584
mem[38170] = 52214160
mem[59710] = 917580
mem[28352] = 9711
mem[24738] = 527299
mask = 111XX100100100X0XXX0010111011010100X
mem[48324] = 113818619
mem[46099] = 22968630
mem[2047] = 7513744
mem[16084] = 22059
mem[3484] = 7934120
mask = 100001X00X01000111XX110010X1X0011X01
mem[40970] = 582049676
mem[43326] = 33149
mem[28352] = 8866951
mem[8571] = 5223
mask = X10100100XX1000011001X00100011000010
mem[57677] = 10736612
mem[44008] = 27644
mem[51849] = 54378
mem[20005] = 5582059
mem[23107] = 9832268
mem[57561] = 40400
mask = 11101111000X0001X10X10X10X1X10X010X0
mem[29968] = 89927661
mem[56] = 1989163
mem[7557] = 17453
mem[33361] = 9
mem[43444] = 78638
mem[12248] = 54497991
mem[35709] = 2765740
mask = 110XX1X00000000X0X00110000X0000001X0
mem[34491] = 13649
mem[26000] = 980
mask = 0X0000100X010100X1X0X000010001100101
mem[7504] = 2704
mem[41073] = 22655
mem[28507] = 9278213
mem[21463] = 1475
mem[63802] = 11330
mask = 11001111000X0001X100X1001001101000X0
mem[45847] = 1029083
mem[52359] = 87173
mem[7504] = 205315899
mem[37731] = 657
mem[41396] = 1027
mask = X001X0100XX10X1011X10X010000001111X1
mem[29618] = 14034335
mem[7831] = 1455
mem[28409] = 26087196
mask = X000001000010X0011001X1XX010XXX011X1
mem[49280] = 816038
mem[53410] = 632054
mem[25605] = 2170
mem[47742] = 449847
mem[7056] = 13776253
mem[12256] = 722
mask = 110X11X100010001X10010X0X01010100100
mem[63043] = 7807913
mem[57885] = 230082055
mem[50315] = 27089695
mem[64722] = 54151
mem[19735] = 978866
mem[41391] = 9015641
mem[50548] = 96572794
mask = 100X00X0XX0000X1110X10111011111000X1
mem[61760] = 5688555
mem[18595] = 4630
mem[41305] = 1670
mem[25605] = 472094
mem[50759] = 28261157
mask = 00XXX1X0010100011XX1011010X0010100XX
mem[16270] = 7874
mem[63561] = 49551173
mem[43150] = 11196
mem[18504] = 18360154
mask = 1X0101X1000000X111001X100X0011010101
mem[1825] = 2048695
mem[26563] = 66443
mem[22477] = 2539322
mem[59104] = 1269245
mem[50554] = 3370
mem[7797] = 300
mask = 1000000XX0000X11010X11111X011010X011
mem[61720] = 700175
mem[37943] = 41662
mem[3405] = 441992426
mask = X0XX0X001X00001001000111110110XX0110
mem[45473] = 1830
mem[35940] = 16393
mem[44793] = 10545068
mem[23107] = 145304756
mem[48096] = 480559528
mem[57539] = 97582237
mem[64518] = 60543
mask = 10X00100010100X1X01XX0X000010101011X
mem[14210] = 200447
mem[26703] = 46292
mem[42748] = 7946
mem[11664] = 7633363
mask = X00X010001010X01XX11X0101X0X01000X01
mem[40269] = 357709
mem[36823] = 14385170
mem[52568] = 522064310
mem[41363] = 389730
mem[4127] = 2285054
mask = 1010110010000010X000XX111011100X01XX
mem[19072] = 49597375
mem[32473] = 7622
mem[1916] = 9685106
mem[10040] = 16339629
mem[10795] = 25165351
mem[16634] = 508779
mem[16084] = 232615
mask = 11XX1111X001XX0111000010X0110100X111
mem[44372] = 11010
mem[58030] = 5106
mem[15235] = 24371
mem[41578] = 3641535
mask = 110000X000000X01X0X0X01X1X0100001011
mem[64968] = 1528
mem[21183] = 429276
mem[51816] = 60726
mem[12248] = 87748
mask = X0001111000000011100101X10111100X11X
mem[39612] = 57230
mem[33329] = 35880
mem[15681] = 27569
mem[51326] = 237622439
mem[36099] = 48369
mem[58183] = 726
mem[38471] = 2690
mask = 11X011110X01000X0100X0X0X000X01X01X0
mem[41793] = 519002787
mem[39290] = 5821
mask = 000X00100001XX00X1000000X1XX10010110
mem[36367] = 1347261
mem[52040] = 858329
mem[60969] = 14183
mem[49232] = 3014091
mask = X000X01X000101XX1100X11001X00000100X
mem[61397] = 9063
mem[63395] = 92917
mem[47750] = 6587
mem[13695] = 2038
mem[52876] = 219355
mem[50726] = 815351
mask = 11X0X111000100011100100X0X11X1X011XX
mem[24438] = 360143
mem[14268] = 233280
mem[46071] = 14590
mem[47430] = 195019
mem[8714] = 5003481
mem[34758] = 866985
mask = 10000X00XX010101101X1X111001X0001110
mem[12826] = 369283
mem[33546] = 519165
mem[34578] = 12340
mem[13504] = 301264250
mem[4433] = 26315015
mask = X0X011X000X100X001110100000XX011100X
mem[10779] = 6427
mem[62591] = 124867728
mem[4073] = 26086825
mem[19735] = 14280934
mem[40681] = 54398576
mem[44232] = 1164302
mem[5734] = 677248729
mask = 1000XX0X11000010X100X01011011X1001X1
mem[55680] = 6971988
mem[4565] = 1361280
mem[35316] = 2209
mem[40546] = 758
mem[47381] = 49216
mask = 000000100XX10101X10X10000XX1X01X0100
mem[57507] = 477326
mem[58729] = 256151738
mem[47689] = 16875625
mask = 0000001000010X00X100100X0X0X0X00010X
mem[58893] = 531598
mem[56609] = 1534
mem[793] = 3558686
mem[17811] = 31042
mem[41552] = 73028105
mem[12657] = 1035597401
mask = 110011100000000101001XX00101X0000X00
mem[18971] = 81961737
mem[58641] = 685839
mem[58774] = 51830284
mem[50554] = 190835154
mask = 1010X100000000101X00100X1110X0001X01
mem[10630] = 11281616
mem[30301] = 344
mem[21809] = 66389352
mem[15829] = 3924744
mem[50602] = 546681
mem[33142] = 153438
mask = 0X000010000X010X111X01X11110111X10X0
mem[32309] = 1315
mem[59481] = 404
mem[13793] = 2029
mem[41406] = 2393
mem[7495] = 24826836
mem[61576] = 9555003
mask = 00000100X10X010111111X0010X111010010
mem[6662] = 15689063
mem[1130] = 182923358
mem[6648] = 3538
mem[8833] = 7984
mem[7495] = 8285851
mask = 11000X1X00XX000100X01X0X01X11X000000
mem[34270] = 180307825
mem[36097] = 712
mem[47750] = 843753
mem[44800] = 247708
mem[48331] = 31912
mask = 0001000001010101XX1X1X1X011X1000011X
mem[15235] = 491
mem[47685] = 775
mem[52882] = 99948
mem[32016] = 395727
mask = 100000010XX0XX00X101X10000X110X01000
mem[49801] = 230387797
mem[55855] = 7808
mem[39291] = 114525
mem[50759] = 2588
mem[31793] = 19374
mask = 10XX11X000010X00X1X1XX010011011110X1
mem[45068] = 763282
mem[31165] = 43188
mem[25684] = 1041033
mem[52456] = 32196
mask = 1100X1XXX001X00111X0110X0X101010X101
mem[59821] = 6610
mem[57397] = 67932
mem[15240] = 505977952
mask = 100X001XX0X1X00011010100X0110000X001
mem[22585] = 2024050
mem[30527] = 79580709
mem[57425] = 7597579
mem[49280] = 47528262
mask = 1X00XX1X000X0001110011X010X111000001
mem[45847] = 207968
mem[12898] = 69230005
mem[18887] = 433691609
mem[7495] = 114085080
mem[8177] = 105183315
mem[9561] = 1468259
mem[38679] = 7998

2
2020/data/day15.expected Normal file
View file

@ -0,0 +1,2 @@
496
883

1
2020/data/day15.input Normal file
View file

@ -0,0 +1 @@
2,0,1,7,4,14,18

2
2020/data/day16.expected Normal file
View file

@ -0,0 +1,2 @@
25984
1265347500049

268
2020/data/day16.input Normal file
View file

@ -0,0 +1,268 @@
departure location: 25-568 or 594-957
departure station: 33-447 or 466-952
departure platform: 31-700 or 725-956
departure track: 43-124 or 141-952
departure date: 26-290 or 306-962
departure time: 34-754 or 763-960
arrival location: 29-208 or 217-958
arrival station: 48-118 or 124-973
arrival platform: 35-368 or 389-972
arrival track: 47-91 or 106-970
class: 35-521 or 528-960
duration: 27-833 or 855-965
price: 25-870 or 895-957
route: 31-140 or 146-965
row: 35-736 or 743-957
seat: 33-227 or 249-961
train: 27-763 or 788-961
type: 34-167 or 193-950
wagon: 47-437 or 443-952
zone: 48-928 or 940-955
your ticket:
113,197,59,167,151,107,79,73,109,157,199,193,83,53,89,71,149,61,67,163
nearby tickets:
659,831,365,819,499,735,227,617,597,323,200,413,863,803,5,753,925,468,632,658
927,75,984,694,820,863,534,221,199,559,628,748,860,940,792,351,496,947,278,259
418,710,489,833,397,567,488,620,158,218,199,857,271,566,911,790,152,489,746,421
148,646,536,509,923,537,944,552,488,390,113,218,256,522,562,685,628,400,568,148
470,488,669,648,802,323,801,109,926,496,207,267,68,397,565,196,648,648,815,383
911,362,638,673,911,4,471,647,646,164,699,681,557,906,288,657,90,445,730,218
493,679,809,398,116,544,405,692,616,736,662,410,316,201,906,403,322,314,331,703
792,481,67,503,545,536,806,220,677,118,988,726,551,106,87,400,479,155,910,71
863,322,355,482,550,432,157,661,113,749,308,805,77,167,75,107,645,885,529,506
336,433,147,909,530,727,751,617,220,68,904,442,59,82,537,425,562,794,506,613
329,908,363,321,504,419,794,521,269,417,285,189,568,940,912,902,498,57,421,558
696,649,444,413,503,363,596,78,536,977,626,329,745,538,263,166,308,899,404,428
613,919,354,163,278,919,865,158,614,419,620,260,128,205,567,651,792,153,820,685
706,321,903,437,444,477,443,395,447,364,160,445,529,365,88,262,700,630,226,421
790,236,632,411,865,60,405,266,315,64,356,107,146,118,644,699,608,503,792,447
56,944,115,277,434,621,331,287,21,607,904,274,909,434,280,494,433,472,249,473
888,323,672,419,447,635,678,391,788,791,331,403,274,664,270,686,194,338,403,736
112,341,491,258,814,404,112,282,337,322,614,277,911,419,252,108,690,500,10,828
312,392,337,669,508,557,200,694,309,226,700,909,16,343,289,333,754,262,664,789
602,476,793,561,427,416,627,112,663,821,74,279,554,427,536,123,365,826,899,203
54,685,193,321,866,650,417,196,680,287,79,360,117,62,495,412,272,205,438,681
940,269,566,519,642,52,164,513,606,829,159,796,603,89,312,492,661,363,988,217
156,826,316,525,895,902,823,619,149,310,863,536,208,495,685,533,594,813,284,355
353,560,814,293,655,639,365,949,553,926,546,401,917,793,672,907,693,725,813,814
604,636,124,69,259,682,602,343,863,640,154,445,531,625,509,942,292,796,624,197
490,55,6,860,395,865,831,89,910,115,731,639,725,537,79,163,310,691,671,366
276,196,442,221,594,644,273,660,594,418,810,808,436,108,429,609,261,281,664,863
633,568,272,412,67,541,561,678,729,308,444,274,418,948,652,197,81,400,517,937
155,736,402,897,595,615,55,266,109,404,280,692,625,918,735,759,633,421,903,672
651,113,914,632,271,80,386,626,511,220,869,255,531,811,413,353,57,763,76,391
331,546,82,266,826,326,54,945,933,948,920,118,287,903,801,106,358,163,618,676
911,520,922,287,733,57,195,796,624,672,932,624,810,650,833,666,801,428,868,911
108,65,79,272,818,265,544,80,426,809,671,218,152,936,353,630,664,493,445,113
469,652,633,274,675,166,448,653,225,540,150,946,630,322,157,200,437,472,151,735
636,275,670,680,164,285,771,312,869,628,898,653,912,492,500,520,640,655,223,196
91,112,408,601,508,90,823,564,345,401,878,50,267,864,508,349,338,512,261,146
397,549,803,74,394,637,150,685,922,868,870,407,330,997,903,492,833,223,308,332
638,677,342,152,333,467,476,530,947,809,487,50,656,940,799,912,536,686,619,989
688,605,258,668,152,50,815,642,631,107,410,946,154,124,768,819,407,85,917,856
552,342,897,114,61,867,118,165,544,346,323,920,558,438,796,687,693,155,290,419
155,406,331,899,499,312,796,820,747,870,699,323,83,385,365,151,744,317,665,193
303,615,602,942,476,425,642,551,817,830,401,640,666,906,628,162,566,317,221,639
258,0,506,513,548,537,258,405,255,679,631,659,792,365,799,532,420,556,499,159
831,904,949,493,271,810,622,677,429,645,327,167,146,807,597,685,980,405,330,411
683,614,403,274,743,661,367,830,625,687,361,54,918,53,618,703,948,565,611,320
115,51,330,926,74,158,894,788,545,63,350,789,115,106,420,649,669,62,822,56
284,898,410,517,827,613,943,310,686,161,283,904,362,492,664,203,330,142,259,927
457,333,345,555,62,659,489,633,540,166,828,833,861,482,685,495,624,856,827,226
355,940,224,145,864,629,147,308,437,415,913,926,662,679,273,402,156,635,156,306
646,818,70,659,628,610,552,280,865,148,928,158,351,807,526,680,496,920,422,503
942,208,511,151,899,489,414,912,811,497,865,613,684,480,185,351,490,689,476,567
663,339,510,495,914,555,201,195,493,433,529,630,656,4,644,506,920,488,820,546
656,512,568,621,731,206,283,419,391,895,306,486,593,560,631,519,434,66,697,619
685,309,624,755,422,84,493,55,912,502,656,801,325,117,897,205,725,790,310,404
485,446,219,726,619,725,748,400,814,217,941,668,770,227,108,735,220,788,672,150
323,147,612,942,400,397,390,440,263,317,641,860,567,83,613,913,151,259,124,903
619,456,503,631,193,685,601,551,909,916,433,534,819,510,476,686,817,497,763,313
509,751,655,322,926,744,407,684,675,65,697,511,947,914,22,622,907,594,389,898
242,907,252,823,543,686,700,788,905,867,52,901,336,155,258,202,330,902,422,469
151,582,280,672,659,489,447,160,596,148,432,594,695,124,430,557,86,860,598,869
791,64,353,686,641,802,792,288,256,208,928,687,819,945,307,628,426,993,473,426
224,397,167,218,58,194,706,54,536,683,347,505,337,697,492,535,487,653,521,111
611,634,627,645,556,501,108,314,81,310,86,354,697,351,881,328,432,310,534,416
862,196,350,949,819,485,251,988,447,860,494,419,90,484,828,111,747,345,393,318
307,509,731,337,252,150,204,678,499,919,327,826,59,309,439,824,749,436,813,76
924,154,942,751,206,620,610,414,749,438,322,55,412,253,860,90,649,338,793,350
683,185,906,915,661,829,198,831,670,943,683,434,566,415,58,529,263,78,164,201
480,689,548,658,674,646,694,869,58,251,680,195,541,319,477,178,925,400,267,562
251,809,901,809,162,66,87,810,159,287,543,485,802,400,72,81,217,643,531,120
87,689,920,787,788,918,84,409,808,350,50,82,404,917,320,70,148,72,753,435
77,269,665,632,422,205,409,626,158,553,200,406,942,207,271,531,266,370,116,159
139,537,913,317,500,161,921,260,434,265,652,447,820,276,468,271,161,467,394,403
405,110,412,670,336,618,113,4,745,202,254,221,420,349,166,79,336,219,434,866
202,909,251,260,512,226,279,72,866,510,537,558,198,762,257,218,561,164,390,564
905,253,743,107,944,431,499,148,307,728,251,320,178,288,155,659,921,68,813,261
675,444,502,165,407,681,566,278,265,79,610,56,639,663,272,566,141,729,534,923
636,948,91,921,526,487,604,609,636,529,947,319,915,515,112,409,830,490,696,124
259,147,615,855,516,626,413,502,559,259,547,821,568,342,694,736,6,639,353,390
392,346,150,669,682,310,745,510,260,925,376,789,729,665,620,497,856,505,925,916
536,617,275,563,601,497,897,177,503,226,791,160,791,315,261,153,821,856,494,74
154,412,54,896,616,111,226,596,492,735,603,901,603,696,933,353,856,509,653,652
111,69,316,285,832,1,65,434,273,431,557,832,507,494,466,51,644,691,225,433
339,158,306,120,272,493,556,84,446,910,612,506,606,655,826,629,626,474,520,684
544,488,501,275,262,362,153,82,442,730,351,274,562,898,698,149,691,512,810,367
913,611,830,856,641,312,437,280,436,331,162,70,891,687,113,80,404,533,225,602
537,378,686,333,77,108,627,566,414,672,407,51,69,608,548,537,625,116,81,497
289,727,912,820,350,538,317,327,946,276,942,428,620,447,870,483,282,862,736,525
944,536,195,540,688,948,688,393,617,499,141,811,900,628,207,906,333,71,905,917
149,292,857,649,321,614,227,346,467,916,637,500,753,804,348,306,561,358,161,332
355,466,805,485,899,695,299,195,509,395,480,568,792,623,154,82,491,676,695,278
436,405,264,745,51,76,679,324,536,665,650,208,936,699,362,415,325,624,264,75
277,648,666,223,392,897,744,379,619,568,275,278,945,895,351,927,646,490,321,482
210,445,315,616,360,597,551,604,696,913,665,795,164,751,606,824,162,434,558,264
868,322,905,82,193,57,312,630,787,820,501,536,800,63,926,327,398,549,487,470
736,827,520,551,747,815,935,390,536,730,56,601,218,553,478,745,753,312,343,683
612,540,626,748,725,59,192,287,699,820,437,262,606,945,84,59,519,686,814,857
869,427,548,473,749,429,16,609,365,395,62,66,480,443,155,898,68,443,352,471
81,930,547,279,698,866,943,650,641,686,788,565,725,483,530,816,636,491,155,745
84,637,389,870,408,478,689,314,142,55,566,283,690,61,149,504,162,667,697,686
808,599,514,632,788,61,625,424,432,311,673,519,862,281,814,992,390,657,632,506
898,608,483,269,62,362,274,272,747,796,149,807,89,597,919,652,604,341,858,296
77,736,901,897,642,677,344,914,310,382,68,315,608,161,73,80,418,335,537,288
896,410,498,673,635,797,307,111,857,390,59,321,824,288,608,87,61,943,686,755
335,922,696,91,650,262,307,536,662,161,897,647,369,154,666,250,249,652,194,620
50,269,699,697,807,323,517,116,621,908,663,559,224,532,200,780,807,612,594,357
684,73,328,895,200,542,578,51,480,948,563,685,270,332,347,677,678,751,632,918
942,858,411,288,546,418,616,489,468,546,68,289,658,446,330,572,354,87,250,69
472,78,487,934,57,316,414,944,822,799,657,636,698,324,273,686,447,423,65,478
409,429,696,620,472,831,808,197,413,492,944,486,316,917,545,529,420,540,618,23
106,151,559,711,273,692,896,149,910,519,86,344,672,603,206,194,404,557,331,744
605,108,519,255,56,282,444,793,361,167,669,261,314,733,340,797,694,916,685,787
312,655,619,643,207,69,414,564,427,222,257,608,206,529,508,628,919,157,410,585
759,81,642,147,814,559,726,796,260,72,390,257,423,902,669,618,272,688,86,793
564,622,749,655,363,686,620,392,997,309,745,350,866,151,150,323,788,725,52,401
534,599,114,855,919,347,431,801,423,523,260,367,275,685,553,687,348,478,271,116
203,910,909,64,366,76,527,69,57,537,217,651,330,644,687,469,162,424,198,615
897,494,499,430,322,617,67,108,595,110,515,549,394,804,979,603,747,356,357,162
542,911,326,815,544,424,469,513,993,249,489,487,530,620,112,282,599,259,162,810
495,259,641,659,625,866,806,655,809,549,160,901,726,320,387,747,794,315,925,286
290,675,73,54,18,436,203,409,747,816,855,468,342,831,659,654,554,630,347,664
434,482,362,333,612,268,330,161,156,615,226,218,494,51,416,283,524,391,392,671
412,914,366,557,528,434,51,420,310,886,674,344,544,368,725,641,158,637,474,688
17,815,109,646,306,288,911,822,321,159,699,904,674,476,799,201,539,201,945,401
521,617,622,162,401,350,808,149,744,624,90,270,342,813,677,167,479,524,655,904
251,325,161,536,635,610,745,406,257,601,517,64,947,808,797,926,801,731,595,142
75,976,332,167,668,474,828,149,350,326,473,276,224,900,744,82,799,736,332,343
217,423,949,919,270,923,333,620,541,275,409,553,684,74,987,54,348,650,648,354
153,600,167,727,650,221,800,223,312,262,920,665,736,18,340,343,819,208,628,411
439,940,220,654,84,320,598,599,616,869,622,59,605,315,349,425,896,217,534,731
646,474,749,401,518,610,640,615,673,620,469,348,597,993,528,496,220,68,857,312
260,655,634,443,597,79,868,268,114,282,923,763,164,632,727,928,138,124,356,117
263,541,266,157,87,500,755,551,277,744,487,661,151,918,531,351,227,164,859,147
825,906,526,88,733,466,331,900,866,625,471,640,669,351,682,905,158,560,594,633
370,156,57,56,73,909,656,414,856,160,596,606,153,643,610,637,205,368,659,743
748,628,155,477,485,80,473,812,338,857,202,662,349,445,336,490,672,56,200,998
86,542,512,922,151,597,676,433,864,317,919,823,438,565,813,791,547,412,206,311
606,539,541,926,289,670,204,261,81,790,905,530,818,403,306,473,501,183,750,112
426,828,809,700,426,412,307,895,107,949,174,861,262,264,698,504,225,749,645,796
403,411,433,270,601,390,645,537,315,166,514,829,562,478,359,667,149,831,76,211
419,928,502,650,544,805,688,519,78,486,12,159,535,736,904,817,59,60,317,816
620,901,915,333,415,154,629,538,643,429,285,18,681,258,261,307,806,895,494,203
810,621,829,685,71,478,605,942,315,863,195,659,640,785,58,163,827,682,515,640
491,430,275,249,323,484,747,73,65,312,830,260,412,319,410,792,781,428,117,831
281,920,54,286,795,828,141,405,423,803,418,860,855,657,410,528,409,552,277,357
856,738,736,679,365,814,644,729,520,344,635,568,520,331,515,73,830,224,411,273
685,51,281,656,407,788,945,751,306,531,74,75,822,640,636,604,195,217,555,459
804,821,4,792,415,53,163,656,402,497,251,562,512,676,397,405,164,423,400,516
269,52,649,285,266,637,667,202,255,55,65,345,365,354,819,64,725,326,700,440
803,745,926,432,482,628,745,698,306,621,441,111,650,115,445,66,855,661,443,435
732,435,656,604,678,158,675,651,525,551,284,219,594,482,348,330,281,605,823,915
602,832,399,683,855,467,309,488,330,817,635,154,595,428,534,629,534,342,914,999
737,753,311,564,751,917,924,679,258,263,86,728,206,447,604,113,832,861,221,683
824,330,289,513,536,153,664,317,157,357,344,253,525,390,903,319,664,330,310,162
555,135,90,506,812,357,221,659,615,829,731,728,605,162,62,819,339,725,398,194
252,941,56,928,551,532,518,523,421,672,111,820,395,549,922,529,800,501,477,816
934,618,725,609,698,331,918,506,470,818,809,362,926,482,117,165,748,347,730,264
645,812,393,799,754,329,255,445,483,332,664,524,925,626,347,492,685,699,948,673
123,406,362,745,655,508,675,152,357,317,698,675,907,402,346,866,217,907,321,207
539,783,903,342,288,339,151,667,694,567,567,198,699,816,675,490,559,197,79,631
276,518,827,508,202,550,81,77,669,532,797,355,656,414,452,252,616,897,204,917
745,480,563,60,904,800,488,897,507,151,154,544,630,809,59,377,657,395,532,59
4,727,828,422,431,900,321,68,643,446,725,431,53,404,162,499,540,636,310,810
790,84,444,330,477,252,498,686,729,52,608,824,271,445,390,512,761,258,124,323
351,103,820,73,78,732,252,752,659,540,619,625,927,154,749,425,364,788,366,83
900,525,443,560,941,867,728,822,167,605,356,157,611,662,869,919,109,165,107,897
437,250,354,827,548,313,408,52,262,168,507,113,252,808,204,218,870,941,70,749
545,901,987,657,108,399,832,596,409,748,506,285,949,365,317,336,629,482,435,907
586,749,118,281,804,921,698,201,828,504,649,277,84,606,633,290,249,698,398,368
261,689,942,624,432,798,623,260,507,619,902,425,908,161,410,976,398,306,807,830
515,156,220,925,667,611,441,270,62,358,358,799,545,61,364,67,286,668,548,393
772,825,606,731,685,165,91,920,608,654,155,833,227,510,532,274,344,595,259,396
678,399,909,861,335,923,700,323,892,543,744,410,485,153,620,606,541,790,511,274
419,503,108,342,675,193,825,918,602,420,260,148,164,145,517,549,279,500,639,255
725,72,54,469,436,507,856,72,830,653,502,944,856,75,688,736,529,779,746,730
445,503,944,752,68,319,432,164,510,72,513,331,416,359,77,72,462,489,393,413
689,90,278,166,157,19,167,332,912,500,682,481,911,676,544,807,342,530,794,471
596,915,664,751,621,71,748,943,414,223,483,633,295,549,677,551,317,69,529,538
913,540,832,335,748,656,685,826,656,89,138,700,362,73,427,351,560,327,562,612
405,690,390,731,396,78,895,249,549,626,155,311,337,404,923,298,799,693,153,254
271,210,924,926,678,339,366,162,430,686,904,901,267,155,544,162,905,322,868,802
81,284,261,498,919,334,621,750,600,536,865,435,203,825,312,226,473,925,277,236
142,507,157,492,621,201,491,278,470,681,609,194,417,619,649,860,746,661,616,908
274,920,66,355,479,10,55,435,158,338,503,446,414,500,816,406,654,508,61,257
824,149,516,673,361,803,668,926,500,730,51,410,823,857,308,162,441,429,366,901
147,145,158,112,595,867,332,108,925,400,797,368,542,558,323,427,77,554,337,503
337,344,871,790,360,158,551,727,269,52,83,539,734,327,597,285,335,753,484,402
903,697,728,532,655,944,75,143,57,445,743,273,684,109,347,506,77,864,111,491
516,424,899,816,752,199,227,266,172,734,74,165,222,601,652,468,85,279,531,415
56,70,159,537,354,196,610,206,833,416,605,859,975,609,645,437,675,922,655,594
823,657,323,163,509,277,0,362,552,311,668,308,636,436,922,801,253,56,219,350
267,331,338,680,568,678,487,947,858,412,77,818,656,290,917,665,667,269,90,887
253,600,284,895,908,90,831,857,56,256,656,58,489,73,314,197,383,306,520,803
396,603,638,732,18,823,54,109,796,113,858,808,796,261,401,393,420,683,391,803
524,415,255,910,422,915,693,803,535,117,323,80,830,472,56,353,268,151,51,116
425,669,679,827,793,58,366,856,479,219,219,689,312,218,69,460,309,730,410,82
615,735,809,150,860,488,796,221,791,555,316,362,634,146,420,475,391,928,279,189
915,416,86,619,314,505,163,908,277,327,12,801,152,601,797,346,557,289,398,265
619,122,927,195,903,400,736,619,249,603,664,498,817,282,414,72,362,520,427,356
489,889,641,154,603,629,150,622,610,492,926,485,763,320,352,273,947,444,555,747
470,90,483,91,59,941,683,359,810,81,70,886,763,546,366,218,162,345,497,413
664,486,485,675,223,733,814,607,644,748,523,567,662,607,157,342,752,106,730,367
478,152,88,220,600,280,312,256,518,791,79,606,326,515,306,138,488,814,114,394
901,197,75,381,320,65,257,857,602,193,71,339,402,153,399,282,207,322,648,320
601,329,314,443,542,528,904,754,336,807,783,813,53,791,85,801,923,858,420,258
65,520,752,61,351,159,810,732,928,278,286,324,490,184,277,167,813,867,198,280
157,322,617,64,442,53,225,350,659,422,813,268,665,610,942,266,487,419,415,158
474,318,79,440,223,327,289,89,226,506,147,647,109,698,472,402,634,485,911,810
808,642,824,418,74,490,695,310,150,868,758,485,862,218,275,475,436,322,202,789
170,632,287,632,548,536,283,221,670,792,503,943,896,251,547,625,324,604,657,663
343,519,359,754,74,494,127,601,949,315,538,437,811,752,407,922,319,149,362,203
435,642,253,830,336,258,414,157,794,355,521,598,307,801,553,540,977,347,343,322
270,416,513,237,901,360,426,327,124,345,868,484,651,645,763,205,60,821,746,154
332,157,480,828,554,903,361,277,261,640,515,316,275,505,128,601,609,859,643,557
541,700,203,495,267,422,426,999,789,644,62,269,617,636,217,551,633,474,726,109
606,940,155,580,311,796,77,467,415,53,166,727,521,947,632,308,200,746,410,76
496,943,609,858,91,599,124,53,393,730,208,308,800,148,621,440,618,529,437,165
430,752,605,340,920,400,109,502,407,315,699,483,75,255,654,14,813,566,546,800
725,270,404,393,545,124,160,389,402,926,222,333,143,830,166,321,552,71,436,258
924,748,601,918,310,553,500,693,162,904,602,700,448,153,560,692,333,490,86,500
519,598,161,471,276,612,604,561,823,509,485,735,406,350,518,432,115,441,804,529
343,263,84,606,751,928,647,67,162,691,416,677,90,729,512,815,507,816,995,634
165,670,469,282,342,533,858,290,547,194,162,482,833,888,156,310,557,475,807,744
665,634,806,614,466,594,164,889,262,217,557,405,682,745,321,627,444,413,67,601
326,758,657,488,310,394,318,278,205,691,148,446,916,534,923,403,206,63,195,51
810,344,594,217,272,368,611,830,387,342,866,82,616,60,322,693,663,519,261,805
252,152,412,894,315,542,268,496,327,638,497,673,362,437,469,77,282,552,205,614
858,280,630,320,671,512,895,401,510,479,329,558,115,310,145,91,75,333,88,117
147,798,77,648,689,801,904,796,253,623,865,618,316,410,761,275,310,62,502,630
539,84,311,926,194,639,356,446,821,445,253,679,757,53,633,749,902,490,543,193
354,359,432,916,547,940,349,820,692,424,734,944,403,519,118,141,732,664,596,160
342,346,50,616,146,919,472,281,469,700,225,364,83,948,668,411,873,403,286,400
553,162,633,346,497,489,117,258,280,823,693,919,279,404,193,933,203,827,808,623
341,509,751,132,486,645,898,425,899,794,699,609,636,807,906,514,63,748,568,535
547,607,860,459,285,166,693,78,67,830,802,355,743,691,901,349,538,695,60,391
481,501,477,195,429,647,63,561,610,320,336,663,534,799,330,994,748,910,789,351
535,746,501,553,831,107,515,149,482,79,563,795,617,645,734,483,391,729,650,125
276,792,492,536,733,285,552,432,208,981,350,818,347,71,735,322,225,435,788,651
813,820,436,431,596,944,330,518,256,354,277,647,870,264,284,527,530,505,54,152
115,420,204,619,509,351,699,352,402,634,361,425,925,808,333,886,415,364,160,659
111,749,731,187,67,790,89,437,491,610,677,61,225,550,791,341,945,864,537,389
690,632,89,763,538,389,831,333,366,864,157,253,64,732,652,763,181,791,333,556
313,194,489,272,153,520,274,124,700,676,506,565,518,624,816,390,929,227,362,555
788,439,948,678,596,411,539,57,596,77,323,614,204,323,71,333,540,635,348,476

2
2020/data/day17.expected Normal file
View file

@ -0,0 +1,2 @@
359
2228

8
2020/data/day17.input Normal file
View file

@ -0,0 +1,8 @@
.##..#.#
#...##.#
##...#.#
.##.##..
...#.#.#
.##.#..#
...#..##
###..##.

2
2020/data/day18.expected Normal file
View file

@ -0,0 +1,2 @@
2743012121210
65658760783597

376
2020/data/day18.input Normal file
View file

@ -0,0 +1,376 @@
(9 + (5 + 2 + 2 * 4) * (7 + 7 * 5 * 3) + 7) + 2 + 4 * 2 + 3 * (8 + 5)
3 + 5 + (9 + 2 * 5) + (6 * 4 + 8) * 9 + 3
6 + 4 * ((4 * 8 * 3 * 5) + 8 * 6 + 7 + 6 * (3 + 5 + 6 * 4)) * 2 * 7
4 * (9 * 2) + 2 + (3 + 2 * 5 * (5 * 3 + 9 * 5 * 9) + 4 + 9)
(9 * (7 * 7 * 2 + 3 + 8 + 8) + 5 + 5) + 9 * 6
4 + (2 + 2 * 6 + 3 * (9 * 8 * 3) * 2) * 2 * (8 + 7 * 3 * 9 + 2 + 4) + 7 + (4 * 7 + 3 + 2 + 4)
(2 * 3) * 4 + 9 * 7 + 5 + 9
9 * (9 + 4 + (6 + 2 + 8 + 6 * 4) * 6 + (7 + 7 + 9)) + 9
7 * (9 + 2 + 8) + 3 + (5 * 5) + 9
6 * ((8 + 9 * 9 * 5 * 5) * (4 * 9 + 5) + 3 + (2 + 9 * 4 + 5 * 6 * 3) * (9 + 8 + 3)) + 7 + 3 * 2 + 9
(2 * 9 * (9 + 3 * 3 * 3 * 7 * 4)) + 2 + ((3 + 5 + 7 + 9 + 7) * 2 + 5 * 5 * 9)
2 + 5 + 3 + (8 + (8 + 8 + 4 * 9 * 7) * (8 * 6 + 2) * 9 + 2 + 6) * 3
(8 * 8 * 7) + 5
(3 * 5 * 9 * (2 + 9 + 5 * 3)) + (7 + 2 + 8) + 2 * (8 * 2)
8 + 2 + (3 * 7 * 2 + 9 + 9) * 3 + ((3 + 2 * 6 + 8 * 6 * 8) + 3 * 8 + 7) + (2 * (7 + 7 + 7 * 6 * 9 + 5) * 3 + 3 + (7 + 9))
6 * (3 * 8 + 3 * 9 + 7 * 2) + 9 * 7 * 3 + (9 * 7 * 5 * 7 + (6 + 5) * 6)
4 * (6 * 3 * 9 + 5 + 2 * 2) * (2 * 5 * 2 * 6 * (9 + 9 * 7 + 6 * 8))
(9 + (2 + 7 + 8)) * 6 + 5 + 6
6 + ((4 + 5 * 9) + (9 + 4 * 7) * 6 * 7 + (3 * 2 + 9 + 4) * (6 * 3)) + 5 + 6
4 * 4 + 9 + 9
2 + 5 * (8 * 2 * 3 * (2 + 3 + 3 + 3 * 5) + (7 + 8)) * 6 + (9 + 8 * (9 + 8) * 3 * 3 * (2 * 8 * 5 + 6)) + 5
7 * (4 * (8 + 8 * 3) + 7 + 3 + 6 * (8 + 4)) + 2 * 8
5 * (3 + 7 * 4 * (4 + 8 + 8 * 2 + 6) + (5 * 6 + 8 * 5 + 8)) * 6
(9 * 2 + 7) + 9 + 9 * 6
3 + 6 + 7 * (7 + (7 * 9 + 5 + 5) * 7) * (7 * 9 * 9 * 2 * 2 + 7)
5 * (8 * 9) + 6
9 + (6 + 4 * 5) * (2 + 7 + 9 * 2 + 7) + 5 * (8 * 4 * 3 * 7 * 5 * 3)
6 * (9 * 6 + 4 * 8)
4 * (6 * 7 + (4 + 2 * 3 + 3 * 5) * 6 * 7)
6 * (5 + (2 * 4 * 5 + 7 * 8 * 5) * 6 * 2 + 6 * 3)
((7 + 2 + 8) + 2 + 7 + (4 * 3 * 4) + 3 * 6) + 6 + 2 * (8 + 8) + 2
7 + (6 * 9 * (9 * 5 * 2)) * 4 * (7 + 5) + 5
5 + 8
9 + 2 * 6 + (9 * 2 + 2) * ((9 * 4) + (9 + 9 + 8) + 3 * 4 * 8 * (9 + 8)) + 2
(8 * (5 + 8 * 4 * 2) * 5 * 5 + 5 * 3) + 4
4 + (2 * 4 * 9 * (6 * 8) * 8) + 6 * (3 * 2 * 8) + (5 + 2) * 9
((4 + 9 + 5 * 2) * 6 * 7 + 3 * 7 + 9) * 9 + 7 * 4
(5 + 9 * (7 + 3 * 4 * 5 * 3 * 6) + (8 + 8 * 8 + 8 + 2)) * 6
3 + 6 * 3 * (2 * 4 + 8) * 5
2 * 9 * 5 * (9 + (7 + 3 + 3 * 9 + 9 * 5) + (7 * 7 * 6)) * 3
6 * 9 * 7 * ((3 + 9 * 9) * 2) * 7 + (8 + (9 + 7 * 6 * 6 * 3) * 2 * 7 + (2 * 3 * 2 + 3) * (4 * 3 * 7))
(3 + (3 * 2) + 3) + 2
5 + (9 * (4 + 3 * 2 + 2 + 7) + 4 + (4 + 9) + 6) * 3 * (3 * (9 * 5 * 8 * 7 + 7 + 9) * 5) + (2 + 4 * (3 + 5 * 5 * 4 * 5 + 4) * 5 * 6 * 3) + ((2 + 7) * (8 + 2 + 4) + 8 + 7)
4 * 9 + 9 * (3 + 5)
(5 + 2 * 3 + 6) * 4
6 * (5 + 5 * 2) * 3 * (7 * 7 + 4 + 5 + 8 + (3 + 2 + 6 * 4 * 4 + 5)) + 8 * 8
6 * 2 * 9 + 2 + 9 + (8 * 9 + 8 + 7 * 3)
5 * 6 + 4 * (2 + 6 + 6 + 4 + 5)
(4 + 5 + 5 + 3 + 2) + 4
((8 + 9 + 9 + 9) + 7) + ((2 + 6 + 7 + 7 * 2) * 9 + 3 + (9 + 9) + 8 * 4)
6 * 5 + 6 * 9 * 4
8 + (4 * 6 + 8 + 8 + 3) + 5 + 9 * ((8 * 9 * 5 + 6) + 2 + 9) + 3
9 + (9 * 2 + 6 + 7 + 5 * (9 + 5 + 7 * 3 * 7 + 6)) * 3
((9 * 8) * 4) * 6 * 7 + 9 + (4 * (7 * 3 + 2 * 8 * 5 * 5) + 6 + 8 * 5 + 7)
3 * (6 + 2 + 2) * 8 + (5 + 4 + (5 + 4 + 6 * 9 + 2) + 9 + 7) * (9 + 2 * 7 * 6 + 4 * 5) * 9
(7 + 3 * 4 + 2 + 5) + (7 + 2 + 6 * 9 + 7) + (8 * 4 * 2 * 7 * 7 + 5) * 2 * 7 * 2
7 + 5 * 2 * (3 * 7 * 9 * 9) * (9 * 7 * 3 + 6 + 7)
3 * 4 * ((4 * 7 * 4 * 8) * (8 * 5 + 4 * 3 * 4 * 8) * 8 + 7) * ((6 * 5 * 5) + (6 + 4 * 6 + 3 + 5 * 8)) * 9
(8 + 2 * 5 + 9 * 8) + ((6 + 6 * 3 + 8 * 5) + (5 + 7) * 9 + 2) + 5 + 5 + 7 + 8
8 + 3 * 7 + (6 * 5 * 7) + 9 + 8
8 * ((3 * 7) + (8 + 6 + 5) + 4 * 4 * 7 + 3) + (4 * (8 * 4 + 5 + 8 * 2)) + 7 + 4 * 8
7 * 5 * 9 * 2 * ((3 + 3) * 5 + 4 + 2 * (5 * 5 * 6 + 4) * 5) * 3
7 * (8 + 6 + 2) * 3 * 9
8 * ((8 * 7 + 9 + 9 + 2) * 5 * (9 * 9 + 5 * 2 + 4 * 8)) + (5 + 2 * 9 + 6) * 5 + 9
2 + (5 + (2 + 3 * 5 * 5) * 7 * 8 * 7 + 4) * 2 + 7
9 * 6 * 2 * 2 * (3 + 3 + 3)
9 * (3 * (7 + 2 * 3) * (3 * 6 + 9) + 4)
5 * 9 + 4 + 3 + 6 + 3
3 * 6 * (6 * (6 * 2) + 7 * (4 * 6 * 2 * 3 + 7)) + 6 * 4 * 8
(2 + 3 * 4 + 6 + 6 + (4 * 3 * 8 + 6 + 2)) * 7 * 6
(2 * 6) + 2 * 6 * 4
8 + ((9 * 5 + 2 * 4 + 9) + 8) * 5 + 2
7 + 4 * (8 * 6 + (3 + 5 * 8 + 8) + 9) + 5 * 8
(5 * 9) * 9 + 8 * 6 + 5
((3 * 9 + 3 + 2 * 2) + 2 * 3 + 5 + 8) * 4 * ((7 + 9 * 2) + 5 * 6 * (3 * 7 + 2 + 9))
((9 + 5 + 9) + 7 + 9) + (3 * 7 + 6 * 5 * 8 * 3) + 8 * 7
4 + 4 * 4 + (5 + (3 + 4 + 6 + 9 * 5) + 7 * 8 * 2 * 2)
((4 + 4 * 5) * (3 + 4 * 7 * 9 + 2 + 4) + 8 * 4 * 5 + 8) * 7 + 3 + 3 * 9 * ((8 + 3 * 3 + 2) * 3)
((7 * 5 * 3 + 5 * 2 * 6) * 8 * 6 + 8) * 5 * 2 + 6 + 5 * (4 * (6 + 2 * 9 * 3 + 2) + (8 + 2 * 7))
3 + 7 * 6 + 9 * 9 + 2
9 + 8 * (9 + (2 * 6 * 4) * 7) + 3 + 6 * 5
(8 + 8 * (9 * 3 * 4 + 3)) + ((3 + 6 + 2) + 5 * 6 * 3 * 3 + 9) * 8
4 + 8 * (3 * (6 + 9) + (2 + 9 + 2) * 4 + 7 + 2)
9 * 7 + (2 * 8 * 5 * (2 * 7) * 2 * (3 + 2 * 7 + 4))
9 + 6 * (9 * 3 + 4) + 7 * 8 * (5 * 6 * 3 + 3 + 5 * 5)
8 * 7 * ((3 * 2 + 5 + 8 * 3 * 2) + 8 * 2)
(4 + 2 * (7 * 2 * 7) * 7 * 3) + 6 + 2 + 7 * 8
((4 * 9 * 3 + 7) + 5 * (2 * 6 * 8) + 9) + 3 + 9 + (2 * 8 * 5 * 6 * 5)
8 * ((2 * 4 + 2 + 7) * 5) * (8 * 8 + 7 * 9 + 4 + 4)
6 + (3 + 8 + 3 + 2) * 3 * (7 + 7 + 2 * 4 + 8)
3 + 6 * 6 + 2 + ((4 + 6 + 6 * 3) * 2) * 4
(6 * 4 + 4) * (9 + 2 * 4 + 5 + 5 + 5)
2 + 7 * 9 * ((2 * 4 + 5) * 9 * (5 + 6 * 5)) * (9 + 2 * 9 * 9 * 4 + 3) * 4
9 + ((6 + 7 * 8 * 6 * 6 + 7) + (7 + 5 * 7 + 7 * 4 * 3)) + (9 * (3 * 2 * 7 + 6 * 4 + 6) * 3 * 9 * 9)
6 + 7 * (8 + 5) + 3
(6 * (2 + 7 + 2 * 7 + 8) * (7 * 7 + 5 * 8 * 5) * 5 * 3 * (5 + 4 * 6 * 6 * 3 + 9)) + 6 * 7 + 4
5 * 9 * (5 * 4 + 6 * 7)
6 * 6 * 5 * (5 + (4 * 5 + 5 + 2) + (6 * 7 + 4) * 7) * (3 + 3 + 2 + 7 * (4 + 8 * 5 + 7 + 9))
(9 * 8 * 7 * 9 * 2 + 5) * 3
(9 + 6 * 8 + 9 * 8 * 8) + 3 + (9 * 2 * 9 * 5 + 2)
(4 * (4 + 6 + 6 * 9 + 8 + 2) * (6 * 2) + 2) + 4 * 8 * 6 * (6 * 6) + 8
8 * 7 * 5
9 + (5 + 3 * 7 * 7 + 3 + 4) * (9 * 5 + 8 + 7 * 4) * 7
9 + (8 * (8 + 7 * 4)) * 6 + 5 + 4 * 9
5 + 4 + (2 * 5 + (5 * 4 + 2 * 9 * 4)) + 5 * 2 * 6
3 * 9 + (5 + 3 + 4 * 8) * 6 + 8
8 * (8 * (3 * 6 * 4) * (3 + 6 * 5 * 9 + 3)) * (3 + 6 + (5 + 4) * (9 * 6)) + 7
8 * 2 + (9 * 6 * 4) + 7 * (4 * (9 * 4 * 4 * 9) * (5 * 9) * (3 * 4 * 3 * 6 * 3 * 6))
(2 * 8 * 2 + 3) * 6 + 9 + 7 * 5
(8 + 9 * 9 * (7 * 4 + 9 + 4 * 4 * 8)) + (2 + 6 + 4 + 2 * 6) + ((4 + 8 * 2) * 9 * (2 + 7 + 6 * 3 * 6 + 4) * 9 + (7 + 2 * 3 * 4) * 2) + 8 + 4 + 4
4 + 5 * (7 * 4 * (2 * 9 * 4 + 2 + 7 + 7) + 2)
8 * (2 + 3 + 8 + (2 * 5 + 6) + 3 * 6) * 9 * 8
8 + (2 + (3 + 2 * 3 + 9 * 2 + 7) * (7 * 5)) + 2 + 8 * 8
6 + 7 + 9 * (6 + 3 * 9) + (2 + 6) * 9
2 * ((6 * 4) * 8 * 8) + 2 * 4 * 6
9 + 6 + 4 * 7 * 4 + ((9 * 6 * 8) * 8 * 2 + 6 * 6)
3 + 3 + 7 * 8 + 5
4 + 2 + (2 + 7 * (4 + 6) + 3 * 4 * 9) * 2 + 8
5 * 9 * (3 * (8 * 8 + 2 * 5) * 3 * 9 + 3)
2 + 8 * 4 + (2 * 7) * 5
4 + (3 * 3) * ((3 * 8 + 6 * 4) + (4 + 6) * (2 + 6 + 4 + 3 + 9) * 9 * 5 * 6) * 7 * 9
3 * 9
4 + 8 + 2 * (6 + 4 + (8 * 4) * (9 + 4 + 2) + 7) * (9 * 7)
6 * 6 * (5 * (2 * 3 * 8)) + 3 + (8 * (9 + 6 * 2 + 8 * 4) * (2 * 8)) * 8
((7 + 5 * 4 + 8 * 6 + 3) * (8 + 9 * 2 * 7 + 7 + 3) * 9) * 5 + 7 + 7 * 5
5 * 4 + (5 + (2 + 7 * 9) * 2 + (4 * 7 + 8 * 9 * 5 + 7) * 9 * 4) * 4 * 5
4 * (2 * 9 + 9 * 9) * (9 * 2 * 3 + 8) * 3 + 5
9 + (3 * 8 + (9 * 6 * 3)) + 2 + ((5 * 8) + 5) * (5 + 5 + 2 * 7 + (4 + 4 + 5 + 9 * 2 * 2) * 7)
(2 + 4 + 4 + 6 * 5) + 2 * 8
5 * 5 * ((4 * 8) + 6 * 5) * 5
(6 * (4 + 9 * 3) * (2 * 8)) * 3 + 5
6 * 2 + 9 + (4 * 9 + 2 * 2) + (5 * 8 + 5 * 4 * 2 * (4 * 5 * 6 + 8)) + 4
(6 + 8 * 6 + 9 * 8) * (4 * 8 + 8) + 7 + 5
5 * (2 * 6 * 2 * 2) * 9 + (4 + (2 * 3 * 5) * 7 * 2)
5 + 3 + (7 * 4 * 8 + 6) + 9 * 4 + (5 * 8 + 6 + 9)
9 + 4 + (8 * (4 + 2 * 7)) + 9 * (4 * 7 + (5 * 7 * 8 + 6) * 5 * 2)
7 + 9 + 5 + 8 * 2 + ((4 + 3 * 9 + 8 + 3 * 7) * (5 * 6 * 7 + 4))
6 * (4 + (5 + 7 * 7 * 9 + 4) * 6 + 9 + 3)
(6 * (5 + 5 + 9 + 2 * 2) + 7 * 8 + 3 * 8) + 3
(2 * 9 + (5 + 7 + 2) + 6 * 5) + 4
9 + (7 + (8 * 9) * 4) * 6 * 4
((3 + 2 + 9) * (6 * 6) * 8 * 8) + 6 + 2 + 7 * 8 + ((3 * 7 + 5 * 2 + 7) * 5 + 8)
4 + 8 + (6 + 4) + 7 + (4 * 6 + (9 + 8 * 2 * 6 * 2 + 8) + 7 + 2)
(7 * 2 + (8 * 3)) + 3 + 5 * (4 + 9 + 9 + (9 + 6)) * 4 * 5
5 + ((2 * 2 * 2) * (7 * 7) * 6 + 6 + 8 * (3 + 3 + 2)) * 3 * 7
9 * 6 * 6 + 5 * 6 * (7 * 8 + 9 * 4 * 2 + 7)
2 + (8 * 3)
(4 * (4 * 2 * 9 * 9 + 6) + (6 + 6 * 9) * 2 + 2) + ((4 + 9 + 6 + 4 + 9) + 7 * 7 * 2 + 4 + 3) * 2
9 + 5 + 4 * 9 + 3 + (7 * (7 + 7 * 8) * 2 + (9 + 6 + 6 * 8))
2 * 8 + 6 + 4
4 * (7 + 4 * (6 * 6 * 8 * 9 * 2) + 6) + 9 + 7 + 7 * 4
7 + 2 * 3 * 3 * (6 * (8 + 3) * (5 * 6 * 7 * 6 * 9 * 6) * 8) * 9
7 + 4 + 5 * (5 * 4 + 9)
3 + 4 * 9 * 3 * 2 + 8
(2 * 6 * (7 * 3)) * 2 + (4 * 9 * (6 + 7)) * 2
4 + 5 + (3 + 9 + 8 * 3 * (6 * 4 * 4) * 2)
(9 * 3) + (7 * 7 + 2 + 4 + 2 * (9 * 9 * 5))
((9 + 7) * 9 * 4 + 5 + 5) * 5 + 7
3 + (2 + 5 * 6 * 2 * 5) * 4 + 2 + (9 * 9 * 6) * 8
(4 * 3 + 7) * 8 * 5
5 * (7 + (6 * 3 * 7 * 2 + 6) * 4 + 7 * (8 + 2 + 8 + 2)) * 8 * (8 + 7 * 5 + 3)
(3 * 7 * 7 + 8 * 4 * (2 * 9)) * 9 + 8 * 9
5 + (4 + (4 * 4 + 5) + (7 + 9 * 7 + 5 + 4) + 2)
8 + 6 + 6 + ((8 + 5) + 7 + 2)
9 + 2 + 3
7 + (4 * 6 + (9 + 6 * 6 + 8) * 6) + (6 * 4 + 2)
8 + (2 * 6 + (5 + 2 + 5) * 6 * (7 + 9 + 7 * 8 + 5 + 9) + 2) * 6 * (8 + 6 * 9 + 7 * 2) + 8
(6 + 7 * 6 + 9) + 3 * ((8 + 4 * 4 + 6) * 3 * 6 + 4)
2 * 2 * (8 + 2 * 5 * 9 * 9) + (9 + 3 * 6) + 7
2 * (7 + 3 * 3 + 4) * 8 * 9
6 * 7 * 2 * 8 + (5 * 7 + 7 * 9 * (4 + 3 + 9 + 4 * 8))
2 * (6 + 8 * (8 + 6 + 4 + 7) + 2 * 7 + 6)
9 + (9 * 4) + 9 * (9 + (2 * 4) + 3 + 9) * 7
8 * (6 + 7) * (9 + 4 * 3 * 7 * (7 * 4 + 3 * 2 + 8 + 4) * 6)
(6 + 3 + 3 + 3 * 8 + (8 + 6 + 9)) * (2 + 8 + 6 * 6 * 9 + 6) + 8
4 * 6 * 5 + (2 * 5 * (3 * 3 + 8 * 7)) + 8
5 * 9 + 5 * 2 * (5 * 8 + 4 + 2 * 7) * 8
(5 * 4) * 9
5 * 6 + 7 * 4
7 * (5 + 5) + ((3 + 4 * 2 + 4) * 7) * 9 * 4 * 3
3 + (5 * 8 * 8 * 4 + 5 * 8) * 9 * ((2 + 6 + 9 + 3) * 6)
5 * 5 * (2 * 7 + 9 * (5 + 3 + 3) * 4 * 9) * 8 * 3 * 3
6 + ((2 + 3 + 2) * 5 + 3 + 3) + (8 * 2 * 9) * 6
(5 + (2 * 5 * 9 + 3 * 8 + 2) + (5 + 4 * 2 * 9 * 9 * 4) * 7 * (9 + 5 + 2)) * 2 * 9 + 8 * 5
2 * (2 * 9 * 2 * 9 * 2 + 6) + 2 + (5 * 9 + 7 * 5 * 9) * 9
3 + (6 * 9) + 6 * 4 * 5
((9 + 4 * 6) + 9 + 4 + (6 + 4 * 6) + 4 + 5) + 9 * 7 + 6
(2 + 9 * 4 * 7 + 9 * 9) * 4 * 3 + 2
(2 * 7 + 7 + 9 + 4) * 5 + 7 * (6 * (5 * 8) * 4 + 4) + 7 + 3
8 * 5 * (6 + 3 * 3 * 9 * (5 * 4 + 4 + 5 + 5)) + 6 + 8 * 7
7 * 7 + ((8 * 7 * 4) + 7)
9 + 6 * ((4 * 8 * 5) + 4 + 4 * 6) + 7
9 + ((7 + 6 * 3 + 9 * 4) + 9) + (2 * 7 * 8 + 3 + 7 * 3) * 6
((2 + 4 * 9) * 9 + 7 + 7 * 5 * 6) * 6 + 8 + 5 * 6 * (6 * 9 * 3 * 5 + (9 * 6 * 5 * 8 * 9 * 2))
(9 * 3) * 3 + 4
(3 * (3 + 9 * 5 + 5 + 9 * 2) + 9) + (5 * 5 + 8) * 6 * 7 * 5
4 + ((3 * 2 * 5 + 9) * 8 * 9 + (8 + 9) * 7) + 9 * 8
(9 * 4 * 3 + 9 + 2) + 9 * (3 + 9 + 3) * ((7 * 6 * 4) + 7 + 9 * 8 * 4)
2 + 6 * (8 + 8 + 5 + 6) * (3 + 2 + 8 * 7 + 6)
3 + ((5 * 2) * 9 + 5 + 3 * 2 + 2)
7 + 8 + (2 + 4 + 2 + 5 + 3) * 9 + 4 * 6
2 + 2 + 5 + 3 + ((2 * 2 + 6 + 2 + 7 + 7) + (7 * 4))
5 + (8 * 8 * (4 + 5 + 5 * 9) * 7) + 8
(7 * 2 * (8 + 3 + 3 * 7 + 7) * 5) + 2 * 9 + (6 * 7 + 5 + 3 + 2) * (9 + 4 + (9 * 6 + 4) * 7) + 9
((9 * 2 + 6 * 3) + 2 * (4 * 3 * 8 * 8)) * (3 + 2 + 2 * 8 * (3 + 7) + 6) + 3 + 2
6 + 5 + 4
6 + ((4 * 8 + 8) + 7) * (3 * 2 * 6 + 9 + (5 * 6 + 6 + 6 + 6) * 9) * 3 + 6
6 + 9 * 2 + ((4 + 4 * 7 + 2) + 7 * (8 * 8 + 2 + 4) * 6 * 9 * 7) * 3
((7 + 4 * 5 * 6) + (8 + 8 * 6 * 5) * 4) * 2 + ((3 + 8 * 6) * 3 + (8 + 8) * 2)
7 + (9 + 7) + 3 + 9 + 4 * 8
6 * 5 * 8 + 9 * 9 * (9 + 8 * (9 * 5 + 9) * 3 * 4 + 2)
4 * (3 * (4 * 9 + 4 * 4 + 6 * 3))
(7 + 9 + 2 + 3 + (9 * 5 * 5)) * 8 + 4 + 9
(4 * 7 * (7 * 3) + 8 * 3) * 9
4 * 6 + 7 * 6 + ((3 + 5 * 9) + 8 * 2 + (7 * 4 + 6 + 6))
(2 + 4 + 7) * 7 * ((5 * 9 + 7 + 6 * 7) + 9 + 4 * (9 * 5)) * 7
4 + 7
(6 + 5 * 8) * 2 * 9 * 6 + 8 * 8
6 * 3 * 8 + (9 + (3 * 9 * 9 + 5) * 7 + 2 * 6) * 7 + (8 + 4 + 9 + 9)
(6 * (9 + 3) * 5) * 5 * 5
8 + ((9 + 9 * 7) + (6 + 8 * 3 + 7 * 3) * 5 * 4 + 5 + 7)
(4 + 6 + 2 * (6 * 5 * 3 + 6) * 7 * 3) + 4
4 * (5 * 2 + 5 + (7 + 9 + 9 * 6 * 6) + (3 + 2)) * 3 * (8 * 4 * (2 + 4 + 7 + 6) + 5) * 6 * 5
8 + 6 + 5 + 8
(7 * 4 + 3 + 5 + (2 * 9 + 7 * 8)) + ((3 * 9 + 4 + 7 + 9 * 2) * 4) * 5 * 5
8 * 4 + ((9 + 8 * 4 + 2 + 4) * 6 + 6 * 6)
4 * 6 + ((7 + 8 * 7) + (4 * 5 * 4))
7 + (3 * 2 * 2 + 3 * 7) + 7 + 3 + 4 + (8 * 8 * 7 + (5 * 2 + 9))
3 + 8 + (2 + 7 * 3 * 6) + 2
7 + ((5 + 6 * 6 + 3) + (6 + 9 + 7 * 3 + 7)) + 8 + (8 + 7)
((9 * 5 + 7 * 8 + 5) + 2 * 7 * 3) * 2 * 4 + (6 * 3 * (3 * 2 * 7 + 7 + 7))
(7 + (4 + 2 * 2) * 6 * 9 + (9 * 8) * 5) * 2
3 + (3 + 9 * 2 + 3) + 7 + 4 + 7 + (4 * 2 * (7 + 2 + 3 + 5) * 6)
9 * 8 + (8 * 6 * (9 * 8 * 9 * 6 * 6) + 6 * 3) * 2 + ((5 * 3) * 7 + 3 + 3 * 8 * 2)
4 + (5 + (5 * 6) + (8 * 9 + 9))
9 + 3 * 2
8 * (3 + 4 + 6 * (9 * 8 * 6))
4 * (2 + (5 + 7) * 8 * 6) * 7 * (3 * (8 + 2 + 8 + 5 + 7 * 7)) + (6 + 8 * 3 * 8 * 2 + 5) * 7
(5 * 7 + 4 * 6 + 4 * 8) * ((8 * 6 * 7 + 5) * 7 + 6 + 5) + 4 + 3 + (2 + (9 * 9 + 9 * 5 + 3) + 3 * 3 * 3)
9 + 9 + 9 * 6 + 8
3 + 7 * 5 + (6 * (6 + 6 + 5 + 6) * 3 * 2) + 3
(5 + 8 * 3 + 4) * 8 * (9 * 3 + 4 * 6 * (5 + 9 + 9 * 8) + 3)
2 * (9 * 2 * 6 + 2 * 6) + 5 * 7
(4 + 7) * 6 + 8 + 9 + (6 * 7) * 4
9 + 7 * (8 * 5 * 7 * (7 * 5 + 9 * 4 + 8)) * 7 + 4
3 * 6 + 6 + 2 + (2 * 5 * 8) * 8
(4 + 2 * 6) + 3 + (7 + (6 + 7 * 6 + 6)) * 6 + (4 * 6)
7 + 9 * (3 * (9 + 7 + 7 * 5) * (7 * 2))
((7 + 5 + 8) * (3 * 2 * 6 + 2 + 9 + 2) * 9 + (8 + 6 + 2 * 4 * 9) + (4 + 2 * 9 * 6 * 7 * 8) + 3) * 2 + 2 + (5 * 7 + 8 + 2 + 8)
((4 * 8) * 3 * 9 * 3 + 4) + (6 * 8) + 3
5 + 2 * (6 + 9 + 3)
5 * 4 + (6 + 2) * 4 + 8 + 6
(5 + 4 + 5 + (6 + 2 + 4)) + (7 * (2 + 5 * 9 * 8 + 3) + 4 + (3 * 9 * 5)) * (7 + 8 + 6 * 5 * 3) + (9 * 6 + 9 * 5 + 5 + 7) * (3 + 2 * 5 + 6 + 4 + 8)
2 + (8 + (5 * 4 * 2 * 4 + 6 * 8)) * 5 * 6
(2 * 6 * (5 * 8 * 8 + 7 + 4 + 6) * 6) + 6 + (6 * (6 + 3) + 5) + (3 * 8 + 4) * 6 * (5 + 5)
((3 * 7 + 4 + 5) * 6 + (6 + 4 + 2 + 8) * 9 + 7 * 6) * 9 * 5
2 + (5 * 8 + 6 + (3 + 4 * 5 * 5 * 8 + 4) * (7 * 9 * 6 + 3 + 4)) * 8 * 6
(7 + 6 * 5 * 6) * 3 + 4 * 7 * 4 * 8
7 * (7 * 9 * (9 + 3 * 4 * 8) + (2 * 9 * 5 * 9 + 9) * 6 + 3) * (2 * 5 + (9 + 3 * 9) + 9) * 6
2 + 5 + (7 + (4 * 9) * 2 * 5 * 9) * 4 * 2 * ((2 * 4) * 3 + 8 * 4 + 8 + 7)
4 + 2 + 3 + ((9 + 9 * 4 + 9) + 5 * 7 * (9 + 4 * 7 * 3) * (3 * 9))
(7 + 6 * 3 + (6 * 6 * 9 + 9 * 4 * 2)) + 8 * (4 * (9 * 6))
4 + (2 + 2 * 7 * 2) * 4 + 9 + 9
7 * 2 + 2 + 5 + ((4 + 6) + (8 * 6 * 2) * (2 + 6 * 5 + 4 + 9 * 6))
4 * (8 + 6 + 2) * 7
((5 * 9 * 2 + 3 * 8 * 4) + 9 * 7 + 7 * (2 * 3 + 4 + 6)) + 8 + 6 + 3 + 9
8 * (9 * (3 + 5 + 3 + 5) + 7 + 6 * 5 * 5) * 7
7 * 7 * (3 * 2)
4 + ((9 * 2 + 9 + 4 + 9 * 5) + 6 + 5 + 9 * 8) * (8 * (4 + 9 + 8 * 2) * 5 * 9 + (8 + 7 * 8 + 3 + 8) * 6) + 7 + ((5 + 2) * (2 + 7) * (4 * 9 + 6) + (6 + 8 + 5 + 2 + 2 + 2) + (6 + 6)) + 6
5 * (5 * (4 * 7) + (3 * 5 + 8 + 2 + 3 * 2) * 9 * 2 + 8) * (4 * 7 * 2 * 7 + 4 * 3) + 3 + (8 + 3 * 6 * 5 + 6)
3 * (9 * 2 + 9) + ((4 + 4) * 7 + 7 * 7 * 6 * (5 + 5 + 2 * 4 + 4)) * 7 * 8
((5 + 3) + 3 + 6 * 9) * 9 + (3 * 7 + (3 * 6 * 2) * 9 * 8 + 6) + (5 * 8) + (4 + 7 + 4 + 4) + 6
2 + 8 * 4 + (8 * 8 * 4 * 7)
2 * 4 * (5 + 3 + 6 + 5 + 2) * 3 * (2 + 4 * (2 + 8 * 6 + 2 + 2 * 3) * 3 + 9)
(2 + (8 * 4 * 8 + 4 + 8 + 7) * 3 + 9) * 5 + (3 + (3 * 8 * 4 * 4) + 3 * 9)
5 + 2 * 7 + (3 + 2 * 7 + 6 + 6) * 8 * (3 + 4 * (3 * 3 + 3 * 2))
(9 + 2) * (5 + 6) * 2
(8 * 6 * (9 * 9) * 5 + (8 * 6 + 4 * 2)) * (2 + 2 * (2 * 3 + 5 + 6))
((2 * 4) * 4 * (9 * 3 + 6) * 4 + (4 * 6) + 4) + 9 * (3 * 6 + 2 * 7 * 7 + 3)
3 * (6 + 9 * 7 * 8 + (7 * 8 * 5 * 7 * 2) + 8)
8 + 8 + (6 + (5 * 8 + 6 + 7 * 4 + 7) * (2 * 3) * 4 * 2 + 5) + 5 * (8 * 3 + (7 * 7 * 2)) * 7
3 * 5 * 7 + 6 * 9
((7 + 5) * 4) + 3 + 6
(4 + 2 * (6 * 7 + 3 + 6 + 5 + 2) + (9 * 5 * 2 * 3)) + 4
((7 + 6 + 6 * 2) * (9 * 9 + 7 * 9 * 3 * 3) * 2 + 2 * 9) + 3 * 2 + 7 * 7
((4 * 7 * 3 * 5 + 4 + 4) + 3 * 5 + 6) * (5 * 4) * 4
3 * 3 + 9 * 9 + (8 + 2 + 5 + 2)
3 + 6 + 3 * (2 + (2 * 9)) + 9 + 9
(9 + 6 * 6 * 8 * 4) + 4 + 4 + 2 * 5 + 5
(2 + 3 * 5 + 2 + 4) + (7 + (9 * 8 + 2) * 7 + (6 * 7)) * 9 + 4 * 3
6 + (9 * (5 * 2) + 5 * 2 + 5 * 2) + 6
4 + 5 * ((5 * 9) + 4 + 5 + 2) * 4
((4 + 7 + 3) * (4 * 5) + 9 + 4) * 7
2 * 9 + 8 + (6 * 5 + 9 + 6) * (6 * 7 + 6 + 6 + (7 * 8 + 5 + 2 + 6) + 4) + (5 * 6 + 5 + 2 * 5)
4 + (9 * 5 + 4 * 5 + 5) * 9 + (7 + (2 * 5 * 4 * 7 + 2 + 9) * 3)
2 + 3 * 4 + 2 * (9 * 2 + 2 * 7 + 6 * 3)
3 * (7 * 6 * 5 * 4) + ((7 * 8 * 4) * 6) * 3
7 * (9 * 8) * 2 * 2
(8 * 9 + 5) * 2 * 7 * (4 * 2 + 6 + (9 * 6 + 9 + 3 * 7 * 6))
6 * (8 + 9 * 4 * 2 * 8 * 5) + 3
2 * 2 * (5 * 9 + 8 * 8 * 5) * (9 + 9 * 4)
6 * 4
(3 + 2 * (9 + 8 + 6 * 8 + 5) * (9 * 4)) + (5 * 9) + 2 + 9
(4 + 4 + 8 + 9 * 8 + 4) * ((4 * 2) + 9 * 2)
3 * ((2 * 8) * (7 * 5 + 9 + 4 + 5 * 5) + 3 + 8 + 5) * 2 * (4 * 8) * 5
4 + (7 * 9) + (3 + 8) * 7 * 3 + 8
5 + 3 * 9 * 9 + (8 + 9 * 6 * (6 + 9 * 3 + 7) * (8 + 2) + 5)
6 + 8 * ((3 + 5) * 3) * 5
2 + ((6 + 5) + 7) + (5 + 6 + 3 * 7 + 7) * 4 + 7
(9 * (6 * 7) + (6 + 3 + 8 * 4) * 7 * 2) * ((7 + 8 + 5 * 7) * 7 * 2) * (7 + 6 + 5 * 7 + 9) + (2 + 7 * 9 + (9 + 4 * 4 + 5 * 8 * 9)) * 9
9 + (4 * 2) + 5 + (6 + 7 * 9) + 6
5 * 5 + 8 + 4 * 4 * 7
8 + 4 * ((8 * 2 + 8 + 2 * 5) * (3 + 8) * 6 * 5) + 3 + 9
9 + ((9 * 9 * 3 * 5) * 6 * 4) * 7 * (6 + 7 + 5)
8 * 9 * 8 * (6 + 2 * 7 + 4 + 2 + (5 * 5 * 7 + 2)) * 3
7 * 5 * 5 + (5 + 4 + (3 * 3 + 9 * 7 + 7 + 5)) * 6
(3 * 2 * 7 + 5) * 4 + 2 * (3 + 3 * 7 * 9 * 3 * 2)
6 + 2 + (3 + (9 * 6 + 8) * (5 + 9) + 3) + 5
((8 * 4 * 6) * 2 * (4 + 9 * 7 + 6 * 6 + 2) * 9 + 4) + 5 * (5 * 2 + 8) + 9 * 7 * ((5 * 6 + 5 * 7 + 9) + 2)
6 + 2 * ((3 + 5 * 7 + 2 * 8 * 8) + (5 * 3 + 4 + 2 + 4) * 3 * 5 + 5) * 8 + 9 * 6
6 * ((3 + 7 + 8 * 6 * 6 * 2) * 7)
((6 * 6 * 6 * 9 + 8 * 7) * 6 * 7 * 4 * 6 * 6) + 5 * 3 + 8
(5 + 8 + 3) + 6 * (5 + 5 + 3 + 6) * (9 + 2 + 4 + 4 * 3) * 4 + 6
4 * 7 * (6 * 3 * 5 * (4 + 2 + 3) * (2 + 3 * 9) * 2)
7 * (2 * 5 + 5) + 9 + 5 + (3 * 2 + 3)
(4 + 6 + 5) + (6 * (9 + 7 + 9 + 2 * 6 + 4) * (9 + 2 + 6 * 7) + 2 + 3 + 7) + 5 + ((3 + 2 * 5) + 3 + 7 + (6 + 9 * 6 + 3 + 4)) + 2
(7 + (5 * 7 * 6 * 9 * 3) + 3 + 9 + (6 * 5 * 4 * 6)) * 2 + 6 + (9 + 5 * 9 + 8 * 4)
(8 * (9 * 4 * 6 * 8 + 8 + 9) + 6 * 9 + (2 * 6)) * (5 + 8 + 8) * 2 + 8 * 4 + 2
(9 + (6 * 5 * 9 + 4) * 5 * (8 * 7 + 7) + 6 + 3) * 7 + 7
6 * 2 + 8 * 3 + 5 * 8
9 * 3 * ((4 * 2 + 5 * 5 + 2) + 4 * 4) + (6 + 6 * 7 + 9 * 9) + (9 * 8 + 5 + 4 * 9)
9 * 5 * 6 * (4 * 4) * (9 + (4 + 2 * 7 + 3) + 9) + 2
((2 * 3 + 6 + 5) * 2 * 9 + (9 + 8 * 7 + 3 * 2 + 6) + 8) * 7 + 3 + 9 * 9
(3 * 2 * 7 + 6 * 8) + 4 + ((7 + 2) * 7 * (8 * 6 + 4 + 4 * 2 + 5) + 4 * (9 * 9 * 6 + 4 + 5 * 8) * 2)
9 + 6 * 8 * 6 + (8 * 3 + 9 + 4) + 6
(5 * (9 + 9 + 3 + 5) * 6 + 7 * 4 * 6) * 7 + (6 + (2 + 9 + 2 * 5 + 4) + (9 * 5 * 7 * 8 + 4) * 4 + 8 * 5) * 9 + 4
3 * (2 * (8 * 4 + 7) + 6)
(8 + 9 * 5 + 3 * 9 * 5) + 6 * ((6 * 8 * 6 * 4 + 9) + (2 * 5) * 2) + 4 + 9 + 7
5 * 3 * (2 * 5 * 8 * 6 * 7 * (4 * 8 + 3 * 7))
3 + 9 * 4 + 5 * 9
6 * 7 * 4 * 6 * 9 + (4 + 2 + (3 + 5 * 9 * 2 + 8) * 3 + (8 * 6) * 8)
(7 + 7 * 5 * 2 + (3 * 4 + 8 * 2 * 9 + 4)) + 5
(4 + 2) * 4 * 2 + 9 + (9 + 9 + 4 + 3 * 4 + 9) + (4 + 8 + 2)
((9 + 8 * 4 + 3 + 8 * 9) + 4 * 5 * 7 + 7) * 5 + 2
(2 * 7 + 6 * 5 * 6 * 9) * 9 * 2 * 8 * 7
(8 + 2 * 7 * 5) * 4 + 7
6 * 6 + (7 + 7 + 6 + 4 * 7)
9 + 5 + 2 + 4 * 9 + (3 * 6 * 5 * 3)
8 * 8 + 4 * 6 * ((6 * 3 * 5 + 5 * 6) + 3 + 6 * 6 + 8) * (2 * 8 + 9)
2 + 5
2 * 2 + 7 * 4 + (6 * 8)
4 * ((6 * 3) * 7 * 6 * 2 * 7 * 9) + ((4 + 5 + 2 + 4 * 8 + 9) + 4 + (3 + 5 + 3 * 9 + 9) + 5 * 4 + (4 + 5 + 6 + 3)) + 5
3 + (6 + 5 + 2 * 5 + 8) + 4 + 2 * 3
9 + 9 + (4 + 6 * 9 * 2) * 2 + 6 * 6
4 + 9 * 9 + 4 + (5 * 6 + (8 + 5 * 3) + (7 + 6 + 7) * 3) * 9
(7 + 2) + (4 + 6 * 5 * 7 + 4)
5 * (4 + (4 + 9) + (6 + 7 * 7 + 3) + (4 * 5 + 5 * 9 * 6) * (2 + 9 * 7)) * 5 + 7 + 3 * 6
8 * 5 * (3 + 4) * 9 * 5
9 + ((2 * 8 + 4) + 6 * 4 + (2 * 9) * 9 + 6) + (3 * 2 * 5 + (4 * 8) + (8 * 2) * 9)
4 + 8 + 6 * 9 * ((6 + 8 * 5) + 6 * 9)
(8 * 9 + 5 * 9 * 3 * 3) * 6 * 2
5 * 5 + 4
9 + (7 * 5 + 4 + 2 + 8 * 5)
(9 + (2 * 4 + 8) * (4 * 9 + 7 * 2 + 2) + 4) + 3 * 5 + 7 * 7
(6 * 2 * 9 * 8 * (3 + 4 + 3 + 2 + 7)) * 7 + 4 * 6
9 + 7 + (3 + (5 + 9 * 2 * 4 * 9) * (9 + 6 + 5) + 9 * 7 * 9) * 5
7 + (2 + 5 * 7 * 4) + 6
6 * 3 + (6 + 5 * (4 + 8 + 8) + 6) * 3 * 9 * 7
3 * (9 + 2 * (8 * 5 + 9 * 6 + 2 + 3) * 4 + 4 * 6) * 2 + 3
8 + 6 + ((2 * 2 + 7) * 7 + (8 + 2 + 2)) + 6 * 5
7 * (9 * 3 + (4 * 4 + 4) * 6 * (8 + 8 + 2)) * (5 * 4 + 6 * 8 + 3)
3 + 5 * (4 * (8 + 8 * 8 + 2) + 6 + 9 * 4 + 8) * 7 + (4 + 5 + (6 + 8 * 8) + 5 * 6)
4 * 8 * 6 + 7 * (5 + (3 * 2 * 2 * 5 * 8 + 7)) * 9
((8 + 5 + 6) + 3) * 3 * 5
((9 * 7 * 4 * 4 * 9) + 3 + 9 + 9 + 3 + 2) + 8 + 5 * ((6 * 5 + 3 + 5 * 3) + 3 + (3 * 6 * 5))
7 * 2 * 4 + 9

2
2020/data/day19.expected Normal file
View file

@ -0,0 +1,2 @@
147
263

465
2020/data/day19.input Normal file
View file

@ -0,0 +1,465 @@
90: 86 86
122: 86 1 | 99 20
116: 86 58 | 99 75
20: 86 123
62: 99 95 | 86 113
81: 76 99 | 90 86
106: 120 86 | 93 99
73: 99 72 | 86 45
117: 131 99 | 72 86
92: 86 96 | 99 98
13: 3 99 | 118 86
56: 90 86 | 58 99
85: 72 99 | 51 86
51: 99 99 | 86 86
59: 99 25 | 86 62
65: 99 15 | 86 97
112: 86 13 | 99 38
46: 33 86 | 2 99
10: 67 86 | 68 99
33: 120 99 | 76 86
38: 35 86 | 125 99
26: 86 10 | 99 55
1: 33 99 | 60 86
8: 42
16: 51 86 | 93 99
107: 40 99 | 2 86
40: 17 120
34: 86 82 | 99 127
88: 93 17
2: 99 51 | 86 120
32: 100 99 | 7 86
113: 86 127 | 99 82
14: 73 86 | 44 99
25: 86 101 | 99 56
130: 110 86 | 109 99
19: 86 4 | 99 49
30: 86 92 | 99 70
27: 17 86 | 86 99
94: 47 86 | 53 99
115: 86 107 | 99 84
15: 76 99 | 58 86
58: 86 99
105: 130 86 | 32 99
71: 120 99 | 131 86
12: 99 131 | 86 82
60: 72 86 | 93 99
84: 86 102 | 99 80
44: 99 76 | 86 72
125: 76 99 | 131 86
18: 99 71 | 86 52
129: 37 86 | 111 99
102: 99 131 | 86 76
66: 86 105 | 99 41
99: "a"
9: 99 18 | 86 65
131: 17 99 | 99 86
39: 76 99 | 93 86
64: 115 99 | 114 86
57: 86 48 | 99 94
35: 72 86 | 51 99
0: 8 11
77: 86 83 | 99 106
118: 72 86 | 75 99
47: 99 103 | 86 85
23: 99 27 | 86 76
48: 119 99 | 78 86
49: 86 51 | 99 45
67: 86 120
61: 86 72 | 99 127
108: 72 99 | 72 86
95: 86 58 | 99 90
83: 86 27 | 99 131
75: 86 99 | 99 99
101: 51 99 | 27 86
103: 90 99 | 90 86
128: 86 69 | 99 33
70: 99 14 | 86 19
52: 127 86 | 90 99
21: 86 24 | 99 59
22: 86 63 | 99 12
42: 79 86 | 66 99
97: 51 17
104: 86 33 | 99 28
100: 99 16 | 86 39
72: 99 86
78: 86 43 | 99 50
55: 86 6 | 99 34
45: 99 99
5: 86 46 | 99 77
93: 99 99 | 99 86
6: 131 99 | 51 86
110: 71 86 | 28 99
68: 90 86 | 27 99
29: 87 86 | 122 99
80: 86 93 | 99 131
54: 120 86 | 75 99
43: 93 86
98: 99 103 | 86 117
7: 101 86 | 88 99
127: 17 86 | 99 99
96: 86 12 | 99 61
41: 99 5 | 86 112
79: 86 57 | 99 21
11: 42 31
86: "b"
111: 45 99 | 72 86
63: 76 99 | 127 86
124: 86 81 | 99 116
28: 86 75 | 99 58
82: 99 86 | 86 99
121: 64 86 | 74 99
87: 86 124 | 99 104
74: 99 26 | 86 9
31: 126 99 | 121 86
50: 99 72
119: 34 86 | 36 99
36: 86 82 | 99 75
91: 86 131
3: 58 99 | 27 86
114: 99 129 | 86 22
24: 86 89 | 99 128
53: 91 99 | 95 86
126: 29 86 | 30 99
109: 99 108 | 86 23
17: 86 | 99
76: 86 86 | 99 86
120: 17 17
89: 54 86 | 37 99
4: 99 131 | 86 58
69: 27 17
37: 99 58
123: 86 76 | 99 82
bbababbaabbaaabaaaabbabbbbbababbbababaaaabbaabaaaaaabaaaabbaabba
aaabbbabbabbbbbbaabbabababaaaaabaaabaaaaabaaaabbbbabbabb
babaabaabbabaaaaabbababb
babbabbaababbaaaababbaabbbbbaabaabbbababaabbbabbbabababaabbabbabaabbbaababbbbbbb
bababbbabaaabbaabbababab
aaaaabaaaabbaabaaaaabbaa
aabbbaaaaababbaaabaabbbbabbbaaaaabbaaaab
baaaabaaaabbababbaaabbab
ababababaaaaabaaaaabbaaa
baabaababaaabbaabbbababb
abbbabbbbbabaaabaabbabbb
aaababbbabababbbaabbaaaabababbaa
babbaaabbaaaabaababbbabb
bbbabbbabbabaaaabaabaaab
bbbbaaabaaaabbbaabbbbabb
aaaaaaaaaaaaabaabaaaabbb
babaabbababbabaababbaaba
bbabaaaabaaabbaaaabbbbbbbabbabbbbaaaabab
babaabbbbbbbbbaabbaaabaa
baabbbabababbababaabbbaa
baaaabaaaabaaaaaaaaaaaab
aaabbbbbbbabbbabbbbbabbb
bbabaaabaaababaabbbbbbba
baaabaaabbabbaaaaaaababb
abbabaabbaaaaaaaaabaabba
aaaabababbbbbbaabababbab
bbbbbbabababbaabaabbbabaaaabbabbaabbabbbbaababbbabaabbbbabbabaabababaabaaaaaabab
bbbabbaaaababbabaabaabbbabbbabab
bbbabbbababbbbaabbbbbbab
baabaaaaabaabbbbaaabaaaabbbbbbab
bbbbaaaaaabaaaaaabbbabaababbaabb
bbbbbabaabaaaaababbaaabbbaababbbbbaaabaa
aaabaabaaaabaaaaababbaaaaaababbbaaababab
bbaaaababbbaaabbabbabbabbabbbbabbababaabbbabbabbabaaabbabaaaabba
aababbbaaaabbbaabbbbababbabbaaaa
abbbaabbabaaaaababaaaaaa
babbabbabbaabababbabaaaaaabbbabbbabaabbbbabbbaabbaaaaaba
aabbbaabaaabbabbbbaabaaabbbabbababbaababababbbba
baabbabbbaabbbbbbbaaaaaababababaaabbbbabaabaabbaaaaabbab
bbabaaabbbbbaaaababbabbb
baabaabaaababbbabaaababa
aaaabbbbabbbaabbababaaaa
babbababaaaababababaabab
bbbaabbbabbbabaabbbabbbaaabbaabbabbbbbbbaaaabaaabaaabbaabbbbabbb
aabbaabbabbabbbabaaaabba
abaabbaaaaabbabbaaabbbabbabbaaaa
bababaabbaaabaaababbababbbbbbabbbaaabaab
aaababbbaabbaabbbbaaabbaaababaaabaabbbaa
abbaaababbaaababbaaaabba
bbaababaaabbabaaababbaabbaabbbbaaabbaabbabaaabbabbabbbbbabbbaaabbbababbb
bbaaabbbbbaaabbabaaaabba
abbbabaabbaabaaaaaabbaaa
bbbabaabbbbbbbaababbbbaaabbbabba
abbabbaaaaaabbbbbbabaaabbaaaaaab
bbaababaaaababaabaabbababbbbbaab
aabbababaaabbbaaaaabbabbaabbbbbbbabbbabb
aaabbbaaaababbabbababbbb
aababbababaaabaabababbbb
bbabbbabbbabbbabababbbba
aaabaaaaabbbbbbbbaaaaaab
babaabbbaaabbbabbaaaaaab
bbaabbbaaabbababbbaaabaa
aabbbaaaaaaaaaaaaaaaabaaaabbbbbabbabaaaaabbbbbab
abaaaaabaabbbaaaabbbaaab
abaabbabbabbbbbabbababaa
baaabbaaaabbbabbaaaabaaa
abbbbbaabbaaababbbbabaab
aababbaaaabbbbbabaababaabababaabbabbbaba
abaabaaabbabababababababbaabaaabbbaabaabaabbbababbbabbbabbabbbbbabababaabbabbaba
aaaaaabaaaaabababbbabbabbbaabbabaababbbb
babaaaababaaababaabbabba
ababbaaaabaaabbbbababaaa
baababbbabbbbaaabaababbbabbbbaababaaabaaaabbaabababababaaaaababa
bbaabbababbabaabbbabbabb
bbabbbbaababbaabbbbabbbbbabbabaaaaabbbababbbbaabaaaaaabbbababbbbbabbbabb
baaaaaaababaaaabbbbbaaaaabaabbbbbaababbb
aabbabaaabbbbbaabbbaabab
ababbabbbbaabaaabababaabaaaabbab
aaabbabaaaaabbbbabbbbaaa
bbaaaaabbaaaabaaabbbaaaa
abbbaaaaabbbabbbabbabaaa
bbaaaabbaaaababababaababaaaabbbaaabaabaaaababbabbbaaaabaabaaabbaababbbaaabaabbaababbbaabaabaabbb
bbaabbaaaababbababbaaabbbabbbababbbbbbaabbaabababbababaababbaababbbaaabbaabbbbab
aababbabaaabaaaabbaabbaa
babaaabbaaabaababbabbbbabbbaabaabbaabbbababbabaabababaabbbababbabbbbaababbaabaaa
baabbabbbbaabbbaaabbaaab
abaaaaabbbaababaabbaabab
aaabbbbbaaababaaabababaabbaababb
bbaaababbaabbbbababbbbbabbaabbabbbbbaaabbbabbabb
bbabbbbaabbbbbbbbaaaabba
aababbabaaabaababaabbabbabaaaabaaabbbabaaabbbabbbabaaaaa
babbbbbbaabbbaabbabbbabb
baabbbbaababbaabaaabbabb
aaabaabaabbbaabababbbbaaaaaabaabbabaabbbabaaabbbaaaabababaababbbababbabaaaaaabab
aabbabaabaaaaaaababbababaabaabba
ababbababbaabbbaabaabaababbaabbbaaaabbaa
aabbababaabbbbbbbaababaababbabba
baabbabbbaaaaaaaaaaabaaa
baabbbabaaabbabbbbbbbabb
babaabaaaabaaaaabbbaaaab
baaaaaaababbbbbaabbbbbab
bbabbbabababbaabbaaababa
bbbbabababaaaaababbabbbababbabaaabbaabababbababaaaaabbab
aabbbbbababbabaaabababaaaaabaababbbabbab
babbbbaabaabbbbabbbbbabb
aaabbbabbabaabbbabaaababbaaabaab
abbaaabbbbaaabbbbabbbbbbbbbbabaa
bbabbabaaaabbabbbbbababababbaaabbabaaaaababaaaba
bbaabaaaaabaaababaababbb
baabbaaaaaababbababbaabaabababbbabaaabbbbbbaaabbbbababaababaabbbbbabaaababbaaaabbbaaaaaa
aaabaaabbbbbaaaabbbbabba
abbbaabbbabbbaaaaabaabab
aaabbbaabbaabbabbaabbbbbbbabbaaaaaaabbbaaaaaabab
aaaaaaaaaabbaabaaabbbbaabbaaaaabaaabbaababbbbbab
bbbbababbabababbbbababba
abaaaabaabbbbaaaabbbbbbbbaababbabbbbaabbaabbbbbabaaabbbaaaaaabab
bbbbbbaabaabaaaaaaaaabbaaaaaaababbabbabaabbabbab
abbbbbbbbaaaabaaaababbabbbbbaabb
bababaabaababbbaabbaabab
abaaaabaabaabbabaaabbbbbbbaaaaaa
aaaaaabaababababbbaabbbabbaaaaba
abaabaabbbababbababbaabb
baaabbaabbbaabbbbabbabbb
baababaabaaabaaaabbabbbabababbaabbbbbbba
bbbaabbabbbabaabbaaabbaaaabababaaabbbbaaababbaab
abaabbbbabbabbbbaaaaabab
bbbabaababaabbbbbbbaaaab
abbaaabaaaaaaabaabaaaabaabbaaabbabbabbbbaabaabab
aabaaaaababbbaaaaaaababb
aaabbbaaabaabbbabbbbabaa
aaaaabaababaabbabaaaabaaabbaaaaa
aaaabaabababbbbbaaaaaaaaaabbbbbbbbbbbbababbbbabbbaaabaab
bbabbbabbaabbbbaaaabaabaabaaabbbaaaaaaababbbaaab
aabaaabaaabbababbabababa
babbbaaaaabbbaabbbabbababbbbbbbaabbababa
abbaabaabaabbaaaabaaaaaaababbaab
abaaaababbaabababaabbbababbabaabaaababbbbbbbabba
bbaaaabababbabababbabaabbbaaabbbbbbabbaa
aabbaabbaaabbbaabaaaaaab
bbaabbabaaaabbbabbabbabb
abbaaabbabbbaaaabbbbbaaabbabbabababbbbbbabaabbbbbabbaaaaabaababb
ababbaabbabbbbbbbbabaaaabbbbababbaaabbbabaabaabb
aaabbabaaabbbabaaaaabaabaaababbaabbbabbababbbbabaabbabbb
abbabbaaabababababbbabaaaaaabaabbabaabab
babaabaaababbaaaaabbaaab
aaaaaababababaababbaaaab
ababbabaaababbaaabbbaababaaaaabb
bbaaabbabaaaabaabbabaaaaaaaababbbbbabaaa
bababbbabbaabbabbbbbabba
bbaaabbaaabbbbaabababaabbabbaaaa
aaaabaabaaaaabbaababbaabababbaaa
ababbabaabbabbbbbbaababb
aabbbbbbbaaabbbababababa
bababbbaabbabbaabaaaabab
bbaaabbbaabbbbbaaabaabba
aabbbbaaababbbabbbaabbbb
baaaabaaabaaabbbababbbabaabbbabbaabbbaabbbbbbbabaaaabbaababbaabaaababbbb
babbbbabbbbababbabaaabba
babbbbaaababbbbbbabbbaaabaabbaab
bbbbbbaaaabbbabbaaabaaaabbbabaaaaabaabab
babbbbbabbabaaaaaaaaabbb
ababbbabbabaabbaaaabbabbaaaabbaa
bbbabbbabababbbabbaaabbbbbbbaaba
abbabbaaabaaababbaaaaabb
bbababbabababaaaaababbbbbabbbaabababbaabaabbbaababbaaaba
babbababaabbbaaaabbaaaab
abbaaabbbaaaaaaabbababab
bbbabbbabbabbabababbbbab
babbbaaabababaabaababbbababbbbbaabbbbaba
bbbababaabaabaabababbbbbabaaaababbabbbabbbaaabaababbaaaaabaaaabbaaaabbab
babababbabbabbbaaaaabbab
baabbabbabaabbaaababbbbb
aabbabaaaaaaabbaabbabbbaababbaabababbbbbbabbbababbbaaaba
aababababbbabbbaabbaaaaa
aabababaaabaaabaaabbaababbbabbaabbaaababbbbbbbababababbaabbbbbab
abbbaabbbbabbbbaabbabbab
aaaabbbbaabbaabbbabaaaaa
aababbababaabbbaaabaabba
baaaaabaaaaaabbababaabbbabaaaabbabaabbbaabaaabbaabaababaaaabbaaa
ababbaaabaababaabbbbbababaaabbbb
babbabababbbaaaabbbaabaa
baabbabbbaabbabaaabbbbaabbbaabbaabbabaababaaabaabbaababbbaaaabbb
abaabbbbaaaabaabbbbbbbba
baabbabaaaababaaabbaabbbbbbbbbbb
abbaaaabababbbbabababaabbbaaabbaababaabbbaaaaaaaaabaaaab
bbbabbabaaaabbababbaabababaaaabaaabbaaaabbbababa
bbbababababbbbbbababbbba
bbbbbbaaaaabbbaabaababab
aaaabbbaabbaaababaaababa
bbaaabbabbabaabaaaabaaaaabaaabbabaaababb
ababbabaabaabbaababaaaaa
bbbaabbaaaababbaabbbbabaaabaaaab
abbbabbbbbbabbaaabbaabbbababbbbaaabababb
bbbbbaaabaaabaabaabbaaab
bbaabbababaaababaaabbbabaaaababaabbaaababaabaaab
abbbabbbaabbbbbabbababbb
bbbaabbabbabbbabbaaaabba
bbabaabaababbbaababababaaabaabababaaaaaabaaababb
babaabaaaaaaabaaaabaabba
babbbbbaaabbbaaaaabbababbaababba
aababbaaababbbbbbabbabba
bbabbbabaabbaabbbbbbabaa
ababbababbbababaababbbaa
aaabbbaabbabaabaababbbba
bbaabbabbbabbaaabaabbbababaaabaabbbbbabbbbaaabaaababaaba
baababaabbaaabbabaaababb
abbaabbbababababaaababbbbaabaabb
baabbbbbaaabaababaababba
babaabaababaabbbbaabaabaaaababaababbabba
bbaaaaabaababbaaaabbaabaaabbabbbbababbaa
abbaaabbaaabbbbaaabbbbaaabbaaaabaabbaaabbaababbbabbabbabaaaababb
aaabbaabababaaaabaabaaab
bbaabbaabbbabaaabbabbbbbbbbabaabbabaaabababbbbabbaabbabbbbbabbaa
bbbabbbbbbabbbaabaababab
bbabbbbabbaabbbababbabba
aaabbbaabaabaababaabbabababbaaaabbbbbbba
babbaabababbabababbbbbbaababaabbbaabbbbababaaaabbbaaaaababbabaaabbbbaaaaabaaababbbbaabba
babbbabbbaaaaaaabbaabbbbabbbbabbaaabababaabbbbab
bbaaaaababaaabbaabbbaaaaaababbabbbaabaabaaabaaabbabaabab
baabbbbbabbaaababbbbaaabbbbbbaabbbbbbaabbaaaaababbaaaaaaaabbabba
bbabbbaaabaaabbbabbbabaaaababbaaaabbbaabababbbbabbababaaaaaababb
baaabaaaaabbababbbabbbbaabaabbbaaabbbaabbaaabbabbaaabaab
aaaaaabaaaaabbbabbbaabaa
bbaaabbbbabaaaabbabaaaabaabaaaaababaababaaaabaaaaababbbb
babbaaababbbaabaabbbbaab
aaabbaababbbbbabaaabbaaaaabbbbbaabaabaababababababbabbbb
babababbbaabaaaabaaabbbb
babbabaaaaabbbabbbbbbbaabbbaaaaa
aabbabaabaaabbbaaaaaabab
bbbabbaaabbbbabbbababbabaaabababaababaab
bbabaaaabaabbabbbbbabaabaaababbb
baababbbbaaaabbabbaabbbbbbbbbaaabbbbaaba
aabbaababaaaabaabaabbaba
bbbabbaababaabaaabbbaaaaabaaaabaaabaaababababaaabbababbbbbbbabba
bbabaabaabaaabaabbabbaab
aabaaaaaaaababbbaaababbbbbbaabab
baaaabaaabbbabbbabaaababbaabbaaa
baabbbbabababbbaaababbbabbabbbbabbaabbbaabbabababaaabababaabaabbbabbabba
baabaabaabababaabaaaabbb
abbaabbbbabaabaaababbababaabbabbbabbbbabbbbbaabababbaabb
abbbabbbbbbababaabbbabbabbbbbaab
abaaabbbbbbaabbbaabbaaab
ababbbabbbabbbaaabaaabaababababa
bbbbbbaaabbbaaaaaaabbabaabbbbaabbbbaaaab
bababbbbbabbbbbbbaabbbbbbbababbbbabbabbbabbbbaabbaaaabba
baaabbaaaaaaaababaaabbbaabaabaaabaabababaaabbaaaabbaabaa
aabbaabbbbbabaababaabaaaababbaaabbabbababbbbaabb
abbbbbaabbbabbbbbbbbaaba
aaabbabbbbbabbbababaaabb
abaabaaaaabbaaaababbbaab
aaaabaabbbbbaabababaaaaaaaaaaabb
bbbababaabbbabaabaababba
abbbaabbabaaababbbbbbabb
babbabbbaaaaabbbaababbabbaabbbbbbaaabbaaaabbbbbaabaababbbbaaaaba
aaaaaababbbababababaabab
bbaabaabbbaaaabbabbababaaaaaababaabaaabb
aabbabaababaaaababbbabab
ababbbababaabbbbbaaaabbbbbbbbaababbbbaaabbabbbaaabbbabbbbaaaabbbaaaaaaaaababaaab
bbbabaabaaaaabbaaaabaabb
babbaaabbaabaababbbbaaba
bbabaabababbbbbaabaabaaabbaaabbabbbabaaa
abbabaabbaaaabaabbbaaaba
aabbabaabaaabbbaaaabbbabbabababbbbbaabbb
aabbbbbbabababababbbbbab
abbabbbabbabaababaaabbbb
baaabbaaababbaaabaabaabb
bbbabbbaaaabaaaaabaaababaaaabbbbaabbaaaaabbbabab
aabbbabaaaababaabaaaaaba
abbbabbbababbabbbbaabbaa
abbbbbabaabababbbabababa
bbaabaabaababbaabababaaa
bbabaaabaababbbaaababbbaaaababba
abbaabaababbababaaaabbbaabbabaababbbaabaaaabaaabaabbbbab
babbbaaabbabbbaababbbbaaaabaababaaaabaaa
babababbabaaaabaaabbbabaaabbbabababaaaabbbabbaab
aabbbaababbaaabaababbaababaaabbbaaaaaabaababbaaaaabaaabbbbababaa
abbbabbbaaabbbbaaabaabab
abaabbaaaabbaabbbbbaaaaa
bbabaaabaaaabbbbaabbbaaaaabbbbbbabbbbbbabbbabaaa
bbbabbaababbbbbabbaaaaabbabaabaaababaababaaaaabb
abbbabbbababbaaabbabaaaaabbabbbabbabaabbbaaaaabbabbabaaabbbbbbbb
bababbbaaaabaabaabbababb
abbbbbbbabababaaabbaababbabaaababbaaaaaa
abbaabbbabaaaaabaaaaabbaabaaaaabababbbababbbabab
abbabbbbbbabaaaabbbabbbabbbbaaba
abbaabbbbaabaababaababba
bbabaaababaabbbaaaaaabbb
baabbabaaaaabbabaabbbbabbabbabbabbaaaaaa
babbbbbbababbababbabbbabaabbaaab
aaabaaabbbbabbbbaabbabbbbaaaaaabaabbbaabbaababaa
baabbbbbaaabaababababbab
babbaaabaaaabaababbabbaaaabaabaa
abaabbbbbbabaaaaaabaabab
aaaaabbaabababaabbbbbababbbababbbbaababb
abababababaabaaabbaaababbabbabbb
abaaaaabbbbbbabaaaaabbaa
aaaabbbbbbbbababbbabaabb
bbabbabaabaaabaaaaababab
aaabbbbbabbabbbbbabaababbbaabaababbababb
bbabaabaabbabbaaaabaabba
abbabaaababbaabaaaaabbbabbaaaaabbbaabbabbababaaabaabbaabbbbaaabaaaabbbaabbbbabba
ababbbabaaabbabbaaabbabaaabaabba
bbbabbbbbabbbbbbabaaabaaaaababbbbababaaa
babbabaaabbaaabbabbabaaa
babbbbaaabbbbbaaabaaabaabbbbababbaaababb
abbabbbbabababbbbbabbaaabaaababb
babbababbbaababaabbabbab
bbaaababbbbbaaababbbbabb
baaaabaababaabbbabaabbbaaabbbaabaaaabbab
abbaabbbbbaaaaabbbaabbabbaabbaab
aaaaaababbaababaaabaaabababbbabb
baaabbaabbbababaaababbbaaaaaabba
bbbbabaaaaabaaaaaaababbaaaababbbbbaabaaaaabaaaabaaaabbaabbbbbbbb
abaaabbbbaaabaaababbabba
aaaaabaaaaabbbaabbabaaaaabababaaabbbbbaabbaaaaba
ababbabababbbaaaaaaaabbb
aaababaaabaabbaababbabbb
ababababaabbbabbbaaabaab
baabbbabbaaabaaabaaabbbabbabbabb
bbbabbaabbabbababaabbbbaabaabbabaabaaabbbaaabbbb
aaabbbabaaabbbbbabbabbbbbbbaaaaa
aaabbababbaaababaaaabbaa
bbbabbaaababbbabaaabaabb
baababbabbbabaaababaaababababbaaaababaabbbbaaaabbabaaababbbabaababbabbbbbaaabbab
bbbabbaababaabbabbbbbaaa
abababaabaaaabaaabababbbbaababbbbbabbaaaaaabbaabbbbabababbabaabb
babbbababaaabbbabaababbbaaabababaaaababbbabbaabbabaabbba
bbbabbaabaabbbbaaaaaabaabaaabbab
bbbabbbbaabbaabaaaaabbbbbaabbabbabbaabaababbaabbaaabbaaa
aaababbbbaaaabaaabbabbbbabbbbaba
aaaaabbababaabbabaaaaaaaaaaaaababbbbbbaaababbaaaaabaabab
babbababbaaabbabbabbaaaabbaabaabbaaabbab

2
2020/data/day2.expected Normal file
View file

@ -0,0 +1,2 @@
603
404

1000
2020/data/day2.input Normal file

File diff suppressed because it is too large Load diff

2
2020/data/day20.expected Normal file
View file

@ -0,0 +1,2 @@
54755174472007
???

1728
2020/data/day20.input Normal file

File diff suppressed because it is too large Load diff

2
2020/data/day21.expected Normal file
View file

@ -0,0 +1,2 @@
2075
zfcqk,mdtvbb,ggdbl,frpvd,mgczn,zsfzq,kdqls,kktsjbh

36
2020/data/day21.input Normal file
View file

@ -0,0 +1,36 @@
nncl snvzl jsrrk grbmvx qzczl zh kbbmsc bltrrnl jkpmsf hfxss shjvxj lnrjbft bgbvr kdvrrmmx kdqls sgslkt jlzhsl zdl pnhd vsv zgbh dlhx thbdr nmzz bmmb hkrnqnlt qfbh zrzh ghrnz nbdcsj gffbft shpglbr bgfdt jfjr pltnp dbxkrn kxjt hzc rhzgdm hdvkmd ggdbl dsvz ldpr scms rrqtp glc ddkk pgvqd qgqlv dcfj drrzq xncmd nnbn mgczn plhpz gcp zsfzq pbtq kbxcj pmzcrrd sgkmrlt frpvd nvhnjb cmqs zvd frtdmqzb scg xknmp gdnhx sxpv qzmnp ddtkx hbgsgt zppsxq gjmvxg tjlgcb zfcqk lfspxch qhrd qjvf kktsjbh gjjglc gbbs lcggks lsrxkjt gpzch xpqt bjgsll txqrj rgklhlj qcrdn (contains nuts, soy)
kdvrrmmx bgrrld xxltvc pvmj sdkvkg rzh ggdbl bgfdt vtcj vctgp tbfxdtm qqfr grbmvx zfcqk kxjt txqrj mqbv qjvf zgbh hbgsgt vpfnsz ngxmvj nrdz zfmx lqrl gxpmk mxrs zrzh sgskhk shpglbr nmzz jkpmsf trmkt mtdnt kvghnj kbbmsc phszhl scms mdtvbb kktsjbh zcqrgk qdmr rhzbf ggjslpt qhrd flfsv mgczn frpvd kdqls jsrrk fbbgv hnhrv vkxrzx hgn pnhd dcfp cdr scg fpqqbv dcfj bmmb sxpv thbdr pvhs cnmdp mcjbn nnbn frtdmqzb dzjhj vqh (contains fish, dairy)
vckt zsfzq vtbx qtgks pltnp bgfdt cdr pbtq jlzhsl txhs xncmd mvxdcbm kktsjbh rrqtp cnmdp kvk zfmx mcjbn hfxss nrktps lnrjbft nbdcsj grbmvx vtcj pgvqd zgbh rmvqb dzjhj gbbs pstspq qzczl tppntfp jgbmk qcrdn rnllc lsrxkjt kbj lthn mgczn gjmvxg mglzsz zstc zh zfcqk rzh kdqls qjvf vzsjd qqfr bgbvr tbfxdtm ddtkx bjgsll dzptlj dqcpjp xnrbnl zmtj ldpr jm phszhl kbbmsc ggjslpt hgn kbxcj vsxcjpp fpqqbv ggdbl mqbv xknmp ghrnz mdtvbb (contains dairy, soy)
drkgc hjhknn lthn rzh sdkvkg qgqlv nmzz fsdgvh dbxkrn zcqrgk mvxdcbm kdvrrmmx vsxcjpp zfmx gdzkp glc mndpbq xknmp dzjhj mdtvbb ggdbl zh gcp zmtj flfsv vzsjd mcjbn hkrnqnlt ldpr kxjt frtdmqzb kbj drrzq sgskhk rgklhlj kbxcj zdl mqbv bjgsll mlbp ghrnz jsrrk mgczn xpqt nvhnjb kvjr nncl tppntfp tzjvdj dlhx dlpvq htmkhr zjpzr vtbx frpvd dmtfl tjlgcb hnhrv zsfzq kvk lcggks cmqs shjvxj xvqbk grbmvx zstc mtdnt kdqls xncmd phszhl zfcqk lsrxkjt shpglbr bjqnjv bgrrld (contains nuts, sesame)
dzptlj nncl lfrcfd zsfzq gpbzq nrdz zppsxq jlzhsl gjmvxg ggdbl xvqbk dsvz lfzts hbgsgt grzznd drkgc xknmp rrqtp dcfj gxpmk tppntfp qhrd tbfxdtm gdzkp zfmx fpqqbv kktsjbh mdtvbb qzmnp kvghnj vctgp mlbp tkhkf pvhs dpclg kdqls mgczn xkrm zcqrgk xpgnz zfcqk mcjbn bgrrld rhzgdm qtgks zmtj gpzch rnllc zjpzr zvd vqh bjgsll vzsjd ggjslpt qqfr jfjr jm qjvf pgvqd lnrjbft ghrnz vkxrzx zrzh (contains wheat)
zjpzr dcfp mndpbq pmzcrrd plhpz thbdr jfjr drrzq gdzkp rzh pfnv gbbs grbmvx qgqlv kdvrrmmx zstc mdtvbb xncmd zsfzq bjgsll mbvpv kbxcj bgrrld vtcj frpvd ggdbl rrqtp nmzz zdl gpn kvjr lsrxkjt vsxcjpp kktsjbh xflfvx dcfj dzjhj mcjbn gjjglc gffbft vkxrzx vpfnsz svkjz gpbzq hbgsgt zcqrgk mqbv rnllc vctgp mgczn vckt mglzsz dlpvq lnrjbft nrdz zrzh gjmvxg trmkt xpgnz sdkvkg kdqls hkrnqnlt fpqqbv grzznd cnmdp jsjx cdr xpqt nbdcsj jlzhsl gcp tppntfp lfspxch xnrbnl frtdmqzb fbbgv (contains peanuts, fish, nuts)
xflfvx kvk vtbx pmzcrrd dmtfl xkrm qqfr vctgp cdr gdzkp gcp snvzl hnhrv bgbvr dcfp dbxkrn svkjz kxjt mglzsz zstc zfcqk kktsjbh xnrbnl gjjglc plhpz gxpmk scg trmkt pltnp frpvd sgkmrlt kdqls qjvf xknmp jlzhsl lsrxkjt mgczn lfspxch qgqlv nrdz zcqrgk ddkk qdmr nrktps jsrrk fsdgvh pnhd hfxss mdtvbb tjlgcb ggdbl dsvz tjrrm rhzbf zh fgfzb jm rgklhlj dqcpjp ghrnz (contains wheat, sesame, dairy)
zsfzq kvk tkhkf ddkk ggdbl zrzh lfspxch vkxrzx cnmdp kbj dpclg rnllc mlbp sxpv htmkhr nmzz xfkhp dmtfl vsv tzjvdj zstc gxpmk nncl lfrcfd zcqrgk dcfp bgrrld flfsv shpglbr ggjslpt vtbx ldpr xlzlv vmj jm bgfdt ngxmvj pfnv hjhknn kvghnj nbdcsj jgbmk mdtvbb zppsxq vqh scms zfcqk mgczn bgbvr rmvqb nnbn dcfj vfcppm ghrnz nvhnjb cmqs phszhl kktsjbh pgvqd dzptlj tppntfp pnhd pvmj gpbzq scg qfbh qgqlv snvzl grzznd kdqls (contains fish, sesame)
nnbn tjrrm frpvd vckt qfbh vfcppm zcqrgk flfsv jsjx ggdbl kvk gjjglc mdtvbb gpn txmjl tbfxdtm ghrnz sxpv dpclg zmtj fsdgvh xknmp dsvz vzsjd zfcqk lfzts pvhs bgfdt jm rhzgdm lthn ddkk phszhl scms kvjr jsrrk thbdr mqbv txqrj pfnv hfxss kktsjbh bgrrld fbbgv rgklhlj qdmr mndpbq grzznd drkgc xlzlv nncl qgqlv shmxg kdqls mgczn (contains nuts)
thbdr rgklhlj frpvd qcrdn pltnp svkjz ggjslpt shmxg gpn dmtfl vsxcjpp lthn vqh pmzcrrd vfcppm qzczl grzznd fpqqbv ldpr ggdbl ddkk tjrrm vtcj pdxcdlq zjpzr kvjr bmmb gjjglc xnrbnl xxltvc zfmx xpqt vtbx lnrjbft shjvxj xknmp dqcpjp mcjbn dsvz vzsjd mdtvbb mgczn gxpmk hzc kbxcj pbtq qfbh dcfj pvmj lcggks zsfzq hfxss xkrm dzptlj qqfr kdqls zfcqk qgqlv gpzch vckt nrktps mvxdcbm drrzq fbbgv (contains fish, peanuts)
jsrrk lsrxkjt rjhs vpfnsz zfcqk fbbgv qjvf trmkt mgczn mdtvbb mqhl bjqnjv mvxdcbm tbfxdtm xncmd fpqqbv frpvd pvmj mqbv zjpzr qhrd gjjglc zdl dmtfl zsfzq hgn smspv sgslkt zfmx mcjbn dlpvq pgvqd xflfvx mbvpv dzjhj cmqs bgfdt ghrnz rhzbf hkrnqnlt hzc dqcpjp flfsv qfbh zvd kktsjbh kdqls sgskhk scg (contains soy)
zfcqk kdqls drkgc fpqqbv nmzz zfmx zrzh grzznd trmkt kbj gdnhx zgbh gdzkp jsjx ggdbl dlpvq jgbmk tjrrm gbbs gpzch bgfdt vfcppm jkpmsf dlhx nncl rjhs tppntfp thbdr lfspxch xncmd sgslkt gpbzq ghrnz phszhl gjjglc dpclg pvmj gxpmk mgczn nrdz mdtvbb sxpv vpfnsz qgqlv zsfzq vckt kvk kdvrrmmx lfrcfd mtdnt rmvqb sgkmrlt kktsjbh txmjl xpqt rhzbf qjvf xkrm lqrl rgklhlj tkhkf qfbh frtdmqzb jfjr qcrdn dcfj vkxrzx (contains sesame)
hdvkmd dlpvq svkjz glc smspv nrktps ggdbl zgbh pdxcdlq vqh grzznd zfcqk flfsv hnhrv vfcppm zsfzq nbdcsj kbxcj zvd snvzl jlzhsl hfxss shmxg rhzbf xflfvx zrzh ddtkx vsv bmmb tjrrm kktsjbh hbgsgt ldpr nrdz jsrrk rmvqb mndpbq tbxmtm ghrnz phszhl mdtvbb bltrrnl sgkmrlt gdnhx bgrrld xncmd jsjx rgklhlj lnrjbft frpvd cmqs ddkk kdqls dmtfl lfspxch dbxkrn (contains soy, peanuts, fish)
kbj frpvd fbbgv xlzlv zmtj mdtvbb hbgsgt dbxkrn lfzts txmjl jfjr kktsjbh lcggks nmzz zjpzr mtdnt pgvqd hdvkmd bgrrld zfmx pvmj scms hzc pltnp vpfnsz qfbh jm kvjr xkrm kvk tbfxdtm rmvqb ldpr ggjslpt qqfr hjhknn rhzbf dpclg pvhs gbbs kvghnj tzjvdj xflfvx xnrbnl frtdmqzb dlpvq cmqs gpzch bltrrnl zppsxq fsdgvh dsvz pmzcrrd ggdbl qhrd gpbzq mndpbq fpqqbv pdxcdlq mgczn hgn kdqls svkjz txqrj zsfzq pbtq htmkhr zvd lfrcfd qzmnp dzjhj kdvrrmmx jlzhsl xfkhp dcfp mbvpv jsrrk (contains soy)
nrdz zfcqk rhzgdm qcrdn lqrl kdqls phszhl snvzl lthn sgkmrlt kxjt scms pgvqd glc gcp smspv sxpv qzmnp vfcppm sgskhk zrzh jgbmk lnrjbft vpfnsz vmj dqcpjp dcfj jsrrk zgbh dmtfl hkrnqnlt xlzlv zfmx txmjl pnhd mbvpv zsfzq mdtvbb fbbgv frpvd hgn bgfdt gxpmk rnllc qjvf vqh shpglbr kktsjbh dzjhj hzc qfbh qqfr rgklhlj hdvkmd gpn nvhnjb thbdr ddtkx kvjr hnhrv gdzkp vctgp ddkk drkgc jsjx mgczn tbxmtm (contains soy, shellfish)
bgfdt vtbx bjqnjv tjrrm kktsjbh xlzlv vkxrzx vtcj dlpvq kdqls rzh ngxmvj zgbh zvd xflfvx hfxss tppntfp bgrrld zh frpvd zjpzr smspv pmzcrrd mqhl dcfj sdkvkg lfrcfd flfsv mqbv nncl vsxcjpp zsfzq shmxg mcjbn sxpv dcfp grzznd rhzgdm ggdbl jsjx dlhx nvhnjb dbxkrn mtdnt qzmnp jsrrk jgbmk qdmr ldpr dpclg gdnhx mdtvbb dzptlj mlbp nnbn pltnp jm jkpmsf mgczn qjvf tzjvdj rrqtp rnllc zppsxq qtgks thbdr qzczl (contains sesame)
gdzkp pdxcdlq nvvm plhpz qzmnp dzjhj cdr zppsxq dsvz rmvqb qhrd zh hkrnqnlt xknmp snns lfrcfd gpbzq pstspq kvk nvhnjb hnhrv pnhd xlzlv ldpr gcp dzptlj zsfzq gxpmk kdqls lxtzr rhzgdm nmzz tf mgczn lfzts dmtfl cmqs kbbmsc smspv lfspxch dqcpjp kxjt xxltvc kktsjbh shpglbr frpvd qtgks bgrrld tbfxdtm vfcppm vpfnsz zfcqk ddkk frtdmqzb sgslkt nbdcsj vckt xpqt gpn shmxg vtbx xflfvx mdtvbb zjpzr bjgsll drkgc (contains soy)
fpqqbv dpclg vctgp mcjbn kxjt dbxkrn kdvrrmmx kbxcj jgbmk qdmr mgczn phszhl kktsjbh jlzhsl zvd pltnp dmtfl pstspq sgskhk mvxdcbm bmmb txmjl mxrs pnhd kdqls lcggks frtdmqzb hgn sgkmrlt smspv qgqlv lfspxch rzh dcfp tjrrm zgbh zfcqk xvqbk tppntfp pbtq gcp qzczl qqfr grzznd vfcppm hjhknn xfkhp ggdbl mqhl kbj zfmx xlzlv xxltvc ddkk rhzgdm gjmvxg qzmnp jsjx vtcj tkhkf vmj nvvm mdtvbb scg shmxg bjqnjv qcrdn frpvd pgvqd zh pvmj drkgc (contains soy)
grzznd jsrrk zdl kvk zsfzq ddtkx smspv ggdbl nrdz pfnv gpn scms txqrj gcp tzjvdj kvjr rmvqb gjjglc jm kktsjbh xknmp gxpmk tbxmtm dqcpjp fbbgv xkrm mcjbn shmxg hdvkmd mdtvbb kdqls jkpmsf lsrxkjt gdzkp mqhl bjgsll phszhl dlhx sgkmrlt pvhs tkhkf lthn zstc snvzl qcrdn qzmnp fgfzb lnrjbft vtbx bgbvr pstspq ddkk frtdmqzb bgrrld htmkhr qdmr vckt zh zfmx xncmd frpvd zfcqk hjhknn vsxcjpp tbfxdtm kvghnj pgvqd dlpvq (contains soy, wheat)
fsdgvh nbdcsj lfspxch dzjhj plhpz fgfzb gjmvxg thbdr jfjr ddtkx tkhkf ggdbl rmvqb scg nmzz mdtvbb kdqls qgqlv vkxrzx grzznd zfcqk dlhx frtdmqzb rrqtp zgbh tjrrm rjhs drkgc qzczl phszhl mgczn kktsjbh jm xknmp xfkhp vmj sgkmrlt qtgks xpqt kvk pdxcdlq pnhd mqhl tf hkrnqnlt mbvpv dbxkrn lxtzr kxjt bmmb frpvd snvzl lthn qqfr tbxmtm xflfvx kbxcj gdnhx zmtj cmqs xnrbnl (contains peanuts)
sxpv bmmb qtgks bltrrnl xpgnz mdtvbb qzczl vtcj zppsxq vkxrzx zsfzq zh gcp cnmdp kbbmsc qdmr kdqls qqfr vzsjd kbxcj xlzlv bgfdt hfxss sgkmrlt mgczn mqbv glc rhzgdm fpqqbv dzptlj rzh dlpvq frpvd hkrnqnlt zfmx gbbs qzmnp flfsv sdkvkg zfcqk qhrd kktsjbh qjvf txhs snns xfkhp (contains shellfish, fish, dairy)
kbj kbbmsc dsvz mbvpv qgqlv pbtq nnbn frpvd dqcpjp hkrnqnlt zsfzq gjjglc rmvqb fsdgvh drrzq kvjr mlbp gcp ggdbl kdqls mdtvbb vtcj lsrxkjt lxtzr nmzz tbfxdtm vsv snns phszhl xpqt hjhknn kvghnj htmkhr lfzts sgkmrlt mndpbq hgn mgczn jsrrk txqrj tjlgcb jlzhsl zfcqk smspv txhs gbbs dcfp thbdr bjqnjv bgfdt qzmnp bjgsll jsjx (contains soy, shellfish)
tzjvdj kktsjbh lfspxch bjqnjv frpvd jgbmk jsrrk qtgks vtbx txhs gxpmk zfcqk zrzh zjpzr gjmvxg xfkhp bmmb mvxdcbm rgklhlj ggdbl kdqls mgczn flfsv sdkvkg sxpv vmj mcjbn hgn bgbvr hzc lfzts xknmp nncl svkjz xvqbk kvjr mdtvbb dzptlj scg rmvqb dsvz qjvf tjrrm pmzcrrd mqhl nvvm (contains nuts, dairy)
txqrj nbdcsj jsrrk qdmr vkxrzx jfjr plhpz vqh mdtvbb rrqtp dqcpjp xflfvx jm bgbvr kdqls lthn htmkhr vsxcjpp qtgks zjpzr sdkvkg frpvd mgczn snvzl frtdmqzb gcp zsfzq zfcqk hzc xncmd dcfj zgbh pdxcdlq xpqt lcggks zmtj hkrnqnlt zfmx qzmnp gbbs snns xkrm kdvrrmmx dzjhj tzjvdj ggdbl sgkmrlt nrdz bgrrld ghrnz mcjbn hnhrv ddtkx xvqbk vtbx (contains fish)
xxltvc zfcqk kktsjbh dqcpjp gcp glc lcggks nbdcsj tppntfp trmkt snvzl qfbh xknmp gjmvxg ddtkx zppsxq ngxmvj sdkvkg pdxcdlq pstspq qtgks kbj lnrjbft zmtj qdmr bmmb rhzgdm dzptlj jsrrk bjgsll jgbmk mcjbn vqh vpfnsz kbxcj mlbp hfxss tjrrm qhrd hgn rgklhlj nrktps pmzcrrd mndpbq zfmx zvd cdr bgfdt xkrm frtdmqzb bjqnjv bltrrnl mgczn kxjt zsfzq kdqls xnrbnl tjlgcb sxpv nnbn vzsjd shjvxj frpvd rhzbf dzjhj hdvkmd sgkmrlt nmzz dbxkrn gffbft gdzkp fsdgvh vmj mdtvbb vsxcjpp lxtzr (contains fish, wheat, peanuts)
zsfzq grbmvx pdxcdlq mvxdcbm mndpbq pmzcrrd zjpzr mgczn lfspxch kdqls gpn mdtvbb hbgsgt nncl trmkt mcjbn vsv ldpr drrzq rrqtp vsxcjpp grzznd tbfxdtm qdmr zfmx txqrj xkrm nrdz qhrd gjjglc jlzhsl bltrrnl rjhs zrzh xlzlv cdr dzjhj flfsv ggjslpt kxjt pgvqd gdzkp zdl gpzch shpglbr ddkk vtbx zmtj vpfnsz rzh zvd gdnhx cnmdp zcqrgk kbbmsc hjhknn ghrnz kvjr hdvkmd zppsxq tjrrm zh zfcqk xxltvc vckt rhzgdm pvmj xpgnz svkjz frpvd thbdr gbbs hnhrv htmkhr dlhx pnhd sxpv kktsjbh tf gcp pfnv mxrs lsrxkjt gjmvxg (contains shellfish)
ddtkx gpn mbvpv frpvd gdnhx svkjz grbmvx mdtvbb kktsjbh vsv vckt vsxcjpp zsfzq rrqtp bgbvr sxpv fpqqbv dzptlj tkhkf qzczl txmjl frtdmqzb zfcqk dqcpjp tjlgcb tppntfp ghrnz pdxcdlq xvqbk kdqls zdl dpclg qhrd zh xxltvc gpbzq mtdnt mcjbn thbdr drkgc nvhnjb grzznd hzc sgskhk ggdbl hgn hkrnqnlt jgbmk shpglbr jsrrk bmmb vtcj kvghnj (contains wheat, dairy, nuts)
dlpvq fbbgv lthn gpn thbdr pmzcrrd hdvkmd qhrd kbj sdkvkg kvjr mqhl hgn ggdbl bltrrnl mxrs pbtq tjrrm xknmp zjpzr rnllc tf zmtj rrqtp mvxdcbm qqfr htmkhr zfcqk qjvf zcqrgk pstspq ldpr shmxg xxltvc bgfdt jsrrk gxpmk tbfxdtm txqrj bmmb ddkk mcjbn frpvd bgbvr dqcpjp nncl jkpmsf kdqls pvhs zsfzq sgskhk jlzhsl mdtvbb rhzgdm xflfvx glc nmzz shpglbr pgvqd sgkmrlt kktsjbh xkrm rhzbf tppntfp gbbs gpzch gdzkp zh cnmdp (contains wheat)
vsv xpqt gjjglc grbmvx mqhl qgqlv nmzz txqrj mbvpv zrzh jsjx vmj mgczn shmxg qqfr zcqrgk drkgc mxrs gpn fbbgv mdtvbb jm ggdbl jkpmsf pstspq lfzts kvjr vfcppm sgkmrlt tzjvdj bjgsll bgrrld lcggks kbbmsc zsfzq kktsjbh vkxrzx dzjhj snns dbxkrn pgvqd tf frpvd vtcj zjpzr hjhknn zstc zfcqk kxjt trmkt nncl ggjslpt xkrm gdzkp grzznd qfbh cnmdp fsdgvh bmmb tbxmtm qdmr xfkhp qhrd (contains shellfish, nuts, dairy)
pltnp zfcqk tbfxdtm jsrrk zvd kktsjbh fbbgv pdxcdlq ggdbl zjpzr bmmb snvzl lnrjbft kbxcj mdtvbb pstspq scg scms gpn gpbzq ghrnz xnrbnl kvghnj jsjx dqcpjp grzznd tzjvdj hdvkmd mglzsz sdkvkg nrktps pvmj shpglbr xvqbk zmtj kxjt rhzgdm kbbmsc bltrrnl qtgks mgczn mqhl sxpv qgqlv xxltvc frpvd zsfzq xfkhp xncmd nvhnjb shmxg qzczl flfsv zdl pmzcrrd bgfdt lqrl (contains dairy)
pstspq bgbvr rjhs qgqlv tjrrm plhpz qcrdn ggdbl tjlgcb hjhknn zgbh zfmx qjvf vctgp vzsjd pltnp xkrm gpzch gbbs drrzq vtbx xpqt lqrl mgczn shmxg nnbn gxpmk pvhs qhrd zcqrgk pmzcrrd qtgks qzmnp kbj trmkt xfkhp zsfzq nncl drkgc svkjz qzczl tkhkf htmkhr shpglbr vmj vsxcjpp jsrrk kdvrrmmx nvvm ghrnz mxrs kdqls mqhl bmmb xncmd vkxrzx fpqqbv gcp lthn tbxmtm hnhrv sgslkt hbgsgt lxtzr kktsjbh gjmvxg rnllc jm dpclg gffbft tf zmtj frpvd ldpr smspv tppntfp mdtvbb lfzts hgn dzptlj vpfnsz lcggks qfbh kvk (contains nuts)
mvxdcbm dzptlj gxpmk pltnp scg nvvm sdkvkg lnrjbft zdl frpvd shmxg vqh bmmb qcrdn pmzcrrd zrzh kktsjbh mxrs pvhs xxltvc qgqlv ghrnz jlzhsl gpn smspv zfcqk ggdbl zsfzq hkrnqnlt rmvqb gdzkp gpzch lcggks vctgp pdxcdlq kdqls vsxcjpp xncmd txqrj dqcpjp xflfvx mgczn rnllc gjmvxg zjpzr cnmdp vfcppm gcp mqhl nncl bltrrnl ddkk dlpvq zppsxq tbfxdtm fgfzb gpbzq (contains sesame, peanuts, soy)
tbxmtm jkpmsf pvhs jlzhsl xpqt kvghnj xlzlv kxjt zrzh qjvf rmvqb pnhd grzznd txhs scms jsjx mdtvbb shmxg phszhl tkhkf ggjslpt lfspxch trmkt zmtj zsfzq kdqls mxrs qhrd dsvz nvhnjb mbvpv mgczn dmtfl qqfr jsrrk vzsjd pbtq htmkhr hjhknn snvzl scg xvqbk glc bltrrnl mvxdcbm rgklhlj ggdbl pmzcrrd xkrm lxtzr tjrrm sdkvkg ngxmvj bjgsll nnbn plhpz hnhrv qfbh hkrnqnlt pvmj txmjl hfxss fsdgvh frpvd nncl nbdcsj jm gpbzq xflfvx ddkk svkjz hzc lfrcfd kktsjbh hdvkmd tf (contains wheat, nuts, peanuts)
ddkk qzczl fpqqbv dcfp zgbh qzmnp mqbv kdqls gpbzq qtgks mdtvbb kktsjbh fbbgv zrzh kvk cmqs bltrrnl lthn zsfzq shpglbr xfkhp smspv dmtfl mglzsz mbvpv nnbn zppsxq zfcqk jfjr gbbs zh ngxmvj cnmdp pltnp bmmb mgczn mvxdcbm drkgc qhrd zmtj qgqlv nvhnjb nrdz mndpbq vmj thbdr mtdnt xpqt nmzz frpvd gcp rhzgdm vsxcjpp (contains peanuts, dairy, shellfish)
qtgks xlzlv zrzh xflfvx vtbx mxrs gpn gbbs jsrrk xxltvc qgqlv jfjr svkjz sgskhk tjrrm fbbgv bgbvr zsfzq shjvxj tppntfp gdzkp ghrnz sxpv nvvm vtcj dmtfl mdtvbb mgczn dqcpjp rjhs kbxcj vckt pnhd jkpmsf dcfj dbxkrn dzjhj frpvd pvhs ddkk scg mndpbq mcjbn dsvz vzsjd qfbh vfcppm shpglbr cmqs grzznd flfsv htmkhr vctgp ggdbl nrktps dpclg zfcqk txqrj qjvf lqrl pgvqd tbxmtm kktsjbh tf kdvrrmmx cdr nncl (contains shellfish)
jlzhsl vfcppm nrktps lsrxkjt gjjglc kdqls sgslkt rjhs zsfzq rhzbf gpzch xvqbk scg frpvd bgrrld dsvz gcp xlzlv zjpzr qgqlv mcjbn drkgc hzc kktsjbh mgczn zfcqk qhrd xfkhp ggdbl tbxmtm lnrjbft thbdr nvhnjb vzsjd dcfj zh kdvrrmmx zfmx fbbgv pstspq pdxcdlq ddtkx pfnv (contains peanuts, dairy)

2
2020/data/day22.expected Normal file
View file

@ -0,0 +1,2 @@
32598
???

53
2020/data/day22.input Normal file
View file

@ -0,0 +1,53 @@
Player 1:
44
24
36
6
27
46
33
45
47
41
15
23
40
38
43
42
25
5
30
35
34
13
29
1
50
Player 2:
32
28
4
12
9
21
48
18
31
39
20
16
3
37
49
7
17
22
8
26
2
14
11
19
10

2
2020/data/day23.expected Normal file
View file

@ -0,0 +1,2 @@
32658947
???

1
2020/data/day23.input Normal file
View file

@ -0,0 +1 @@
598162734

2
2020/data/day24.expected Normal file
View file

@ -0,0 +1,2 @@
512
4120

558
2020/data/day24.input Normal file
View file

@ -0,0 +1,558 @@
nwwnwnwnwsenwnwenwenwnwnwnwnwwneswwnw
nenewsesweeeeeeeeeeeeneeee
swswswseseneswseswnwseseseseswnewseswsesw
swseseseeswsesesesesesesesesesenw
wnenenwnenenenenenenesenwnenesenenenene
esesenwseewseseseseseeseseeesweseese
eseeeneeeeeeeeeweeeswewe
seeseeswnweeneswwswneweeseenwsee
nenwneswneneeenenewneneeneneswnwnene
enwnwwnewnwnewwsewnwnwnwnwswnwewnw
neneneneswnenenwnwnwnenene
seseswesenwnweenwseseseeneeesewsesw
eeseswsenweneeeswneseenwseeewse
nenwneseeeneneene
eeneswnweseeeeeeneenwee
nwnenenesewnwseswwenwnwnwnwnwnwswwnwnw
swwswwwnwswwwswwwwwwewewsww
wwsewnewwwwwwwswwwwwwww
nwwnwwnwswneswwsewwnewsesenewnwe
eneeswseeeeeeesweenewewene
swewswnwnwswwwswsewwwwwswswwsww
swwneseseneswseseweswnweswwswesese
eneneneeeneneeeesweeewenenee
wseeseseseseseeseeseseseseewsesene
sesenwswswnwswseeswsweswnwswwswswnwse
eeenwseeenweeseeeeeseeeswsee
eseewseneswseeewsewswnwnweenee
seeeseesenwseseeeeweseesesesee
neseenwneneneneneeewneweneswnenww
wnewseswswswseswseesewseswneswswseswsw
wswenwsenenweseswnwewnwe
swwswseswnwswnenesesewenesenesewneswsw
nwnenwnewnwnwnwnesenwnwswnwnenwnwsenwnw
nwnwnwenwnwnwnwnwnwswnwnwnw
eeeeseseswseseeeeeneswseeeneee
ewwwwwsewwnewwwswwwwwwsww
wswwwwwnwseewwnwenwnwnwnwnwne
wwwenwwnewswewwwnwwswwwww
senwnwseesenenwnwesw
sewswwwwwwwwwwwwwwsenwwnew
neneeeewneeeneeeseeneeeenee
neeeeeseeeseswenweseeeenwee
eeeeeeneeneneswweeeeeene
seswwswswneswswswswswswswswswsw
nenwsenenesenenwnwnenenwneswsewsenewnenene
seswnwsenwswswswswswswwseswswswnewswsww
senenwnenenenenenewneenenenwnwnewnenwnwnw
wnwnwnwnwnwnwwnwnwenwwswnwnwnwnwnwnw
ewswwwswswwswswwswswsw
nwnwnwnwnwnwnwsenwnwnwnwnwnwnwnwnew
nenenenenenenenenenwnenenenenenwswswnenene
nwnwswwseneseswweswswswswswwnewewe
eneeeswseswneswenewnwwee
neswnwnenenwesewnesenwnwnwnwswneneneenw
seseswesesesesewneswsesesesesesewsese
wwwwswwsewwwswswnenewwww
wwwwsewwswsewnenwww
sewswseswseswseswswnwswnwswswwnwwswnww
esenwnwenwnwnwwnwnenwnenewnenwnwnwne
nwnwwnenwseenenwnwnwewnwnwnwnwnwnwnwne
swnwnwnwnwnwnwnwwnwnwswwwenwnwnesenw
swswswswnwseswswswswwswswneswswswswwesw
wsewenenwswnwnweewswwneswenesww
swwwswwswwswswnewswwsewwwwww
nweesweeeewseneeenee
wwwwnewsewwwswewwwwwnwww
seseseseseswsesewnenwswnwswswswnwswsesese
swseswseseswswsewseswswswneneswnwesesese
wneswnwneneneneseneneneneneneneneneenenwnw
neseseesenwseseeseseswsenwseesewsee
wwwnewewwwwwwwswwwwwswe
weeenwweneswneseneeeseeneneee
nwnwseseweswswswswseswseswneseswswsenese
seswenewneswseewnwww
eseswneseswseswswwnwse
nesweeneneseweeseeeeweenwwee
seewseenwwnesenesewswwwwnwwnwseene
nwnwwnwnwnwnwswwnwnwnwnwnenwnwnwnwesw
wnwwwnwnwnewnwnwnewnenwnwsesewsesw
nwswswsesweswwewwswnwwsewswnewnesw
swseewseseseneeseseneeeseseseseew
seswswseseseneswsewseseneswseswswwswsw
wwwnwwwewnwwwwwswwwwwnww
nenwnenewnenenenwwnwneneeneneenenenenw
nenwnwnenenwnwneneswnwswnenenenenenwnwnwne
nwnenenwneswneneeswnwnenewenwnwneene
nwewnwnwseenesenenwwswnenenwnwnenwnw
wnwwnwsewnwnewwwwewwwwwnwww
wwwewnewwwwwewnwswwnwwwwwse
senweesweseseseeeseeswenweeeese
swnenenwnwnenwnwnwnwswnwnwnenwnwnwnwnenw
nwenwnewwnwnwenwnw
swnwnenwswneneeneeneee
seseseswseseseseseswseneswswwesesesesese
seseseesenwsesenweseeseweeseseseswse
eeneeeeeeseeseseseswseeee
swswwswseneseseswseswseswnwwswswnwswsene
wesewwewwwwwneswswnw
nweewnwwsenwnwnwwnwwnwswwnwswnenw
eeeweeewseseeseseeeeesenwne
wsenewwwwwwwwnwwsewwwnwne
seewswnwnweeenesweseswseneesewe
swnewnewseneswweewenwwweswswnw
swweswnwswwnenwwswwwsenewnenewew
nwnwwwewnwsesewnwsww
neweswwnwnewswnwwewswneseewnwnw
swnwnwnwsewnenwnwnewsenwnwew
neseesesesesesesesesesesesesesewwsesewne
swwwnewnweeneswswseeswenwseswneswne
swnewsesenenwswsewsewnwwewnwwnwe
neseewseseseeswswsesenesenwsesenwseswse
swswswswswwswswseswswswswneswsweswsww
swwsweneswseseseneesesenwnwseeesesee
sesesesesenwseseseswnwswseseseesesesesesw
wwenwwsenwwwenenw
nenenwnenenenenenenesenenenenenenenene
swseseseseenesesenwsese
swsweswsesesesesesesesesesenwwse
seeeswswnweseneneswwnwsweneweenee
nenenenwnenenwnwnenwsenwnenenenenwsww
enewsesewseswsesewseeweseneenenesee
eseswswseneswwswnwseseseewswwwneseswe
eeeneseseeseeseweeeeewese
nwswwwwwwnwnwwnwewwwnwwwnwnwe
swswseswsesweswneswwswwnwswnweneswswne
sweeeneeeeneeeesweeeneneee
neneeneneneneswnenenewneneneeneeneene
swwnwnwnwwnwnwnwnwnwsenwnwnwnewsenwnw
eeeeenwseeseseeewseseseswseeee
wwnwwwswwwnwwwnenwewnwnwwwww
enenwseneneneneneeneneneeeneene
eseswwswwsewswswswwwswwwnwwwnewne
eeeneswnewswsesenwwsenenesesenwee
senweseeseswseseseseseseseseseseseese
swneswwwswswswswwwwswwswswseswswnwsw
swswswsewswneswwswswwwswswnwwwwesw
eweewnesenwnwwswswnweseseeneese
swsenewnewneneneseneneneneneenenenewene
nwnwweswwwswwwwnwwswwweswesw
neneneswwnweeeweswneeswneswwsenwnww
nwswsweswnwnesenwnwwswneeswswwesese
nenwnesesenewesewnwnenenwwsweeww
swswswswswswwswnwnesweswswswesw
wwwnwenwnwnwewwwnweswenwnwneew
nwwwnwnwnwnwnwwwsenesenwnwnwnwwnwwnwnw
eneneseseeesewenwsesesesweswsesese
seswwswseseseseswswseneswseswswsesw
swewswswwsweswswswswswswswwswswswsww
wnewneenesenenenwnewnenwnenenesenwnenenw
seswseseswwwsesenesesesewseewseswnene
eeneswneneneeneneeneneeneenene
swswswswswswwswswwesw
wwwswswswswswewswnwswwwewwsenwsw
eseeeesenweeeeesewseeeseee
swswwswwwswswwneswsweswswswswswswsww
seseenwseseswswsesesesw
newsweeewnwenewnesewsewnewnene
nwnwnwnwnwnwnwswnwnwsenwnwwnwnwnwnwne
sesesesesenesesesesewswseseseseswsesese
seseseseseseeseswsesesesewsesese
wwseswnwseswswnewwswwnwswwswwew
sewweswseseseseseseswseseseweneseswsw
nwnweneewnwnenwswswnwnenwneswnwwenenw
swnwnwnenwsenwnwsenenwnenenweswswnwnenee
seswseneneswsewewwnewnewwnwwwnesw
seswswsenwswswswswswswseseswseswsenesesewsw
senwseeseneseseseewseseseswweesesew
seweswsesesesewnwnweseseeswseneseswse
eeseeseeeeweeesee
swwswwnwwwnwwwwwnewsewwewwswe
nesenwneswenenenwnwwnenenwsenenesesenew
wenwswseseseseswseeseswwneseesenwse
nwneenwneseswenewsweseseneswenwee
seeseseseseneseseseseseseenwsesesesesew
wnenewneneneeenwenweneswswswseswnwse
wwwswwsweswswwwswswswsww
eeeweeseseeeeeeeenweeene
eswwwswsewnwwswnwewwswwwwwwsw
enenenwneneeeneweneeneeneseswee
wswwsesweswwenwewwswnenwnwswnewew
seseenwwwseswswneswneswsewneseeswnee
swneeeeneneswnwesweeeneeenwene
neneswnwwseeswseswseneesenwswswwnwswese
seseseswseseseseseseenwsenwseenewnwsewe
wneswweseswseswsesesesesesesese
seseeeseswseseseseseseseseseesenw
nwnwsenwsenweeseewesesweseswseswe
wneweswwwwwwwwwwwwwswwwsw
ewwswseesenweenwnwneneeese
sesesesesesesesesewseneesesese
swswswswnwewswwswswswswswswsw
nenenewwnesewneneneeneeneneeeeenee
senenwewnenenenenenenenenenenenwnwnenesw
swwsewswwswenwswnwsweswswewswnenw
swswswwnwswswswwswwwswwwswwswesw
seweeeeneeweeswseewnweeeeese
nwneeseeweenwswswseeeenwseenesw
wwnenesenwnwsenwnwnwnenwwenwnwnenene
eseeeenweneswesesw
swsenwwwnenwwswsenenenewwneswnweww
newnwnwnwnwnenenwsenenwnenwnenwnenwsewnw
eeseneenwsweeneenwnwnwnwsewnesese
eneseneneenweseneweneeeesewnenee
wswswswneswswswseswswswswswswswswswswsw
swswswenwneswswwswswswswseswswswnwswse
wesewseseeseseeeeseeseseeeesee
senwswsesesesweweenewswswswnenwsenwese
eseeeeeeeeewneeseeeewseeese
wwwwewswwwnewwwwwwswnwww
nwseseseswseseseseseswnwseseswswsesesesene
enweenewneseeewneeseeenwesenew
nenenewenweswnwneeneweseseneswneee
ewwwnwwwwwsewwnwwwwnwwwsww
neneneseswnewnenwnwneneswnweswwsenwswne
nwnwnwswnwwwnwnwwswnwwnwnwnewwwe
nenenewneewneeseseneenenenenenenw
nwnwsenwwwnwenwnenwnwwwsewwwnwsw
nwnwwwnwenwwwnwsewnwnwwnwnwnwnwnww
sewswswswswseswswseseswswswseswswswsene
wsenwnweswnwswewswnwnwewwsenwwnwww
swswneswneswwswwwwswswnewsw
wnenwnwnweneneswwnwenwneneneseseswwnw
nwnwsenwnwwnwsweswnwenwwnwwnwwnww
sweeeeneseeesewenweesweeee
nesewneneneneswneenewnesewsenenenewne
ewwwwwwenewenwwwwsweseww
nwewnwwswwwnwnwsewwwnwnwwwwwnw
seseeeneswsewseeseeeseneswsesenenw
senweswnwnenenenwnwswnwnenenw
nwswnwswnwnwnwwnwwnwwnewnewwnw
swswseweswwswswswneswewwwwswwsww
eeeneneeeeswnenwneesweeneeeeee
swswswswsweseeseswsewswswnwseswswseswsw
neseseseseseseseseweswseswsewswsese
nwwseswwnwnwwnenwwnwswwenwwne
ewsweseneeewneeeeweeeseneeese
seeswneseneenwnwewswnweseseswnwesese
eswswseswswswseseseswswnwsw
nwesesenweseeeseseseeseseswseswee
nwnwswnwwnenewnwnenwswnwswnwwwwnwnwnw
enweeswneeswweenwewseeseswsese
wwnwswswwwwwwwswwwneswwseswwe
nweeeeeeeeeeseeeeeeeesw
eseenwsenwseeseseenwwseswsese
neeeeseeseswewsenweseseeeeseesee
wwswswneseswswesweswswswnwseswswswesw
neeneneeeeeweeeeeneswwe
seswseseseseswseswswswneseseswsese
newwnwnwswnwwesewnenwwweswwwnw
nenwneneneneneneswnewesee
wswwwwwwwwswswswwwnewwwsw
nwswswseseswewseseswseswswswswsesesw
eeeeseseswsesesesesenesewewsesesenw
nwnenwseswnwnwnenenwnwewnwnenwseenwwnw
seswwwwwswseneenwneswswnenwsewswe
seswsenwseswseseseseeseseswneswwswwsese
swneneneneesenwnenwnenenenewseswnenenee
nwswnwwnwnwnwswnwsenesenenwnwnwnwnenwsenw
nenenwnwwnwnwnwnwnenwnwnwnwenwnwnwnwsw
neswwsewneneneeneneneeneeneneenee
seseneseswswswnwswswswswseswswswswwesw
nwnwnwenwnwnwnwswswenwnesenwnwnwneneswnw
enweeneeesweeeneeeeeeeee
seseseneseseswsesesesesewseseswsesenesese
seseswswnwneswswwswswseswseswswseneswswesw
seseseseseseswseeeeeeeeseseenw
eseenweseeenwesweeeeeeeese
seewneeneeeeneenesweenenwneeene
nenwnweenenwswsewnwwwsewnweneewnw
eseseseseswseenwesesesenwseseesesesese
wswswswneswswsweneswwswwswnwswsw
wwwwwwswwwwswwseenewsewnwnw
seseeesweenwseseswseeseeseesesesenwse
nenwnwnwneswnenenwswseeeswswneneneseww
swwwswsewwswswwneesenwswsewnenww
wnwseseseseseenwsewneenweseseeswsw
enwnwnwnesenwnwwsewwsesewnewwwswe
nwnwwnwsenwwnwnwwewnw
seseneswseswwseswswseseswswseseseseswsw
nwnenenwnwnwnwnwnenenwnwnwnwwsenenwnwnw
weseeneneneneneswneeenenesenewenewe
wwwwnwnwnwnwenw
nwnwsenwseseseswsesenwsesweswswneseeswe
seseswsewseseneesesenwnwse
wswwseswswwwswswswwwswnwwwwwene
eneswnwwnenwwenweewsweeswnwnwswne
wwwwnwnwsweswwenwnweswnwnwwnwe
nwseswswnewsesewnweswneseenesenewew
swnesweewwswwwswswnwswsewwwwnw
neeswneswnwsesenewneneswnwnewnwnenwne
swswswswseswswswswneseswseswswswsewsesw
swseneswswswneswseseswswswseseseswswsese
swswswswswwnwswnesweseneseswnweswswsesw
wnwwwwnewsenwswsenwwwwwnww
seseneswswswswsenwswswseswseswswwsweswswse
enwweeeseeeseneeneeeneneenee
seeeswseeesenwesesewseseeseesee
sewwnwwwwwswswnwswseewwewswwnew
swwsweneneswswwswneswwwwswseswswswsw
nwswseseseseseseseseseseseneseswsesesesese
wswwwnwnwwswwsesesweneneneswwswwsww
newswwswsewwnenwwweseswsewnwswsenenw
swswswseseseseswseswnw
nenenenenweswneneneneneewneenenenesene
seeseneswseseseseseswsesewswswswswsese
ewwwnwswwnwwwnwenwsenwewwsesenw
nwswnenwnwnwnwnwnweenwnwswnewnwnenesenw
nwwswwwwswwswnesewwwswwwwwww
sewwswwnwwwwwwwewwwwwwwnew
wswnwwwwnesewnewwnewwwswseew
nwnewwewneswnwwsenwwesenwwnww
neneneweesweeneneenenenese
wnwwsewwwnwwwwnwww
nwswenwnwswwnwnwwnwenwnwnwnwwsewww
seseswesenwseseeesenwseseeeseswsew
enweeeseenesewsenesesewseeesew
ewnwnwseneneneswneneneneswneeneswnenee
seseseseseseewseseseseeneseseseesese
nenwswsenenenewwnwnesenenenwnenwneese
swenwnwwswwwswswwesenwwnewswsw
seewswseeesenweeweeneneewneeww
eseseseesenwseeseseseesesesewnwsee
neseneeseswseseswseseseese
swnewnwsenwnenwneenesee
nwnwnwnwnwnwnwnwnwnenwsenwnwnw
nwwseeswenwnenwwwswsenewnweewesw
swswswwswswswswswswswswwswwnwwneeswwsw
nwnwnwsenwnwnesewnwswenwnwnwwnwnwwnw
nenwnwseeneneswswswsese
eeneseneeneneenenwnesweeeeneenw
neneneswnwswneeeneeeneneneneneneenwne
nesweeeneneeeweweeneeneenene
eseneneeenwsenewnenenewseswnenenenwne
swnenwneenenenenenesenwenewnenenenenene
wwwnwnwwenwwwnwwsewwnwwnwnwnww
ewwwwnwwwewsewnewnwwswsewwnww
esenenwseeseseseseseswsewswe
weswswswswwswnewwwwwwwesewswswnw
wwswwswsweneewswswnwnewswwwwwww
nwneneneneneneeneneneneswwneneenenenese
neenwnenenwnwswnwnenenenwseneswnwswswnww
nwnwewnwnwwewwenwwswsesenewww
wwwwwsewwwwwwwwwwwwwne
wseseseseseseswseseseesesesese
nwnwswwnenenenenwnenenwnenwnesenwnwnwnenw
nwsesenwwwnwnwnwnwnwnwwwnwnwnwnwnww
nwwwwwnwwwnwswwnwewww
eseneeseeseseeenwseeseeneseswseesw
swsewswswseswswneswswwswswnwswsweswsw
wwnwwwswwnwwnewsewwwnwne
swswswsenwswswswwswswswswswsesweswswsw
swseswneswnwswswsweseswnewsweneswnwswsw
seeseseeeweewseseneseewseseee
eeswneeeneeeneenenenw
nwnwnwnwnwnwnenwnewsenwnwnwnwnwsesenwnenw
nesenenwswneeswseseneswswnwnwswnenwswnew
wwnwnwwwswwwsenwwwwwnwewwswne
nwnwnenwnwnwswnwsesewnwsenenwswnenwnenwnw
nesesewewneswswsenwnwseenwwnesweenwe
seswweweseeeeeenwneeswenesewe
sewwswwnwswswwswswswneswswwweswswwsw
seseneeseseseseeseswseseesenwesesese
nwnenwnwenwwnwnwnwnwnwnwwnwnwnwsewe
wwnweswsenewsweswwswswwnwwswwww
nenwnwneneneneneneswnenenewnenwnenesenenene
swnwnenwswenwneswnwnwwnwnwseneenwwnesw
sesesweswnwnwswsesesweswseswsewswswsw
enenwneneeeeneeneseeneneneeneswnwe
wnewwwwwwwsewswwnewwsewwnw
seswnesesesenesesenesesewswsesesewsese
wwwsewwneswwswwnewne
sesesesesesesesesesesesenwswseneswseese
eneneneneneseenenenwenwswneneneswnee
wnwwwsesenwnwnwnewwnwnenww
nwswnwwseewwwwwewswenwswnwswsw
swsesesenwseswswseswswsesenwswseswsesw
wwwwnewwswswwwwwswwww
sesesesesesewsesesesewneseneesesewse
esweeeenweeeeeeeeeeeee
wsewesesewseenwnwneeswswnesenesee
wswwnwweswswswwswswswswsenwswswsw
swnenwswnwsweseswenwnwwweswweewse
swnenwwwneswwwswwneswseswwswwsesw
neeeeneenwseeseeeenenewewee
nwnwnwnwnwnenwswnwnenwnwnwnwwnwnwenwnwnw
swneswswswseswswenwneseswswseswswswswsw
seeseseneneswsesesewneeseeeswseseeswne
nwnwnewsenwenwswnenwnwnwnenwnenenenwe
swneswneneneenwneneneswenenenwnenwnene
neswseswnwnenwswnenwnewneswwswnwnwnenwnw
neneneseswneseenwnenenewwwneneneenwne
newsweswnwswneswsweswwwswswwsewsww
ewenweseeeweeneeeneneseswee
wswseswswnenenewswswsewswswewseew
nweneeenwwswsweeeseneseneeewne
senwwsweswnwswswsenwsewseswnwneeswe
swseswwewwnenewswswwnwwswwswsenew
eenenenenenenwnenwswswnwsweeeenee
neneneeneneeneneeneneneneesewneene
swnwwnwswswweswswswswswswswwseswswwsw
wwwnwnwnwwwwwswwwwnwnwnwsenwwne
wwswnenwwnenwwwewwwwwesesew
eeeeewseeseneseseweseeeeese
nwseeeseseeneeeeseeseeseeewe
eswneeneeeneneweseeneeneneeee
wnwswswwswsesweswswswswnwswswswwswsw
enwneneneswneneneneneenwsenenwnesenewsw
swnwnwwswnwwnwwwwnwnwwwsenenenww
wnweseswnwnwwnwwswnwnwnweeenwenwse
nwnwswnwswnenwnenwnenwenwnwnenwnwnenwnw
seseeseseseneseenwswneseseswnwsweneswwe
swwwwwwnwnwwwnwswnwwwnewewwne
eneneneswneneneneenenwnenenene
nesewsesewneswnwwwnwwwwwwnewwnenw
enenenwnenenenenenenesenenee
seswseswswswesenwseseswnenwswneswswswsw
nenenenenenewwneneenenenenenenesenenene
swneswnewswwwwswswswwwswswseswwsw
nwnwewnwnwseeneswwswnwnwwnwwwnwnwnww
eeeswnweeeweweweee
enwwnwwenwwsww
wneswsewswwwwwswwswwwswwww
swwwwewnwwweweswewwenwww
wwseswenewwwwwwwwwwsewnwwww
nwsewseseneswesweseswnwwswnew
swneseswswswswswswswswseswswswswswswsene
nwneneneneswneneswnenenewnenenenwswenene
wwswwewswswswswswwwswnwwwwseswsw
nweeseeeeseseeseesweseenwsesene
wneswswneneneenenenesesenewenww
seswneeneenewseeneenenenweneeene
neswewsewnwnenwnwnenwnwesewneneeswe
eeeeenwseeseseeeseeee
ewnwseeseseseeesenweseneseseseseese
swwneswewwnwwewwwwsewswnewww
swwswnenwesewneseenwswenewnwenww
nwnwwnwnwnwwwnenwnenwwnwsewnwnwnwsw
swnwswswswwswwswwnweswswswwswswswwe
wnwneeeeneneeesesweeeeeenee
ewnwneenwnenwnwnenenenwneneneneswneswnene
wwwenwswwnewwwweswwwww
swseenwwswswnwnwswsewseswswseneeesw
swneseseswswswseseseswswseseseswsw
neneneenwneneswwnwnenwnesewnenewnwnee
swnwswswseswseseswseswswswswnwseswswsesese
wswwswwwwswswwswsweswwswswnwww
nwnwwneseseneenenenenenwwneswnwsenewne
wnwsenwwwwwnwwwneswwwwwnwnwnwe
swswseswneseswswsewswswswswswswswseswnee
swsesewswnewnenwsenwneswneswwwswwsw
swseswswswsesesesewswseeseswseeswsenwsw
seswswwseeswswenwswseswenwswwswsesw
neneneneneneneneneneneswneweneneneneene
swsweneenwnwsweeeeenweeeeee
neswnesenwwswwnweeswsweswnesewsww
nwesewnwseewswswnwwswneeenw
eeseenesewsweseswnweseesenwnesesee
wneswswswnwswweswnwwsweswnweswswesew
senwnenenenenenenewnewnenenwnesenwneswse
nesenweswnwnenwenenwnwnwswswnwnwnwsenene
seswsweswswwwswwswwwwwwwswnewsw
enwwwswswswswswswswswwswwseswswnenwswsw
nwewwenwwwewwswswwwwwwww
sewseneswesweweeweenwneeesee
nwnwwwewnwwnwnww
seseseeenwswwenwswswseenwseseeseeee
seseswseesenesenwsesenwsesewsesesesesese
wwswwsesewswswwswwwenewswwswsenene
nenwnwesenwnweswnwnwnwwnwnwnwswnwsee
seswswswswswseseseenesewwsesenwsesesenw
wswsweswsenwwwwswewneswsew
swneneweswenwswswseswswseswnwsesewswesw
nwnenwsweesenwwseswenwwwseswwswnw
wwnwenwnwnwnwswnwnwnwnwwnwnwnwwnw
swswswneneenwnenwnwnwsenwenwnwwwnweenw
nwnwwnenwenwswnwnwnwswwenwnwneneswnwnwsw
enwnweewenesesweeneneeeeeene
nwenwweeeeeenwneeeswseeeswse
nwseneeneneeeeneeeneeeneenenenesw
wwneswswswewswsesenewwseswswnwswsw
swseswswswswseswsesweswswswswswnwswswswnw
nwweswwseseeseseneswnesenweseesenewe
wnenwnwnwnwnwwnwnwnwsesenwnwnwnewnwsenwnw
nenenenwnwsenenwnwnwnwnenwnwnwnwnwnwnwsw
ewsweenwnweneeeseneweseeesew
wnwnwnwswswswswswseeswswwswswseswswe
nwwswnwneeeeswewwnwswnwenwswswenwnw
swswswneswsewswswnewne
swsesesenesewswseseseseswseswsesesesese
nenewneneneneneneneeeneweneneeenese
wwwwnwwwwwwwwwwwwsewnew
wwswswnwswwweswwwwwswwwwsww
nwnwnwnwnwnwsenwenenwneswnwsenwnwnenwnwnwse
neneneneneneenenwneseneeenee
eeneeeeneenwswnesenenweeeeenesw
swnenenwseewnesweseseenwsesewseswnwse
seseswnwsesesweseneswsesesenwseseseseswse
nesenenwnwnwnwnenenwnewnwnwnwnwnwnwnwne
nenwnwwswnenwenwsenwnwsewnwnwnwwww
neswswseswseswswsesenwswswseswnwsweswswne
nweneseswnwnwnewnwneenenewnwnwnenwnenenw
eeseneeswswnweswseesesenwnesesesesee
eseseswswswswneswwswswneseswswwswwsw
seseseneswewsesesesesenesesesesesesesese
swsweewnwsewwenwsenenewnwsenenee
wnwwwnwnwswwwenwseeenwnew
swnenwneseseswswswseswswseeswnwseswswswswe
nwnenwwwnenwwsenwnwsenenwnwnenwnwnwnwse
swnwnwnwnenenenwnwnwnwseneenewnwnwnwnwnene
wnwewnwwswwwnwnewwwnwnwwswwwnww
nwsenenwnenwnenenwnenwnewnwseswenenwnwne
neneseeeneneenewneneneneswnene
sweeenweeseweseseesewseeee
nwswseneeeneenwneneeeswseneswenwene
nwnwwnwnenwnwnwwnwnwswwwnw
wwnwwnwwwnwwnwwwewnwnwswnwenww
wwwwwswwwwwwwswwnwwswswswe
seswneswsenwweenwswnwseeneneswseseese
nwswsenwwseswseswswsenwewenwnenwnwew
swnenwnenwneneneneneneswnenenwnenenesene
weenenenwneeneneeneseese
nwnwnenwswnwseesewneenenenewnwne
eenweswenwseeneeeeseeeeeeew
seswsewseseseswseseseswsenwseseswnesesese
seseswseseseswnesesesewseseseswswswsese
wswswwswneseswwswnwswswwswswwwwsw
swswswseeswwswswswseswseneswswswseswsw
nwnwnwnwnwnwnwswenwnwnenwnwenew
nwnwnwnwnwenwnwnwnwwwnwnwwnwnwnwnw
nwesweenweeeeseesweeeeeeene
nwwwnwnwwnenwnwnwsw
nwnwswwnwnwnwnenwwsenwnweswnwnwenwnw
seseseesweseeenwseneeeee
nweeswswesenenweneswnwenwneweneesw
eeseswswseswwneswwneseseswwsenwseswe
neeneeneneeeweeseneneneneseneneew
nwsewnwnwnwwnwnwwnwsewwnwnwnwnwnwwnw
wswswneswwnwswwswweswwwswwsww
sesenwswseswseswseseeswseswnwsesesesese
nwenwnenwnwwnwnwnenwwenwnwnwnenwnene
sewseewswnwenwswneenenwnwnenewsww
nenwnwnwnwnwnwnwnwneswnwswsenwnenwnenwnwnw
seseseseseswseswwseseseeswseswswewsw
neseneenwwwsenesesenenwwe
wwswswneneswnwsewswswswsewswswseww
sewewswwwnwnwsenwnwsewnwwnwsewwnw
wnwnwwwwwnwewnwwnwnenwsww
wwswswswewwnewswnwwwwnesw
swwwwewnewnewswnwwnwnwsewnesenw
swnwnwnwnenenweswenwnwnwnwnwnwnwswsenwsw
eneneneswneeeneenene
swswnwswswswsweswswswswswswswswswswnwswnee
wwswwwswnweswwwnwwwweweew
wnwnenenenenenenwnenwnenwnesenenenenwnesenw
nenweenwnwsewenwneseswsenwnwnwsesesese
wwneeseswseesenenesweneswneswnenwnenw
swswswwswwwwswswnwswwwnewwwwswse
seeseswswsenwwswswsesenwswswesenwese

2
2020/data/day25.expected Normal file
View file

@ -0,0 +1,2 @@
18433997
???

2
2020/data/day25.input Normal file
View file

@ -0,0 +1,2 @@
18499292
8790390

2
2020/data/day3.expected Normal file
View file

@ -0,0 +1,2 @@
205
3952146825

323
2020/data/day3.input Normal file
View file

@ -0,0 +1,323 @@
..#...##...###.........#..#..#.
#.###........#..##.#......#...#
#.#.###..#.#..#.#............#.
.##............#......#...#.#..
..#..#.....##..##..##..........
...#...........###.#.##........
....#.#...#..#..##............#
....#....##...##..##........#..
.#..#..#....#...#..##.....##...
.#.###..#......####........##..
..#...###....#......#.....##.##
..#...#.......#......#..##....#
#...##....#.#..#.......#....#..
.#......#..#...........#....##.
.##.#......#.#.#.....##........
.....#.................#.#..#.#
....#..#........##......#..#.#.
..#...#..##.......#..##...#..#.
..#.......#.............#.#....
.#.................#.........#.
..#..#.#.#.#............##.#..#
.#.#.##.#.....#.....#..#......#
..#.#..#.#..........##........#
.........#...#.....#.#...#####.
##..#.....##.##........#...##..
.#.....#....##.#..#....##...##.
.##.....#.#....#.#.....#......#
.....#..#.##.....#.#....#.#..##
#......##..##....##...###..#...
.......#..#...........#......#.
#...#......#........#..#.......
##..#.....##.....#...#...#....#
.###..##..#.#........#..#.#....
#.#...#...#......##........#.#.
......#....#.#........##...#..#
.#.....#..#.#.....#......##....
.....#.....#.#.#....###.....#..
#.......##.#......#.#.#....###.
.......#..#..#...#.#.##........
.#......##..#.........###..#...
....#..##.......##.###...###...
.##............#..#.##.....#.##
..##.#.......##....#.......##.#
#..###............#.#...#...#.#
...##.#.#.#..#.##........#.#...
.#.....#...##.#..###..##.##...#
..............#.#.#.........#..
.....#...........#.#...#....#..
.....#...##.##.#....#.###..#...
#..###.........#......#.#.#....
.....#..#...##...###.#....#....
#..........#.#.#....#..#......#
###...................#......#.
........####......#.#..........
.......#.....#...#.......#...#.
.....#.....................#...
...#.#...#...#...........#.....
..#.........#...#....###..#....
.....#.#..##......##........##.
..#.............#............#.
.#....##.......#..#............
.#............#.#..#.##....#...
.####...##.#....#.....#...#....
##..#....#.#.#...........#..#.#
...#..#...........#...#..#....#
.....##.....#..#...#.........#.
...##........#....##........#..
.##.#...#...#..#.....#....##.#.
#.#...#.#.#.#.#..#....#....#...
#..#.#...#..#........#....#.#..
....#.#.....#......##...#....#.
.###.##...#....##.#...###..#..#
###..#...##..#......#.........#
..#.#......##.......#.....#...#
..#...#........#.........#.#...
#....#..#.........###.#......##
...#..#....#...#.......##.#.#..
....#.......#....###...##.#....
..#.....#.#.....###..#####....#
##......#....#.....##..#..#...#
#...........#..#..#....#....#..
.#...#.##.#.#.#....#......#..#.
.......#.#....#....#...#.#..#..
..#.#..#.##..##...##..#..#.....
...##.##.................#.#...
.....#...#......##.#....#.....#
......#..##.#..#.#.........#...
.............##.#......#.......
..#.#.....#...#.#.....#..#.....
.........#..#.#......#..#......
#..#.#.##..........#.##......##
......#.......#.....#..#.#...#.
.#....#....#.#.....#.......#...
#..#..##..................#....
............#...........##.#...
####...#..##.#....#.##..#......
#...#...#.....#.#...#.#........
.......##.........#.....#.....#
.....#...........##......#.####
.##....#.#.##......###.#.##....
........#.####.......#.#...#...
.#.#...##.#.#.#.........##.....
....#............###.##....#...
...##........##.#...#....#..###
..#.#.........#....##.#........
..#..##..#...##..#.##...#.....#
.#......#..#..#.........#......
..#........##.#......#.....#...
.##.......#....#.#......#......
#........#....#.####...#.#.....
##......#.............#....###.
..#....####.#.#.#.#...##......#
#.#.#.....#...#.......#...##...
........#...#....#..#......#.#.
#..#...#.#.##.....#.#....#....#
#...#....#......#.........##.##
..##.#..##............#........
#.........####.........#.......
#.##.........#..##....#.#.#.#..
.###......##..#.#.....#.#...##.
...#.........#.#...##.##....#..
#..#......#....##..#.#...#...##
...#.......#.#.#.....#..##...#.
....................###........
#...........###......#.#...##.#
.................#.#...###....#
...#..###..#.##...#..#....##...
###..#..#.#...#.....#.#.......#
.........#..#.#.....#.........#
.##..#.........#.#.....##......
.....#..........#.#.##....#....
........#.##.....#...##...#....
#.#.#...#......##....#.###.....
.#.##.....##.....#....#.##.#.##
.#...#.....##.#.##....#.....#.#
...#.....#........#............
##...####..#....#..##...#......
#.......#...#.#...#........#..#
......#.....#....#..#..#.#.....
..............##.....#.##....##
.#..##.........###..#..........
......#......#............#..#.
#.....###...###..........#.....
...###...........#....##..#....
.....................#...#.##..
###....#.#....#...#....#.#..##.
..#.............#.#....#..#.#..
.......#..###....#...#...#...#.
.##..#....##..............##...
...#...#..#..#.##.#....##...#..
#..#....##......#....###..####.
.##...#.#....#..#..#....#....#.
.#.##..#..#.........#.#......##
#..#.................#.....#...
..#............#........#...#..
##.##.......#.#....#..#....##.#
..##...#.#.....#......#........
......#.##.........##...#......
......##.#......#.##....##.#..#
.#.#......####.#.#.#.#..#......
..#.#....#...###....#.#...###..
.#.#...#....##..###.#..#.......
..#.....##..#............#..#.#
.#...#....#.....#....#..#.#.#..
..#....#..#......##...##......#
....#.......#.##.#.........#..#
#............#...##.....#..##..
......#..#..........#.#..#.....
...........#.#..#...##.#...#..#
.........###..#......##.###.#..
.....#....#......#...#....##...
..#.......#..#.#.#......#......
.#....#.....#.#.#.##...#....##.
....#.##.##.......#..#.....#...
.#.....#......#.......#..#.....
....###.....##.....##..#.#...#.
#.......#.#....#.#.#....#......
#...#..#.#......#...##.#.......
....##.##....#..#.......#..#.#.
.#.##.#.#..#.....#.#.......##..
..#..#..#..#.###...............
#.#......##....##.#.#.....#.#..
..##...#.........#.#..#.##..#..
.........####...#.....##.#.....
..#...................#.###....
..#.....#..#....#..#...........
.....###.#.........#.#.........
#..#..#........#..#......#..#..
###..##...#.......#........#.#.
.#.#.#.###.#............##.....
#..............#......#....#.##
.#...#..###...###.#..#.#.......
.###....##.#.......#.#.....###.
.##.....#.#....................
#..#.....#.....#...#.....#..##.
#.#....##..#......##..#...##..#
...........#....#..#.##.##....#
......#.......##....#.#....#.#.
###..#.#..........#.......#.#..
..#.#..##....##............##..
..#.....#..#....###............
.#...#...##...#..#..#..#.#....#
...#....#........#.............
#.#......#.#.....##..........#.
....#..#...............#...##..
........#..#....#..#..#..##....
....#......#.#.#...#.......#.##
.#.....#.#.#........###....#...
.#..#.......#...........#...#..
#.#.#####..#......#...#.#.###..
...##...#.#.....#..#...#...#...
..#....#.....#..#....#.#.....#.
....#.......#.....#........###.
..##..........#...###.......#..
#.#.##..#........##...#.#......
....##...#......#..........#.#.
#.......#..#.##.............#..
......#..........#...#....#...#
#.#.....#.##.#.#.............##
#...#.........##.##......#.##..
.........##.....#....#...##..#.
#.#...##.#...#.....##...#..#..#
......##.#.....#.#.....#.##....
....#.............#...#.......#
.#......##...#.#...#.##........
...#..#..#...........#..#..#.#.
.#...#...........#.#.##....#...
..#...#...#.#..#....#..#..#....
..###..##..#..#.........#.#..#.
....#.##.#...#.......#...#.....
.#.#.................#.......#.
.#..#.....#.##...#.#.....#...#.
.#.......#...#....#.......#....
###....##....#..#...#.#..##....
.........#.#.#.#...###.......##
....##.......#......#......##..
......##.###.#..#...#.#.#.#....
.#.###.#.#......#.#.......##...
.#.....##..#.#.....#...#.##....
.#..##.#.....#........###...#.#
.......#.#...........#........#
..........#...##..##.......#.#.
...#..#..#...#....#.#......#.#.
....#...#..#....#....#.#.##....
...#.#...##...#...##..#........
..#........#...##.#...##.#.#.#.
...##.#..#.......###.#.#.#.....
..##......#.#.#.........###.#..
.......#.#...##...#.#.......#.#
.#....##..#..#....#..#...#.....
.#....#.#.......#..#..##.#....#
#.#..##..#.#............#....#.
##..#....#.##.#....#...#..##...
.###.#.#..#...##........###.##.
...........#..#...#..#.#..###..
.#.#.#...#....#...##.##........
.....###.........#......#####..
#.#.#.....#....#..#...#.#.#.#..
..##.....#..#..#.#.#...#....#.#
......#.##..##..#.#.#.......#..
...#.#..###.........#........#.
......#.##..####...#...#..#...#
#.......#.........#....#....###
#......#...#........#.##....###
.#.#..............#...#...###.#
.#....####...#..##.###.....#...
.......#......#..#...#..##.#...
...........#.......#...........
..............#...#.#.#.#...##.
.###.....##.#.....#..........#.
##.##......#....##..#.....###.#
#.......#...##...#....##...#...
##.#.##...#....#....#....#.....
.....####...........#.#......#.
......#...#....#..#......#.....
...#...##..........#.......##.#
.#....#..........#.####........
...##...#..#...##........##..#.
.........##....#...##..#.##.#..
##.#.....#.......#.....#.......
#..#....#.##.#........#........
#.#...#...##........#.#.....###
....#...................#.#.#..
.......#..#.#...#....#.##.#....
....##...###.#.#.##...#...#....
.#....#....#...##.#......#...#.
............##..#.#.#........#.
...#....#.....#......#........#
...#.#.....#.##.....#....#...#.
.....#..##.......#.##.......#.#
........##................#....
....#..###...##.#..#...#......#
.#.#.......#.......#....##.#..#
..#........#............#......
..##.......#..#..#....#....#..#
#...###.......#.##...#.........
.....#...#...#..##..#....#..#..
.##.#..#...##.........###.#....
..#.#..#...#...####.#...#.#.#.#
#....#..###.....#......#.##..##
##......#...##...###......#.##.
...........#.....##...#...#...#
..#..#.#.....#..#.....###...#..
.............#..........###...#
....##............#....###.##.#
..##.#..##.....#.#.........#.#.
....#.#...........####.........
.##.###.##.#.#......#.##.#.#...
.....##.........#..#.......#...
...........#.........#....###..
...#.#..#..........#.....#..#..
.#..###.......##........#.#....
.#...###.....#..#.#..#...#.##..
##...###.#.#....#......#...#..#
....#.......#..#..##..#.#......
#.#......#.##..#......#..#....#
....#..#..#.....#.#......#..#..
..#...###......##.............#
..#....####...##.#...##.#......
.....#.......###...............
.......#...#.#.......#.#.##.###
.#.#...#.....#...##.........#..
..#..........#..#.........##...

2
2020/data/day4.expected Normal file
View file

@ -0,0 +1,2 @@
202
137

1068
2020/data/day4.input Normal file

File diff suppressed because it is too large Load diff

2
2020/data/day5.expected Normal file
View file

@ -0,0 +1,2 @@
998
676

960
2020/data/day5.input Normal file
View file

@ -0,0 +1,960 @@
BFBBBBBLLR
BBFFBBFRRL
FBFBFFFRRL
BBFFFBFRRL
BFFBFBFRLL
FFBBBFBLRL
BFFFBFFLLR
FBFFFFBLRR
FBFFBBBRRR
BFFBFFFLLR
BFFFFFBLLL
FFBBFFBLRR
BFFFFFBRLR
FBFBFBFLLL
FFBFBFFLLL
BBFFFFFLLL
FFFBBBFLLL
BBFFBFBLLR
FFBFBFBRRR
BFFBFFFRRR
BBFFBFBRLR
FFFBFBFLRL
BBFFBBBLRR
FBBFFFFLLR
BBBFBBFLLL
BFFFFBBRLL
FBBFBFBRRL
FFBBBFFRRR
BBFFFFBRRR
FBBBBFFLLR
BFFFFFBLRR
FFBBFBFLLR
BFFBFBBLLL
BBFBBBBLLL
FBFBBBFRLL
FFBFFFBLRL
FFFFBBBLRL
BBBBFBFRRR
FFBBFBBRLL
FFFBBBBRRL
FFBFFFBRLR
BFBFBFBLLL
FFFBFFBLLL
BBFBFBBLRL
BBBBBFFLLL
FBBBBFFRRR
FBFFFFBLLL
FFFFBBBRRL
FBFBBBFRRR
FBBFFBFLRL
BFBFFBFLLR
FFBBBFBLLL
BFBFFFFLLL
BBBFFFFLLL
BFBBFBFRLR
BFBBBBFLRL
BBBFBFBLRL
BFFFBFBLRL
BFBBBBBRLL
FBBBFFBRLL
BFBFFBBRRL
BFFBBBFLLR
BFFBFFBRRR
FBFBFBFRRL
FBFBFBFLRL
BBBFFFBRRR
FBFFBBFRRR
FFBBFFFRLL
BFBFBBBLLR
BFFFFBFLLR
FFBBBBFRLR
FFFBFFFRRR
BFBBFFFRLL
BBBFBFFLRL
BFBBFBFLRR
BBBBFBBLRL
FBFBFBFLRR
BBFBFBBLLL
BFBBBFBLRL
BFBBFBFLRL
FFFBBFBLLL
BBBFBFBLLR
FBBBBBFLLR
FFBBBFBRLL
BBBBFBBRRL
FBFFFBBRLL
BBFBBFFRRL
FBFFBFBLLL
BFFBFBBRRL
BFFFBFFRLR
BBFBFBFRRR
FBBFBFFRRR
BBBFBFBLRR
FFBFFBFRLR
FFBFBBBLRL
FFFFBBFRRL
FFBBBFBRLR
FBFBFBBLLL
FBBBFBFRLL
BBBBFBBLLR
BFBFBBFRLR
FBBFBBFLRR
BBBBFBFLRL
FBFBFBFRLL
FFBFBFBLLR
FBFFBBFRRL
BFFFFFFRLR
FFFFBFFRRL
BBFFFBFLRR
FBBFFBFRRL
FFFFBFBLLL
FFBBFFFRRL
BBFBFFFRLL
BFFFFBFRLR
FBFBFBBRRL
FBBFBBFRLR
BFBFFFBRRL
FFFBFFBRLR
BFBFFBFLRL
FBBFBFFRRL
FFBFFFBLLL
FBFFFBFRRR
FBFFFBBRRL
FBFFBFBRLL
BFBFFFFRLL
FFFBBBFLRR
BBFFFFFLRR
BFBBFBBLLR
BFBFFBFLLL
FBBBBFBLLR
BFBBFFFLLR
BFBBFFFRRL
BFFBBFFLLR
BBBFFFFRRL
BBBFBBBLLR
FFFBFBBRLL
FFBFFBBLRR
FFBFBBFLLL
BBBFFBFRLL
BBBFBFFLRR
FBFBFFBRLR
FBBFFBBLRL
BBFBBFFLLR
BBFBBFBRLR
BFBFFBBRLR
BBBBFFBRLL
FFFBBBFRLL
FBBFFFFRLR
BFBBBBFRRR
BBBBFFBLRR
FBBBBBFLRR
FBBBFFBLRL
BFFBBBFRRR
BBBBFBFRLL
BFBBBFBLRR
FFBFFFFLLL
FBFFFFBRLL
FFBFFBBRLR
BFFBBFFLLL
FFBFBFBLRL
FFBFBFFRRR
BBBFBBFLRR
BBBFBBBLLL
BFFFFFFLRL
FBBBBBBRLR
FFFBFBFLRR
FFBBFFBRRL
FBBFBBBRLR
BBBFBBFLLR
FFBFFBFLRR
BFBBFBBRRL
FBFFFBBLRL
BFFBBFBLRL
BBFFBFFLLL
FBBBFBFRLR
BBBBFFFRLL
FFBFBFBLRR
FBBFFFBRRL
FFBBBFFLLL
BBFFFBBLLR
BFFFFBFRRL
FBFFFFBRRL
BFBBFFFRLR
FFFBBBBLLL
FBFBFBBRLR
FFFBFBBRLR
FBFBFFFLRR
BFFFFFFRRR
FFFFBBBRRR
BBFBFFFRRL
FFFBFBBLLL
BFBBFBFLLR
BBFBBBBRRL
BBFFBBFRRR
BBBFFBBLRL
FBFBFFFLLR
BFFFBBBRRR
FFBFFFFLLR
FBBBFBFLLL
FBBBFBBLRR
BBBFBFBRRR
FBBBFBFRRL
BBBBFFBRLR
FBFBBBBLLR
FFFFBBFRLR
BBFBBBFLLL
BBFBBBBLRR
FFFFBFBRRR
FBFFFBFLRR
BFFFBBFLRR
BBBFBFFLLR
BFFBBBBRLR
FBFBBFBLLR
BFBBBFFLRR
BFFBBFFRRR
FFFBFFFRLL
FFBFBBBRRR
BBBFFFBLLR
BBFFFFFLLR
FBBBBFBLRR
FBFBBFFRRL
BFBFBFFRRL
BFFFFBFRRR
FFBFFBBLLL
BFBFBFBRRR
BFFFFFFLLR
FFFBBFBRRL
BFBBBFBRRL
BBFFFBFRLL
BFBBBBBLRL
FBFBBFFLRR
FFBBBFFRLR
FBBBFBBRRR
FFBBBFFRRL
FFBBBBFLLR
BBFBBFBRRL
BBFBBBFRLL
BBFFFFFLRL
BBBFFFBLLL
BBFFFFFRRR
FFBFBBBLRR
FFBBBFFLRR
BFFBFBFRLR
FFBBBFBRRR
FBBBBFBLRL
BBBFBBBRLL
FBFBFFBRRL
BFFFFBBRRL
BBFFBBFRLR
FFBFBFFRLR
BFFFBFBRRR
BBBFBBFRRL
FFFBFFFLRL
FBBFFBFRRR
FFBBBBBLLL
FFBFFBFLRL
FBFBFBBLRR
FFFBFFBRLL
BBBFFFBRRL
BFBFBBBRLL
BBBFFFFLRR
BBFFBFFLLR
FBBFFBFLRR
FBBBFFBLRR
BFBFFBBLLL
FBFFFBBRLR
FBBFBBBLLR
BFBBBBBRLR
FBBBFFFLLL
BFFFBBFLLL
BFFFFBBRLR
FBBFBFBRLL
FBFFBFBLRL
BBBFFFFRLL
FBFFFFFRLL
FBBBFBFLRL
FBFBBFBRRL
FFBFBFFLLR
BBBFFBBLLL
FFBFBBFLLR
BBBFBBFRLL
BFFBFBBLRR
FBBFBBFRRL
FBFFBFFLLL
BFBBFBFLLL
FFBBFFBRLL
BFFFFFFLLL
BFFFFFFRLL
BFBFFFFLRR
FFBBFFFLRR
BBFFBBBRLR
BFFFFBFLRR
FFBFBFFLRR
BBBBBFFLRL
BBFBBBBRLR
BFFBFFBRLL
BFBFBBFLRL
FBFBBFBLLL
BFFBBFFRLR
FFFFBFBRLR
BFBFBFBRLL
BFBBFFBLRR
BBBBBFFRLL
BBFFFBBRLL
BFBFBBBLLL
FBBBFFFLRR
FBBBBBFRRL
BFFBBFBRRL
FFBBFFBLLL
FBFFFBFRLL
BBBFFFBRLL
FFFBBFFLLL
BBFBFBBLLR
FFFBFFBLRL
BFFBBBBLLL
BBFFBFFLRR
FFBBFBFLRR
BBBBFBFRRL
BBFBFBBRRR
BBFFFFBLLR
BBBBFFBLLR
BBBFFBFLRR
FFBFFBBLRL
BBFBBBFRLR
FBFFBFFLRL
FFFFBFBLRL
BFBFFFBLRL
FBBBFBFLRR
BFFFBBBLLL
FBBBFFFRRR
BFBFBFFLLR
BFFBFBFLLR
FFFBBBFRRL
BBBFFBFLLR
FFBFBFBLLL
BFBBBFFRLR
BBBFFBFRRL
FBFBFFFRLR
BFBFBBFRRL
FBFFFFFLRR
BFBFFBBLLR
BBFBFBBRLR
FBBBFFFLRL
BBBBFBBRRR
FFBBBBFLLL
FBFFFBBLLR
FFBBBBBRRR
BFFFBBBLRR
BBFBBBBRLL
BBFBFBFLRR
BFBBFFBLLR
FBBFFBBRLL
FBBBBFFRLL
FBFBFFBLLR
FFBFBBBRRL
FFFBBFBRLL
BFFBBFBLLR
BBBBBFFRRL
BFBBFFBRRL
BFFBFFBRLR
FFBFBBFRRL
FFFFBBFLRL
BBFFFFBLRL
BFBFFFBRLL
BFBFFFFRRR
BBBFFBBRRL
FFFFBBFLLL
BBBFFFFLRL
BBBFBFFLLL
FBFBFFBRLL
FBBFFFBLRL
BFBFBFFLLL
BBBFFFBLRR
FBFBFBFRLR
BFBFBFFLRL
BFFFBBBRRL
BFBFFBBRLL
FFBFFFBRLL
FFBFFBFLLR
FFFBFFBRRL
FFBBFFFLRL
BFBFFFFRRL
FBFFFFFRRR
BBFBBFBLLR
FFBFBFBRLR
BFFFBFFRRR
FBBBBFBLLL
BBFFBBBRRR
BBFBBBBRRR
BBBFBBBLRR
BBFBBFBRLL
BFBFBFFLRR
FBFFFBFLRL
FFFFBFFRRR
BFFBFFFLRR
FBFFBBBRLL
BFFFBFBLLL
FBBFBFBLLR
FFBFFBBRRR
BFBFBBFLRR
BBFFFFBLLL
FBBFFFFRRR
FBFBBBFRRL
FBBFFFBLLR
FBFBBFBRLR
BBFFBBBLLR
FFFBBFFLRL
BBFFBFBRRR
BFBFFFFLRL
FFFFBFBRLL
FBFFFBFRRL
BBBFBBBLRL
FFBBBFFRLL
BBFBFFBRRL
BFFBFFBLLL
BBFBBFBRRR
FBBFBBFLLR
BFFFFFFLRR
FBBBBBBRRR
BBFBBBFRRL
FFFBBBFLLR
FBBBBFFLRL
FBFFBFFRLL
BFBFBFBRLR
FBBBFFFRLL
BBFFFBBRRR
BBFBFBBLRR
BFFFFFBRLL
FBFBFFFLLL
FBFFBFBLLR
BFFBFFBRRL
BFBBFFFLRR
BFBBBFBLLR
FFFBBBBRLR
FFBFFBFRRL
FFBBBFBLLR
BBFBFFBRRR
FFBBBBBRLR
BBFFBBBLLL
BFBBFFBLLL
BFBFBBFRRR
BBBBFFFLLL
FBBFFBBRRL
FFBBBFBRRL
BFBFBBBRRR
FBFBBFFLLL
FFBBFFFLLR
FBBBBBFLLL
FFBFBFFLRL
FFBFFBFRRR
FBBBFBBRLR
BFFFFBFLRL
FFFBFFFLLR
BBFBFFBLLR
FFBBFFBLRL
FFFBFBBLRL
BFFFBBBRLR
BBFFFFBRRL
FBBFFBBLRR
FBFFFFFLRL
BBFFBFFRLR
BBFBFFFRLR
FFFBFBFRLR
BFFFBBFRRL
BBBFFBFLLL
BBFBBBBLRL
BFFFFFBLLR
BFFFFBBLLR
BBBFFBFRRR
BBFFFFFRRL
BBFFFFBRLR
FFBBBFFLRL
BFFFBBBRLL
BFFFBBFRLL
FBFBBBFRLR
BBFBFBFRRL
FBFFBFBRLR
FBFFBFFRRR
FBFFFBBLRR
BFFFBBFLRL
FBFBFFBLRL
FBBBBBBRRL
BFFFBFBRLR
FBBBBFBRLL
BBFFBBFLLR
BBFBBFFLRR
FBFFFBFLLR
FBBBFBBLLL
FFBFFFBLRR
BBFBFFBLRR
FFBFFBBRLL
BFFBBFFRLL
FBFFFFBRRR
FFFBFBBRRL
BBBBFBFLLR
BBFBFFFLRL
BFBFFFFRLR
BBFBFFFRRR
BBBFBBBRRL
BFFBBBBLRR
BFFFBBBLRL
BBFFFBBRLR
FBBBFFBRLR
FBBBFFBLLL
FBBBBBBLRL
BBBFFFBLRL
FBFBFFFLRL
BFBFFBFRLL
BBFFFFBRLL
BBFFFFFRLL
FFFBFFFRRL
BBFFBBFLRR
BBBBFFFRRL
BFFBBBBLLR
BBBBFFFRLR
BBBFFFBRLR
FBBFFBBRLR
BFFBBFBLLL
BBBFBBFLRL
BFBFBBFLLR
BBFBBFFLRL
BFFBBBFRRL
FFFFBBFLRR
FBFFBBBLLR
BFBFBFBLLR
FBBBFFBRRR
FBBBBBFRLR
BBFBFFBRLR
BBFFBFFRLL
FFFBFFBLLR
BBFFBFBLRR
FBFFFBBRRR
BFFBBBBRRR
FBFFBBBRRL
BBFBFBFLLR
FBFBBFFLRL
BBBBFFFRRR
BBFBFFFLLL
BFFFBFBLLR
FBBBBFFLRR
FBFFBBFLLL
FFFFBFBRRL
BBFBFBFLLL
BFBBFFBLRL
BFFFBFBLRR
BBBBFFBRRR
FBFBBFBRRR
FBBFBFBRLR
FBBFBFFLRR
FBFBBBBLRR
FBBFBFFRLR
FBBBBBFLRL
FBBFBFFRLL
FFBBFFBRRR
BFBFBFBLRR
FBBFBBBLRL
FBBBFBFRRR
BFFBFBFRRL
FBBFFFFLRL
BFBBBBFRLR
FFBFBBBRLL
BFFBBBBRRL
BFBBFBBLLL
FBFBFFFRRR
BFBFBFBLRL
FBBFFBFLLR
FFFBFBBRRR
FBBBBFFLLL
FBFBBBBLRL
FBBFBFBLRL
FFBBFBBRRR
FBFBFFBLRR
FBFBFBBLLR
FFFBFBFRLL
FFFFBBFRRR
BFBBBBBLLL
BBFBBBBLLR
FBBFFFFRRL
FBBFBFBLLL
BFFFBBFLLR
FBBBFFBLLR
FFBFFBFLLL
BBBFFBBLLR
BFBFFFFLLR
FBFBBBFLRR
FFBBBBFRRL
FFFFBBBLRR
FFBFFFFRRL
BFBBFFFLRL
BBBFBFBLLL
FBFBBFBLRR
BBFBBFBLLL
BFFBFBBRLR
BFBBFBBRRR
FFBBFBFRLL
BFFBFBFLLL
BFFBBFBLRR
FBBBBFBRRL
BFBFBBBLRR
FBBBBBBLLL
BFFFBBBLLR
BBFBFFFLLR
BBBFFBBRLL
BFFBBBFLRR
BFFBFBFRRR
BBBBBFFRLR
BFFBFFFRLR
FBFFFFFLLL
BFFFBFBRLL
FBBFBBFLLL
FBBFBFBRRR
FBFFBBFLLR
FBBBFBFLLR
FFFBFFFLRR
FFBBBBFRRR
BBBBFBFLRR
FBFBFFBRRR
BFFBFFBLLR
FFBBFBBRLR
FBFBFBBRRR
FFBBBBBLRL
FBBBBBFRRR
FFFBFBFRRL
FFBFBFBRRL
BFBBBFBRLR
BBBFBFFRRR
BFFBBFBRLR
BFFBBBBRLL
FBBBBFFRRL
BBBFBBBRLR
BFFFFFFRRL
FFFBBFFLRR
BBFBFFBLRL
BFFBFBFLRR
BBBFFBBLRR
BFBFFBFRRR
BBBBFFBLLL
FBFFBBBLRR
BBFFBBFLLL
FBFBBBBRRR
BBFFBFBLLL
BBBBFFFLRR
FBFFBBBRLR
BFBFFFBLRR
BBFBBFFLLL
BFFBBFFRRL
BFFFBFFRRL
BBFFFBBLRR
FFBFFFFLRL
FFBFBBFRLL
FBFBFFFRLL
BBFFFBFRLR
FFFBBFBLRR
BFBBBFBLLL
BBFBFBFRLL
BFBFBBFRLL
BFFFFFBRRL
FFBFBBBRLR
BFBBFFBRLR
BFBFBFFRLR
FBBBBBBLRR
FFBBBBFLRL
FFFFBFBLRR
FFBFFFBRRR
FFBFBBFRLR
BBBFFBFLRL
FBBBBFFRLR
BFFBBFBRLL
BFFBBBFRLR
FFFBFFBRRR
BBBFBBBRRR
FBFFBFFRRL
FBFFFBFLLL
BFBBBFFRRL
BBFBFBBRLL
BBFBFBBRRL
FFFBFBFRRR
BFBBFBBLRR
FFFBBBFRRR
BFFBFBBLRL
BFFBFFBLRR
BFBBBFFRRR
FFFBBBFLRL
FFBBFBFRRR
FFBFBFBRLL
FFBFFFBLLR
FBBBBBBRLL
FFFFBFBLLR
FFBBFFFRRR
FFFBFFFLLL
FFBBFBBLLR
FFBBBBFLRR
FBBFFBBLLL
BFBBFBBRLR
FFFBFBBLLR
BBFFBFBLRL
FFBFBBFRRR
BBBBFBBRLR
BBBFBBFRLR
BBFFBFFRRR
FFBBBBBLLR
FBFFBFBLRR
FBBBBFBRLR
FFFFBBFLLR
BFBFBBFLLL
FBBFBFBLRR
FBBFFBFRLL
BBFFFFFRLR
FFBBFBFLRL
BFBFBBBRLR
FBBFBBFRRR
FBFBFBBLRL
BBBFFBBRRR
FBBFFBBRRR
FBFFFFBRLR
FBBFBBFLRL
FFFBBFBRRR
FBFBBBBRLR
FBBFFBBLLR
FFFBBBBRRR
BBBBBFFLLR
FFFFBBBLLL
BFFBBBFRLL
FBFBBFBLRL
BBBBFBFRLR
BBFBFFBLLL
BFBFFBFLRR
BFFFFFBLRL
BBBFBBFRRR
FFBBBBBLRR
FBFFFFFLLR
FBFBBFFRLL
BFBBBBBRRL
FBFBFBBRLL
FBBFBBBRRL
FBFFBBBLRL
BFFFBFFLLL
BFBBBBBRRR
FFFBBFFRRR
BBFBBBFLRL
FFFFBBFRLL
FBFFFFFRLR
FFFFBBBRLR
FBFFBBFRLR
FFFFBBBRLL
BBFFBBBLRL
FFBFBBFLRR
BFBBBBBLRR
BFFFFBBLLL
FBFBBBBRRL
BBBFBFFRRL
BFBBFBBLRL
BFBBBBFRRL
FBFFFBBLLL
FFBBFBBLRL
BBFBFFBRLL
BBBFFFFRRR
FFFBBBBLRR
FFFBBFBLRL
FFFBBBBLLR
BFBFBBBRRL
BBBBBFFLRR
BBBBFBBLLL
BBBBFBBLRR
FFFBBBFRLR
FBBBFFFLLR
BFFFBFBRRL
BBFFFBFLLR
BFBBFBFRLL
BFBBBFFLRL
FFBFFBBRRL
FBFBBFFRLR
BFFFFFBRRR
FBFFFFBLLR
FBBFBFFLLR
FBBBFFFRLR
FBFBFBFLLR
FFFBBFBLLR
BFBFFBFRRL
FFFBBFBRLR
FFBBFBBLRR
FBBBFBBLLR
BBBFFFFLLR
BBBBFBFLLL
BBFFFBFLLL
BFFFBFFLRL
BBFBBFFRLR
BBFFBBFLRL
FBBBBFBRRR
FBBFFBFLLL
FFFBFFBLRR
FFBBFFFRLR
FBBFFFBRLR
BBBFBFBRLL
BFBBFFFLLL
FFFBBFFRLL
BBFFBFBRLL
FFBBBBBRRL
FBFFBBBLLL
FBBFFFBRRR
BFFFBFFRLL
FFBBBFFLLR
FBBFBBFRLL
FBBFFFFLRR
FBBBBBFRLL
BBBFFBBRLR
FBFFBBFLRL
FBBFFFBLLL
BFBBBFFRLL
FFFBBFFRLR
BFBFFFBLLL
FFFFBBBLLR
BFFBFFFLLL
BFBBFFBRRR
BFFBFBBLLR
FFBFFBFRLL
FFFBBFFLLR
FBFFFFFRRL
BFFBBFFLRR
FFBBFFBLLR
FBBBFFBRRL
FBBBFBBLRL
BBFFBFFLRL
BBBBFFBRRL
BFBFFBBLRL
BFBBFBFRRR
FFFBBBBRLL
FBBFBBBRRR
BBBBFFFLRL
FBFFBFBRRR
BBBBFFFLLR
FBBFFBFRLR
FFFBBBBLRL
BBFBBFBLRL
BFBBBBFLLR
BBBFBFBRRL
BFBBBBFLLL
BFBFFFBRRR
FFBBFFBRLR
FBBBFFFRRL
BFFFFBBRRR
FBFBBFBRLL
BFBBFFBRLL
FBBFBFFLRL
BFFBBBBLRL
BFFBFBFLRL
FBBBFBBRRL
BFBBBBFLRR
BFBFFBBRRR
BFFFBBFRLR
BFFBFFBLRL
BFFBBFBRRR
BBFFBBBRRL
BBBBFBBRLL
FBBFBBBLRR
FFBFBFFRLL
FFBFFFFRRR
BFFBBFFLRL
BFBBFBBRLL
BFBFFBBLRR
FBFBFBFRRR
BBFFFBFRRR
BBFBBFFRRR
FFBFBBBLLR
FFFBFBFLLL
BBFFFBBLLL
FFBBFBBLLL
BFBBFFFRRR
BFBFBBBLRL
FBFBBBFLRL
BFBFBFBRRL
FFFBFBFLLR
BBFFFFBLRR
BBFBFBFRLR
FFBBFBFLLL
BFBBBFBRLL
BBBFFBFRLR
BFFFFBFLLL
FFBBBBFRLL
BBFBBFFRLL
BFFFBFFLRR
BBFBBBFLLR
FFBFBBFLRL
BBBBFFBLRL
BFBBBFBRRR
FBBFBFFLLL
FBFFBFFRLR
BFFBFFFLRL
FBFFBFFLLR
FBFBBBBRLL
BBFFFBFLRL
BBFBBFBLRR
BFFFFBBLRL
BBFBFBFLRL
FBBFBBBRLL
FBBFFFFRLL
FFBFBBBLLL
FFBFFBBLLR
BFBBBFFLLR
BBBFBFFRLR
BFFBFFFRRL
BBFFBBBRLL
BBFFBBFRLL
FBBBBBBLLR
BFFBFBBRRR
BBFFFBBRRL
FFBFFFFRLL
FFFBFBBLRR
BBFFBFBRRL
BBFFFBBLRL
FBFFFFBLRL
BFFFFBFRLL
BFFBBBFLLL
BFBBFBFRRL
FBBFFFBLRR
FFBFFFFRLR
FBBFFFFLLL
FBFBBFFRRR
FBFBBFFLLR
FFBFFFBRRL
BFBBBBFRLL
BFFBBBFLRL
FBFFBFBRRL
FFBFFFFLRR
FBBBFBBRLL
BBFBBBFRRR
BFFBFFFRLL
FFFBBFFRRL
BFBFFFBLLR
FBFFFBFRLR
FBFBBBFLLL
FFBBFBFRRL
BBBFBFFRLL
FBFFBFFLRR
BBFBBBFLRR
FFBBBFBLRR
FFFBFFFRLR
FBFBFFBLLL
BFBBBFFLLL
BFFFFBBLRR
FBFBBBFLLR
FBFFBBFLRR
FFBBFBBRRL
BBFBFFFLRR
BBFFBFFRRL
FFBBFFFLLL
FFBFBFFRRL
BBBFBFBRLR
BFBFFFBRLR
FBFBBBBLLL
FFBBBBBRLL
FBBFBBBLLL
BFFFBBFRRR
BFBFFBFRLR
BBBFFFFRLR
FBFFBBFRLL
FFBBFBFRLR
BFFBFBBRLL
BFBFBFFRRR
FBBFFFBRLL

2
2020/data/day6.expected Normal file
View file

@ -0,0 +1,2 @@
6683
3122

2179
2020/data/day6.input Normal file

File diff suppressed because it is too large Load diff

2
2020/data/day7.expected Normal file
View file

@ -0,0 +1,2 @@
222
13264

594
2020/data/day7.input Normal file
View file

@ -0,0 +1,594 @@
wavy turquoise bags contain no other bags.
vibrant beige bags contain 4 drab lime bags, 1 muted violet bag, 5 drab plum bags, 5 shiny silver bags.
plaid green bags contain 2 pale olive bags, 1 dark chartreuse bag, 1 vibrant olive bag, 1 pale bronze bag.
plaid fuchsia bags contain 5 dull teal bags, 4 dark beige bags, 4 shiny teal bags, 5 vibrant orange bags.
vibrant coral bags contain 1 dotted blue bag.
drab tan bags contain 5 drab maroon bags, 5 bright silver bags, 2 dim tan bags.
light gray bags contain 3 dotted crimson bags, 3 dull chartreuse bags, 1 light maroon bag.
mirrored tomato bags contain 5 clear orange bags, 2 striped violet bags.
pale brown bags contain 1 faded fuchsia bag, 2 wavy orange bags, 1 mirrored coral bag, 5 dotted brown bags.
muted maroon bags contain 5 drab gold bags, 2 vibrant aqua bags, 5 bright crimson bags.
light purple bags contain 4 dim teal bags, 3 vibrant bronze bags, 2 dark chartreuse bags, 1 shiny green bag.
muted white bags contain 3 wavy lime bags, 5 muted lavender bags, 1 pale salmon bag, 1 dotted red bag.
plaid yellow bags contain 2 plaid gold bags, 2 faded lavender bags, 2 faded fuchsia bags, 3 faded gold bags.
plaid white bags contain 1 dull cyan bag, 4 pale cyan bags, 1 clear red bag, 5 vibrant orange bags.
wavy teal bags contain 5 wavy violet bags, 5 shiny silver bags.
pale crimson bags contain 1 wavy white bag, 5 clear tomato bags, 2 dark plum bags, 3 bright turquoise bags.
posh green bags contain 2 muted black bags, 3 light magenta bags.
striped maroon bags contain 1 bright green bag, 4 dark coral bags.
pale red bags contain 5 faded turquoise bags, 4 plaid crimson bags, 5 dark aqua bags.
vibrant chartreuse bags contain 2 pale red bags.
faded fuchsia bags contain no other bags.
pale olive bags contain 3 striped blue bags, 5 faded magenta bags, 3 light white bags.
striped tomato bags contain 4 faded plum bags.
shiny cyan bags contain 1 clear tomato bag, 4 clear magenta bags, 3 plaid teal bags, 5 dotted indigo bags.
plaid silver bags contain 3 dotted beige bags.
posh teal bags contain 3 faded black bags, 2 vibrant lavender bags, 5 light lavender bags, 5 faded lime bags.
clear gray bags contain 5 pale black bags, 2 dull salmon bags.
bright white bags contain 2 shiny olive bags, 5 dim brown bags, 1 dull crimson bag.
striped gold bags contain 3 mirrored yellow bags, 1 posh brown bag, 5 clear cyan bags, 3 striped tan bags.
light black bags contain 2 light lavender bags, 2 dotted bronze bags.
vibrant orange bags contain 3 posh plum bags, 5 light tan bags, 5 dim gold bags, 4 vibrant aqua bags.
dark chartreuse bags contain 3 striped purple bags, 2 dull beige bags, 5 wavy brown bags.
mirrored magenta bags contain 4 drab purple bags, 4 dotted brown bags, 2 light fuchsia bags.
striped magenta bags contain 1 drab gray bag, 1 wavy yellow bag, 5 drab plum bags.
dotted teal bags contain 4 pale indigo bags.
plaid red bags contain 4 clear fuchsia bags, 2 vibrant brown bags.
dotted green bags contain 2 striped teal bags, 3 muted bronze bags, 4 light red bags.
vibrant purple bags contain 2 drab plum bags, 4 dim beige bags, 4 drab aqua bags.
light indigo bags contain 1 dotted plum bag.
wavy green bags contain 1 shiny aqua bag, 2 dark lavender bags.
faded gray bags contain 2 plaid green bags.
dull purple bags contain 4 dull salmon bags, 1 plaid chartreuse bag, 1 dull tan bag, 4 pale green bags.
posh yellow bags contain 2 dim teal bags.
pale orange bags contain 4 mirrored red bags, 2 dotted chartreuse bags, 2 light yellow bags, 3 posh red bags.
dark tomato bags contain 1 light magenta bag, 4 light black bags, 2 vibrant aqua bags.
light cyan bags contain 1 shiny red bag, 2 plaid green bags, 4 clear cyan bags, 5 wavy tomato bags.
pale lavender bags contain 2 pale gray bags, 3 dotted violet bags, 2 striped lavender bags, 5 drab magenta bags.
dim coral bags contain 4 bright black bags, 1 shiny tan bag, 1 faded chartreuse bag, 1 bright silver bag.
muted purple bags contain 2 wavy yellow bags.
pale chartreuse bags contain 3 dotted red bags, 4 striped salmon bags, 4 pale brown bags, 2 dull yellow bags.
light red bags contain 3 bright crimson bags.
bright green bags contain 2 plaid fuchsia bags, 5 light lavender bags, 3 dotted cyan bags.
plaid purple bags contain 4 wavy tan bags, 5 plaid teal bags, 5 dull teal bags, 1 shiny gold bag.
vibrant gray bags contain 1 dull beige bag.
dotted orange bags contain 2 light green bags, 5 dotted brown bags, 4 pale blue bags.
dull black bags contain 5 pale silver bags, 4 pale lavender bags.
dull blue bags contain 1 striped turquoise bag, 2 dotted red bags, 5 dark white bags.
clear turquoise bags contain 3 dim beige bags, 5 faded brown bags.
pale magenta bags contain 1 dark violet bag, 1 dark yellow bag, 2 wavy aqua bags, 5 light silver bags.
bright teal bags contain 1 dark beige bag, 1 pale gold bag, 1 dim magenta bag.
pale plum bags contain 3 vibrant yellow bags, 1 dotted beige bag.
dull lime bags contain 1 faded coral bag, 4 plaid gold bags, 3 drab white bags.
vibrant olive bags contain 1 plaid teal bag, 1 faded tan bag.
muted magenta bags contain 5 clear gold bags.
dull olive bags contain 4 clear cyan bags, 1 dotted tan bag.
dim orange bags contain 3 drab lime bags, 1 drab plum bag, 2 vibrant tomato bags, 1 plaid blue bag.
wavy crimson bags contain 2 plaid gold bags, 3 light olive bags, 4 vibrant fuchsia bags.
clear tan bags contain 3 dotted beige bags, 2 dark purple bags.
plaid bronze bags contain 1 mirrored violet bag.
muted brown bags contain 4 dotted indigo bags, 5 dull crimson bags.
dull fuchsia bags contain 2 dotted gold bags, 2 striped violet bags, 1 clear lime bag, 3 shiny fuchsia bags.
mirrored gold bags contain 2 mirrored purple bags, 4 plaid aqua bags.
vibrant turquoise bags contain 1 light maroon bag, 3 dim teal bags, 1 dull brown bag.
shiny green bags contain 2 plaid orange bags.
dark crimson bags contain 1 striped purple bag, 4 vibrant salmon bags.
bright gray bags contain 4 plaid blue bags, 1 faded lime bag, 4 pale salmon bags, 3 bright bronze bags.
wavy salmon bags contain 1 wavy coral bag, 3 bright blue bags.
faded blue bags contain 3 muted fuchsia bags, 1 plaid lavender bag, 3 posh brown bags.
posh tomato bags contain 4 dim gold bags, 2 shiny gold bags.
striped yellow bags contain 3 vibrant turquoise bags, 3 dim salmon bags, 4 vibrant yellow bags, 2 faded beige bags.
light beige bags contain 5 striped purple bags, 3 muted gold bags.
wavy indigo bags contain 1 muted chartreuse bag, 2 wavy purple bags, 2 mirrored coral bags, 4 muted teal bags.
striped tan bags contain 4 light fuchsia bags, 2 dim chartreuse bags, 3 vibrant black bags, 1 muted black bag.
pale fuchsia bags contain 5 vibrant aqua bags, 5 drab purple bags, 5 shiny olive bags, 5 drab indigo bags.
pale cyan bags contain 5 dull teal bags.
dull chartreuse bags contain 5 wavy brown bags.
bright coral bags contain 3 clear orange bags, 3 shiny brown bags, 4 pale teal bags.
light magenta bags contain 3 light white bags, 1 clear indigo bag, 3 vibrant salmon bags, 3 dark crimson bags.
dull bronze bags contain 5 dotted gold bags, 4 dark olive bags, 3 vibrant magenta bags.
light lime bags contain 4 vibrant cyan bags.
muted aqua bags contain 3 dotted red bags, 2 wavy blue bags, 3 vibrant orange bags.
light violet bags contain 3 light green bags.
dotted red bags contain 1 muted teal bag, 4 striped tan bags, 3 wavy teal bags.
pale purple bags contain 4 dotted cyan bags, 1 dim magenta bag.
dim beige bags contain 5 dotted yellow bags, 4 faded magenta bags, 1 muted beige bag, 2 pale bronze bags.
light bronze bags contain 5 faded bronze bags, 2 drab bronze bags, 5 dark gold bags, 2 light purple bags.
wavy violet bags contain 5 light white bags, 3 light tan bags.
vibrant aqua bags contain 3 wavy turquoise bags, 4 dull beige bags.
pale bronze bags contain 5 light lavender bags, 4 dull beige bags, 3 bright crimson bags.
bright salmon bags contain 5 mirrored bronze bags, 5 dull orange bags, 2 shiny salmon bags.
muted blue bags contain 3 shiny yellow bags, 5 light yellow bags, 5 vibrant gold bags, 2 dotted coral bags.
dotted silver bags contain 1 plaid fuchsia bag, 5 light beige bags, 4 drab lime bags.
mirrored black bags contain 2 dull salmon bags.
bright black bags contain 4 faded magenta bags.
bright beige bags contain 2 mirrored salmon bags.
bright indigo bags contain 4 clear brown bags, 3 bright green bags.
mirrored lavender bags contain 3 shiny tan bags, 4 dark purple bags, 2 striped tan bags.
light aqua bags contain 2 light magenta bags, 5 vibrant tan bags, 5 drab plum bags, 1 plaid tomato bag.
mirrored maroon bags contain 4 vibrant tomato bags.
posh turquoise bags contain 1 striped white bag, 3 dim lavender bags, 3 posh teal bags, 2 mirrored salmon bags.
shiny gray bags contain 1 vibrant beige bag, 3 light tan bags, 4 wavy teal bags.
wavy black bags contain 4 dark tomato bags, 3 dim gold bags, 4 dark beige bags.
drab silver bags contain 2 light green bags, 3 light gold bags, 4 drab plum bags, 1 dotted yellow bag.
pale violet bags contain 1 dull beige bag, 2 shiny teal bags, 1 light lavender bag, 3 mirrored red bags.
dark blue bags contain 1 dotted indigo bag, 1 clear tomato bag.
dull teal bags contain 5 vibrant salmon bags, 3 vibrant aqua bags, 5 wavy tan bags, 5 striped purple bags.
faded tomato bags contain 2 shiny chartreuse bags, 4 clear orange bags, 5 bright orange bags.
mirrored red bags contain 5 muted beige bags, 2 faded white bags.
mirrored lime bags contain 4 posh crimson bags, 5 pale turquoise bags, 3 wavy blue bags.
mirrored crimson bags contain 1 faded white bag, 2 dark crimson bags, 3 striped cyan bags.
light teal bags contain 3 clear indigo bags, 1 wavy tan bag, 4 dim gold bags.
wavy chartreuse bags contain 5 wavy plum bags, 2 shiny salmon bags, 3 clear olive bags.
shiny black bags contain 2 drab aqua bags, 4 dull brown bags, 5 wavy silver bags, 1 vibrant brown bag.
bright violet bags contain 2 striped magenta bags, 4 vibrant gray bags.
muted tomato bags contain 1 drab turquoise bag.
muted teal bags contain 3 dotted blue bags.
dim cyan bags contain 3 dotted blue bags, 1 vibrant coral bag.
striped fuchsia bags contain 1 shiny gold bag, 5 dark beige bags, 5 mirrored indigo bags.
clear bronze bags contain 3 striped orange bags, 2 vibrant tomato bags.
vibrant lavender bags contain 2 muted beige bags, 4 shiny teal bags, 4 dull beige bags.
light olive bags contain 5 shiny yellow bags, 1 vibrant cyan bag.
shiny fuchsia bags contain 4 dim brown bags, 2 dull chartreuse bags.
plaid turquoise bags contain 3 bright green bags, 4 light fuchsia bags, 2 light lavender bags.
shiny brown bags contain 5 mirrored plum bags.
pale white bags contain 4 dull magenta bags, 1 posh purple bag, 4 pale olive bags, 4 wavy olive bags.
pale yellow bags contain 1 bright blue bag.
dark salmon bags contain 3 wavy turquoise bags, 1 dotted plum bag, 3 faded white bags, 5 dim tan bags.
shiny crimson bags contain 5 faded coral bags.
pale green bags contain 2 posh beige bags, 5 dark silver bags.
dim gray bags contain 4 dull cyan bags, 2 muted salmon bags, 4 mirrored tan bags, 1 bright violet bag.
dim blue bags contain 4 light orange bags, 4 wavy beige bags.
mirrored cyan bags contain 3 pale cyan bags.
dark aqua bags contain 2 striped blue bags, 5 light white bags, 4 drab gray bags.
wavy tan bags contain no other bags.
light tan bags contain 1 clear aqua bag.
light silver bags contain 1 light green bag, 2 pale bronze bags, 1 bright crimson bag, 1 vibrant aqua bag.
plaid tan bags contain 5 posh silver bags, 1 shiny beige bag.
shiny white bags contain 1 pale olive bag.
dotted brown bags contain 1 bright silver bag, 5 light tan bags, 4 light coral bags.
shiny bronze bags contain 2 vibrant plum bags, 2 wavy teal bags, 1 bright red bag, 5 clear tomato bags.
striped violet bags contain 5 vibrant gray bags, 3 dark maroon bags, 4 dotted fuchsia bags, 4 plaid purple bags.
dull plum bags contain 4 dark gray bags, 1 wavy aqua bag, 2 muted aqua bags, 5 striped crimson bags.
posh blue bags contain 1 dotted bronze bag, 5 muted indigo bags, 2 light tan bags.
posh tan bags contain 4 shiny gold bags, 3 drab maroon bags.
striped aqua bags contain 4 muted bronze bags, 5 bright blue bags, 1 wavy tan bag.
shiny silver bags contain 1 light green bag.
dark white bags contain 4 drab purple bags.
dull green bags contain 5 wavy bronze bags, 5 faded white bags.
clear chartreuse bags contain 3 dark gray bags.
posh coral bags contain 2 shiny lime bags, 4 light blue bags, 3 muted bronze bags.
faded magenta bags contain 1 dull maroon bag, 4 shiny teal bags, 1 plaid teal bag.
drab brown bags contain 1 drab violet bag.
pale salmon bags contain 4 plaid gray bags, 2 wavy violet bags.
mirrored aqua bags contain 1 faded turquoise bag, 5 dull aqua bags.
striped gray bags contain 5 dark maroon bags, 3 shiny plum bags.
mirrored salmon bags contain 4 clear cyan bags, 2 vibrant olive bags, 2 striped silver bags, 3 muted lavender bags.
wavy purple bags contain 1 shiny beige bag.
plaid indigo bags contain 1 plaid plum bag.
plaid gray bags contain 5 pale blue bags, 3 shiny gold bags.
bright yellow bags contain 2 drab bronze bags, 3 drab teal bags.
drab red bags contain 4 drab indigo bags, 1 mirrored blue bag, 2 dull aqua bags, 4 light magenta bags.
dull white bags contain 2 muted black bags, 1 dim beige bag, 1 dark beige bag.
clear silver bags contain 5 muted bronze bags, 1 muted tan bag, 3 light aqua bags, 1 wavy fuchsia bag.
dark black bags contain 2 pale fuchsia bags, 5 pale brown bags, 5 drab black bags.
mirrored silver bags contain 4 drab plum bags, 3 shiny white bags, 5 muted crimson bags, 5 dull aqua bags.
dim tomato bags contain 3 drab red bags, 1 drab lime bag, 4 striped gray bags.
faded bronze bags contain 5 clear indigo bags, 2 dotted blue bags.
striped crimson bags contain 1 plaid tomato bag, 2 dull yellow bags, 3 plaid purple bags.
wavy olive bags contain 4 mirrored red bags, 4 drab indigo bags.
dotted turquoise bags contain 2 mirrored lavender bags, 4 light maroon bags, 2 pale teal bags, 1 mirrored crimson bag.
muted violet bags contain 5 shiny olive bags.
bright orange bags contain 4 pale tan bags, 1 striped fuchsia bag, 5 shiny olive bags.
striped turquoise bags contain 1 posh salmon bag, 5 shiny indigo bags, 4 wavy violet bags.
dull indigo bags contain 3 plaid plum bags, 4 faded plum bags, 3 dull violet bags.
posh black bags contain 4 clear brown bags, 4 vibrant cyan bags, 1 light white bag.
shiny orange bags contain 5 striped purple bags, 3 muted beige bags.
striped plum bags contain 5 dull salmon bags, 3 dull orange bags, 1 clear lime bag, 3 mirrored indigo bags.
clear white bags contain 4 wavy crimson bags, 3 plaid magenta bags.
pale tan bags contain 5 muted indigo bags.
dark red bags contain 3 bright magenta bags, 1 muted salmon bag, 4 vibrant gray bags, 5 clear green bags.
dark yellow bags contain 3 dim teal bags.
clear aqua bags contain no other bags.
vibrant white bags contain 2 drab yellow bags, 4 vibrant aqua bags, 2 plaid maroon bags.
posh lime bags contain 5 vibrant black bags.
clear teal bags contain 1 shiny olive bag, 5 bright aqua bags, 4 bright violet bags.
dotted indigo bags contain 2 muted fuchsia bags, 3 mirrored gray bags.
posh olive bags contain 5 clear maroon bags, 2 dim teal bags, 2 drab plum bags, 4 shiny olive bags.
dark coral bags contain 4 clear red bags.
dark olive bags contain 4 vibrant black bags.
faded olive bags contain 2 bright gray bags, 5 dull white bags.
dotted purple bags contain 1 faded brown bag, 5 dark purple bags.
faded plum bags contain 2 pale brown bags, 4 dark aqua bags.
bright plum bags contain 2 vibrant brown bags, 1 bright black bag, 1 dotted gold bag.
faded lavender bags contain 4 clear violet bags, 4 striped purple bags.
faded silver bags contain 4 dotted blue bags, 2 light purple bags, 1 bright chartreuse bag, 3 striped white bags.
bright cyan bags contain 5 dotted lime bags, 5 shiny gray bags, 1 faded orange bag, 5 clear indigo bags.
plaid tomato bags contain 1 clear violet bag, 3 muted beige bags.
wavy aqua bags contain 1 light tan bag.
dotted gold bags contain 5 mirrored indigo bags, 5 dull tan bags.
faded teal bags contain 5 plaid black bags, 2 clear turquoise bags.
striped white bags contain 2 dull aqua bags, 1 mirrored violet bag, 4 vibrant salmon bags.
mirrored violet bags contain 2 vibrant salmon bags, 1 clear brown bag.
drab magenta bags contain 3 muted lime bags, 2 bright orange bags.
pale teal bags contain 3 light black bags, 4 dim black bags, 2 muted gray bags.
dark teal bags contain 5 dark tomato bags, 4 dull teal bags, 5 striped white bags, 5 plaid aqua bags.
dim purple bags contain 5 wavy magenta bags, 2 muted fuchsia bags, 5 mirrored bronze bags.
clear violet bags contain 5 wavy turquoise bags, 5 light black bags, 1 mirrored indigo bag, 2 faded white bags.
dim indigo bags contain 3 dull teal bags.
dotted olive bags contain 4 dark red bags, 2 mirrored beige bags.
posh aqua bags contain 1 posh blue bag, 4 dotted black bags, 4 pale tomato bags.
clear orange bags contain 1 striped magenta bag, 3 wavy aqua bags.
plaid cyan bags contain 5 vibrant lavender bags, 2 light gold bags, 2 wavy orange bags, 4 bright turquoise bags.
mirrored green bags contain 4 plaid fuchsia bags.
dark silver bags contain 3 light coral bags.
wavy silver bags contain 5 plaid yellow bags, 5 pale orange bags.
plaid crimson bags contain 4 vibrant salmon bags, 4 vibrant blue bags, 1 light teal bag, 3 bright crimson bags.
mirrored bronze bags contain 1 dark coral bag, 2 clear orange bags, 4 plaid orange bags, 2 vibrant gray bags.
faded aqua bags contain 5 light white bags, 3 drab gray bags, 1 plaid beige bag.
drab yellow bags contain 1 dotted black bag, 2 dim silver bags.
dark beige bags contain 4 wavy tan bags, 5 light lavender bags, 5 dotted bronze bags.
clear green bags contain 5 shiny purple bags, 5 light teal bags, 5 pale bronze bags.
dotted lavender bags contain 4 wavy orange bags, 4 dull chartreuse bags.
bright chartreuse bags contain 2 dotted cyan bags, 3 pale olive bags, 4 vibrant salmon bags.
faded red bags contain 3 dull cyan bags, 3 drab indigo bags, 5 light green bags, 4 dark lime bags.
plaid brown bags contain 2 dotted salmon bags, 3 striped silver bags, 1 light blue bag.
dull beige bags contain no other bags.
dim violet bags contain 3 striped lavender bags, 5 dotted coral bags, 1 clear blue bag.
vibrant red bags contain 1 dark coral bag, 3 light gold bags.
faded violet bags contain 3 pale gold bags.
muted salmon bags contain 3 wavy turquoise bags.
vibrant gold bags contain 2 shiny teal bags.
dull coral bags contain 3 posh gold bags, 4 wavy olive bags.
mirrored fuchsia bags contain 5 wavy lime bags.
dotted plum bags contain 3 bright bronze bags, 3 light coral bags, 5 mirrored orange bags, 4 plaid gray bags.
dim fuchsia bags contain 4 light indigo bags, 5 faded red bags, 5 plaid orange bags.
dull brown bags contain 2 dim gold bags.
faded indigo bags contain 3 wavy olive bags, 1 shiny green bag.
pale coral bags contain 5 faded crimson bags.
light orange bags contain 3 bright gold bags, 1 striped magenta bag, 4 plaid lavender bags, 5 light green bags.
clear salmon bags contain 3 dim tan bags, 1 light lavender bag.
vibrant indigo bags contain 1 dark beige bag, 2 posh purple bags.
clear cyan bags contain 5 posh brown bags.
dull red bags contain 3 drab gold bags, 3 dark aqua bags, 5 dim maroon bags.
dim red bags contain 5 faded black bags, 2 shiny lime bags.
dark indigo bags contain 5 dull green bags, 2 striped white bags, 3 dotted indigo bags.
pale tomato bags contain 4 vibrant gold bags.
dim turquoise bags contain 4 plaid tomato bags, 2 plaid gray bags, 4 shiny violet bags.
dotted yellow bags contain 5 dotted plum bags, 3 muted beige bags, 4 light fuchsia bags, 1 wavy olive bag.
dim gold bags contain 3 muted beige bags.
mirrored orange bags contain 5 drab maroon bags, 4 dull teal bags, 1 faded tan bag, 2 dark aqua bags.
light chartreuse bags contain 4 vibrant gold bags, 5 dark silver bags, 3 pale purple bags.
posh silver bags contain 5 dotted silver bags, 4 dark chartreuse bags, 1 striped magenta bag.
vibrant black bags contain 5 muted red bags, 1 pale purple bag, 2 clear indigo bags, 4 faded magenta bags.
faded maroon bags contain 2 clear cyan bags, 4 wavy orange bags, 2 shiny blue bags.
bright lavender bags contain 5 dull chartreuse bags.
drab black bags contain 1 posh plum bag, 5 mirrored maroon bags, 3 dark yellow bags.
drab gray bags contain 4 clear violet bags, 3 mirrored red bags, 1 light silver bag, 1 wavy turquoise bag.
faded turquoise bags contain 2 light tan bags, 5 faded coral bags.
dark purple bags contain 5 pale cyan bags.
muted beige bags contain no other bags.
dull maroon bags contain 2 wavy turquoise bags, 5 light lavender bags, 5 muted beige bags.
bright tomato bags contain 3 plaid blue bags.
dim crimson bags contain 3 drab turquoise bags, 2 faded crimson bags, 2 plaid chartreuse bags.
clear magenta bags contain 3 light green bags, 5 dotted red bags, 1 mirrored indigo bag, 1 dim brown bag.
dotted aqua bags contain 5 clear crimson bags, 1 wavy orange bag.
dark fuchsia bags contain 1 dull maroon bag.
faded salmon bags contain 2 wavy yellow bags, 3 faded plum bags.
muted chartreuse bags contain 5 light gold bags, 1 bright bronze bag, 5 light beige bags, 4 light black bags.
muted lavender bags contain 3 mirrored coral bags.
drab fuchsia bags contain 3 plaid brown bags.
dim plum bags contain 4 vibrant brown bags, 3 plaid beige bags, 3 dark crimson bags, 4 bright teal bags.
shiny magenta bags contain 1 muted black bag.
wavy magenta bags contain 2 faded lavender bags, 1 bright gray bag, 3 pale olive bags.
mirrored plum bags contain 5 muted maroon bags.
wavy plum bags contain 5 dark crimson bags.
striped lavender bags contain 4 vibrant yellow bags, 2 vibrant lavender bags.
faded beige bags contain 4 pale indigo bags, 5 vibrant tomato bags.
shiny gold bags contain 4 drab gray bags, 4 light coral bags.
dotted beige bags contain 5 drab maroon bags, 1 shiny gold bag, 3 light lavender bags.
dull yellow bags contain 3 pale bronze bags, 1 bright silver bag.
muted green bags contain 3 faded red bags, 2 plaid green bags, 3 plaid black bags, 1 light yellow bag.
vibrant silver bags contain 5 striped purple bags, 3 shiny olive bags, 4 vibrant lavender bags.
dim green bags contain 4 vibrant gold bags, 5 muted maroon bags, 1 plaid aqua bag, 2 posh silver bags.
faded lime bags contain 2 shiny white bags.
bright bronze bags contain 5 muted gold bags, 3 light black bags.
shiny yellow bags contain 5 light green bags, 5 wavy brown bags.
dark cyan bags contain 5 light teal bags, 1 posh yellow bag, 3 shiny aqua bags.
striped blue bags contain 1 muted gold bag, 4 dull maroon bags, 3 clear red bags, 5 faded fuchsia bags.
dim tan bags contain 1 bright tan bag.
shiny red bags contain 3 plaid turquoise bags, 1 dotted cyan bag, 1 pale fuchsia bag.
vibrant brown bags contain 5 dim magenta bags, 4 drab white bags.
dull turquoise bags contain 2 bright orange bags, 4 bright gray bags, 3 dim chartreuse bags.
dark bronze bags contain 3 striped green bags, 2 wavy tan bags, 2 faded lime bags, 3 bright olive bags.
striped green bags contain 4 light black bags, 2 drab bronze bags, 4 dotted bronze bags, 3 plaid orange bags.
dark brown bags contain 5 drab indigo bags, 3 plaid white bags, 1 pale lime bag.
dotted black bags contain 4 dull beige bags, 4 drab lavender bags.
striped cyan bags contain 2 vibrant orange bags, 3 clear violet bags, 2 mirrored gray bags.
clear tomato bags contain 5 shiny gold bags, 1 dim chartreuse bag, 4 dark crimson bags, 5 shiny white bags.
light white bags contain 3 pale violet bags, 4 drab plum bags, 4 drab gray bags, 1 vibrant lavender bag.
plaid black bags contain 4 vibrant orange bags, 5 bright gray bags.
drab salmon bags contain 4 faded coral bags.
shiny maroon bags contain 3 pale black bags, 2 bright magenta bags.
striped black bags contain 1 plaid fuchsia bag, 4 plaid black bags, 1 mirrored beige bag.
muted bronze bags contain 5 faded red bags, 5 plaid green bags.
bright tan bags contain 1 wavy yellow bag, 5 light fuchsia bags, 5 plaid teal bags.
plaid gold bags contain 5 faded black bags, 1 vibrant black bag.
wavy tomato bags contain 5 plaid fuchsia bags, 2 mirrored violet bags, 3 dark yellow bags, 1 bright gold bag.
faded tan bags contain 5 vibrant salmon bags, 5 plaid teal bags, 4 clear aqua bags, 2 pale violet bags.
light crimson bags contain 3 mirrored tomato bags, 5 plaid green bags.
wavy bronze bags contain 1 light teal bag.
faded yellow bags contain 3 clear beige bags, 4 bright bronze bags.
muted gold bags contain 5 plaid teal bags, 2 faded fuchsia bags, 4 bright crimson bags.
shiny tan bags contain 5 dark salmon bags, 5 light red bags.
bright gold bags contain 2 faded chartreuse bags, 2 dim green bags, 3 striped cyan bags.
pale turquoise bags contain 1 pale tan bag, 5 dark violet bags.
wavy orange bags contain 5 plaid teal bags, 1 pale bronze bag, 4 wavy tan bags, 1 clear red bag.
dim silver bags contain 3 dark lime bags, 1 dotted beige bag.
faded cyan bags contain 2 dull maroon bags, 5 clear tan bags, 1 dull coral bag, 2 posh lavender bags.
dim white bags contain 1 dull maroon bag, 3 dull brown bags.
vibrant bronze bags contain 5 faded chartreuse bags.
dotted fuchsia bags contain 4 vibrant salmon bags, 2 faded white bags.
faded gold bags contain 2 dark maroon bags, 2 bright chartreuse bags, 1 dull brown bag.
dim brown bags contain 3 dull yellow bags, 4 faded chartreuse bags, 5 vibrant silver bags.
light yellow bags contain 2 striped silver bags.
striped coral bags contain 1 muted blue bag, 1 dim aqua bag, 4 posh red bags, 5 plaid lime bags.
dark magenta bags contain 2 pale violet bags, 2 vibrant tomato bags, 5 clear orange bags.
posh indigo bags contain 2 clear red bags, 4 clear violet bags, 2 shiny chartreuse bags, 5 dull white bags.
light tomato bags contain 4 clear indigo bags.
light plum bags contain 2 mirrored maroon bags.
drab violet bags contain 5 dark aqua bags, 1 vibrant magenta bag.
pale gray bags contain 1 striped lime bag, 4 clear bronze bags.
dark plum bags contain 2 dark olive bags.
plaid lavender bags contain 4 pale brown bags.
mirrored olive bags contain 1 faded coral bag.
drab green bags contain 2 dull silver bags, 2 clear purple bags, 3 posh violet bags, 2 light blue bags.
bright maroon bags contain 4 faded yellow bags, 4 dotted bronze bags, 2 dark brown bags.
striped purple bags contain 2 faded fuchsia bags, 5 posh plum bags.
wavy gray bags contain 4 dark violet bags, 4 plaid orange bags.
drab plum bags contain 3 light lavender bags, 1 striped blue bag, 5 bright crimson bags.
faded orange bags contain 4 light teal bags, 4 dim chartreuse bags, 2 vibrant yellow bags.
dim salmon bags contain 2 pale coral bags, 1 drab aqua bag.
muted silver bags contain 1 clear chartreuse bag, 2 clear tan bags, 5 dotted tan bags, 4 clear black bags.
muted yellow bags contain 3 wavy blue bags, 1 striped lavender bag.
wavy gold bags contain 5 faded gold bags, 1 shiny green bag, 1 mirrored cyan bag.
dull gold bags contain 1 striped green bag.
bright brown bags contain 4 drab plum bags, 4 pale violet bags, 5 vibrant blue bags.
bright crimson bags contain 2 wavy tan bags, 4 shiny teal bags.
mirrored gray bags contain 2 dull beige bags, 4 light white bags, 5 pale brown bags.
dull tan bags contain 4 dim magenta bags, 1 light teal bag.
mirrored yellow bags contain 1 drab lavender bag, 4 shiny gold bags, 3 drab turquoise bags, 2 light silver bags.
muted indigo bags contain 5 mirrored coral bags, 3 dark crimson bags.
dull aqua bags contain 4 drab lime bags, 3 shiny crimson bags, 1 drab salmon bag.
dim aqua bags contain 2 shiny lavender bags, 5 pale coral bags.
shiny chartreuse bags contain 1 clear maroon bag, 4 shiny blue bags.
dotted magenta bags contain 3 light olive bags.
faded green bags contain 4 faded beige bags, 5 dotted gold bags, 5 striped lavender bags, 5 wavy blue bags.
drab orange bags contain 3 muted fuchsia bags.
dim magenta bags contain 1 shiny orange bag.
shiny olive bags contain 2 wavy aqua bags.
dark orange bags contain 1 clear black bag, 1 faded gray bag.
light lavender bags contain no other bags.
bright turquoise bags contain 2 dull beige bags, 5 shiny teal bags, 5 posh brown bags, 5 dark beige bags.
faded purple bags contain 2 dark white bags, 2 pale salmon bags.
drab olive bags contain 1 dark silver bag, 4 plaid yellow bags, 3 drab gold bags, 2 mirrored yellow bags.
dull gray bags contain 3 vibrant turquoise bags, 5 faded chartreuse bags.
striped bronze bags contain 3 faded turquoise bags, 2 vibrant gray bags, 3 dotted beige bags, 3 dull beige bags.
wavy fuchsia bags contain 2 shiny purple bags, 2 plaid crimson bags, 1 dark cyan bag.
pale aqua bags contain 4 dotted tan bags, 1 dim yellow bag, 5 shiny lime bags.
pale silver bags contain 2 shiny brown bags.
shiny aqua bags contain 1 pale salmon bag, 5 faded chartreuse bags, 1 plaid aqua bag, 4 shiny silver bags.
posh brown bags contain 5 vibrant orange bags, 4 bright silver bags, 5 wavy orange bags, 3 dim chartreuse bags.
striped lime bags contain 5 drab violet bags, 4 light turquoise bags, 2 bright turquoise bags.
muted tan bags contain 2 striped purple bags, 4 posh yellow bags.
drab purple bags contain 2 clear red bags.
plaid magenta bags contain 2 pale blue bags, 5 plaid crimson bags.
mirrored tan bags contain 3 pale purple bags.
light blue bags contain 4 light tan bags.
clear black bags contain 2 pale blue bags, 4 dim gold bags, 2 vibrant gold bags.
light gold bags contain 1 wavy turquoise bag, 3 drab plum bags, 1 clear violet bag.
bright olive bags contain 3 light lavender bags, 1 faded tan bag, 3 shiny gold bags, 1 dotted cyan bag.
dark maroon bags contain 4 muted gold bags, 2 shiny yellow bags.
wavy lime bags contain 3 plaid green bags, 5 mirrored silver bags, 4 mirrored green bags, 3 dotted beige bags.
drab white bags contain 3 clear red bags, 3 bright silver bags, 4 posh red bags, 2 shiny blue bags.
clear lime bags contain 4 dotted orange bags.
vibrant maroon bags contain 2 dull orange bags, 5 vibrant crimson bags.
pale black bags contain 1 pale cyan bag, 5 dim tan bags, 4 shiny purple bags, 4 faded fuchsia bags.
vibrant tomato bags contain 2 mirrored orange bags.
dotted gray bags contain 3 dotted purple bags.
drab gold bags contain 4 shiny gold bags.
mirrored teal bags contain 3 shiny magenta bags, 3 mirrored beige bags, 3 dotted silver bags, 5 mirrored indigo bags.
posh lavender bags contain 2 wavy teal bags, 4 striped violet bags, 1 vibrant gold bag.
dark lavender bags contain 3 light blue bags, 2 muted beige bags, 3 clear magenta bags, 1 light tan bag.
muted cyan bags contain 4 dull gold bags, 1 dim yellow bag, 4 striped cyan bags, 2 dim gold bags.
dim maroon bags contain 5 shiny purple bags.
shiny purple bags contain 5 pale violet bags, 2 light fuchsia bags, 2 mirrored red bags.
vibrant lime bags contain 4 bright orange bags, 1 posh beige bag.
vibrant teal bags contain 2 posh turquoise bags, 3 pale tomato bags, 3 dark bronze bags.
posh fuchsia bags contain 3 striped plum bags, 2 drab aqua bags.
dotted violet bags contain 5 plaid black bags, 1 clear salmon bag, 2 dull chartreuse bags.
clear gold bags contain 2 dull violet bags, 3 muted white bags.
dull cyan bags contain 4 pale violet bags, 2 light gold bags, 4 dark tomato bags.
posh beige bags contain 5 mirrored cyan bags, 5 dotted red bags, 3 clear purple bags, 3 posh white bags.
dotted maroon bags contain 3 pale orange bags, 1 striped black bag, 4 faded fuchsia bags.
dotted tomato bags contain 5 striped magenta bags, 4 striped orange bags, 3 muted teal bags, 3 bright black bags.
drab teal bags contain 5 striped tan bags, 4 dull green bags, 5 muted coral bags, 1 clear red bag.
vibrant magenta bags contain 5 bright orange bags, 4 mirrored gray bags, 1 faded tan bag, 4 faded brown bags.
posh crimson bags contain 5 light lime bags, 1 faded brown bag, 2 posh red bags.
dull lavender bags contain 4 clear green bags, 5 wavy orange bags, 5 posh green bags, 3 plaid orange bags.
wavy yellow bags contain 2 light teal bags.
dotted bronze bags contain 3 clear red bags, 4 posh plum bags, 4 light lavender bags, 4 faded fuchsia bags.
dim olive bags contain 2 dotted chartreuse bags.
dark gray bags contain 3 shiny olive bags.
posh salmon bags contain 1 pale purple bag, 2 clear tomato bags, 4 shiny gold bags.
shiny coral bags contain 3 dark olive bags, 2 dull fuchsia bags, 1 dull gold bag.
vibrant green bags contain 2 light fuchsia bags, 5 vibrant violet bags, 3 dotted blue bags.
pale lime bags contain 4 vibrant gold bags, 5 dotted yellow bags.
vibrant yellow bags contain 5 clear violet bags, 1 dark maroon bag.
pale beige bags contain 4 faded red bags, 4 striped green bags.
dim bronze bags contain 5 posh chartreuse bags, 5 light white bags.
clear fuchsia bags contain 5 posh yellow bags, 4 faded fuchsia bags.
faded chartreuse bags contain 5 drab purple bags, 1 wavy olive bag, 3 light black bags, 1 dotted brown bag.
mirrored turquoise bags contain 1 faded fuchsia bag, 2 mirrored blue bags.
light maroon bags contain 4 dotted blue bags, 4 muted gold bags, 3 faded lavender bags.
muted crimson bags contain 5 posh bronze bags.
mirrored blue bags contain 1 faded lavender bag, 5 bright chartreuse bags, 4 dotted brown bags.
striped brown bags contain 2 clear cyan bags, 4 vibrant orange bags, 5 shiny tan bags.
muted orange bags contain 3 dotted black bags, 4 clear beige bags, 2 plaid beige bags, 1 mirrored coral bag.
clear beige bags contain 3 wavy tan bags, 5 dark aqua bags.
bright silver bags contain 3 striped purple bags.
muted plum bags contain 5 light purple bags, 1 light lavender bag, 2 drab maroon bags, 1 posh black bag.
vibrant salmon bags contain 1 shiny teal bag.
dotted chartreuse bags contain 4 vibrant gold bags.
shiny lime bags contain 3 dotted crimson bags, 3 striped crimson bags.
wavy brown bags contain 1 pale violet bag, 3 light beige bags, 2 wavy aqua bags, 4 dim teal bags.
clear yellow bags contain 3 dotted tan bags.
bright red bags contain 1 dim tomato bag, 5 clear tan bags, 2 posh red bags, 5 mirrored yellow bags.
drab tomato bags contain 1 drab yellow bag.
dull crimson bags contain 1 dotted brown bag, 2 bright gray bags, 4 dim tan bags.
shiny beige bags contain 2 plaid teal bags.
dotted coral bags contain 4 plaid teal bags, 2 pale turquoise bags, 4 dark lime bags, 2 pale purple bags.
shiny plum bags contain 5 dull coral bags, 1 shiny gold bag.
light coral bags contain 2 pale bronze bags, 1 clear aqua bag.
vibrant cyan bags contain 1 muted fuchsia bag, 4 pale tan bags, 1 shiny green bag, 1 dotted blue bag.
bright purple bags contain 4 faded white bags.
mirrored chartreuse bags contain 2 shiny orange bags.
light brown bags contain 4 striped violet bags, 4 striped purple bags, 3 wavy yellow bags, 2 drab blue bags.
clear brown bags contain 1 clear indigo bag, 2 dark coral bags.
vibrant fuchsia bags contain 4 dull tan bags, 4 vibrant bronze bags, 1 light white bag, 5 vibrant tomato bags.
clear crimson bags contain 5 muted tomato bags.
muted red bags contain 2 dull beige bags, 2 dark turquoise bags, 1 dark fuchsia bag.
dull salmon bags contain 2 bright tan bags, 5 faded white bags, 4 muted beige bags, 1 dull cyan bag.
drab lavender bags contain 1 dark chartreuse bag.
vibrant plum bags contain 1 dark violet bag, 2 mirrored red bags, 3 muted purple bags, 5 dull blue bags.
drab maroon bags contain 3 plaid teal bags, 4 muted beige bags, 4 posh gold bags, 5 mirrored coral bags.
posh magenta bags contain 4 wavy tomato bags, 3 wavy beige bags.
striped olive bags contain 3 shiny plum bags, 4 plaid gold bags.
vibrant crimson bags contain 2 dim chartreuse bags.
drab lime bags contain 1 vibrant aqua bag.
wavy maroon bags contain 2 dark tan bags, 4 faded brown bags, 4 dim silver bags, 1 muted lime bag.
dull tomato bags contain 2 dotted bronze bags, 5 vibrant maroon bags, 4 plaid tan bags.
dim teal bags contain 5 muted beige bags, 2 mirrored indigo bags, 4 vibrant lavender bags.
wavy white bags contain 1 muted white bag, 1 dim chartreuse bag.
bright lime bags contain 3 dull gold bags, 2 dull indigo bags, 4 drab teal bags.
plaid aqua bags contain 4 light lavender bags, 4 posh gold bags, 3 wavy violet bags, 5 muted chartreuse bags.
mirrored purple bags contain 3 dark lavender bags, 3 clear salmon bags, 1 plaid white bag, 1 striped violet bag.
plaid maroon bags contain 4 dotted red bags, 1 mirrored coral bag, 5 muted indigo bags, 1 clear turquoise bag.
dark turquoise bags contain 4 bright crimson bags, 2 dotted bronze bags, 2 pale violet bags, 5 wavy aqua bags.
dull silver bags contain 2 wavy olive bags, 5 shiny violet bags.
muted olive bags contain 5 plaid beige bags, 3 dark brown bags, 1 clear black bag, 4 faded red bags.
drab indigo bags contain 1 pale violet bag.
muted lime bags contain 5 striped violet bags, 2 plaid lavender bags.
drab blue bags contain 1 pale tomato bag.
drab bronze bags contain 3 vibrant blue bags, 1 vibrant bronze bag.
muted gray bags contain 4 dim chartreuse bags.
striped teal bags contain 4 dark coral bags.
light green bags contain 2 plaid teal bags, 5 pale bronze bags, 3 dull teal bags.
plaid salmon bags contain 3 bright chartreuse bags.
dotted blue bags contain 4 drab plum bags, 1 light tan bag.
dark violet bags contain 5 dark coral bags, 5 dotted lavender bags, 5 pale brown bags, 1 vibrant lavender bag.
pale gold bags contain 1 bright silver bag, 2 dark cyan bags, 1 dull tan bag, 1 plaid blue bag.
light turquoise bags contain 3 drab turquoise bags, 1 dull tan bag, 3 muted indigo bags, 5 dotted fuchsia bags.
plaid blue bags contain 3 pale violet bags, 4 dotted brown bags.
bright magenta bags contain 4 shiny brown bags, 4 wavy violet bags, 3 dark aqua bags, 2 bright turquoise bags.
clear maroon bags contain 4 posh plum bags.
posh red bags contain 5 plaid cyan bags, 4 clear orange bags.
posh purple bags contain 5 plaid cyan bags, 1 drab lavender bag, 3 pale purple bags, 4 light coral bags.
dim lime bags contain 2 striped beige bags, 2 dark blue bags.
shiny indigo bags contain 2 vibrant black bags, 2 wavy orange bags.
posh gold bags contain 5 dull beige bags, 1 shiny teal bag.
wavy beige bags contain 2 dark beige bags, 4 muted chartreuse bags, 2 dim lavender bags, 2 mirrored indigo bags.
dim lavender bags contain 2 vibrant aqua bags.
mirrored beige bags contain 2 posh red bags, 3 pale olive bags, 3 dull brown bags.
clear indigo bags contain 1 shiny teal bag, 1 mirrored indigo bag.
dim chartreuse bags contain 5 bright tan bags.
plaid coral bags contain 2 clear green bags.
wavy cyan bags contain 2 drab blue bags, 5 dotted coral bags, 3 mirrored beige bags.
dotted crimson bags contain 1 muted tan bag, 4 dull maroon bags, 2 striped crimson bags.
drab cyan bags contain 1 dull cyan bag, 3 pale cyan bags, 4 faded aqua bags, 4 clear tan bags.
wavy coral bags contain 4 wavy plum bags, 5 plaid beige bags, 5 pale tan bags.
pale maroon bags contain 5 pale tan bags.
shiny blue bags contain 3 light coral bags, 4 bright olive bags.
plaid orange bags contain 2 dim white bags, 3 shiny silver bags, 3 pale violet bags.
dark tan bags contain 2 vibrant olive bags, 3 plaid turquoise bags, 2 dull chartreuse bags, 4 dull teal bags.
posh cyan bags contain 5 posh orange bags, 5 shiny brown bags.
clear red bags contain no other bags.
light fuchsia bags contain 4 dark beige bags, 1 light black bag, 1 striped blue bag.
striped beige bags contain 2 bright silver bags, 2 faded indigo bags, 1 plaid turquoise bag, 3 shiny plum bags.
wavy lavender bags contain 4 posh black bags, 1 dotted teal bag, 4 drab purple bags.
dotted cyan bags contain 5 dull yellow bags, 5 light beige bags, 2 vibrant aqua bags, 5 dark beige bags.
drab crimson bags contain 5 dark magenta bags.
plaid olive bags contain 1 vibrant crimson bag, 5 dim bronze bags, 1 striped black bag, 1 drab brown bag.
dim yellow bags contain 3 plaid gray bags, 5 vibrant salmon bags, 4 vibrant olive bags.
striped indigo bags contain 3 mirrored coral bags, 2 vibrant bronze bags, 3 dull brown bags.
dark green bags contain 3 shiny teal bags, 5 pale chartreuse bags, 5 dull teal bags, 5 striped silver bags.
drab aqua bags contain 5 dark aqua bags, 5 dotted blue bags, 1 pale violet bag, 1 pale bronze bag.
striped orange bags contain 3 striped green bags, 4 muted beige bags, 2 clear aqua bags, 3 dark crimson bags.
striped silver bags contain 1 pale cyan bag, 5 drab gold bags, 3 bright turquoise bags, 4 light gold bags.
bright blue bags contain 4 light black bags, 1 plaid salmon bag.
striped red bags contain 1 vibrant plum bag, 5 dull blue bags, 1 dull olive bag.
posh white bags contain 3 drab bronze bags, 4 bright crimson bags.
drab turquoise bags contain 4 striped crimson bags.
clear lavender bags contain 4 faded magenta bags, 1 mirrored gray bag, 4 wavy yellow bags, 1 dotted cyan bag.
drab chartreuse bags contain 1 shiny gray bag.
clear purple bags contain 1 shiny brown bag, 2 bright gray bags, 5 clear salmon bags.
dull magenta bags contain 1 posh cyan bag, 3 muted indigo bags, 1 dim lavender bag.
posh chartreuse bags contain 4 wavy violet bags.
posh maroon bags contain 4 striped gray bags.
clear blue bags contain 3 faded lime bags, 2 pale purple bags.
dark gold bags contain 2 dull beige bags, 3 plaid blue bags.
muted coral bags contain 4 dark gold bags.
bright aqua bags contain 3 muted crimson bags.
dull orange bags contain 3 posh gold bags.
shiny turquoise bags contain 3 dark brown bags, 5 shiny red bags, 3 muted beige bags.
mirrored brown bags contain 2 light orange bags, 5 drab coral bags, 2 wavy lime bags.
striped chartreuse bags contain 1 dark lavender bag, 4 pale salmon bags, 4 dotted violet bags, 4 clear tomato bags.
shiny salmon bags contain 4 dim magenta bags.
bright fuchsia bags contain 4 muted chartreuse bags, 3 mirrored green bags.
shiny tomato bags contain 5 clear gray bags, 2 drab silver bags, 3 clear green bags.
muted turquoise bags contain 5 shiny orange bags, 1 mirrored tan bag.
vibrant tan bags contain 1 faded magenta bag, 5 drab plum bags.
posh gray bags contain 2 posh magenta bags.
dark lime bags contain 5 clear aqua bags, 3 posh plum bags.
plaid violet bags contain 2 light bronze bags, 1 light green bag, 1 striped gold bag.
vibrant blue bags contain 2 wavy yellow bags, 4 dim magenta bags, 1 drab maroon bag, 4 dotted brown bags.
faded brown bags contain 2 pale blue bags, 4 bright olive bags, 1 bright bronze bag.
striped salmon bags contain 4 light green bags, 4 wavy orange bags, 3 mirrored coral bags.
plaid lime bags contain 1 bright green bag, 2 light indigo bags.
plaid chartreuse bags contain 4 vibrant green bags, 5 dotted coral bags, 2 muted gray bags, 4 bright purple bags.
light salmon bags contain 5 vibrant maroon bags, 3 dark lime bags, 5 drab tan bags, 1 striped cyan bag.
muted fuchsia bags contain 4 light silver bags, 3 light teal bags, 3 muted gold bags.
clear plum bags contain 5 light turquoise bags.
posh orange bags contain 5 wavy tan bags, 4 dark turquoise bags.
dotted tan bags contain 2 plaid teal bags.
shiny teal bags contain no other bags.
posh violet bags contain 2 vibrant tomato bags, 4 bright orange bags, 3 dotted red bags, 5 pale silver bags.
dotted lime bags contain 5 wavy tan bags, 2 dark tomato bags, 5 mirrored gray bags, 2 light aqua bags.
posh plum bags contain no other bags.
mirrored white bags contain 4 clear gold bags, 1 dark teal bag.
pale indigo bags contain 4 shiny magenta bags, 1 shiny maroon bag.
drab beige bags contain 1 muted plum bag, 5 posh turquoise bags, 2 vibrant fuchsia bags.
faded black bags contain 5 wavy black bags.
plaid beige bags contain 2 posh purple bags, 4 pale olive bags, 3 striped green bags, 5 bright orange bags.
faded white bags contain 4 clear red bags, 4 faded fuchsia bags, 1 dull beige bag.
shiny violet bags contain 3 shiny green bags, 5 wavy brown bags.
wavy blue bags contain 2 light teal bags, 4 dull silver bags, 2 bright black bags, 4 dull tan bags.
wavy red bags contain 4 dark silver bags, 5 dotted chartreuse bags, 2 clear salmon bags, 2 striped tan bags.
shiny lavender bags contain 2 muted bronze bags.
faded coral bags contain 5 dotted chartreuse bags, 2 vibrant silver bags, 2 wavy black bags.
clear coral bags contain 4 muted fuchsia bags.
mirrored coral bags contain 1 vibrant lavender bag.
dim black bags contain 2 bright olive bags, 1 dull teal bag, 4 shiny purple bags.
pale blue bags contain 1 light black bag, 2 light white bags, 1 dull maroon bag, 5 plaid teal bags.
plaid plum bags contain 3 muted coral bags, 1 dim brown bag, 2 plaid aqua bags, 1 vibrant blue bag.
muted black bags contain 5 light blue bags, 3 clear salmon bags.
dotted white bags contain 3 shiny salmon bags, 1 faded maroon bag.
drab coral bags contain 3 striped gold bags, 4 shiny aqua bags, 5 wavy red bags.
dotted salmon bags contain 4 drab black bags, 2 light aqua bags.
mirrored indigo bags contain 3 wavy orange bags, 5 posh plum bags.
vibrant violet bags contain 1 striped lavender bag, 1 muted purple bag, 2 drab silver bags, 5 pale olive bags.
plaid teal bags contain 4 shiny teal bags, 2 wavy turquoise bags, 2 vibrant aqua bags.
dull violet bags contain 5 light coral bags, 1 vibrant tan bag.
faded crimson bags contain 3 dark chartreuse bags, 2 vibrant cyan bags, 3 mirrored cyan bags.
posh bronze bags contain 4 plaid lavender bags, 3 shiny gold bags, 5 mirrored coral bags, 2 shiny indigo bags.
clear olive bags contain 2 muted gray bags, 2 dark red bags, 5 clear brown bags, 5 bright silver bags.

2
2020/data/day8.expected Normal file
View file

@ -0,0 +1,2 @@
1797
1036

625
2020/data/day8.input Normal file
View file

@ -0,0 +1,625 @@
acc +17
acc +37
acc -13
jmp +173
nop +100
acc -7
jmp +447
nop +283
acc +41
acc +32
jmp +1
jmp +585
jmp +1
acc -5
nop +71
acc +49
acc -18
jmp +527
jmp +130
jmp +253
acc +11
acc -11
jmp +390
jmp +597
jmp +1
acc +6
acc +0
jmp +588
acc -17
jmp +277
acc +2
nop +163
jmp +558
acc +38
jmp +369
acc +13
jmp +536
acc +38
acc +39
acc +6
jmp +84
acc +11
nop +517
acc +48
acc +47
jmp +1
acc +42
acc +0
acc +2
acc +24
jmp +335
acc +44
acc +47
jmp +446
nop +42
nop +74
acc +45
jmp +548
jmp +66
acc +1
jmp +212
acc +18
jmp +1
acc +4
acc -16
jmp +366
acc +0
jmp +398
acc +45
jmp +93
acc +40
acc +38
acc +21
nop +184
jmp -46
nop -9
jmp +53
acc +46
acc +36
jmp +368
acc +16
acc +8
acc -9
acc -4
jmp +328
acc -15
acc -5
acc +21
jmp +435
acc -5
acc +36
jmp +362
acc +26
jmp +447
jmp +1
jmp +412
acc +11
acc +41
nop -32
acc +17
jmp -63
jmp +1
nop +393
jmp +62
acc +18
acc +30
nop +417
jmp +74
acc +29
acc +23
jmp +455
jmp +396
jmp +395
acc +33
nop +137
nop +42
jmp +57
jmp +396
acc +7
acc +0
jmp +354
acc +15
acc +50
jmp -12
jmp +84
nop +175
acc +5
acc -2
jmp -82
acc +1
acc +26
jmp +288
nop -113
nop +366
acc +45
jmp +388
acc +21
acc +38
jmp +427
acc +33
jmp -94
nop -118
nop +411
jmp +472
nop +231
nop +470
acc +48
jmp -124
jmp +1
acc +5
acc +37
acc +42
jmp +301
acc -11
acc -17
acc +14
jmp +357
acc +6
acc +20
acc +13
jmp +361
jmp -65
acc +29
jmp +26
jmp +329
acc +32
acc +32
acc +17
jmp -102
acc -6
acc +33
acc +9
jmp +189
acc +3
jmp -128
jmp -142
acc +24
acc -5
jmp +403
acc +28
jmp +310
acc +34
acc +4
acc +33
acc +18
jmp +227
acc -8
acc -15
jmp +112
jmp +54
acc +21
acc +23
acc +20
jmp +320
acc +13
jmp -77
acc +15
nop +310
nop +335
jmp +232
acc -3
nop +50
acc +41
jmp +112
nop -10
acc +29
acc +27
jmp +52
acc +40
nop -132
acc -16
acc +27
jmp +309
acc -8
nop +147
acc +20
acc +46
jmp +202
acc +27
jmp -43
jmp +1
acc +33
acc -13
jmp +300
acc +1
jmp -202
acc -17
acc +0
acc +34
jmp -5
nop +335
acc -16
acc -17
jmp -120
acc -19
acc -13
acc +4
jmp +368
jmp +21
acc +39
acc +39
acc -18
jmp -157
nop +280
acc +33
nop -37
jmp +32
acc -16
acc +18
acc +46
jmp -121
acc -19
jmp +195
acc +28
jmp +124
jmp +331
jmp -228
jmp -146
jmp +85
jmp +60
acc +20
acc -9
jmp +303
jmp -122
jmp +111
acc +32
acc +0
acc +39
acc +29
jmp -31
nop +320
jmp -63
jmp +223
nop -149
acc -12
acc -11
acc +32
jmp +309
jmp -13
acc -19
jmp -123
acc +21
acc +18
acc +49
jmp +175
acc -14
nop -129
acc -2
acc +31
jmp +79
acc +23
acc +50
acc +39
acc +7
jmp -235
jmp -166
acc +9
jmp +293
acc -11
jmp +76
acc +44
acc +3
acc +37
jmp +123
nop -104
jmp -157
acc +14
acc +10
acc +28
jmp +25
acc +37
jmp +188
jmp -49
acc -11
jmp -90
acc -8
jmp +197
acc +5
jmp +115
acc +44
jmp -228
nop -2
acc +46
jmp +130
nop +183
nop +106
acc +27
acc +37
jmp -309
acc +28
acc -4
acc -12
acc +38
jmp +93
acc +8
acc +23
acc -9
acc +6
jmp -42
acc +10
acc +35
acc +4
jmp -231
acc +19
acc +7
acc +23
acc +11
jmp -90
acc +0
nop +158
nop -150
acc +33
jmp +107
acc +48
acc -2
jmp -104
acc +6
nop -57
nop +172
acc -11
jmp -7
acc +6
acc +50
acc -9
acc +12
jmp -171
acc +3
jmp +26
acc +42
acc +31
acc +20
acc +32
jmp -48
acc +13
jmp -6
jmp +178
acc +47
jmp -153
acc +28
nop +74
jmp -162
acc -15
nop -104
acc -9
jmp -227
acc +49
acc -19
acc +41
jmp -318
acc +9
acc +12
acc +7
jmp +34
jmp +137
nop -143
acc -8
acc +5
acc +31
jmp -20
jmp -237
acc +39
acc +0
jmp -298
acc +45
acc -19
acc +11
jmp -151
acc +40
acc +27
nop +150
nop -391
jmp -341
acc +1
acc +11
acc +18
nop -234
jmp +77
nop +104
jmp -65
acc +32
jmp -27
nop -317
nop +159
acc +14
acc -10
jmp -348
acc +29
jmp +32
acc +48
acc -19
jmp +17
jmp -201
jmp -224
nop +26
acc -7
acc +23
acc +46
jmp -6
acc +22
acc +39
acc +9
acc +23
jmp -30
jmp -243
acc +47
acc -15
jmp -298
jmp -393
jmp +1
acc +3
nop -24
acc +7
jmp -59
acc -6
acc +26
jmp -102
acc +34
acc +24
jmp -207
acc +36
acc +40
acc +41
jmp +1
jmp -306
jmp +57
jmp +1
nop +99
acc +28
jmp -391
acc +50
jmp -359
acc -5
jmp +9
jmp -355
acc +5
acc +2
jmp -77
acc +40
acc +28
acc +22
jmp -262
nop -287
acc +34
acc -4
nop +112
jmp -195
acc +29
nop -94
nop -418
jmp +24
jmp -190
acc +2
jmp -311
jmp -178
jmp -276
acc -12
acc -18
jmp +62
jmp -174
nop +31
acc +33
nop -158
jmp -417
acc +3
acc +21
acc +47
jmp +87
acc +45
jmp -77
acc +6
acc -10
jmp +1
jmp -240
acc +7
acc +47
jmp -379
acc -14
acc +50
nop -75
acc +30
jmp +70
jmp -392
jmp -430
acc +22
acc -2
jmp -492
jmp +1
acc -6
acc +38
jmp -36
nop -336
jmp -32
jmp +61
acc +20
acc -9
acc +2
jmp -175
acc +21
acc -2
jmp -6
jmp -527
acc +11
acc +16
jmp -262
jmp +1
nop -327
acc +29
jmp -114
acc +11
acc +17
acc +26
nop -104
jmp -428
nop -178
nop -242
acc +29
acc +5
jmp -245
jmp -417
jmp -278
acc +35
acc +21
jmp +1
nop -263
jmp +8
acc +42
jmp -95
nop -312
acc -11
acc +34
acc +0
jmp +19
acc +8
acc -13
acc +32
acc +21
jmp -208
acc +15
acc +39
nop -194
jmp -280
jmp +24
nop -516
acc +21
acc +48
jmp -367
jmp -121
acc +49
acc -16
jmp -136
acc +0
jmp -148
jmp -85
jmp -103
nop -446
jmp -242
acc -12
acc +13
acc +31
acc -1
jmp -435
nop -420
acc +22
acc -5
jmp -567
nop -354
acc +11
acc +33
acc +45
jmp -76
acc -2
acc +0
acc +25
acc +46
jmp -555
acc +0
acc +11
nop -2
jmp -394
jmp -395
acc +8
acc +14
acc +47
acc +22
jmp +1

2
2020/data/day9.expected Normal file
View file

@ -0,0 +1,2 @@
26134589
3535124

1000
2020/data/day9.input Normal file

File diff suppressed because it is too large Load diff

11
2020/day1/day1.hs Normal file
View file

@ -0,0 +1,11 @@
import AoC
import Data.List
import Data.Maybe
import Control.Monad
find_n_summing :: (Num a, Eq a) => a -> Int -> [a] -> Maybe [a]
find_n_summing to = (find ((to ==) . sum) .) . replicateM
main = runAoC (fmap read <$> lines) (solution 2) (solution 3)
where solution = product . fromJust .: find_n_summing 2020

21
2020/day1/day1.py Executable file
View file

@ -0,0 +1,21 @@
#!/usr/bin/env python
import itertools
import sys
from typing import Iterable
def product(nums: Iterable[int]) -> int:
"""
Returns the product of all elements in 'nums'
"""
x = 1
for num in nums:
x *= num
return x
def find_summing(arity: int, nums: Iterable[int]) -> int:
return product(next(filter(lambda xs: sum(xs) == 2020, itertools.permutations(nums, r=arity))))
if __name__ == '__main__':
nums = [int(n) for n in sys.stdin.readlines()]
print(find_summing(2, nums))
print(find_summing(3, nums))

17
2020/day10/day10.hs Normal file
View file

@ -0,0 +1,17 @@
import AoC
import Data.List
pairs :: [a] -> [(a, a)]
pairs xs = zipWith (,) xs (tail xs)
part1 :: [Int] -> Int
part1 = product . map length . group . sort . map (uncurry $ flip (-)) . pairs
numArrangements :: [Int] -> Int
numArrangements = snd . head . go
where go xs = foldr (\x acc -> (x, sum . map snd . takeWhile (\(y, _) -> x-y <= 3) $ acc) : acc) [(last xs, 1)] $ init xs
main = runAoC (addPhonePort . sortReverse . (0:) . map read . lines) part1 numArrangements
where addPhonePort (x:xs) = (x+3):x:xs
sortReverse = sortBy (flip compare)

101
2020/day11/day11.py Normal file
View file

@ -0,0 +1,101 @@
#!/usr/bin/env python
from copy import deepcopy
from enum import Enum, auto
from functools import cache
from itertools import chain
import sys
from typing import Iterable, List, Optional, Tuple
NEIGHBOURS = [(dx, dy) for dy in (-1, 0, 1) for dx in (-1, 0, 1) if not dx == dy == 0]
class Tile(Enum):
FLOOR = '.'
FREE = 'L'
OCCUPIED = '#'
class Layout:
def __init__(
self,
s: str,
max_neighbour_steps: Optional[int],
occupied_neighbours_to_leave: int):
self._store = [[Tile(c) for c in line] for line in s.splitlines()]
self.num_rows = len(self._store)
self.num_cols = len(self._store[0])
self.max_neighbour_steps = max_neighbour_steps
self.occupied_neighbours_to_leave = occupied_neighbours_to_leave
def tiles(self) -> Iterable[Tile]:
return chain.from_iterable(self._store)
def get(self, row: int, col: int) -> Tile:
return self._store[row][col]
def set(self, row: int, col: int, t: Tile) -> None:
self._store[row][col] = t
def step(self) -> bool:
new_tiles = []
for row in range(self.num_rows):
for col in range(self.num_cols):
num_neighbours = self.count_neighbours(row, col)
tile = self.get(row, col)
new_tile = None
if tile == Tile.FREE and num_neighbours == 0:
new_tile = Tile.OCCUPIED
elif tile == Tile.OCCUPIED and num_neighbours >= self.occupied_neighbours_to_leave:
new_tile = Tile.FREE
if new_tile is not None:
new_tiles.append((row, col, new_tile))
for row, col, tile in new_tiles:
self.set(row, col, tile)
return len(new_tiles) != 0
def _find_neighbour(self, row: int, col: int, direction: Tuple[int, int]) -> Optional[Tuple[int, int]]:
steps = 0
while self.max_neighbour_steps is None or steps < self.max_neighbour_steps:
row += direction[0]
col += direction[1]
if row < 0 or row >= self.num_rows:
break
if col < 0 or col >= self.num_cols:
break
if self.get(row, col) != Tile.FLOOR:
return (row, col)
steps += 1
return None
@cache
def _neighbour_coords(self, row: int, col: int) -> List[Tuple[int, int]]:
coords = []
for direction in NEIGHBOURS:
neighbour = self._find_neighbour(row, col, direction)
if neighbour is not None:
coords.append(neighbour)
return coords
def neighbours(self, row: int, col: int) -> Iterable[Tile]:
for nrow, ncol in self._neighbour_coords(row, col):
yield self.get(nrow, ncol)
def count_neighbours(self, row: int, col: int) -> int:
return sum(1 for tile in self.neighbours(row, col) if tile == Tile.OCCUPIED)
def run(layout: Layout) -> int:
while layout.step():
pass
return len([t for t in layout.tiles() if t == Tile.OCCUPIED])
if __name__ == '__main__':
layout_str = sys.stdin.read()
print(run(Layout(layout_str, 1, 4)))
print(run(Layout(layout_str, None, 5)))

47
2020/day13/day13.hs Normal file
View file

@ -0,0 +1,47 @@
module Day13 where
import AoC
import Data.List
import Data.List.Split
import Data.Maybe
import Data.Ord
import Data.Tuple
-- | inverse integer modulus, "remainder until the next multiple of d"
--
-- @(n + n `'invMod'` d) `'mod'` d == 0@
invMod :: Integral a => a -> a -> a
invMod n d | r == 0 = 0
| otherwise = d - r
where r = n `mod` d
-- | @'combineRemainders' (r1, d1) (r2, d2) = (r3, d3)@ combines a relation of the form
--
-- @
-- x = r1 (mod d1)
-- x = r2 (mod d2)
-- @
--
-- into a single relation
--
-- @
-- x = r3 (mod d3)
-- @
--
-- @d1@ should be larger than @d2@ for better performance.
combineRemainders :: (Integral a) => (a, a) -> (a, a) -> (a, a)
combineRemainders (r1, d1) (r2, d2) = (fromJust . find (\x -> x `mod` d2 == r2) $ [r1,d1+r1..], d1*d2)
part1 :: Int -> [Int] -> Int
part1 arr = uncurry (*) . minimumBy (comparing snd) . map (toSnd $ invMod arr)
where toSnd f x = (x, f x)
part2 :: [Maybe Int] -> Int
part2 = fst . foldl1 combineRemainders . map (\(r, d) -> (r `invMod` d, d)) . catMaybes . map sequence . enumerate 0
where enumerate start (x:xs) = (start, x) : enumerate (succ start) xs
enumerate _ [] = []
main = runAoC (intoTuple . map (map (fmap read . justIf (/="x")) . splitOn ",") . lines) (uncurry part1 . fmap catMaybes) (part2 . snd)
where intoTuple [[Just x], y] = (x, y)
justIf p x = if p x then Just x else Nothing

82
2020/day14/day14.hs Normal file
View file

@ -0,0 +1,82 @@
{-# LANGUAGE NamedFieldPuns #-}
module Day14 where
import AoC
import Data.Bits
import Data.List
import Data.Map (Map)
import qualified Data.Map as M
import Data.Maybe
import Data.Tuple
import Data.Word
import Text.ParserCombinators.ReadP
import Text.Read.Lex
data Mask = Mask { set :: Word64
, clear :: Word64
, dontcare :: Word64
} deriving (Eq, Show)
data Store = Store { address :: Word64
, value :: Word64
} deriving (Show)
parseMaskDecl :: ReadP Mask
parseMaskDecl = do
string "mask = "
mask <- many1 (choice $ char <$> "01X")
let extractMask c = foldl setBit zeroBits . findIndices (==c) . reverse $ mask
return $ Mask { set = extractMask '1'
, clear = extractMask '0'
, dontcare = extractMask 'X'
}
parseStoreInstruction :: ReadP Store
parseStoreInstruction = do
string "mem"
address <- between (char '[') (char ']') readDecP
string " = "
value <- readDecP
return $ Store {address, value}
parseGroup :: ReadP (Mask, [Store])
parseGroup = do
mask <- parseMaskDecl
char '\n'
stores <- parseStoreInstruction `endBy` (char '\n')
return (mask, stores)
runStores :: [Store] -> Word64
runStores = sum . M.fromList . map (\(Store a v) -> (a, v))
applyMask :: Mask -> Word64 -> Word64
applyMask Mask{set, clear} n = (n .|. set) .&. complement clear
maskValues :: Mask -> [Store] -> [Store]
maskValues mask = map maskValue
where maskValue store@Store{value} = store {value = applyMask mask value}
maskAddresses :: Mask -> [Store] -> [Store]
maskAddresses mask = concatMap maskAddress
where maskAddress store@Store{address} = map (\m -> store {address = applyMask m address}) . evalDontcare $ mask { clear = 0 }
evalDontcare :: Mask -> [Mask]
evalDontcare = go 0
where go i mask@Mask{set, clear, dontcare}
| dontcare == 0 = [mask]
| dontcare `testBit` i = go (i+1) withSet ++ go (i+1) withClear
| otherwise = go (i+1) mask
where new = mask { dontcare = dontcare `clearBit` i }
withSet = new { set = set `setBit` i }
withClear = new { clear = clear `setBit` i }
part1 :: [(Mask, [Store])] -> Word64
part1 = runStores . concatMap (uncurry maskValues)
part2 :: [(Mask, [Store])] -> Word64
part2 = runStores . concatMap (uncurry maskAddresses)
main = runAoC readGroups part1 part2
where readGroups = fromJust . oneCompleteResult (many parseGroup)

27
2020/day15/day15.py Normal file
View file

@ -0,0 +1,27 @@
#!/usr/bin/env python
import sys
def run_game(init, iterations):
last_seen = {}
previous = None
for i, n in enumerate(init):
if previous is not None:
last_seen[previous] = i-1
previous = n
for i in range(i+1, iterations):
if previous in last_seen:
x = i - last_seen[previous] - 1
else:
x = 0
last_seen[previous] = i-1
previous = x
return previous
if __name__ == '__main__':
init = [int(n) for n in sys.stdin.read().split(',')]
print(run_game(init, 2020))
print(run_game(init, 30000000))

95
2020/day16/day16.hs Normal file
View file

@ -0,0 +1,95 @@
{-# LANGUAGE NamedFieldPuns #-}
module Day16 where
import AoC
import Data.List
import Data.Maybe
import qualified Data.Set as S
import Data.Set (Set)
import Text.ParserCombinators.ReadP
import Text.Read.Lex
data Field = Field { name :: String
, valids :: Set Int
} deriving (Show)
type Ticket = [Int]
data Input = Input { fields :: [Field]
, myTicket :: Ticket
, otherTickets :: [Ticket]
} deriving (Show)
line :: ReadP a -> ReadP a
line p = p <* char '\n'
parseField :: ReadP Field
parseField = do
name <- many1 $ satisfy (/=':')
string ": "
ranges <- parseRange `sepBy` string " or "
let valids = S.fromList . concat . map (uncurry enumFromTo) $ ranges
return $ Field { name, valids }
where parseRange = do
n1 <- readDecP
char '-'
n2 <- readDecP
return (n1, n2)
parseTicket :: ReadP Ticket
parseTicket = readDecP `sepBy` char ','
parseInput :: ReadP Input
parseInput = do
fields <- many1 $ line parseField
line $ string ""
line $ string "your ticket:"
myTicket <- line parseTicket
line $ string ""
line $ string "nearby tickets:"
otherTickets <- many1 $ line parseTicket
return $ Input {fields, myTicket, otherTickets }
matchesAnyField :: [Field] -> Int -> Bool
matchesAnyField fields n = any ((n `S.member`) . valids) fields
iterateUntilNothing :: (a -> Maybe a) -> a -> a
iterateUntilNothing f x = maybe x (iterateUntilNothing f) $ f x
data Resolve a = Resolved a | Choice (Set a) deriving (Show)
resolve :: Ord a => [[a]] -> Maybe [a]
resolve = sequence . map fromResolved . iterateUntilNothing resolve' . map (Choice . S.fromList)
where fromResolved (Resolved x) = Just x
fromResolved _ = Nothing
findSingletonChoice :: [Resolve a] -> Maybe (a, [Resolve a])
findSingletonChoice [] = Nothing
findSingletonChoice (x:xs) =
case x of
Choice s | S.size s == 1 -> let [r] = S.elems s
in Just (r, Resolved r : xs)
_ -> fmap (\(r, rest) -> (r, x:rest)) $ findSingletonChoice xs
resolve' :: Ord a => [Resolve a] -> Maybe [Resolve a]
resolve' xs = do
(r, xs') <- findSingletonChoice xs
return $ map (dropChoice r) xs'
where dropChoice x (Choice s) = Choice (S.delete x s)
dropChoice _ y = y
part1 :: Input -> Int
part1 Input { fields, otherTickets } = sum . filter (not . matchesAnyField fields) . concat $ otherTickets
part2 :: Input -> Int
part2 Input { fields, myTicket, otherTickets } = product departureValues
where validTickets = filter (all $ matchesAnyField fields) otherTickets
columns = transpose validTickets
fieldNames = fromJust . resolve . map findPossibleFields $ columns
departureIndices = findIndices ("departure" `isPrefixOf`) fieldNames
departureValues = map (myTicket !!) departureIndices
findPossibleFields col = map name . filter (\field -> all (`S.member` valids field) col) $ fields
main = runAoC (fromJust . oneCompleteResult parseInput) part1 part2

23
2020/day17/day17.hs Normal file
View file

@ -0,0 +1,23 @@
{-# LANGUAGE TypeSynonymInstances, FlexibleInstances, DataKinds #-}
module Day17 where
import AoC
import Conway
import Data.List
import Data.Vector.Sized (Vector)
import qualified Data.Vector.Sized as V
import Data.Set (Set)
import qualified Data.Set as S
instance (Num a, Eq a) => Index (Vector n a) where
neighbours i = filter (/= i) . V.mapM (flip map [-1, 0, 1] . (+)) $ i
addIndex = V.zipWith (+)
run6 :: (Index i, Ord i) => Set i -> Int
run6 = S.size . (!! 6) . iterate (update (==3) (`notElem` [2, 3]))
main = runAoC (toIndices . lines) (run6 . S.fromList . map extendIndex) (run6 . S.fromList . map (extendIndex . extendIndex))
where toIndices input = [V.fromTuple (row, col) :: Vector 2 Int | (row, line) <- zip [0..] input, (col, '#') <- zip [0..] line]
extendIndex = V.cons 0

56
2020/day18/day18.hs Normal file
View file

@ -0,0 +1,56 @@
module Day18 where
import AoC
import Control.Applicative
import Data.Maybe
import Text.ParserCombinators.ReadP
import Text.Read.Lex
data Expression = Literal Int
| Addition Expression Expression
| Multiplication Expression Expression
| Bracketed Expression
type ApplicationSequencer = Expression -> String -> Expression -> Expression
parseLiteral :: ReadP Expression
parseLiteral = Literal <$> readDecP
parseBracketed :: ApplicationSequencer -> ReadP Expression
parseBracketed seq = Bracketed <$> between (char '(') (char ')') (parseExpression seq)
parseOperations :: ApplicationSequencer -> ReadP Expression
parseOperations seq =
do l <- parseLiteral <|> parseBracketed seq
apps <- many1 $ parseApplication seq
return $ foldl (\l (op, r) -> seq l op r) l apps
parseApplication :: ApplicationSequencer -> ReadP (String, Expression)
parseApplication seq =
do skipSpaces
op <- choice $ map string ["*", "+"]
skipSpaces
r <- parseLiteral <|> parseBracketed seq
return $ (op, r)
parseExpression :: ApplicationSequencer -> ReadP Expression
parseExpression seq = parseLiteral <|> parseOperations seq <|> parseBracketed seq
sequenceLeftToRight :: ApplicationSequencer
sequenceLeftToRight l op r = toOperation op l r
where toOperation "*" = Multiplication
toOperation "+" = Addition
sequenceAdditionPrecedence :: ApplicationSequencer
sequenceAdditionPrecedence (Multiplication l r) "+" rr = Multiplication l (Addition r rr)
sequenceAdditionPrecedence l op r = sequenceLeftToRight l op r
eval :: Expression -> Int
eval (Literal n) = n
eval (Addition l r) = eval l + eval r
eval (Multiplication l r) = eval l * eval r
eval (Bracketed x) = eval x
main = runAoC lines (run sequenceLeftToRight) (run sequenceAdditionPrecedence)
where run seq = sum . map (eval . fromJust . oneCompleteResult (parseExpression seq))

45
2020/day19/day19.hs Normal file
View file

@ -0,0 +1,45 @@
module Day19 where
import AoC
import Control.Applicative
import Data.Char
import Data.Foldable
import Data.Map (Map, (!))
import qualified Data.Map as M
import Data.Maybe
import Data.Tuple
import Text.ParserCombinators.ReadP
import Text.Read.Lex
data RuleElement = Literal String | Reference Int
parseElement :: ReadP RuleElement
parseElement = parseRef <|> parseLit
where parseRef = Reference <$> readDecP
parseLit = Literal <$> between (char '"') (char '"') (many1 $ satisfy isAlphaNum)
parseRule :: ReadP (Int, [[RuleElement]])
parseRule = do ruleNum <- readDecP
string ": "
alternatives <- parseAlternatives
return (ruleNum, alternatives)
where parseAlternatives = parseSequence `sepBy` string " | "
parseSequence = parseElement `sepBy` char ' '
buildParser :: Map Int [[RuleElement]] -> Int -> ReadP String
buildParser m i = buildAlternatives $ m ! i
where buildAlternatives = asum . map buildSequence
buildSequence = foldl1 (liftA2 (++)) . map buildElement
buildElement (Literal s) = string s
buildElement (Reference j) = buildParser m j
countRootMatches :: [String] -> Map Int [[RuleElement]] -> Int
countRootMatches input rules = length . filter (isJust . oneCompleteResult rootParser) $ input
where rootParser = buildParser rules 0
main = runAoC splitInput run (run . withExtraRules)
where splitInput = swap . fmap tail . break (=="") . lines
withExtraRules = fmap (++ ["8: 42 | 42 8", "11: 42 31 | 42 11 31"])
run = uncurry countRootMatches . fmap parseRules
parseRules = M.fromList . map (fromJust . oneCompleteResult parseRule)

40
2020/day2/day2.hs Normal file
View file

@ -0,0 +1,40 @@
module Day2 where
import AoC
import Data.Char
import Data.Maybe
import Text.ParserCombinators.ReadP
import Text.Read.Lex
data Line = Line
{ num1 :: Int
, num2 :: Int
, letter :: Char
, password :: String
}
instance Show Line where
show (Line num1 num2 letter password) = show num1 ++ "-" ++ show num2 ++ " " ++ [letter] ++ ": " ++ password
parseLine :: ReadP Line
parseLine = do
num1 <- readDecP
string "-"
num2 <- readDecP
string " "
letter <- get
string ": "
password <- munch1 $ const True
eof
return (Line num1 num2 letter password)
valid_1 :: Line -> Bool
valid_1 (Line min max letter password) = within min max $ length $ filter (== letter) password
where within x y z = x <= z && z <= y
valid_2 :: Line -> Bool
valid_2 (Line pos1 pos2 letter password) = (matchesAt pos1) /= (matchesAt pos2)
where matchesAt pos = password !! (pos-1) == letter
main = runAoC (map (fromJust . oneCompleteResult parseLine) . lines) (length . filter valid_1) (length . filter valid_2)

22
2020/day2/day2.py Executable file
View file

@ -0,0 +1,22 @@
#!/usr/bin/env python
import re
import sys
from collections import Counter
r = re.compile(r'(\d+)-(\d+) (.): (.*)')
def requirements_met_1(min_required, max_required, letter, password):
return min_required <= Counter(password)[letter] <= max_required
def requirements_met_2(first_pos, second_pos, letter, password):
return (password[first_pos-1] == letter) != (password[second_pos-1] == letter)
def do_line(req_func, line):
min_required, max_required, letter, password = r.match(line).groups()
return req_func(int(min_required), int(max_required), letter, password)
if __name__ == '__main__':
lines = list(sys.stdin.readlines())
for func in (requirements_met_1, requirements_met_2):
print(len(list(filter(lambda line: do_line(func, line), lines))))

5
2020/day2/vhdl/.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
workdir/
*.o
*.ghw
day2
top_syn.vhd

16
2020/day2/vhdl/day2.vhdl Normal file
View file

@ -0,0 +1,16 @@
configuration day2 of sim is
for aoc_stdio
for dut_inst: dut
use entity work.top port map (
clk => clk,
reset => reset,
char => char,
input_valid => input_valid,
num_verified => output,
output_valid => output_valid
);
end for;
end for;
end configuration;

View file

@ -0,0 +1,81 @@
library ieee;
use ieee.std_logic_1164.all;
use work.util.all;
entity parser is
port (
clk : in std_logic;
reset : in std_logic;
is_data : out std_logic;
record_end : out std_logic;
char : in character;
input_valid : in std_logic;
num1, num2 : out natural range 0 to 99;
letter : out character
);
end entity;
architecture behaviour of parser is
type state_t is (S_NUM1, S_NUM2, S_LETTER, S_COLON, S_END_SPACE, S_DATA);
signal state : state_t := S_NUM1;
type multiples_lookup_t is array(digit_t) of natural range 0 to 90;
constant TEN_MULTIPLES : multiples_lookup_t := (0, 10, 20, 30, 40, 50, 60, 70, 80, 90);
-- most significant digit of number
signal prev_digit : digit_t := 0;
signal current_digit : digit_t;
signal complete_num : natural range 0 to 99;
begin
current_digit <= char_to_digit(char);
complete_num <= TEN_MULTIPLES(prev_digit) + current_digit;
process(clk)
begin
if rising_edge(clk) then
record_end <= '0';
if reset then
prev_digit <= 0;
state <= S_NUM1;
elsif input_valid then
prev_digit <= 0;
case state is
when S_NUM1 =>
if char = '-' then
state <= S_NUM2;
else
num1 <= complete_num;
prev_digit <= current_digit;
end if;
when S_NUM2 =>
if char = ' ' then
state <= S_LETTER;
else
num2 <= complete_num;
prev_digit <= current_digit;
end if;
when S_LETTER =>
letter <= char;
state <= S_COLON;
when S_COLON =>
state <= S_END_SPACE;
when S_END_SPACE =>
state <= S_DATA;
when S_DATA =>
if char = LF then
state <= S_NUM1;
record_end <= '1';
end if;
end case;
end if;
end if;
end process;
is_data <= '1' when state = S_DATA else '0';
end architecture;

8
2020/day2/vhdl/run.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
source "$COMMON_DIR/vhdl_run.sh"
cd "$(dirname "${BASH_SOURCE[0]}")"
DUT_OUTPUT_WIDTH=12
test_synth day2 parser.vhdl verifier.vhdl top.vhdl

46
2020/day2/vhdl/sim.gtkw Normal file
View file

@ -0,0 +1,46 @@
[*]
[*] GTKWave Analyzer v3.3.109 (w)1999-2020 BSI
[*] Wed Dec 1 11:30:36 2021
[*]
[dumpfile] "/home/xiretza/dev/advent-of-code/2020/day2/vhdl/workdir/sim1.ghw"
[dumpfile_mtime] "Wed Dec 1 11:29:37 2021"
[dumpfile_size] 408417
[savefile] "/home/xiretza/dev/advent-of-code/2020/day2/vhdl/sim.gtkw"
[timestart] 411833500000
[size] 1920 1035
[pos] -1 -1
*-25.864407 520000000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] top.
[treeopen] top.sim.
[treeopen] top.sim.top.
[sst_width] 221
[signals_width] 260
[sst_expanded] 1
[sst_vpaned_height] 233
@28
top.sim.clk
top.sim.reset
@420
top.sim.top.char
@28
top.sim.input_valid
@200
-
@28
top.sim.top.parser_inst.is_data
@420
top.sim.top.num1
top.sim.top.num2
top.sim.top.letter
@200
-
@29
top.sim.top.record_end
@28
top.sim.top.verified
@200
-
@24
#{top.sim.num_verified[11:0]} top.sim.num_verified[11] top.sim.num_verified[10] top.sim.num_verified[9] top.sim.num_verified[8] top.sim.num_verified[7] top.sim.num_verified[6] top.sim.num_verified[5] top.sim.num_verified[4] top.sim.num_verified[3] top.sim.num_verified[2] top.sim.num_verified[1] top.sim.num_verified[0]
[pattern_trace] 1
[pattern_trace] 0

87
2020/day2/vhdl/top.vhdl Normal file
View file

@ -0,0 +1,87 @@
library ieee;
use ieee.std_logic_1164.all,
ieee.numeric_std.all;
entity top is
generic (
OUTPUT_WIDTH : positive;
STEP : natural range 1 to 2
);
port (
clk : in std_logic;
reset : in std_logic;
char : in character;
input_valid : in std_logic;
num_verified : out unsigned(OUTPUT_WIDTH-1 downto 0) := (others => '0');
output_valid : out std_logic
);
end entity;
architecture behaviour of top is
signal is_data : std_logic;
signal num1, num2 : natural range 0 to 99;
signal letter : character;
signal record_end : std_logic;
signal verified : std_logic;
begin
parser_inst: entity work.parser
port map (
clk => clk,
reset => reset,
record_end => record_end,
is_data => is_data,
char => char,
input_valid => input_valid,
num1 => num1,
num2 => num2,
letter => letter
);
generate_verifier: if step = 1 generate
verifier_inst: entity work.verifier(step1)
port map (
clk => clk,
reset => reset or record_end,
enable => is_data and input_valid,
num1 => num1,
num2 => num2,
letter => letter,
char => char,
verified => verified
);
elsif step = 2 generate
verifier_inst: entity work.verifier(step2)
port map (
clk => clk,
reset => reset or record_end,
enable => is_data and input_valid,
num1 => num1,
num2 => num2,
letter => letter,
char => char,
verified => verified
);
else generate
assert false report "Bad value for ""step""" severity failure;
end generate;
process(clk)
begin
if rising_edge(clk) then
if reset then
num_verified <= (others => '0');
elsif record_end and verified then
num_verified <= num_verified + 1;
end if;
end if;
end process;
output_valid <= '1';
end architecture;

View file

@ -0,0 +1,58 @@
library ieee;
use ieee.std_logic_1164.all;
entity verifier is
port (
clk : in std_logic;
reset : in std_logic;
enable : in std_logic;
num1, num2 : in natural range 0 to 99;
letter : in character;
char : in character;
verified : out std_logic
);
end entity;
architecture step1 of verifier is
signal count : natural range 0 to 99;
begin
process(clk)
begin
if rising_edge(clk) then
if reset then
count <= 0;
elsif enable then
if char = letter then
count <= count + 1;
end if;
end if;
end if;
end process;
verified <= '1' when num1 <= count and count <= num2 else '0';
end architecture;
architecture step2 of verifier is
signal count : natural range 1 to 99;
signal parity : std_logic;
begin
process(clk)
begin
if rising_edge(clk) then
if reset then
count <= 1;
parity <= '0';
elsif enable then
count <= count + 1;
if (count = num1 or count = num2) and char = letter then
parity <= not parity;
end if;
end if;
end if;
end process;
verified <= parity;
end architecture;

34
2020/day21/day21.py Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env python
import sys
def parse_line(line):
ingredients, allergens = line.split('(contains ')
return (set(ingredients.strip().split(' ')), set(allergens.strip().strip(')').split(', ')))
def reduce(allergen_name_candidates):
name, allergen = next((list(names)[0], allergen) for allergen, names in allergen_name_candidates.items() if len(names) == 1)
for names in allergen_name_candidates.values():
names.discard(name)
del allergen_name_candidates[allergen]
return name, allergen
if __name__ == '__main__':
lines = [parse_line(line) for line in sys.stdin.readlines()]
allergens = set.union(*(allergens for _, allergens in lines))
allergen_name_candidates = {}
for allergen in allergens:
allergen_name_candidates[allergen] = set.intersection(*(ingredients for ingredients, allergens in lines if allergen in allergens))
allergen_names = {}
while allergen_name_candidates:
name, allergen = reduce(allergen_name_candidates)
assert name not in allergen_names
allergen_names[name] = allergen
total = sum(len(ingredients - set(allergen_names)) for ingredients, _ in lines)
print(total)
names = ','.join(name for name, _ in sorted(list(allergen_names.items()), key=lambda x: x[1]))
print(names)

33
2020/day24/day24.hs Normal file
View file

@ -0,0 +1,33 @@
module Day24 where
import AoC
import Conway
import Data.List
import qualified Data.Set as S
import Optics.Core hiding (Index)
import Optics.TH
data Coord = Coord { east :: Int
, northeast :: Int
} deriving (Eq, Ord)
instance Index Coord where
neighbours c = map (addIndex c . uncurry Coord) offsets
where offsets = [(0, -1), (0, 1), (1, -1), (1, 0), (-1, 0), (-1, 1)]
addIndex (Coord x1 y1) (Coord x2 y2) = Coord (x1 + x2) (y1 + y2)
parseSteps :: String -> Coord
parseSteps [] = Coord 0 0
parseSteps xs = case xs of
('n':'w':xs) -> go (-1, 1) xs
('w':xs) -> go (-1, 0) xs
('s':'w':xs) -> go (0, -1) xs
('n':'e':xs) -> go (0, 1) xs
('e':xs) -> go (1, 0) xs
('s':'e':xs) -> go (1, -1) xs
where go (e, ne) xs = addIndex (Coord e ne) $ parseSteps xs
main = runAoC (onlySet . map parseSteps . lines) length (length . conwayN 100 . S.fromList)
where onlySet = map head . filter (odd . length) . group . sort
conwayN n = last . take n . tail . iterate (update (==2) (`notElem` [1, 2]))

28
2020/day3/day3.hs Normal file
View file

@ -0,0 +1,28 @@
import AoC
import Control.Applicative (empty)
import Control.Monad.Zip (mzip)
import Data.List (intercalate)
import Data.Maybe (catMaybes)
compose2 :: (a' -> b' -> c) -> (a -> a') -> (b -> b') -> a -> b -> c
compose2 f g h x y = f (g x) (h y)
(??) :: Functor f => f (a -> b) -> a -> f b
f ?? x = fmap ($ x) f
countHits :: (Int, Int) -> [[Bool]] -> Int
countHits = length . filterMap lookup . catMaybes .: compose2 (zipWith mzip) maybeIndices justLines
where justRightSteps = map (pure . Just) . enumFromThen 0
downNothings = flip replicate Nothing . pred
maybeIndices = uncurry $ compose2 (flip intercalate) justRightSteps downNothings
justLines = map Just
lookup = uncurry $ flip (!!)
filterMap = filter id .: map
treeCharToBool :: Char -> Bool
treeCharToBool = (== '#')
main = runAoC (map (cycle . map treeCharToBool) . lines) part1 part2
where part1 = countHits (3, 1)
part2 = product . (fmap countHits [(1,1), (3,1), (5,1), (7,1), (1,2)] ??)

21
2020/day3/day3.py Executable file
View file

@ -0,0 +1,21 @@
#!/usr/bin/env python
import sys
def count_trees(right, down, lines):
n = 0
for i, line in enumerate(lines[::down]):
c = line[(i*right) % len(line)]
if c == '#':
n += 1
return n
if __name__ == '__main__':
lines = [line.strip() for line in sys.stdin.readlines()]
print(count_trees(3, 1, lines))
hits_multiplied = 1
for slope in ((1,1), (3,1), (5,1), (7,1), (1,2)):
hits_multiplied *= count_trees(*slope, lines)
print(hits_multiplied)

97
2020/day4/day4.hs Normal file
View file

@ -0,0 +1,97 @@
import AoC
import Control.Applicative ((<|>))
import Control.Monad (guard, mfilter)
import Data.Char (isDigit)
import Data.List (intercalate)
import Data.Maybe (mapMaybe)
import Text.ParserCombinators.ReadP
import Text.Read (readMaybe)
data HeightUnit = Centimeter | Inch deriving (Show, Eq)
data ColourSpec = Amber | Blue | Brown | Gray | Green | Hazel | Other
deriving (Show, Eq)
data Field = BirthYear Int
| IssueYear Int
| ExpirationYear Int
| Height Int HeightUnit
| HairColour String
| EyeColour ColourSpec
| PassportID String
| CountryID String
deriving (Show, Eq)
fieldSpecs :: [(String, ReadP Field)]
fieldSpecs = [ ("byr", BirthYear <$> parseYearIn 1920 2002)
, ("iyr", IssueYear <$> parseYearIn 2010 2020)
, ("eyr", ExpirationYear <$> parseYearIn 2020 2030)
, ("hgt", do h <- parseNumber 2 <|> parseNumber 3
u <- parseHeightUnit
case u of
Inch -> guard $ within 59 76 h
Centimeter -> guard $ within 150 193 h
return $ Height h u)
, ("hcl", char '#' >> HairColour <$> count 6 parseHexDigit)
, ("ecl", EyeColour <$> parseColourSpec)
, ("pid", PassportID <$> count 9 (satisfy $ const True))
, ("cid", CountryID <$> munch1 (/= ' '))
]
where parseYearIn = flip mfilter (parseNumber 4) .: within
parseHexDigit = choice . map char $ ['0'..'9']++['a'..'f']
within :: Ord a => a -> a -> a -> Bool
within a b x = a <= x && x <= b
parseNumber :: (Num a, Read a) => Int -> ReadP a
parseNumber n = do
Just digits <- readMaybe <$> count n (satisfy isDigit)
return digits
parseHeightUnit :: ReadP HeightUnit
parseHeightUnit = choice [ string "cm" >> return Centimeter
, string "in" >> return Inch
]
parseColourSpec :: ReadP ColourSpec
parseColourSpec = choice [ string "amb" >> return Amber
, string "blu" >> return Blue
, string "brn" >> return Brown
, string "gry" >> return Gray
, string "grn" >> return Green
, string "hzl" >> return Hazel
, string "oth" >> return Other
]
parseKeyValue :: ReadP k -> ReadP v -> ReadP (k, v)
parseKeyValue kp vp = do k <- kp
char ':'
v <- vp
return (k, v)
parseFieldName :: ReadP String
parseFieldName = fmap fst $ choice
$ map (\(k, _) -> parseKeyValue (string k) (munch1 (/= ' ')))
$ fieldSpecs
parseField :: ReadP Field
parseField = fmap snd $ choice
$ map (\(k, v) -> parseKeyValue (string k) v)
$ fieldSpecs
spaceSeparated :: ReadP a -> ReadP [a]
spaceSeparated = flip sepBy (many1 $ char ' ')
parseFieldNames :: ReadP [String]
parseFieldNames = spaceSeparated parseFieldName
parsePassport :: ReadP [Field]
parsePassport = spaceSeparated parseField
hasAllRequiredFields :: String -> Bool
hasAllRequiredFields = maybe False containsAllFields . fieldNames
where requiredFieldNames = ["byr", "iyr", "eyr", "hgt", "hcl", "ecl", "pid"]
containsAllFields fields = all (`elem` fields) requiredFieldNames
fieldNames = oneCompleteResult parseFieldNames
main = runAoC (filter hasAllRequiredFields . map unwords . splitOnEmptyLines) length (length . mapMaybe (oneCompleteResult parsePassport))

59
2020/day4/day4.py Executable file
View file

@ -0,0 +1,59 @@
#!/usr/bin/env python
import sys
def within(a, b, x):
return a <= x <= b
PASSPORT_FIELDS = {
'byr': lambda s: len(s) == 4 and within(1920, 2002, int(s)),
'iyr': lambda s: len(s) == 4 and within(2010, 2020, int(s)),
'eyr': lambda s: len(s) == 4 and within(2020, 2030, int(s)),
'hgt': lambda s: within(*{'cm': (150, 193), 'in': (59, 76)}[s[-2:]], int(s[:-2])),
'hcl': lambda s: len(s) == 7 and s[0] == '#' and all(c in "0123456789abcdef" for c in s[1:]),
'ecl': lambda s: s in ('amb', 'blu', 'brn', 'gry', 'grn', 'hzl', 'oth'),
'pid': lambda s: len(s) == 9 and s.isdigit(),
}
def parse_passport(line):
d = {}
for entry in line.split():
k, v = entry.split(':', maxsplit=1)
d[k] = v
return d
def check_passport_fields_exist(passport):
return set(PASSPORT_FIELDS.keys()) <= set(passport.keys())
def check_passport_fields_valid(passport):
for name, spec in PASSPORT_FIELDS.items():
try:
valid = spec(passport[name])
except:
valid = False
if not valid:
return False
return True
def split_on(f, it):
current_part = []
for el in it:
if f(el):
yield current_part
current_part = []
else:
current_part.append(el)
if current_part != []:
yield current_part
if __name__ == '__main__':
lines = [line.strip() for line in sys.stdin.readlines()]
specs = list(' '.join(lines) for lines in split_on(lambda l: l == "", lines))
passports = [parse_passport(spec) for spec in specs]
print(len(list(filter(check_passport_fields_exist, passports))))
print(len(list(filter(check_passport_fields_valid, passports))))

23
2020/day5/day5.hs Normal file
View file

@ -0,0 +1,23 @@
import AoC
import Data.List (sort)
import Data.Maybe (fromJust)
import Numeric (readInt)
import Text.ParserCombinators.ReadP
binarify :: String -> Maybe Int
binarify = oneCompleteResult . readS_to_P $ readInt 2 (`elem` "BFLR") digitValue
where digitValue 'F' = 0
digitValue 'B' = 1
digitValue 'L' = 0
digitValue 'R' = 1
findHole :: (Enum a, Eq a) => [a] -> Maybe a
findHole (x:y:ys) | y == next = findHole $ y:ys
| otherwise = Just next
where next = succ x
findHole _ = Nothing
main = runAoC (map (fromJust . binarify) . lines) part1 part2
where part1 = foldr1 max
part2 = fromJust . findHole . sort

9
2020/day6/day6.hs Normal file
View file

@ -0,0 +1,9 @@
import AoC
import qualified Data.Set as S
import Data.Set (Set)
main = runAoC ((fmap . fmap) S.fromList . splitOnEmptyLines) part1 part2
where part1 = countSetsFolded S.union
part2 = countSetsFolded S.intersection
countSetsFolded f = sum . map (S.size . foldr1 f)

50
2020/day7/day7.py Normal file
View file

@ -0,0 +1,50 @@
#!/usr/bin/env python
from collections import defaultdict
import regex
import sys
RULE_REGEX = regex.compile(r'(.*) bags contain (?:(no|\d+) (.*?) bags?(?:, )?)+\.')
def process_rules(rules):
rules_dict = {}
for rule in rules:
m = regex.fullmatch(RULE_REGEX, rule)
if m is None:
raise ValueError(f"Couldn't parse rule: {rule!r}")
colour = m.group(1)
child_nums = m.captures(2)
child_colours = m.captures(3)
children = {}
for n, c in zip(child_nums, child_colours):
if n == 'no':
continue
children[c] = int(n)
rules_dict[colour] = children
return rules_dict
def parents_of(rules, colour):
parents = set()
for parent, children in rules.items():
if colour in children:
parents.add(parent)
parents |= parents_of(rules, parent)
return parents
def children_of(rules, colour):
children = defaultdict(lambda: 0)
for child_colour, child_num in rules[colour].items():
children[child_colour] += child_num
for col, num in children_of(rules, child_colour).items():
children[col] += child_num * num
return children
if __name__ == '__main__':
bag_rules = [rule.strip() for rule in sys.stdin.readlines()]
rules = process_rules(bag_rules)
print(len(parents_of(rules, 'shiny gold')))
print(sum(children_of(rules, 'shiny gold').values()))

119
2020/day8/day8.hs Normal file
View file

@ -0,0 +1,119 @@
{-# LANGUAGE FlexibleContexts #-}
import AoC
import Control.Applicative
import Control.Monad
import Control.Monad.ST
import Control.Monad.Trans.Class
import Control.Monad.Trans.Except
import Control.Monad.Trans.Maybe
import Data.Array.ST
import Data.Maybe
import Text.ParserCombinators.ReadP
import Text.Read.Lex
data Instruction = Nop Int | Acc Int | Jmp Int deriving (Show)
data MemoryCell = MemoryCell { instruction :: Instruction
, executed :: Bool
}
deriving (Show)
type Memory s = STArray s Int MemoryCell
data Machine s = Machine { pc :: Int
, acc :: Int
, memory :: Memory s
}
data RunError = OutOfRange | WouldLoop | Breakpoint deriving (Show)
type MachineRunner s = Machine s -> ExceptT RunError (ST s) (Machine s)
parseInstruction :: ReadP Instruction
parseInstruction = choice [ Nop <$> parseIns "nop"
, Acc <$> parseIns "acc"
, Jmp <$> parseIns "jmp"
]
where parseIns name = string name >> char ' ' >> parseNumber
parseNumber = do
sign <- option '+' (choice $ map char $ "+-")
num <- readDecP
return $ case sign of
'+' -> num
'-' -> -num
newMemory :: [Instruction] -> ST s (Memory s)
newMemory insns = newListArray (0, length insns-1) $ [MemoryCell { instruction = ins, executed = False } | ins <- insns]
newMachine :: [Instruction] -> ST s (Machine s)
newMachine insns = do
mem <- newMemory insns
return $ Machine { pc = 0, acc = 0, memory = mem }
stepMachine :: Machine s -> ST s (Machine s)
stepMachine m = do
cell <- readArray (memory m) (pc m)
writeArray (memory m) (pc m) $ cell { executed = True }
(pcF, accF) <- case instruction cell of
Nop _ -> return ((+1), id)
Acc i -> return ((+1), (+i))
Jmp i -> return ((+i), id)
let newPc = pcF $ pc m
newAcc = accF $ acc m
return $ m { pc = newPc, acc = newAcc }
runUnless :: (Machine s -> MaybeT (ST s) RunError) -> MachineRunner s -> MachineRunner s
runUnless p stepper m = do
res <- lift $ runMaybeT $ p m
case res of
Nothing -> stepper m
Just e -> throwE e
breakOnLoop :: MachineRunner s -> MachineRunner s
breakOnLoop = runUnless alreadyExecuted
where alreadyExecuted m =
do cell <- lift $ readArray (memory m) (pc m)
unless (executed cell) empty
return WouldLoop
breakOnAddr :: Int -> MachineRunner s -> MachineRunner s
breakOnAddr addr = runUnless $ fetchFrom addr
where fetchFrom addr m =
do unless (pc m == addr) empty
return Breakpoint
runUntilError :: MachineRunner s -> Machine s -> ST s (RunError, Int, Int)
runUntilError step m = do
result <- runExceptT $ step m
case result of
Right m' -> runUntilError step m'
Left e -> return (e, (pc m), (acc m))
part1 :: [Instruction] -> Int
part1 is = fromJust $ runST $ runMaybeT $ do
(WouldLoop, _, acc) <- lift $ newMachine is >>= runUntilError stepper
return acc
where stepper = breakOnLoop (lift . stepMachine)
tryTerminate :: Machine s -> MaybeT (ST s) Int
tryTerminate m = do
breakpoint <- fmap (\(_, max) -> max + 1) $ lift $ getBounds (memory m)
(Breakpoint, _, acc) <- lift $ runUntilError (stepper breakpoint) m
return acc
where stepper b = breakOnAddr b . breakOnLoop $ (lift . stepMachine)
jmpNopFlips :: [Instruction] -> [[Instruction]]
jmpNopFlips [] = []
jmpNopFlips (x:xs) = case x of
Jmp i -> (Nop i:xs) : rest
Nop i -> (Jmp i:xs) : rest
_ -> rest
where rest = (x:) <$> jmpNopFlips xs
part2 :: [Instruction] -> Int
part2 instructions = fromJust $ msum $ runST $ mapM testInstructions possibleInstructions
where testInstructions is = runMaybeT $ lift (newMachine is) >>= tryTerminate
possibleInstructions = instructions : jmpNopFlips instructions
main = runAoC (map (fromJust . oneCompleteResult parseInstruction) . lines) part1 part2

30
2020/day9/day9.hs Normal file
View file

@ -0,0 +1,30 @@
import AoC
import Control.Monad
import Data.List
import Data.Maybe
slidingWindow :: Int -> [a] -> [[a]]
slidingWindow n xs
| length xs < n = []
| otherwise = take n xs : slidingWindow n (tail xs)
summingTo :: (Eq a, Num a) => Int -> a -> [a] -> Maybe [a]
n `summingTo` x = find ((==x) . sum) . replicateM n
sublistSummingTo :: (Num a, Ord a) => a -> [a] -> Maybe [a]
sublistSummingTo n = fmap snd . find ((== n) . fst) . scanl go (0, [])
where go = dropNeeded .: addToAcc
addToAcc (sum, parts) x = (sum+x, parts++[x])
dropNeeded = fromJust . find ((<= n) . fst) . iterate dropPart
dropPart (sum, (x:xs)) = (sum-x, xs)
part1 :: [Int] -> Int
part1 = snd . fromJust . find (not . uncurry doesSum) . map (\xs -> (init xs, last xs)) . slidingWindow 26
where doesSum xs y = isJust $ 2 `summingTo` y $ xs
part2 :: [Int] -> Int
part2 xs = minimum range + maximum range
where range = fromJust $ sublistSummingTo (part1 xs) xs
main = runAoC (map read . lines) part1 part2

2
2021/data/day1.expected Normal file
View file

@ -0,0 +1,2 @@
1791
1822

2000
2021/data/day1.input Normal file

File diff suppressed because it is too large Load diff

2
2021/data/day10.expected Normal file
View file

@ -0,0 +1,2 @@
278475
3015539998

110
2021/data/day10.input Normal file
View file

@ -0,0 +1,110 @@
{<<<[<(<{[[[[<<><>>({}())]<<[]{}>{<><>}>]]<({<[]{}>}<[[]{}]{[]<>}>){({{}<>}[<>[]))<({}())<{}<>>>}>]([{[<{}<>
{{{<(<<{<([[<{[][]}<<><>>>{{(){}}}]<{[{}{}][<><>]}[[[]()][()[]]]>])(<{([[]][<>{}])[([]<>){[][]}]}(([[]()]
(([{<{<<{((({[()[]]([][])}[{()}(<>)])[<(()<>)>(([])[{}[]])]){{([()()){[]()})}})}({<<[(()<>){()}
{[[{[[[{[[<(({{}}{{}()}){{()<>}{<>()}})>({<{(){}}>{(<>{})(())}}((({}()))({[]()}<()()>)))]<(
<<[({({(((<<[[<>{}]{<>()}]{[<>{}][[]()]}>([[<>]]{{<><>}[<>[]]})>)){[<[[<<>()>{<>{}}][(()<>){[]{}}]]>}<[[<
({<([{({{<{{<{(){}}<()[]>><{()<>}(()())>}[([{}[]]<<>{}>){<[][]>({})}]}<{({{}[]}<[][]>)((<>{})(()<>))}<{<{}(
{([{{[({[<<(([[]()])<(<>())[<>[]]>]{([[]{}]([]()))}>([{{[][]}({}{})}(([]{})[[]<>])])>[<<[{<><>}[
<[<([<(<<{{<(<[]<>>)><(<{}[]>[[][]]){{{}()}[[]()])>}}><[<(({<><>}{(){}})([<>[]]))>]>>{[<<[{([]{})[<>{}]}[
{{{{({((((<{[([]{})<<>{}>]({<>})}<(<()<>><[]{}>)<(()())({}<>)>>>)<{[{{<>{}}}]}([[{()()}{[]()}
[<(({((<{{<({(()())((){})}[[()<>]{{}[]}])<<[()<>]><{<>{}}{<>{}}>>>}{(((<<>{}>{()[]})([[][]][(){}]))[(<
<<[({{<{{<({<{<><>}(<>[])>{[[]{}][()]}}){<<([]())(()<>)>[{()[]}]><[[<>{}]({}())](<[]<>>{<>()})>}>{[
{{(({<[[<<{{{<[]{}>({}())}}{{[{}()]<()()>}((<>{}})}}<{<[()()]{[][]}>(((){}){{}[]})}>>[{<[[<>[]](())]
[((({{{({[<(<({}<>)<{}[]>>)[[[[][]](()[])]({{}{}}{()[]})]>[(<[<>()][<>()]>[[[]()]((){})])]
{<<<{[<{<{<[{[<>]<[]()>}{<<>[]><()<>>}]>{[[<(){}>({}())][{()[]}{{}<>}]](<[[]<>]{()<>}>[{[]{}}[
{<[<[{({[<{{{{<><>}{{}()}}{<<><>>(<>{})}}{[{{}{}}<()<>>]{[<>{}]}}}({[[{}()]<{}[]>][<{}<>><[]{}>]}{<<<>
(<[<([<[{(<(({[][]}(()[]})[<{}()><{}()>]){[[{}[]]{{}<>}]}>{[{<{}()>{{}()}}<<<>{}>{[]<>}>]})(<{{(<><>
[[{{[[({[[[<{(<><>)<{}()>}({<>{}}(()<>))>]<<[{()()}[<>]]<{[]()}[<><>]>>>][<{(({}<>)){<{}{}}[[]{}]}
(((<[({[([({[([]{})[<>()]]<{(){}}(()())>}[{(()<>]<{}{}>}[{{}<>}<{}()>]]){<<[<>()]<[]>><[[]()](<>(
[(({{<[([{<<[{[]{}}<[]{}>]({()[]}[()])>>}])<{{{[({<>[]}(<>[]))([{}()]({}[]))]<{[{}()]{{}<>}}{<{
<[(<[<[{<<{(<[<>{}]<[]()>>{((){}){()<>}})}<<<[{}{}][<><>]>>(([()()][<>]){<{}()><<><>>})>>[{({<{}
{(<{<{[<{<({<{[]<>}[<>()]]<[[][]][()()]>}({({}<>){<><>}}[<<>()>{[][]}])){[[{<>()}({}[])](({}[])<{}>)]([
{([<{<(([<{[[<<>><[]()>]{(<>{})[{}{}]}}[((()()){<>[]})[(<>[]){()<>}]]}>])([{([<(<>())[{}<>]>][[(()<>)<{}[]>
[(((<[<{{<[<{{{}[]}}><<<()[]>({}<>)>{{{}[]}[<>()]}}]{{{({})[{}()]}({(){}}<{}[]>)}({({}[])(())}{(<><>)[<>{}]}
{{[(<{(<[<[<<{{}}[()()]>><[({}{})][<{}()><{}>]>]{[{[{}][<><>]}[[()()]([]{})]]{{({}()){(){}}}<{[]{}}<
[{{<{<([(<[<[{()[]}]{<(){}>}>[([()<>][<>()])[{()<>}[<>[]]]]]>)])>}{([[<{<{{[()<>]{()()}}<[<><>]<<>[]>>)[{[()(
<(({<[[[[(({({<>[]}[{}])<<{}()>{(){}}>}{({{}[]}{()[]}){{<><>}[<>{}]}})<[{{()()}[()()]}]({{<><>}<()()>}[<(
({{{([{<{[[[[<[]()>{(){}}]{([]{})[{}[]]}][[{[]()}]<[()[]](<>[])>]]((<[<><>]{(){}}><<{}{}>>))]}(
([<[({[[([{<(<<>()><{}[]>){[()[]][(){}]}>}({((<>()){()()})}{({{}()}<<>()>){[{}]<[]()>}})])([<(
{<<[[<(([({[<[[]]((){})><{[]()}{()<>}>]}<<(<<><>>(()())){{<>{}}}>>)]])<(<<<<[{{}()}[[]()]]((()))>(
[[{{{[[[[(<{[(()[])[[]]][(()[])((){})]}[{{<><>}{{}()}}([[]()])]><([<<>()>{{}()}])>)({([[[]]>{<()<>>[{}<>]}
{{({[{<<<[(({[<>[]>{<>()}}){<{[]<>}>({{}<>}<()>)})(<{(()())<()()>}({[][]}[(){}])>(<[()[]][<>[]]>[{()<>}
({[[[<[<[{[({<<>()><<><>>}{{<>()}<()<>>})]<<[[<><>]<[]()>][[()][{}{}]]>{[{[]{}}([]<>)]<({}{})(<>{})>}>}]>[[{[
<<<(({{{[{([(({}{})([]<>))<[<><>]{<>{}}>]<(<<>[]>(<>[]))[([]<>)[()[]]]>)(<[[()()]{[]{}}][{()[]}{(){}}]>[<({
{[[((([[<{{{(<(){}>{<>()})}}}[((<([]<>)[[][]]>{<{}[]>[<>]})[{[(){}]}{<(){}><<>()>}])<{([[]<>])[((){}
{[[(({{{<<<<[<[]<>>]><[{<>{}}]([{}<>]<()()>)>>>{[[<<[]{}>>[{<>()}]]{[{[][]}{[]()}][{(){}}[()]]
<[([([[[[(([((<><>)[<>]){([][]){[][]}}]({[()[]>{()[]}}{{<>{}}(()[])}))){<<{<{}[]>{{}()}}><[[<>[]]<<><>>]
{(([{([(<[((<<[][]>((){})>)<((<>{}){[][]})(<<>[]>)})]><[((((()){<>()})[{[]()}{<>{}}]))]>)[[<<<{[<
{([([(({[{{<([<>[]][<>{}])>([<{}()>(<>)]{[()[]]<[]<>>})}<[[[[]()][{}{}]]([()()])][(<()()>[()[]
{<(<({({<(<[{<{}()>[<><>]}[{()[]}{{}<>}]]{[{[]()}<<>{}>]([[]<>](<>()))}>(([[[][]](<>())})[({<><>}[()<>])]))>}
<((<(<<<{{{<[<[][]>([]{})]><(<(){}>[()<>])>}<[{<[][]>{<><>}}](({{}<>}))>}[<{{(<><>)<<><>>}(<[]{}>[[]()])}>
[<<{{(<[{<([[[(){}]<{}{}>]<[{}()]>][[{{}()}[()<>]](<<><>>[{}<>])])([<({}{})[{}<>]>{{()()}}]{[{[
[[[<[<<{{{[[[[[]{}](()())]]{{{<><>}((){})}[({}<>)([][])]}]({[[<><>]([][])][{<>{}}(()())]}{[[<>[]]
{(<[[[<{<<[[{{{}[]}[{}{}]}<<<>()>[{}{}]>]({{[]{}}{[]<>}}<<(){}>[()]})]<[{({}[])[()()]}<[<><
[<[<([{({[{<(<<><>>[()<>])[[{}<>][<>[]]]><[<()<>>]<([][])>>}<({{<>{}}{{}{}}}([()()][(){}]))[<({}<>)([]())>({[
[{[[<[{{{{[{(({}[])(()()))([(){}]{[]{}})}][{<(<>())<{}()>><({}[])[()<>]]}<<[[]{}][[]()]>{{
{<{<[<<{[{<[[[(){}]][({}{}){()<>}]]({[<><>](<>{})})>[{{[{}[]]<<>{}>}[[(){}]([][])]}{(({}[]){[]
[<((<<{((([<{<()()>[{}[]]}[<[][]}<()()>]>]<[<[<><>]{()<>}><{(){}}<(){}>>]>){{[([{}<>][(){}]){{[
<[{(<<<<<{[<[<()<>><(){}>]>{[{()()}[()[]]]}}}{[<{[{}{}]([][])}(([]{})[(){}])>]{<[{(){}}[()<>]][({}[]){()()}]>
{<{{[({{<{[<{(<>()]{<>{}}}<<<><>>{()<>}>>[{([]{})}<{[]()}{<>[]}>]][([<()[]>{<>{}}]([{}{}]{(){}})
<({([({[(<[(({[]()}{{}()}){[(){}]})][{<<<>[]>{()()}>}(<{{}<>}{[][]}>{[<><>](<>())})]>[[[{({}{})<(){}>}
[(<[[[<[{(([{{<>{}}([]{})}[{<>()}{<><>}]]<{(()())<{}[]>}{(<>)[<>[]]}>){{({<><>}(()))}({<[]{}>{<>[]}})})
<[{([([[([<[([()()]((){})){([]())(()[])}]<<{()[]}<{}[]>>{{[]()}<<>[]>}>>(<[<[]{}>[{}]]>)][(
(([<<(<[<<[<[[()()]{[]()}}{<{}{}>{{}<>}}>[<<<>()>[[]{}]>[({})[<>()]]]](<{{<>[]}[{}{}]}[(()())]>[[{{
[{<[<((((([{(<[]()>([]{}))<[<><>]>}[(([]{})[{}{}])<({}())<[]<>>>]])))))([<<({<<[{}{}]><{()<>}{[]()
<<[<<[[[<{<[{{<>()}(<>{})}([[][]])]{[(<><>)(<><>)]((()<>)[()[]])}>[<[<()[]>[(){}]]((<>())[()<>])>]}>]]
<<{<[([[((<[[{<>{}}]<[()<>]([]{})>]{<({}<>){()()}><<()()>>}>[<<<<>()>{[]()}><<()()><<>()}>>])
{(<[{{([{<(<{[{}{}]<<><>>}([<>{}][[]()])>(([<>[]])[{{}[]}{{}{}}]))[(({<>()}<()()>){([]{}){[]
{<[<<[<[<<{[(<{}{}>)<[<>[]](<><>)>]{(({}<>)[<>[]]){<{}<>>([]{})}}}>[[<[[{}()]{[]()}]>]{[{{{}()
(<<<<<<<([{(<[<>{}]([][])>{{[]<>}])}{<<<()<>><()()>>[{{}()}[{}{}]]>[[[{}()][[]<>]]{<{}[]>[(){}]}]}])
([<[<[[{[(<<{([][]){<>()}}[<()<>>(()[])]>{{(())(()())}{({}[]){[]()}}}><[([(){}])({{}{}})]>)(({[[[][]
<(<[[<([{<([<[[][]]({}())>>){{(([])[<><>])<{<>[]}[{}()]>}{[<()>[{}{}]]((()[]){<>})}}>}[<<{[[()
({<<{[{[(({{<{()()}>[(<>[])]}[([{}<>]{[]{}}){{{}()}<{}<>>}]}{<({[]}[{}()]){{(){}}[<>{}]}><{[<><>
({<[([[(<{<{{[[]<>](()[])}{<[]<>>(<>[])]}>{[[{{}{}}][{<>[]}(<>)]]<<<()()>({}<>)><<{}()>{{}()}>>}}>[(<[(<{}<>>
[[((<{<<[{{<<<[][]><[]{}>>>{[<()()>]<<[]<>>((){})>}}}{<(<((){}){{}<>}>[([]<>)<{}[]>])<[[{}{}](<><>)]{([
<{{({([([{{((({}<>)(()()))[(<>{})<[][]>])(<{<><>}([]<>)>{(()[])[[]{}]})}{<{{{}()}({}())}[([]{
{<[(<{[<{[[(<<{}<>>[[]<>]>}{[<[]<>>[{}()]]{[{}](<>)}}]]}{{({(<{}{}>[()[]])[[{}{}][{}]]}<<<<>{}>>[([][
({<{<<[([<[[<<{}[]>(()[])>][[([][]>[<><>]]{{()}}]](<((<>[])<<><>>)[({}()){{}[]}]><([[]<>]{<>[]})
<{({[{{{<[<[{<()()><{}[]]}{[[]{}]([]<>)}]{{([]()){<>()}}{{{}<>}({}<>)}}>[<<<[]()>[{}[]]><(()())[<>[]]>>(
{(([((<[<({{{<()()>[()<>]}<[{}{}]<<>[]>>}(<{[]()}{()[]}>([{}[]]({}())))}({{<{}{}>[<>{}]){{[]()}{[]<>}
(([({{[[(<[<(<<><>>[[]()]){([]())({}<>)}>[((()()){()()})[({}())<[]()>]]]>[{{<[{}{}][{}()]>}{([<><>]<
[[{<{([<[{(((<()()>{{}[]}}<<{}{}>[{}[]]>){(((){})[{}<>])<<(){}>(<>{})>})}(([<(<><>)<[]<>>>([<>()])]<[({}{
<[{(<[(<<{<{<({}{})<(){}>>([[]{}]{()<>})}[{{[][]}[[]]}([()](<>()))]>[{(({}[])(()())>([{}])}{(<[]()>{
<{({{<{{{{{{<[()()]([]{})>{([]{})[()()]}}}}}}({(<[{([]{})({}{})}{(<>())<{}<>>}]({{<><>}}[{()<>}[[
{{[({(<{[([[<<()()>{()[]}><{()<>}{{}{}}>]]<{[{()<>}(()<>)][<{}{}>([][])]}<{<[][]>[()()]}<{()<>}[[][]]>>>)]
(<({{({{{([({{{}()}{(){}}}<{(){}}<<>[]>>)(<[[]<>][<>{}]><[<>{}]>)]{[{(()[])}{[[]<>]{{}}}]((((){}){<>
<(([(((((((({([]<>)}<(()<>)<<>[]>>)[{[[]{}][()<>]}<{()<>}>])<<<{(){}}[<>()]>{(()()){[]<>}}>
<<<<{{{[[([<{{<>()}[{}<>]}<<(){}><[]{}>>>([[[]()]<{}()>})]({[[{}()]{<>()}][{[]<>}[(){}]]}))((
{[(<<<<({(<[[{{}}]<(()<>)<{}<>>>]<([[][]]({}<>)){[()[]]<(){}>}}>)}[[[([[[]<>]<()()>][{[]{}}])[[
(<((<((<<([((<<>()>(<>()))<{<>()}([][])>)[[({})<{}<>>]]])>(<{(({()[]}(<><>)){{()[]}{()()}])}<({<()<>>({}
[(<<<(<<{{({<[<>[]]([]()]><<<>()><<><>>>}[<[<>{}]((){})>(([]{}){(){}})])<<[{<>()}<{}()>]({
([[{<[[<[{(<<(<><>)>({<><>}{<>[]})>[{[[]{}]({}{}))])}{(<((<><>)(()[]))><([<><>]{()[]})[{<>
<<[[<{<<<[{[<(<>[])>{{{}<>}(()[])}][({[]{}}(<>()))<(<><>){{}()}>]}{{{(()<>)<<>{}>}<<[][]>>}[([[][]]{()()}))}]
(([({{{<<{{{<[(){}]{[]()}>({{}()}({}{}))}}{([{()<>}<()>](([][])<<>[]>)){{<<><>>{()}}{<{}<>><[]<>>}}}}{[<[[[][
[([{<{{[([<((({}{})[<><>])<{{}{}}<()()>>)>{(<[()[]][<>{}]>(<()[]>[()<>]))([(<>[])<{}{}>]{<{}()>[<>[]]})}
[<<<[(<((<(<{(<>[]){<>{}}}{{<>{}}}><[(()[])(()())][<[]{}><<>{}>]>)>[({<[()<>]({})>})])(<[[({<><>}{(){
{{(<({<<{([{[<<>()}<{}[]>][{<>{}}[{}{}]]}{{[[]<>]{{}()}}}][({([]{})<()()>}){{({}[]){()}}{{()}
{({((({[([<(({()<>}[{}<>])[<<><>><()()>])<[(()[])<{}()>]{[[]()]({}<>)}>>[({<()<>)})]]<{<<{{
<<({[([{[{<<<[()<>]{()<>}>{([][])[<>[]]}>{({<><>})[{[][]}<{}{}>}}><<({{}()}<{}()>)><[(()[]){()()}][<()<>>{[](
[([<({<{[<[<<<(){}><{}[]>>([{}[]])><{<[]<>>[{}()]}[<{}<>>{(){}}]>][(({{}()}[{}<>]))(<{[]()}(())>{
<<([(<(({{{[{(<>()>[{}()]}[<[]{}>({}())]]}<{({{}()}[<>{}])}{<(<>[])({}<>)>{<[]()><[]<>>}}>}{{[{[
{<([<{{<(<({<({}<>){()<>}>(<(){}>([]{}))})>({{[([]())([]())]}<[[{}{}>[<><>]]{([]())<{}()>}>
[[{({[<{<({[{{<>[]}[(){}]}<[<><>]{[][]}>][{{(){}}<<>[]>}[{(){}}[()[]]}]}{{(<<>{}>[{}[]])<{()[]}[<>{}]>}
{(({{[[{{[([({<>[]}[[]<>])[{()()}<()[]>]]){(<{[]{}}{[]{}}>(<(){}>{[]<>}))((<{}<>>{(){}})<[<>()
<{[<([[<{<[{{{()<>}<[]()>}{[()]([]())}}<<[(){}]([][])>{{[]{}}<[][]>}>]<([{{}()}[<>{}]])<[<[]<>><()
({[<<[<{([{[({(){}}{()[]})<<[]()>>]<[{()[]>{()<>}][<{}>{[]()}]>}[([<(){}>(())])({[()()]<<>{}>}<{{}{}}
[[<{[{{[{[[{({{}[]})}]](<<<(()<>)><({}{})<{}{}>>>([<{}<>>(()[])][<<>()>])>)}<(<<([()[]][()[]])<{()
[{([(({<{<([(({}<>)[{}()])])><{[[{[]<>}<<><>>]<<[]<>><(){}>>]}{{<<(){}>{<>()}>[<{}{}>{<>[]}]}[<[()()]
<[[[<({[[<{{<(<>())(<><>)>{[(){}][{}<>]}}({({}<>){{}[]}])}[[(<{}{}>[()[]])]{(([][])<()>)[({}())<{}()>
{[[(<(<{<([[(([]{})[<>()])<<[]>[()[]]>](<{()[]}[[]<>]>{[()<>]([]())})][([<{}<>>[{}[]]]{<[]>(<>)
<[<[[<<(({[(<[[]]{<>[]}>{(<>())(()())})<({(){}}{[][]})>]([{<()()><[]()>}[{[]()}[[][]>]]{{(())}(({}{})<<>[
(({<{{[{(<[[[<<>()>][{<>()}[[]<>]]]]{{{{<><>}({}{})}{{[][]}({}[])}}{[{{}<>}{[]()}]}}>{<([[
<([<{([([[{{[{{}{}}<{}()>]<{{}{}}>}({{(){}}{<>()}}[<(){}>[()()]])}[<{{<>[]}[()()]}{{{}[]}{[]<>}}>]]{[{<
<{({{[<{<(({[({}<>)[[]<>]]<<[]{}>(()<>)>}))[<{((<>[])[<><>])<((){}][()()]>}{<([]{})(<><>)>}>{(
{<<<<([{[<[{<<(){}>({}{})>}<<{[][]}{<>()}>({{}()}([]{})))]((({<><>}<{}[]>)({[]()}{<>()}))[[<{}{}>][{[]()
[(<(<[(<{({[<(<>{})[()()]>[([]{}){[]<>}]]{{<{}{}>(<><>)}<{{}()}((){})>}}<<{{()[]}((){}}}{{
{<<<[(<([{<<([()()][()])<{[]<>}[<>()]>>[<(()())<<>{}>>({[]{}}([]<>))]>}])>)([([{{{[[[]()](()
<<({<{<([([[<[(){}]<<><>>><{()[]}[(){}]>]<(<{}[]>){[[]<>](()[])}>][<[<(){}>[{}[]]]({[][]}((){}))>
{([{{[(<({{<(<[][]>{()()}){[{}()]}><(<<>())<[]{}>){<{}{}>((){})}>}}((<(<<>[]><()()>)><{[[][]]}<[<>
[(<{{[{[{<([[[{}[]]<<>>]][[(()[])[(){}]]])({([<>[]]({}<>)){([]{})({}[])}}({(())({}[])}<{<>[]}(()[])>))
({[([(<{<(<<(([][])(()()))({[]()}(<>[]))><({{}()}[[]()])>>)>[<[([{()<>}<[]<>>]([{}<>]{()()}})<[<{}

2
2021/data/day12.expected Normal file
View file

@ -0,0 +1,2 @@
4411
136767

24
2021/data/day12.input Normal file
View file

@ -0,0 +1,24 @@
yb-start
de-vd
rj-yb
rj-VP
OC-de
MU-de
end-DN
vd-end
WK-vd
rj-de
DN-vd
start-VP
DN-yb
vd-MU
DN-rj
de-VP
yb-OC
start-rj
oa-MU
yb-de
oa-VP
jv-MU
yb-MU
end-OC

7
2021/data/day13.expected Normal file
View file

@ -0,0 +1,7 @@
704
#..#..##...##....##.###..####.#..#..##.
#..#.#..#.#..#....#.#..#.#....#..#.#..#
####.#....#..#....#.###..###..####.#...
#..#.#.##.####....#.#..#.#....#..#.#...
#..#.#..#.#..#.#..#.#..#.#....#..#.#..#
#..#..###.#..#..##..###..####.#..#..##.

852
2021/data/day13.input Normal file
View file

@ -0,0 +1,852 @@
43,593
1139,385
1178,51
216,679
743,185
1241,250
197,60
479,700
565,845
1022,330
744,714
440,535
137,81
35,766
482,249
1120,280
484,98
301,823
928,616
601,7
60,835
1092,371
1033,584
1079,833
44,665
469,777
915,526
759,290
843,891
1225,464
326,831
723,333
1099,362
962,285
1069,474
315,731
716,506
741,430
1228,320
1099,878
485,522
328,333
1289,432
1173,506
395,526
47,625
1155,273
114,856
914,826
1263,849
1294,693
607,289
1225,138
25,519
1051,564
738,747
67,493
1178,619
984,828
21,100
1086,241
644,563
164,287
738,131
1116,312
21,796
423,66
395,816
846,614
823,63
249,542
858,162
1273,448
684,623
139,443
184,388
977,71
499,621
810,133
1169,346
249,791
47,772
1170,128
530,162
594,387
972,752
1309,752
26,707
211,362
821,640
502,722
872,63
93,82
895,709
1113,445
567,338
592,448
567,556
552,277
815,735
10,470
400,120
807,835
1289,602
470,442
167,562
1094,735
848,467
1275,568
1009,868
264,829
907,95
894,714
807,59
768,199
470,218
141,346
644,22
85,430
693,670
489,640
748,555
535,560
1056,597
617,266
445,149
751,269
535,782
1046,494
372,677
62,848
1111,291
1048,313
1069,868
480,387
487,640
1151,463
725,194
1031,528
139,675
994,304
223,604
823,679
383,793
313,189
463,357
952,275
38,477
127,155
1156,245
1277,371
572,315
279,810
908,322
436,397
594,835
1031,93
1173,813
733,327
982,828
495,640
703,737
1017,299
390,0
99,327
1084,458
202,732
551,604
259,816
85,464
1083,525
301,26
822,352
703,157
539,434
550,194
868,710
197,893
758,586
736,176
633,889
115,460
256,80
651,672
1064,409
872,7
669,745
231,604
88,628
759,604
1287,694
171,826
1222,852
1250,836
1092,54
85,196
388,205
907,543
326,561
264,381
775,560
1069,71
60,836
277,584
375,801
117,813
1181,673
1150,128
54,278
718,446
577,327
1004,733
1084,794
909,497
975,807
561,171
244,819
505,441
393,64
502,172
517,872
268,28
1113,210
141,490
185,826
301,250
354,654
234,471
403,95
438,887
693,166
189,709
1243,493
87,543
1086,777
338,752
49,584
574,148
1039,607
1051,116
569,375
254,326
554,212
1255,271
1042,866
30,119
218,632
674,372
10,582
596,194
194,582
880,450
587,828
723,666
109,290
85,711
915,116
259,564
259,609
189,721
383,607
666,22
326,828
164,152
709,362
755,145
108,483
657,640
716,507
1,752
1272,788
664,46
316,470
882,458
693,266
1089,326
1121,519
1120,483
499,68
547,719
1066,355
1014,757
971,163
868,856
161,702
75,2
566,516
1178,760
266,651
1099,464
863,201
224,53
1113,1
811,273
177,453
775,245
1297,694
764,408
137,813
716,429
908,469
1225,127
1031,794
428,458
925,305
581,721
306,733
1258,854
241,138
1181,834
987,3
796,94
218,497
100,682
1180,122
184,218
1218,23
569,16
1250,725
1202,49
736,829
1059,674
684,735
428,346
1195,434
1064,485
430,450
224,761
749,364
711,549
276,7
403,367
855,291
375,541
85,586
353,644
467,667
50,617
1225,308
751,161
751,340
703,289
422,457
442,710
85,127
1307,670
1079,526
639,820
1217,171
378,613
952,585
731,450
402,693
847,357
195,696
25,362
1274,460
160,766
231,302
1084,548
927,773
1280,438
487,679
261,88
1054,80
129,221
1171,107
1195,12
920,0
851,248
828,649
1307,137
710,168
50,56
555,749
345,712
266,329
830,611
296,760
633,432
232,457
184,429
611,749
37,224
402,469
666,779
1217,364
423,340
296,7
443,878
378,10
1139,509
1228,635
629,698
539,205
910,297
500,133
684,271
703,605
21,453
1110,476
841,68
351,648
1252,780
234,646
780,641
308,715
416,180
957,250
935,532
761,863
401,397
1252,642
827,826
874,262
244,406
572,579
338,53
58,642
1307,56
771,84
465,501
1151,675
1151,735
981,752
1222,714
218,845
1088,707
249,775
54,341
423,246
1161,246
1181,508
644,116
58,114
160,128
843,667
872,831
202,477
909,397
1292,522
33,371
669,200
1265,409
529,672
395,337
512,282
331,786
1048,581
1161,453
261,64
587,333
443,654
703,177
1156,645
1289,100
692,434
141,565
517,282
436,840
679,648
825,372
174,75
249,352
438,7
3,670
169,522
331,108
766,231
1014,585
1133,453
965,40
887,246
1289,292
716,835
421,619
1263,772
226,794
500,649
962,609
1079,66
731,255
1156,494
677,100
175,700
423,648
10,115
1014,887
577,343
218,859
60,59
760,114
93,364
607,177
224,241
800,746
1126,218
617,670
1210,100
358,119
159,159
932,247
1201,290
115,834
10,779
1274,12
1250,506
259,285
428,436
565,497
333,708
979,672
587,66
1221,815
289,448
1290,733
130,772
503,835
1300,331
792,56
604,455
259,330
749,723
191,761
1094,511
189,185
1043,154
474,469
793,612
246,298
383,569
276,199
537,37
467,227
795,219
1273,180
1091,793
907,479
1280,775
917,830
495,431
868,184
1235,450
1309,142
157,820
402,322
3,137
470,429
167,780
1195,882
1069,250
775,782
1256,616
428,100
333,71
663,845
797,100
604,838
390,381
738,579
174,584
88,42
768,23
1222,266
1169,789
887,648
681,196
325,388
238,378
316,106
43,693
551,154
984,63
1260,617
430,138
671,820
918,357
1094,383
1069,756
75,639
599,246
856,476
117,81
546,75
1292,346
1059,220
8,400
1225,644
279,93
979,338
626,719
1203,623
594,220
1248,848
325,864
995,163
874,840
1049,88
954,175
282,217
132,51
269,358
1180,72
10,563
821,254
872,511
137,282
820,717
296,134
1078,457
634,733
21,546
1121,424
26,614
599,648
1133,441
110,131
604,199
1094,215
565,602
490,717
748,198
132,843
279,528
874,54
257,17
254,597
666,312
552,418
518,56
1223,351
273,532
1302,400
858,865
1001,854
483,826
82,717
1181,221
792,35
592,446
1130,469
741,308
649,260
552,308
100,100
706,838
211,464
1051,816
60,58
234,198
880,756
927,325
115,434
487,791
971,507
1136,584
736,746
341,109
845,424
1069,519
985,416
599,394
845,173
708,406
915,330
1151,159
393,382
1052,826
279,308
633,348
1042,28
952,619
36,882
306,218
565,815
308,179
1235,703
241,519
624,887
306,161
1248,46
907,220
47,810
917,64
895,556
489,254
132,275
530,641
887,340
1149,192
100,222
656,635
515,443
47,177
216,831
910,597
594,28
1004,161
691,128
555,567
815,667
947,570
50,166
703,625
882,100
1066,406
629,196
1307,222
542,23
1284,614
681,532
744,516
1178,582
729,721
979,891
987,168
1123,3
438,35
1143,562
1136,620
518,635
867,878
1056,326
1222,42
1223,543
684,719
301,644
1141,522
975,87
288,564
231,66
517,43
1146,152
1034,393
117,37
585,250
218,840
751,609
706,473
686,327
99,637
1310,738
361,660
853,834
1146,287
1031,756
189,173
760,259
470,836
495,735
995,387
53,7
897,644
1169,565
915,609
241,71
922,243
3,56
644,115
756,212
841,117
1071,108
927,121
758,418
1061,119
577,256
607,756
913,877
413,263
1284,240
440,507
378,647
331,215
743,338
132,619
887,514
18,148
353,810
805,246
1077,619
1284,707
773,81
279,756
1051,778
1086,620
36,12
452,865
512,612
87,351
865,633
761,568
600,553
1161,694
433,886
810,693
1072,516
971,731
915,816
82,635
1158,143
438,63
1235,655
1300,470
1228,574
390,894
331,891
1051,557
1126,465
136,56
677,5
62,46
189,823
189,424
502,303
216,859
1014,134
607,737
69,17
915,557
107,719
1171,675
569,308
304,707
539,834
510,298
405,352
1125,826
544,231
1019,772
574,381
88,714
1169,548
830,283
231,609
249,750
874,397
601,362
599,500
154,245
fold along x=655
fold along y=447
fold along x=327
fold along y=223
fold along x=163
fold along y=111
fold along x=81
fold along y=55
fold along x=40
fold along y=27
fold along y=13
fold along y=6

2
2021/data/day14.expected Normal file
View file

@ -0,0 +1,2 @@
2068
2158894777814

102
2021/data/day14.input Normal file
View file

@ -0,0 +1,102 @@
KFFNFNNBCNOBCNPFVKCP
PB -> F
KC -> F
OB -> H
HV -> N
FS -> S
CK -> K
CC -> V
HF -> K
VP -> C
CP -> S
HO -> N
OS -> N
HS -> O
HB -> F
OH -> V
PP -> B
BS -> N
VS -> F
CN -> B
KB -> O
KH -> B
SS -> K
NS -> B
BP -> V
FB -> S
PV -> O
NB -> S
FC -> F
VB -> P
PC -> O
VF -> K
BV -> K
OO -> B
PN -> N
NH -> H
SP -> B
KF -> O
BN -> F
OF -> C
VV -> H
BB -> P
KN -> H
PO -> C
BH -> O
HC -> B
VO -> O
FV -> B
PK -> V
KO -> H
BK -> V
SC -> S
KV -> B
OV -> S
HK -> F
NP -> V
VH -> P
OK -> S
SO -> C
PF -> C
SH -> N
FP -> V
CS -> C
HH -> O
KK -> P
BF -> S
NN -> O
OC -> C
CB -> O
BO -> V
ON -> F
BC -> P
NO -> N
KS -> H
FF -> V
FN -> V
HP -> N
VC -> F
OP -> K
VN -> S
NV -> F
SV -> F
FO -> V
PS -> H
VK -> O
PH -> P
NF -> N
KP -> S
CF -> S
FK -> P
FH -> F
CO -> H
SN -> B
NC -> H
SK -> P
CV -> P
CH -> H
HN -> N
SB -> H
NK -> B
SF -> H

2
2021/data/day16.expected Normal file
View file

@ -0,0 +1,2 @@
904
200476472872

1
2021/data/day16.input Normal file
View file

@ -0,0 +1 @@
20546C8802538E136091C1802689BCD7DA45948D319D1B100747A009C97696E8B4ABFCA6AB8F4F26C401964A6271C80F802D392C01CEDDCE6E5CB829802F600A00021B14E34C361006E0AC418BB2CA6800BE4599BB6A73507002A52BEEB14D201802F600849E64D3369D37C74100866785B3D0ADFD8E601E5EB9DE2366D93ECB8B040142CB8ACE07CCB5CF34CA89380410B6134CE6FEF104A2B200243396976A00401A45004313D68435DBDDDA61CE6428C01491AEBF0C7E580AE00CCC401B86514216880370EE3443D2013DF003750004361343D88800084C4C8B116A679018300740010C8571BA32080350DA0D42800043A3044189AE0174B314D76E1F3ACF3BDAE3EE7298FF134002EF9DBCD0644127E3CAE7FCBA9A80393544F9A927C973DF1A500965A5CEA94C4DDA5658B94C6C3002A798A629CF21280532BAB4F4C7271E45EE6E71D8143A9BC7948804AB94D1D6006AC200EC1E8A10C00010985316A35C3620061E641644D661A4C012993E99208FC60097802F28F528F738606008CA47205400814C89CC8890064D400AB4BE0A66F2BF253E73AE8401424A7BFB16C0037E06CE0641E0013B08010A8930CE2B980351161DC3730066274188B020054A5E16965940057895ADEB5BF56A635ADE2354191D70566273A6F5B078266008D8022200D46E8291C4401A8CF0CE33CEDE55E9F9802BA00B4BD44A5EA2D10CC00B40316800BAE1003580A6D6026F00090E50024007C9500258068850035C00A4012ED8040B400D71002AF500284009700226336CA4980471D655E25D4650888023AB00525CAE5CBA5E428600BE003993778CB4732996E9887AE3F311C291004BD37517C0041E780A7808802AF8C1C00D0CDBE4ACAD69B3B004E13BDF23CAE7368C9F62448F64546008E0034F3720192A67AD9254917454200DCE801C99ADF182575BBAACAC7F8580

2
2021/data/day2.expected Normal file
View file

@ -0,0 +1,2 @@
1714680
1963088820

1000
2021/data/day2.input Normal file

File diff suppressed because it is too large Load diff

2
2021/data/day22.expected Normal file
View file

@ -0,0 +1,2 @@
642125
1235164413198198

420
2021/data/day22.input Normal file
View file

@ -0,0 +1,420 @@
on x=-31..15,y=-40..12,z=-21..27
on x=-11..41,y=-15..37,z=-2..45
on x=-9..43,y=-19..30,z=-23..27
on x=-36..11,y=0..47,z=-38..16
on x=-36..18,y=-43..8,z=-4..47
on x=-2..48,y=-5..39,z=-15..32
on x=-25..24,y=-1..45,z=-38..15
on x=-15..38,y=-49..-4,z=-29..23
on x=-29..18,y=-20..31,z=-6..47
on x=-37..15,y=0..47,z=-17..32
off x=-23..-9,y=-7..9,z=5..18
on x=-9..40,y=4..49,z=-41..13
off x=14..23,y=25..37,z=-20..-9
on x=-34..16,y=-44..9,z=-5..42
off x=-25..-10,y=-37..-22,z=4..18
on x=-48..6,y=-37..9,z=-40..7
off x=5..17,y=14..30,z=-6..4
on x=-19..30,y=-49..3,z=-10..41
off x=-22..-9,y=22..37,z=-31..-14
on x=-42..7,y=-29..21,z=-13..37
on x=-16268..-2761,y=73412..85556,z=-24609..-14482
on x=33763..42040,y=-61278..-43675,z=21918..43169
on x=-25200..-2112,y=-51420..-47840,z=47019..59882
on x=37923..50058,y=31838..54160,z=-57601..-34479
on x=-30620..-24353,y=-79285..-68074,z=-2977..19356
on x=-30609..1452,y=-36514..-15009,z=66859..79332
on x=-24742..-5853,y=-43809..-14427,z=-90382..-58759
on x=-13668..16445,y=-22841..10989,z=73406..93540
on x=28389..52072,y=-26968..-2267,z=-79598..-66367
on x=27980..54406,y=38341..66509,z=32093..36649
on x=59985..65276,y=-66708..-27188,z=-19249..-2151
on x=41844..68956,y=-63008..-37128,z=520..24655
on x=71804..95178,y=-15814..14606,z=-7097..17816
on x=17765..28889,y=-15081..18428,z=74594..86403
on x=27379..42566,y=-27124..-9082,z=-80345..-63942
on x=-81191..-59873,y=37629..56626,z=-33772..-13190
on x=26251..50978,y=61655..81765,z=5174..41787
on x=3545..20418,y=76124..91387,z=10429..18016
on x=-56569..-43421,y=43007..48697,z=-39789..-16431
on x=-8898..20972,y=-75311..-68277,z=26037..31459
on x=-82974..-55962,y=-31904..-12744,z=-19880..-177
on x=21759..46201,y=4896..27986,z=-79014..-52022
on x=-72845..-54454,y=-46732..-31354,z=-3518..9682
on x=48077..69306,y=48471..78577,z=-24376..10791
on x=-89235..-75432,y=-23559..-11282,z=2849..29606
on x=-19648..5187,y=-28801..1547,z=67705..87729
on x=-36677..-11208,y=-52582..-29826,z=-75754..-54460
on x=52967..71480,y=-32156..-13028,z=40031..57490
on x=-9670..14112,y=-86845..-72969,z=21041..37167
on x=-23506..-2008,y=14436..39569,z=-74893..-62468
on x=60265..81466,y=-9195..22677,z=-31963..-24825
on x=62518..78007,y=-28080..803,z=18055..36364
on x=-67871..-58556,y=-17100..7434,z=-53150..-44051
on x=-21869..-7545,y=56607..78795,z=42300..59289
on x=8133..26370,y=59453..76378,z=24987..46061
on x=-78155..-54530,y=40318..64112,z=-11319..19884
on x=-49937..-29803,y=-73977..-61214,z=-11264..11122
on x=-84215..-59040,y=-24340..-8768,z=22605..36340
on x=-72333..-46667,y=-20261..-1550,z=33007..49989
on x=-87051..-55751,y=-39773..-27347,z=-28982..-4905
on x=-53210..-37633,y=-57897..-36246,z=-34954..-20198
on x=59340..84949,y=33575..44982,z=-28334..-9464
on x=49948..66289,y=693..18345,z=56235..63720
on x=-26265..-11787,y=-75180..-61895,z=-51729..-26447
on x=46656..68506,y=17462..39678,z=28004..35033
on x=-5095..20428,y=-65178..-43905,z=-76055..-52443
on x=-6031..4325,y=-29275..-8056,z=-84181..-59830
on x=57442..76188,y=-22259..8793,z=-55480..-45690
on x=26301..43633,y=-49717..-38698,z=48660..65868
on x=-20883..3324,y=30657..66848,z=57545..79329
on x=-94467..-58613,y=-26697..762,z=16196..39574
on x=8005..42105,y=-45637..-22315,z=-74968..-51548
on x=-48966..-25366,y=32223..45945,z=32542..62201
on x=-69017..-46223,y=21802..42755,z=-52315..-45517
on x=14071..21029,y=-27684..-3889,z=-82302..-69903
on x=-35310..-14611,y=-69343..-52273,z=29582..57259
on x=-47733..-43614,y=41650..76018,z=-43518..-5378
on x=36045..54586,y=-63874..-55437,z=27809..45401
on x=-23706..-7340,y=37745..58874,z=-74869..-50604
on x=-34375..-8490,y=-24045..-7424,z=-90288..-67864
on x=71187..79617,y=8420..18536,z=16022..39405
on x=-28965..-8258,y=43254..58521,z=-50330..-35686
on x=-29861..-22121,y=-62714..-58881,z=41404..55839
on x=36839..51186,y=-72064..-50522,z=-40820..-12348
on x=-80940..-56434,y=-36366..-6238,z=-25989..-1570
on x=16090..44431,y=-70714..-53053,z=-48187..-24318
on x=-57784..-35812,y=-55762..-21328,z=-61669..-40202
on x=-1153..27210,y=-72257..-57105,z=-52729..-43034
on x=36045..52956,y=40739..63305,z=-40612..-35470
on x=-37386..-27602,y=-73787..-66457,z=5859..16937
on x=22605..24957,y=-35007..374,z=-88037..-74742
on x=69972..91356,y=-21820..1332,z=-33615..-20343
on x=3152..34491,y=8121..32288,z=-92170..-58629
on x=-68865..-45677,y=-44049..-16100,z=-48316..-43901
on x=54057..68453,y=-47451..-23433,z=-45583..-29267
on x=56843..78547,y=10609..34067,z=1987..32520
on x=588..27816,y=46724..64149,z=-67994..-30736
on x=39268..59592,y=-75776..-42781,z=10976..37943
on x=-4319..20271,y=-85842..-61203,z=-28175..1591
on x=-20482..8670,y=-85390..-59726,z=-23552..-7304
on x=20197..35773,y=-33819..-21770,z=54097..85103
on x=-70270..-59947,y=-49234..-26582,z=-11572..7062
on x=-88326..-54246,y=-41068..-25234,z=-22529..1368
on x=-21643..-18556,y=-29486..-7870,z=56613..83150
on x=-57648..-53221,y=24878..37305,z=28112..47953
on x=50871..57090,y=-50882..-28901,z=-47823..-41828
on x=3603..33598,y=50068..62701,z=-68639..-46682
on x=37694..58917,y=-81338..-55339,z=-6294..11393
on x=-1419..9336,y=-75338..-64874,z=43272..59331
on x=62900..95797,y=10309..30061,z=-17622..5010
on x=20359..33467,y=-80058..-55327,z=-44618..-17466
on x=73162..85481,y=-18674..9179,z=27632..30040
on x=-12072..7247,y=-68569..-44935,z=38996..69461
on x=-14910..2438,y=-66748..-59496,z=-62451..-43733
on x=-55491..-33270,y=-80513..-50398,z=-5725..27700
on x=-43858..-25913,y=-33078..-20894,z=-75887..-49681
on x=-39184..-11369,y=-77771..-38776,z=-60846..-42774
on x=-43965..-25005,y=52823..70376,z=29934..48535
on x=11832..27831,y=38503..62279,z=-67375..-46855
on x=-86659..-58572,y=-52574..-20758,z=-5049..-1380
on x=-20079..-971,y=-88952..-66624,z=-790..16273
on x=9364..33049,y=70116..96061,z=-666..28174
on x=24090..54224,y=-31038..-8920,z=-62258..-49312
on x=-4796..22630,y=59190..90127,z=-27512..4087
on x=58927..78681,y=25203..57439,z=12551..35835
on x=43802..62336,y=-10602..-563,z=-65831..-50707
on x=49802..62635,y=-35757..-12707,z=38263..62005
on x=14375..27850,y=36589..73868,z=46321..51160
on x=30926..56823,y=64082..85345,z=8399..26595
on x=26138..34222,y=-74916..-64576,z=12585..20349
on x=49268..64536,y=55554..56931,z=8266..30603
on x=63783..70255,y=-43725..-37221,z=-5402..21946
on x=-25851..-10388,y=-44145..-23573,z=70787..81764
on x=-2308..30385,y=-77664..-65487,z=10624..27974
on x=30629..51160,y=-67708..-48630,z=-11628..-5521
on x=-28371..2765,y=47468..62783,z=37378..63850
on x=-54181..-47351,y=41114..72671,z=-12142..22919
on x=232..29443,y=38022..65125,z=-70975..-51690
on x=-89818..-61775,y=9402..22079,z=11379..27812
on x=-46655..-36075,y=-73368..-46204,z=-55433..-32265
on x=59126..83817,y=39122..61516,z=-17994..1532
on x=26714..58440,y=11528..27094,z=48759..75861
on x=-35914..-20622,y=59856..73765,z=4589..24238
on x=18259..28451,y=-80578..-53971,z=-33788..-10461
on x=-47217..-34327,y=70275..79914,z=-8079..24768
on x=-76192..-60391,y=35036..63981,z=-15347..380
on x=-63732..-48024,y=-54229..-26661,z=-42450..-31348
on x=-23519..-7950,y=-75513..-50765,z=-63008..-35282
on x=19475..32136,y=-21295..-15326,z=53823..77193
on x=-25139..-22008,y=-19696..13946,z=-92401..-59350
on x=-95951..-61878,y=-26133..-1879,z=-33703..-9810
on x=68912..89523,y=-23734..-8320,z=-16650..4655
on x=-65750..-56515,y=20184..33335,z=-45037..-33283
on x=7158..15863,y=-41827..-7665,z=-75732..-73496
on x=-60484..-42124,y=-51494..-23379,z=-57680..-35254
on x=55653..83430,y=23940..45283,z=-15684..-14212
on x=-10251..13694,y=-33345..-12875,z=67504..86459
on x=21776..31354,y=-37486..-19956,z=46923..77653
on x=75980..83400,y=-1819..19149,z=-21085..-2030
on x=-61751..-41543,y=-5188..6299,z=-83815..-58294
on x=-7338..6665,y=36157..44741,z=52925..81174
on x=52861..67716,y=-7373..30136,z=39315..71237
on x=13050..29744,y=66525..87545,z=1771..37491
on x=-64733..-39640,y=25254..52987,z=-50910..-32439
on x=63635..81414,y=-22871..-4335,z=7646..28763
on x=40134..58126,y=-11172..9476,z=-66912..-54215
on x=-86522..-66364,y=-33752..-15969,z=-23363..-13273
on x=35479..45095,y=69971..73604,z=8910..26850
on x=-43268..-15119,y=-66053..-38869,z=39592..46963
on x=-21710..8680,y=40705..71234,z=41360..73209
on x=13940..22553,y=36324..58196,z=-77382..-53080
on x=23434..50783,y=-39817..-28342,z=-69110..-48877
on x=73507..85343,y=-11561..15539,z=-14495..-4774
on x=-54941..-37724,y=-13576..1478,z=40440..68801
on x=43643..68451,y=-10135..662,z=-59531..-39039
on x=-24211..-6108,y=50759..72990,z=-62513..-37860
on x=26879..61822,y=35613..67902,z=38756..61459
on x=-89359..-75327,y=-18589..-6663,z=-29014..7966
on x=17380..33566,y=-58827..-49271,z=48108..66133
on x=-2444..15010,y=-77969..-63710,z=29136..46467
on x=-10818..6229,y=-29611..49,z=-81262..-75622
on x=-6180..20035,y=74194..90454,z=-13495..1440
on x=-35911..-13227,y=-57034..-29632,z=-69180..-52647
on x=30009..49730,y=-64899..-52104,z=-61162..-27263
on x=-78257..-48942,y=39217..54751,z=-29567..-20398
on x=37168..46885,y=-80577..-52776,z=1014..37078
on x=6944..29897,y=11577..21593,z=-82020..-59481
on x=-31931..-238,y=-59356..-38875,z=-80342..-57991
on x=-38801..-36538,y=2975..20673,z=65274..82670
on x=63409..76122,y=132..19103,z=23941..40408
on x=7732..23852,y=-19027..6940,z=75488..96064
on x=-64444..-45808,y=11443..29434,z=35964..59523
on x=18285..35633,y=49509..72903,z=12689..35798
on x=-2949..17519,y=-53956..-31139,z=55058..81542
on x=-32888..-12204,y=-63545..-52688,z=43909..52128
on x=-1703..19447,y=-84815..-69925,z=-32435..-19742
on x=-69069..-40979,y=37136..49391,z=-47586..-29945
on x=59756..80566,y=-42821..-20427,z=25880..40675
on x=6051..36400,y=-86187..-61812,z=-47296..-31890
on x=59071..84052,y=-14966..16336,z=17686..36159
on x=-38604..-32778,y=2520..36999,z=-81989..-67215
on x=66925..78543,y=2308..22047,z=-39005..-19664
on x=-34989..-8703,y=57308..62622,z=40005..48549
on x=-52811..-31203,y=55877..66260,z=14153..36886
on x=-45389..-12954,y=-3730..12116,z=-79157..-69961
on x=-23789..-13770,y=-66812..-61018,z=-52957..-23785
on x=13853..39791,y=60431..80042,z=28663..46404
on x=-24898..-4124,y=15057..34896,z=-86489..-68066
on x=-95271..-73643,y=-8281..-2302,z=5269..33970
on x=-22180..1312,y=-32828..-22422,z=-80345..-65642
on x=-49902..-20843,y=-11615..-5264,z=67929..77434
on x=-54310..-39323,y=-32495..-6462,z=39239..66258
on x=-20031..4022,y=50563..64702,z=44178..65613
on x=-5460..17220,y=69479..82968,z=-93..26732
on x=51905..72078,y=11383..28169,z=-49180..-26809
on x=59045..74424,y=-49404..-32586,z=2822..38387
on x=16110..37775,y=-15152..-5485,z=66144..82152
on x=16153..31577,y=64109..79966,z=7957..34548
on x=-73616..-46114,y=-41730..-10806,z=-42377..-34184
on x=-21820..-2194,y=-82802..-47511,z=-61692..-29261
on x=30857..38250,y=13048..40418,z=62640..79760
on x=-4023..5491,y=23358..43076,z=-81952..-57807
off x=-11417..16910,y=-6421..9542,z=-87766..-68468
off x=-80140..-59258,y=-44626..-28936,z=12903..45896
off x=31942..46811,y=-29583..-24759,z=-67482..-49237
off x=18831..43507,y=34731..49397,z=-66558..-57490
on x=-83682..-74692,y=-19795..-8370,z=4365..8081
on x=-73723..-48408,y=-41872..-17170,z=25850..39928
off x=-17905..-13154,y=-54510..-44611,z=-79922..-50706
off x=43753..68220,y=37781..49568,z=35107..63486
on x=19144..48501,y=27352..55966,z=52211..71545
on x=-68916..-50993,y=23610..43473,z=-35659..-22034
off x=-68708..-41208,y=50547..59778,z=-27505..-3997
off x=7976..32867,y=-64128..-52351,z=43125..51405
on x=7398..44110,y=-77989..-55830,z=-44794..-10674
off x=31543..59409,y=-59240..-49161,z=5888..22465
on x=-60924..-35763,y=5263..31909,z=-67060..-38563
off x=-46172..-25986,y=9684..20405,z=-74193..-53096
off x=-45030..-31272,y=49282..85688,z=-2147..16292
on x=-38198..-30030,y=-18830..8264,z=-82459..-62924
on x=25881..50501,y=38243..41409,z=-74137..-53637
off x=-75825..-51662,y=-28841..-1241,z=46043..72226
off x=23071..31413,y=-66262..-31252,z=-58336..-46372
off x=-65459..-43357,y=-71892..-47149,z=-7491..9113
off x=-11687..1834,y=-96323..-70268,z=-8442..-5013
off x=-98284..-75029,y=-13336..-469,z=-19639..-6647
off x=-78119..-77515,y=-17038..2730,z=-20329..-12884
on x=-11010..-282,y=68385..78119,z=19107..32396
off x=-18969..8580,y=-41228..-16323,z=64960..92107
on x=-30756..-9890,y=-77149..-74431,z=-16951..5536
on x=-1351..23521,y=34166..54033,z=-77118..-56805
off x=-41422..-2879,y=-39662..-25879,z=59642..72173
on x=-15189..7542,y=-78696..-58288,z=-53881..-21661
on x=-49875..-36660,y=42475..71985,z=-60886..-29856
off x=-33364..-243,y=51633..74148,z=-65820..-47122
off x=-13052..-438,y=-50291..-20306,z=64409..89480
off x=18797..30805,y=-61435..-29538,z=50927..72456
off x=-535..14954,y=-61772..-56234,z=42949..68543
off x=-61282..-28853,y=-79862..-64935,z=-5191..8964
on x=56833..82783,y=-5520..4690,z=-30238..-11759
off x=-48706..-29743,y=57961..88993,z=-26662..-13726
on x=-43753..-34836,y=45812..61088,z=-65900..-33088
on x=-34742..-12464,y=58565..88013,z=-10446..24279
off x=-728..28432,y=61668..80130,z=9951..13996
on x=-64953..-37238,y=8227..33992,z=-58763..-47419
on x=-60137..-37631,y=-62412..-46421,z=12784..25044
on x=39802..57534,y=46304..66897,z=9259..37972
on x=33582..38897,y=21300..32768,z=-69411..-63580
on x=54101..74684,y=-43691..-32515,z=-48214..-21217
on x=34443..47444,y=-38846..-17489,z=-79439..-44037
on x=26422..47943,y=-79544..-59532,z=-35194..-23693
on x=-27931..-4214,y=-41718..-37376,z=-71336..-56845
off x=-13025..12948,y=-9674..12098,z=61220..97279
off x=-71283..-56740,y=37883..60739,z=-32264..-4311
on x=-43113..-28486,y=-71249..-57817,z=-45405..-28013
off x=-32103..-9810,y=15842..24298,z=61423..87642
off x=-17927..-13972,y=-28844..-4847,z=-82475..-61095
off x=-5141..32816,y=-78393..-65416,z=-44689..-25883
on x=-14630..-226,y=-69465..-44081,z=-59199..-46219
on x=52453..72679,y=45237..64743,z=6061..39421
on x=-39673..-18265,y=-27573..-21807,z=68883..74631
off x=13079..24968,y=-48786..-26712,z=50948..66164
on x=41137..68193,y=20634..26236,z=-62237..-37673
off x=44473..74640,y=-41075..-29282,z=-48434..-34835
off x=2596..18042,y=-72490..-53937,z=43432..63623
off x=-79387..-46432,y=-59253..-35215,z=17915..21092
off x=-45378..-28774,y=-82320..-60579,z=-20033..5755
off x=-63078..-39995,y=56467..70582,z=-12429..7923
on x=56299..89046,y=16079..35370,z=1047..27734
off x=-73191..-62162,y=-10709..9255,z=31945..60769
on x=-92647..-73976,y=11508..44122,z=-10968..11288
on x=39283..50439,y=41452..75957,z=-44781..-17165
off x=-78580..-40455,y=-47032..-23251,z=35679..53864
off x=-35818..-15180,y=-60785..-44040,z=-56896..-32871
on x=-12403..19634,y=-37806..-28714,z=60466..92315
off x=-6584..14637,y=11601..32479,z=55981..82418
off x=3427..13895,y=62276..79635,z=-18569..-2036
off x=-75299..-55430,y=-56438..-42843,z=-40463..-20313
on x=-76382..-67609,y=-30159..-7158,z=-39763..-5641
off x=-78234..-66014,y=-4072..19725,z=-48675..-20237
off x=-17255..-1228,y=-79201..-62700,z=44411..52226
off x=41222..49220,y=-535..24648,z=50814..79651
on x=-17600..-2083,y=48656..69603,z=-72425..-53667
on x=-36970..-7303,y=-66857..-59482,z=37238..43473
on x=-35190..-15947,y=-8793..15350,z=67281..83539
off x=-33724..-28506,y=25447..42128,z=-76662..-56726
off x=-32909..-4673,y=70289..96002,z=-27988..-7725
off x=-35004..-10651,y=-46859..-21224,z=53920..66920
off x=48523..81631,y=6292..31267,z=-46628..-33235
on x=-81724..-60210,y=-33056..-19672,z=12796..29093
off x=14592..48270,y=514..16339,z=58375..85423
off x=841..26514,y=54248..80990,z=32342..54694
on x=962..22843,y=-74697..-48613,z=-43426..-33427
off x=-33279..-3222,y=15542..21113,z=-76837..-66803
off x=-70808..-46984,y=-26096..9606,z=-61364..-41726
off x=56234..91300,y=-46828..-25584,z=-31699..-5452
on x=7534..40696,y=39658..69911,z=-53349..-34492
off x=-86975..-78519,y=5399..12876,z=-11594..9440
on x=-37585..-14518,y=52841..72715,z=39495..59620
off x=-91693..-64961,y=-4273..14662,z=19646..33512
on x=29397..41835,y=-65015..-55284,z=-54315..-35308
off x=-56584..-41152,y=-70640..-58464,z=-16220..4708
on x=-34762..-16435,y=-45193..-41382,z=48897..72765
on x=-67677..-49516,y=18763..37669,z=12179..36798
on x=-55734..-36710,y=40109..63200,z=-4477..16097
on x=-36457..-26044,y=-2522..27516,z=56581..77833
on x=5866..29832,y=-88145..-59746,z=-8002..333
on x=57071..78433,y=10868..32933,z=-19783..-1923
off x=-20388..13468,y=-19002..-8309,z=69722..90287
off x=-73111..-66678,y=-51011..-14796,z=-26146..-18176
on x=-82713..-60890,y=-9594..16478,z=-43812..-16640
off x=25158..48301,y=-13762..4215,z=-75170..-73703
on x=-45132..-33935,y=50481..70678,z=12453..31598
on x=-61810..-35560,y=56241..69920,z=-18251..3076
on x=-57774..-49809,y=-34464..-16665,z=-54307..-38889
off x=57437..67902,y=-11426..2673,z=36182..51645
off x=-46056..-17171,y=15759..36036,z=56843..87869
off x=-537..20736,y=-78316..-40547,z=-71989..-47572
on x=-76615..-63688,y=-31204..-20452,z=-33164..-13158
off x=-81259..-63064,y=4310..30972,z=-44477..-13230
off x=1667..10220,y=-88640..-58969,z=21234..38278
off x=-82764..-61291,y=-12966..18053,z=-34401..-15913
on x=-830..23016,y=61029..84093,z=23471..32805
off x=45182..82533,y=31670..41676,z=5034..34474
on x=-79592..-60110,y=-28599..-10420,z=-15013..-13286
on x=41629..66177,y=7273..39832,z=-70911..-46964
on x=-24181..-2511,y=-14329..-8601,z=-87065..-71417
on x=68393..82452,y=-15645..7133,z=-25044..-4167
off x=-30452..5173,y=-90064..-64228,z=-33914..-16622
off x=-46198..-38849,y=30435..44046,z=-75515..-42056
on x=-3044..8360,y=-45702..-33159,z=48127..67169
on x=-19716..12232,y=-16974..-1798,z=62956..80159
off x=-8652..29525,y=50692..79736,z=-57953..-25988
on x=-67010..-50436,y=-39075..-16212,z=46626..72496
off x=-64360..-61888,y=35492..43270,z=-45633..-18851
off x=63654..91168,y=-627..9752,z=-45387..-13299
off x=-43687..-26223,y=47156..75205,z=-57949..-38000
on x=28170..64143,y=-71780..-50371,z=27285..45866
off x=75657..83623,y=7851..25102,z=5999..31863
off x=-2378..4668,y=1860..24150,z=-89080..-70158
off x=-28434..-20764,y=69532..82033,z=-18472..5260
on x=31597..50173,y=36277..68351,z=-54327..-25222
off x=-100..20288,y=-8018..18694,z=-81267..-61884
on x=54540..70105,y=13276..23659,z=-64495..-26166
off x=-65003..-37349,y=-50652..-32606,z=34817..43549
on x=11484..29883,y=-46774..-24790,z=-86030..-61340
off x=-16454..8894,y=32162..51804,z=-81832..-60183
off x=-87478..-72787,y=-27530..486,z=-6079..8294
on x=-15346..-1146,y=-81265..-52963,z=32335..51965
on x=66676..84372,y=-23588..-3704,z=15224..16541
on x=10118..32777,y=-27912..-10010,z=68364..93233
on x=13508..28471,y=-69894..-45072,z=39827..67714
on x=-16962..7480,y=62372..91811,z=-9568..19097
on x=49730..78835,y=-29714..-4555,z=-52455..-30159
off x=-41859..-23109,y=-19025..-85,z=73345..93699
off x=-64287..-43719,y=38786..51643,z=15814..50351
off x=-64017..-52686,y=-30352..-7910,z=-54269..-35636
on x=-48526..-28820,y=-29275..-21681,z=46865..61454
on x=-22984..3213,y=36151..57788,z=68972..81644
off x=24698..42651,y=42537..58033,z=45292..64070
on x=-60009..-43048,y=-19070..-6729,z=36715..57481
on x=-39419..-11957,y=57676..88023,z=-90..14383
on x=-69506..-45424,y=-12654..11191,z=-79962..-56241
off x=-84033..-48665,y=-21630..-9445,z=36751..42536
off x=33651..52330,y=21405..37083,z=61710..71195
on x=13392..35413,y=-91558..-60952,z=-17591..6695
on x=-30550..-21113,y=-85052..-50897,z=-35766..-32831
on x=22488..34701,y=60517..77966,z=-20244..4275
on x=12080..33217,y=-71597..-50737,z=-56565..-44719
off x=-29548..-15673,y=27877..41300,z=-79958..-48987
off x=-80390..-60613,y=20249..46361,z=19833..39996
on x=46966..84089,y=34806..47552,z=-18458..15199
off x=-9316..11741,y=68950..98330,z=-1520..13266
off x=-29925..-9889,y=-75732..-50199,z=34533..57412
on x=-7342..-2505,y=-85763..-59005,z=-35058..-25769
on x=29951..56079,y=-81275..-52573,z=11804..26280
on x=26737..50947,y=-64105..-53323,z=-55729..-21772
off x=-3718..18877,y=38035..41002,z=-79957..-63481
on x=-48088..-22962,y=42706..49143,z=52740..71769
off x=-71945..-57818,y=-11524..17450,z=37744..63978
on x=31524..44251,y=-4535..24563,z=58049..78765
on x=-53219..-32237,y=-72853..-53335,z=28182..54957
on x=-76635..-46440,y=23233..45049,z=16138..44117
off x=-38607..-19026,y=-37271..-25530,z=-81333..-55983
off x=-50145..-15369,y=16537..40806,z=-80796..-52898
on x=-43832..-19086,y=-45673..-37583,z=42936..71282
off x=-52699..-36375,y=20909..36727,z=32818..62015
off x=73367..82103,y=-38351..-19664,z=-2996..14667
on x=-30106..-16369,y=-57496..-36709,z=-62282..-40625
on x=-40612..-21586,y=29772..54286,z=-65210..-55574
on x=-21799..-6056,y=48843..67358,z=35525..59714
off x=6461..31862,y=-41077..-21034,z=-82019..-56743
off x=-16594..11056,y=-91484..-64770,z=11722..34592
on x=41693..49612,y=44598..61980,z=-39833..-12014
on x=67376..93098,y=23475..46194,z=3214..23673
off x=-81794..-62247,y=14498..29313,z=-30333..-3880
off x=31528..49103,y=63600..77967,z=21699..42370
on x=40818..63504,y=-43305..-29947,z=36934..49512
off x=-20193..-11713,y=35933..52262,z=-67731..-45077
on x=-674..27030,y=-78658..-58562,z=-33828..-15369

2
2021/data/day3.expected Normal file
View file

@ -0,0 +1,2 @@
3895776
7928162

Some files were not shown because too many files have changed in this diff Show more