From 0485b4f035dc27742c80cd8caa484b4bc4ba066d Mon Sep 17 00:00:00 2001 From: nim-ka Date: Sat, 19 Nov 2022 22:52:51 +0000 Subject: [PATCH] . --- 2021/1.js | 4 + 2021/10.js | 4 + 2021/11.js | 4 + 2021/12.js | 4 + 2021/13.js | 4 + 2021/14.js | 4 + 2021/15.js | 4 + 2021/16.js | 4 + 2021/17.js | 4 + 2021/18.js | 8 +- 2021/2.js | 4 + 2021/3.js | 4 + 2021/4.js | 4 + 2021/5.js | 4 + 2021/6.js | 4 + 2021/7.js | 4 + 2021/8.js | 4 + 2021/9.js | 4 + 2021/answers/1 | 3 + 2021/answers/10 | 3 + 2021/answers/11 | 3 + 2021/answers/12 | 3 + 2021/answers/13 | 8 + 2021/answers/14 | 3 + 2021/answers/15 | 3 + 2021/answers/16 | 3 + 2021/answers/17 | 3 + 2021/answers/18 | 3 + 2021/answers/19 | 3 + 2021/answers/2 | 3 + 2021/answers/20 | 3 + 2021/answers/21 | 3 + 2021/answers/22 | 3 + 2021/answers/23 | 3 + 2021/answers/24 | 3 + 2021/answers/25 | 1 + 2021/answers/3 | 3 + 2021/answers/4 | 3 + 2021/answers/5 | 3 + 2021/answers/6 | 3 + 2021/answers/7 | 3 + 2021/answers/8 | 3 + 2021/answers/9 | 3 + 2021/inputs/1 | 2000 +++++++++++++++++++++++++++++++++++++++++++++++ 2021/inputs/10 | 94 +++ 2021/inputs/11 | 10 + 2021/inputs/12 | 23 + 2021/inputs/13 | 840 ++++++++++++++++++++ 2021/inputs/14 | 102 +++ 2021/inputs/15 | 100 +++ 2021/inputs/16 | 1 + 2021/inputs/17 | 1 + 2021/inputs/18 | 100 +++ 2021/inputs/19 | 1004 ++++++++++++++++++++++++ 2021/inputs/2 | 1000 ++++++++++++++++++++++++ 2021/inputs/20 | 102 +++ 2021/inputs/21 | 2 + 2021/inputs/22 | 420 ++++++++++ 2021/inputs/23 | 5 + 2021/inputs/24 | 252 ++++++ 2021/inputs/25 | 137 ++++ 2021/inputs/3 | 1000 ++++++++++++++++++++++++ 2021/inputs/4 | 601 ++++++++++++++ 2021/inputs/5 | 500 ++++++++++++ 2021/inputs/6 | 1 + 2021/inputs/7 | 1 + 2021/inputs/8 | 200 +++++ 2021/inputs/9 | 100 +++ aoc | 2 +- cat.sh | 2 +- grid.js | 12 +- out.js | 210 ++++- pt.js | 163 +++- test.js | 35 + 74 files changed, 9130 insertions(+), 44 deletions(-) create mode 100644 2021/answers/1 create mode 100644 2021/answers/10 create mode 100644 2021/answers/11 create mode 100644 2021/answers/12 create mode 100644 2021/answers/13 create mode 100644 2021/answers/14 create mode 100644 2021/answers/15 create mode 100644 2021/answers/16 create mode 100644 2021/answers/17 create mode 100644 2021/answers/18 create mode 100644 2021/answers/19 create mode 100644 2021/answers/2 create mode 100644 2021/answers/20 create mode 100644 2021/answers/21 create mode 100644 2021/answers/22 create mode 100644 2021/answers/23 create mode 100644 2021/answers/24 create mode 100644 2021/answers/25 create mode 100644 2021/answers/3 create mode 100644 2021/answers/4 create mode 100644 2021/answers/5 create mode 100644 2021/answers/6 create mode 100644 2021/answers/7 create mode 100644 2021/answers/8 create mode 100644 2021/answers/9 create mode 100644 2021/inputs/1 create mode 100644 2021/inputs/10 create mode 100644 2021/inputs/11 create mode 100644 2021/inputs/12 create mode 100644 2021/inputs/13 create mode 100644 2021/inputs/14 create mode 100644 2021/inputs/15 create mode 100644 2021/inputs/16 create mode 100644 2021/inputs/17 create mode 100644 2021/inputs/18 create mode 100644 2021/inputs/19 create mode 100644 2021/inputs/2 create mode 100644 2021/inputs/20 create mode 100644 2021/inputs/21 create mode 100644 2021/inputs/22 create mode 100644 2021/inputs/23 create mode 100644 2021/inputs/24 create mode 100644 2021/inputs/25 create mode 100644 2021/inputs/3 create mode 100644 2021/inputs/4 create mode 100644 2021/inputs/5 create mode 100644 2021/inputs/6 create mode 100644 2021/inputs/7 create mode 100644 2021/inputs/8 create mode 100644 2021/inputs/9 create mode 100644 test.js diff --git a/2021/1.js b/2021/1.js index b99f059..a1b43e3 100644 --- a/2021/1.js +++ b/2021/1.js @@ -1,3 +1,7 @@ function day1(input, part2) { return input.split`\n`.num().count((e, i, a, k = a[i - (part2 ? 3 : 1)]) => k && e > k) } + +if (typeof window == "undefined") { + module.exports = day1 +} diff --git a/2021/10.js b/2021/10.js index 5ae7196..1179f48 100644 --- a/2021/10.js +++ b/2021/10.js @@ -26,3 +26,7 @@ function day10(input, part2) { return results.filter((e) => Array.isArray(e)).map((e) => e.reduce((a, b) => a * 5 + scores2[b], 0)).medianNumeric() } } + +if (typeof window == "undefined") { + module.exports = day10 +} diff --git a/2021/11.js b/2021/11.js index dbbf173..d3b7568 100644 --- a/2021/11.js +++ b/2021/11.js @@ -32,3 +32,7 @@ function day11(input, part2) { return part2 ? steps : totalFlashes } + +if (typeof window == "undefined") { + module.exports = day11 +} diff --git a/2021/12.js b/2021/12.js index 6b17b7a..73fa4a5 100644 --- a/2021/12.js +++ b/2021/12.js @@ -40,3 +40,7 @@ function day12(input, part2) { return count } + +if (typeof window == "undefined") { + module.exports = day12 +} diff --git a/2021/13.js b/2021/13.js index 56aaf3e..e59ec86 100644 --- a/2021/13.js +++ b/2021/13.js @@ -25,3 +25,7 @@ function day13(input, part2) { return new Grid(points.max((e) => e.x).x + 1, points.max((e) => e.y).y + 1).mapMut((_, pt) => pt.isIn(points) ? "#" : " ").toString("") } + +if (typeof window == "undefined") { + module.exports = day13 +} diff --git a/2021/14.js b/2021/14.js index ec5b9b9..3926828 100644 --- a/2021/14.js +++ b/2021/14.js @@ -35,3 +35,7 @@ function day14(input, part2) { return letters.max() - letters.min() } + +if (typeof window == "undefined") { + module.exports = day14 +} diff --git a/2021/15.js b/2021/15.js index 619a324..9174310 100644 --- a/2021/15.js +++ b/2021/15.js @@ -13,3 +13,7 @@ function day15(input, part2) { return end.searchData.dist } + +if (typeof window == "undefined") { + module.exports = day15 +} diff --git a/2021/16.js b/2021/16.js index 5180b14..62aef36 100644 --- a/2021/16.js +++ b/2021/16.js @@ -138,3 +138,7 @@ function day16(input, part2) { let bits = input.split("").flatMap((e) => parseInt(e, 16).toString(2).padStart(4, "0").split("").num()) return new Packet(bits)[part2 ? "getValue" : "getVersionSum"]() } + +if (typeof window == "undefined") { + module.exports = day16 +} diff --git a/2021/17.js b/2021/17.js index d4a94b5..3955a67 100644 --- a/2021/17.js +++ b/2021/17.js @@ -36,3 +36,7 @@ function day17(input, part2) { return vels.length } } + +if (typeof window == "undefined") { + module.exports = day17 +} diff --git a/2021/18.js b/2021/18.js index 61039e7..3855796 100644 --- a/2021/18.js +++ b/2021/18.js @@ -21,13 +21,13 @@ class SnailfishNumber { return true } } - + if (this.right instanceof SnailfishNumber) { if (this.right.explode(depth + 1)) { return true } } - + if (!(this.left instanceof SnailfishNumber) && !(this.right instanceof SnailfishNumber) && depth >= 4) { let lastNode = this let node = this.parent @@ -142,3 +142,7 @@ function day18(input, part2) { return pairs.map((e) => e[0].add(e[1]).magnitude()).max() } } + +if (typeof window == "undefined") { + module.exports = day18 +} diff --git a/2021/2.js b/2021/2.js index c5358cb..fdb1580 100644 --- a/2021/2.js +++ b/2021/2.js @@ -13,3 +13,7 @@ function day2(input, part2) { return x * y } + +if (typeof window == "undefined") { + module.exports = day2 +} diff --git a/2021/3.js b/2021/3.js index 6f2f6d3..2a3f499 100644 --- a/2021/3.js +++ b/2021/3.js @@ -19,3 +19,7 @@ function day3(input, part2) { return parseInt(oxy[0].join``, 2) * parseInt(co2[0].join``, 2) } } + +if (typeof window == "undefined") { + module.exports = day3 +} diff --git a/2021/4.js b/2021/4.js index 3e9d161..254f4a8 100644 --- a/2021/4.js +++ b/2021/4.js @@ -32,3 +32,7 @@ function day4(input, part2) { return score } + +if (typeof window == "undefined") { + module.exports = day4 +} diff --git a/2021/5.js b/2021/5.js index 74322d6..f40a340 100644 --- a/2021/5.js +++ b/2021/5.js @@ -29,3 +29,7 @@ function day5(input, part2) { return Object.values(dict).filter((e) => e > 1).length } + +if (typeof window == "undefined") { + module.exports = day5 +} diff --git a/2021/6.js b/2021/6.js index 8ecba89..c507940 100644 --- a/2021/6.js +++ b/2021/6.js @@ -10,3 +10,7 @@ function day6(input, part2) { return counts.sum() } + +if (typeof window == "undefined") { + module.exports = day6 +} diff --git a/2021/7.js b/2021/7.js index 8c567bf..5752c3d 100644 --- a/2021/7.js +++ b/2021/7.js @@ -13,3 +13,7 @@ function day7(input, part2) { return costs.min() } + +if (typeof window == "undefined") { + module.exports = day7 +} diff --git a/2021/8.js b/2021/8.js index 5e4d76e..8a7809e 100644 --- a/2021/8.js +++ b/2021/8.js @@ -30,3 +30,7 @@ function day8(input, part2) { return sum } + +if (typeof window == "undefined") { + module.exports = day8 +} diff --git a/2021/9.js b/2021/9.js index 3d50973..068f5d1 100644 --- a/2021/9.js +++ b/2021/9.js @@ -13,3 +13,7 @@ function day9(input, part2) { return sizes[0] * sizes[1] * sizes[2] } + +if (typeof window == "undefined") { + module.exports = day9 +} diff --git a/2021/answers/1 b/2021/answers/1 new file mode 100644 index 0000000..0604dac --- /dev/null +++ b/2021/answers/1 @@ -0,0 +1,3 @@ +1292 +----- +1262 \ No newline at end of file diff --git a/2021/answers/10 b/2021/answers/10 new file mode 100644 index 0000000..d166a3c --- /dev/null +++ b/2021/answers/10 @@ -0,0 +1,3 @@ +469755 +----- +2762335572 \ No newline at end of file diff --git a/2021/answers/11 b/2021/answers/11 new file mode 100644 index 0000000..086f454 --- /dev/null +++ b/2021/answers/11 @@ -0,0 +1,3 @@ +1691 +----- +216 \ No newline at end of file diff --git a/2021/answers/12 b/2021/answers/12 new file mode 100644 index 0000000..cd49aa4 --- /dev/null +++ b/2021/answers/12 @@ -0,0 +1,3 @@ +4241 +----- +122134 \ No newline at end of file diff --git a/2021/answers/13 b/2021/answers/13 new file mode 100644 index 0000000..b6ebf8f --- /dev/null +++ b/2021/answers/13 @@ -0,0 +1,8 @@ +695 +----- + ## ## #### ## # # # ### ## +# # # # # # # # # # # # +# # # # # # # # # # +# ## # # # ## # # # ### # +# # # # # # # # # # # # # + ### ## #### ### #### ## # ## \ No newline at end of file diff --git a/2021/answers/14 b/2021/answers/14 new file mode 100644 index 0000000..f2e284f --- /dev/null +++ b/2021/answers/14 @@ -0,0 +1,3 @@ +2068 +----- +2158894777814 \ No newline at end of file diff --git a/2021/answers/15 b/2021/answers/15 new file mode 100644 index 0000000..389dcfd --- /dev/null +++ b/2021/answers/15 @@ -0,0 +1,3 @@ +498 +----- +2901 \ No newline at end of file diff --git a/2021/answers/16 b/2021/answers/16 new file mode 100644 index 0000000..aeabbf7 --- /dev/null +++ b/2021/answers/16 @@ -0,0 +1,3 @@ +1038 +----- +246761930504 \ No newline at end of file diff --git a/2021/answers/17 b/2021/answers/17 new file mode 100644 index 0000000..bbc7967 --- /dev/null +++ b/2021/answers/17 @@ -0,0 +1,3 @@ +4656 +----- +1908 \ No newline at end of file diff --git a/2021/answers/18 b/2021/answers/18 new file mode 100644 index 0000000..dd1cd74 --- /dev/null +++ b/2021/answers/18 @@ -0,0 +1,3 @@ +3494 +----- +4712 \ No newline at end of file diff --git a/2021/answers/19 b/2021/answers/19 new file mode 100644 index 0000000..ab173e0 --- /dev/null +++ b/2021/answers/19 @@ -0,0 +1,3 @@ +447 +----- +15672 \ No newline at end of file diff --git a/2021/answers/2 b/2021/answers/2 new file mode 100644 index 0000000..e03d02c --- /dev/null +++ b/2021/answers/2 @@ -0,0 +1,3 @@ +1813801 +----- +1960569556 \ No newline at end of file diff --git a/2021/answers/20 b/2021/answers/20 new file mode 100644 index 0000000..d7fd4bc --- /dev/null +++ b/2021/answers/20 @@ -0,0 +1,3 @@ +4873 +----- +16394 \ No newline at end of file diff --git a/2021/answers/21 b/2021/answers/21 new file mode 100644 index 0000000..92edd50 --- /dev/null +++ b/2021/answers/21 @@ -0,0 +1,3 @@ +597600 +----- +634769613696613 \ No newline at end of file diff --git a/2021/answers/22 b/2021/answers/22 new file mode 100644 index 0000000..5629f0e --- /dev/null +++ b/2021/answers/22 @@ -0,0 +1,3 @@ +589411 +----- +1130514303649907 \ No newline at end of file diff --git a/2021/answers/23 b/2021/answers/23 new file mode 100644 index 0000000..c87f875 --- /dev/null +++ b/2021/answers/23 @@ -0,0 +1,3 @@ +10607 +----- +59071 \ No newline at end of file diff --git a/2021/answers/24 b/2021/answers/24 new file mode 100644 index 0000000..6f9cd49 --- /dev/null +++ b/2021/answers/24 @@ -0,0 +1,3 @@ +99691891979938 +----- +27141191213911 \ No newline at end of file diff --git a/2021/answers/25 b/2021/answers/25 new file mode 100644 index 0000000..40ca05e --- /dev/null +++ b/2021/answers/25 @@ -0,0 +1 @@ +534 \ No newline at end of file diff --git a/2021/answers/3 b/2021/answers/3 new file mode 100644 index 0000000..50862b0 --- /dev/null +++ b/2021/answers/3 @@ -0,0 +1,3 @@ +3882564 +----- +3385170 \ No newline at end of file diff --git a/2021/answers/4 b/2021/answers/4 new file mode 100644 index 0000000..f1214ca --- /dev/null +++ b/2021/answers/4 @@ -0,0 +1,3 @@ +54275 +----- +13158 \ No newline at end of file diff --git a/2021/answers/5 b/2021/answers/5 new file mode 100644 index 0000000..fa92c86 --- /dev/null +++ b/2021/answers/5 @@ -0,0 +1,3 @@ +6856 +----- +20666 \ No newline at end of file diff --git a/2021/answers/6 b/2021/answers/6 new file mode 100644 index 0000000..7c0c760 --- /dev/null +++ b/2021/answers/6 @@ -0,0 +1,3 @@ +353274 +----- +1609314870967 \ No newline at end of file diff --git a/2021/answers/7 b/2021/answers/7 new file mode 100644 index 0000000..6d1ed04 --- /dev/null +++ b/2021/answers/7 @@ -0,0 +1,3 @@ +347011 +----- +98363777 \ No newline at end of file diff --git a/2021/answers/8 b/2021/answers/8 new file mode 100644 index 0000000..3e55083 --- /dev/null +++ b/2021/answers/8 @@ -0,0 +1,3 @@ +525 +----- +1083859 \ No newline at end of file diff --git a/2021/answers/9 b/2021/answers/9 new file mode 100644 index 0000000..34d19b8 --- /dev/null +++ b/2021/answers/9 @@ -0,0 +1,3 @@ +585 +----- +827904 \ No newline at end of file diff --git a/2021/inputs/1 b/2021/inputs/1 new file mode 100644 index 0000000..84db578 --- /dev/null +++ b/2021/inputs/1 @@ -0,0 +1,2000 @@ +157 +158 +167 +157 +148 +154 +155 +156 +151 +126 +125 +119 +128 +136 +135 +144 +159 +157 +164 +163 +165 +166 +163 +186 +194 +197 +188 +203 +225 +228 +248 +263 +253 +280 +279 +277 +281 +282 +286 +290 +292 +275 +274 +282 +293 +301 +307 +305 +300 +296 +301 +310 +302 +299 +300 +308 +306 +327 +329 +323 +320 +324 +327 +340 +336 +343 +344 +345 +346 +347 +365 +368 +372 +373 +372 +371 +380 +379 +357 +380 +382 +392 +400 +375 +376 +374 +373 +376 +394 +407 +408 +406 +407 +405 +406 +405 +415 +399 +409 +405 +406 +416 +422 +423 +430 +435 +437 +438 +406 +413 +414 +413 +429 +430 +459 +454 +442 +451 +473 +459 +433 +434 +436 +438 +441 +448 +456 +460 +461 +470 +469 +481 +504 +502 +497 +499 +498 +501 +510 +516 +529 +531 +533 +528 +531 +529 +542 +543 +546 +557 +569 +571 +572 +567 +564 +570 +563 +581 +580 +581 +574 +576 +600 +596 +599 +603 +593 +591 +592 +591 +590 +593 +598 +572 +564 +566 +568 +595 +617 +618 +617 +616 +617 +600 +634 +616 +630 +595 +576 +549 +548 +560 +574 +580 +586 +575 +578 +580 +581 +582 +585 +595 +599 +601 +598 +603 +604 +602 +607 +630 +643 +648 +649 +650 +651 +650 +657 +658 +681 +683 +686 +681 +682 +684 +686 +670 +669 +670 +665 +671 +695 +683 +709 +708 +717 +714 +720 +711 +715 +716 +717 +719 +721 +727 +728 +729 +707 +706 +684 +682 +689 +691 +692 +703 +715 +716 +710 +716 +719 +720 +712 +722 +723 +731 +732 +741 +747 +723 +751 +748 +759 +766 +768 +767 +749 +750 +753 +754 +778 +786 +788 +794 +815 +830 +832 +839 +849 +848 +837 +836 +846 +831 +813 +814 +798 +814 +827 +822 +830 +831 +832 +841 +848 +851 +847 +845 +847 +846 +831 +813 +816 +809 +815 +821 +823 +822 +831 +834 +862 +863 +866 +868 +872 +873 +859 +852 +853 +863 +862 +869 +883 +887 +888 +903 +934 +932 +931 +932 +922 +933 +937 +936 +934 +939 +948 +949 +951 +949 +968 +974 +963 +954 +940 +955 +956 +971 +970 +966 +965 +973 +1000 +998 +1006 +1020 +1035 +1036 +1043 +1052 +1054 +1058 +1056 +1055 +1054 +1055 +1067 +1045 +1051 +1050 +1046 +1045 +1043 +1044 +1041 +1044 +1030 +1034 +1037 +1036 +1030 +1037 +1027 +1026 +1022 +1024 +1014 +1016 +1018 +990 +992 +991 +992 +997 +1023 +1024 +1016 +1018 +1027 +1024 +1026 +1006 +1000 +999 +1004 +1005 +1006 +1021 +1022 +1024 +1023 +1021 +1029 +1047 +1062 +1036 +1039 +1053 +1058 +1062 +1051 +1049 +1060 +1069 +1071 +1072 +1063 +1071 +1076 +1082 +1084 +1071 +1080 +1082 +1083 +1084 +1100 +1096 +1095 +1107 +1122 +1120 +1128 +1127 +1109 +1123 +1122 +1125 +1111 +1112 +1109 +1114 +1103 +1104 +1106 +1107 +1110 +1104 +1083 +1086 +1083 +1060 +1061 +1070 +1051 +1016 +1013 +1012 +1013 +1008 +1021 +1022 +1017 +1018 +1012 +1010 +1014 +1007 +1004 +1015 +1018 +1022 +1016 +1040 +1039 +1055 +1057 +1054 +1067 +1066 +1074 +1075 +1079 +1086 +1087 +1074 +1075 +1076 +1084 +1070 +1076 +1075 +1072 +1081 +1097 +1098 +1095 +1077 +1055 +1056 +1058 +1074 +1075 +1074 +1084 +1085 +1099 +1092 +1093 +1094 +1053 +1049 +1068 +1069 +1067 +1069 +1081 +1092 +1104 +1121 +1124 +1125 +1123 +1106 +1143 +1133 +1134 +1116 +1134 +1136 +1137 +1139 +1138 +1142 +1143 +1155 +1156 +1157 +1146 +1156 +1157 +1180 +1200 +1189 +1188 +1187 +1189 +1198 +1203 +1204 +1198 +1219 +1213 +1215 +1220 +1222 +1223 +1224 +1227 +1236 +1232 +1233 +1236 +1238 +1239 +1244 +1245 +1246 +1211 +1213 +1217 +1222 +1218 +1219 +1227 +1228 +1242 +1244 +1243 +1240 +1245 +1244 +1252 +1244 +1242 +1243 +1242 +1252 +1261 +1269 +1284 +1290 +1291 +1292 +1293 +1290 +1292 +1293 +1294 +1298 +1303 +1304 +1308 +1294 +1291 +1292 +1289 +1274 +1281 +1282 +1304 +1305 +1303 +1304 +1285 +1286 +1281 +1284 +1292 +1285 +1281 +1282 +1279 +1287 +1298 +1319 +1311 +1309 +1342 +1325 +1334 +1331 +1340 +1341 +1342 +1343 +1344 +1345 +1332 +1333 +1338 +1340 +1375 +1331 +1357 +1351 +1366 +1362 +1360 +1336 +1334 +1335 +1336 +1333 +1336 +1330 +1335 +1334 +1328 +1329 +1323 +1337 +1338 +1333 +1322 +1326 +1323 +1324 +1323 +1332 +1336 +1341 +1332 +1367 +1370 +1371 +1372 +1385 +1391 +1414 +1399 +1400 +1398 +1399 +1388 +1386 +1384 +1383 +1412 +1416 +1417 +1416 +1419 +1407 +1414 +1424 +1423 +1417 +1439 +1451 +1450 +1455 +1453 +1456 +1449 +1464 +1467 +1468 +1473 +1470 +1472 +1473 +1474 +1470 +1456 +1472 +1452 +1447 +1469 +1471 +1452 +1453 +1454 +1461 +1462 +1463 +1478 +1482 +1477 +1476 +1482 +1483 +1489 +1490 +1484 +1485 +1484 +1486 +1469 +1476 +1479 +1478 +1480 +1479 +1469 +1467 +1477 +1495 +1494 +1480 +1474 +1475 +1483 +1497 +1499 +1487 +1480 +1481 +1479 +1512 +1514 +1516 +1519 +1521 +1513 +1516 +1521 +1522 +1529 +1521 +1524 +1526 +1525 +1526 +1527 +1526 +1527 +1529 +1535 +1547 +1548 +1552 +1555 +1559 +1561 +1571 +1572 +1571 +1573 +1577 +1580 +1579 +1580 +1581 +1561 +1565 +1567 +1562 +1573 +1584 +1586 +1578 +1581 +1583 +1582 +1573 +1596 +1597 +1598 +1609 +1615 +1620 +1610 +1616 +1607 +1609 +1593 +1598 +1599 +1603 +1604 +1597 +1602 +1615 +1618 +1627 +1625 +1619 +1618 +1614 +1617 +1616 +1610 +1630 +1639 +1642 +1646 +1648 +1645 +1656 +1658 +1652 +1644 +1645 +1657 +1656 +1690 +1691 +1692 +1701 +1717 +1715 +1718 +1712 +1711 +1710 +1709 +1715 +1712 +1723 +1722 +1725 +1720 +1711 +1710 +1713 +1717 +1718 +1730 +1722 +1700 +1715 +1740 +1743 +1742 +1740 +1743 +1749 +1752 +1751 +1754 +1762 +1775 +1776 +1808 +1805 +1806 +1802 +1800 +1802 +1812 +1809 +1810 +1806 +1807 +1826 +1823 +1826 +1828 +1824 +1830 +1839 +1842 +1814 +1815 +1818 +1824 +1825 +1826 +1859 +1834 +1837 +1841 +1849 +1865 +1878 +1875 +1876 +1888 +1889 +1906 +1908 +1911 +1912 +1916 +1920 +1929 +1933 +1923 +1920 +1931 +1926 +1927 +1917 +1914 +1912 +1904 +1910 +1911 +1902 +1899 +1894 +1886 +1889 +1885 +1887 +1898 +1899 +1893 +1881 +1905 +1904 +1930 +1931 +1928 +1926 +1923 +1889 +1849 +1839 +1841 +1842 +1835 +1836 +1808 +1801 +1800 +1793 +1798 +1804 +1823 +1808 +1809 +1820 +1828 +1831 +1819 +1820 +1824 +1817 +1819 +1815 +1810 +1802 +1819 +1835 +1838 +1829 +1824 +1822 +1829 +1837 +1867 +1870 +1869 +1876 +1878 +1873 +1874 +1884 +1882 +1859 +1844 +1840 +1860 +1844 +1852 +1849 +1860 +1861 +1864 +1855 +1854 +1850 +1855 +1859 +1849 +1853 +1871 +1870 +1843 +1839 +1844 +1848 +1854 +1839 +1841 +1862 +1863 +1869 +1870 +1872 +1877 +1879 +1878 +1873 +1877 +1885 +1884 +1883 +1889 +1897 +1896 +1902 +1899 +1900 +1897 +1891 +1895 +1908 +1911 +1917 +1927 +1926 +1929 +1935 +1937 +1935 +1932 +1934 +1936 +1932 +1929 +1932 +1941 +1960 +1953 +1956 +1954 +1966 +1967 +1994 +2002 +1994 +2002 +2016 +2020 +2014 +2001 +1964 +1972 +1973 +1972 +1968 +1969 +1968 +1966 +1953 +1954 +1963 +1962 +1963 +1964 +1960 +1949 +1950 +1954 +1957 +1958 +1960 +1964 +1995 +1997 +1984 +1983 +2005 +2010 +2026 +2034 +2035 +2036 +2034 +2037 +2040 +2044 +2052 +2054 +2081 +2083 +2085 +2086 +2088 +2090 +2089 +2092 +2086 +2088 +2091 +2087 +2090 +2093 +2085 +2086 +2096 +2125 +2132 +2142 +2165 +2169 +2170 +2167 +2168 +2169 +2168 +2158 +2162 +2171 +2169 +2165 +2166 +2164 +2178 +2194 +2190 +2189 +2202 +2205 +2207 +2226 +2227 +2226 +2210 +2209 +2208 +2231 +2232 +2246 +2251 +2250 +2254 +2250 +2249 +2245 +2246 +2247 +2267 +2264 +2259 +2287 +2263 +2274 +2277 +2237 +2242 +2256 +2277 +2278 +2292 +2293 +2306 +2323 +2326 +2300 +2296 +2297 +2318 +2320 +2322 +2326 +2324 +2325 +2331 +2355 +2357 +2380 +2375 +2378 +2391 +2395 +2403 +2404 +2409 +2410 +2405 +2406 +2401 +2404 +2406 +2424 +2418 +2405 +2404 +2401 +2403 +2409 +2401 +2385 +2386 +2389 +2385 +2388 +2404 +2405 +2412 +2414 +2430 +2429 +2403 +2402 +2407 +2408 +2410 +2399 +2374 +2403 +2416 +2431 +2433 +2434 +2438 +2439 +2453 +2455 +2456 +2457 +2464 +2465 +2464 +2465 +2469 +2464 +2472 +2458 +2446 +2448 +2447 +2457 +2481 +2470 +2479 +2502 +2521 +2538 +2527 +2522 +2528 +2516 +2519 +2517 +2530 +2538 +2537 +2544 +2545 +2547 +2572 +2555 +2550 +2551 +2552 +2553 +2555 +2558 +2559 +2558 +2560 +2546 +2540 +2546 +2545 +2548 +2554 +2556 +2557 +2553 +2581 +2608 +2617 +2613 +2604 +2643 +2650 +2651 +2646 +2647 +2648 +2653 +2642 +2644 +2645 +2642 +2639 +2661 +2656 +2655 +2653 +2654 +2655 +2643 +2660 +2662 +2659 +2658 +2659 +2660 +2661 +2642 +2652 +2650 +2657 +2650 +2644 +2620 +2636 +2635 +2636 +2637 +2611 +2608 +2594 +2603 +2605 +2604 +2605 +2602 +2573 +2562 +2559 +2560 +2548 +2558 +2562 +2566 +2567 +2569 +2574 +2601 +2611 +2613 +2629 +2618 +2607 +2609 +2611 +2613 +2617 +2629 +2618 +2625 +2631 +2637 +2642 +2633 +2622 +2623 +2617 +2607 +2617 +2615 +2616 +2617 +2622 +2635 +2637 +2639 +2640 +2643 +2644 +2645 +2647 +2641 +2640 +2658 +2657 +2656 +2661 +2663 +2670 +2672 +2678 +2685 +2686 +2683 +2684 +2687 +2689 +2691 +2703 +2708 +2714 +2718 +2717 +2720 +2740 +2741 +2749 +2732 +2738 +2744 +2749 +2750 +2747 +2738 +2733 +2760 +2747 +2748 +2749 +2750 +2759 +2767 +2771 +2778 +2776 +2774 +2758 +2750 +2751 +2753 +2755 +2766 +2774 +2778 +2772 +2776 +2775 +2777 +2774 +2794 +2795 +2796 +2799 +2800 +2797 +2827 +2824 +2825 +2830 +2841 +2839 +2838 +2840 +2835 +2836 +2853 +2852 +2869 +2877 +2890 +2892 +2889 +2894 +2904 +2901 +2907 +2911 +2915 +2924 +2932 +2933 +2912 +2928 +2931 +2939 +2941 +2940 +2941 +2931 +2930 +2926 +2897 +2899 +2887 +2879 +2899 +2898 +2903 +2908 +2911 +2910 +2927 +2930 +2923 +2933 +2945 +2961 +2971 +2972 +2973 +2974 +2973 +2987 +2989 +2988 +2992 +3003 +2995 +2996 +2983 +2984 +2989 +2998 +3007 +3006 +2991 +3023 +3013 +3004 +3006 +3017 +3021 +3033 +3031 +3034 +3018 +3017 +3019 +3017 +3023 +3046 +3059 +3066 +3063 +3060 +3058 +3061 +3062 +3070 +3078 +3082 +3087 +3090 +3118 +3117 +3125 +3127 +3133 +3138 +3154 +3146 +3147 +3141 +3149 +3157 +3160 +3166 +3174 +3187 +3188 +3200 +3203 +3218 +3221 +3220 +3248 +3249 +3244 +3241 +3242 +3240 +3214 +3213 +3230 +3229 +3227 +3223 +3219 +3210 +3224 +3220 +3240 +3232 +3229 +3218 +3224 +3242 +3241 +3244 +3267 +3281 +3286 +3287 +3303 +3304 +3314 +3318 +3307 +3292 +3331 +3332 +3334 +3339 +3348 +3356 +3374 +3405 +3406 +3408 +3411 +3407 +3399 +3402 +3403 +3405 +3395 +3394 +3393 +3394 +3382 +3388 +3374 +3376 +3371 +3373 +3403 +3404 +3395 +3401 +3418 +3419 +3420 +3423 +3424 +3412 +3401 +3402 +3401 +3413 +3419 +3421 +3391 +3384 +3392 +3393 +3401 +3404 +3407 +3408 +3410 +3426 +3427 +3431 +3430 +3448 +3449 +3451 +3458 +3463 +3443 +3442 +3432 +3423 +3437 +3439 +3419 +3426 +3427 +3426 +3425 +3426 +3428 +3429 +3436 +3435 +3443 +3433 +3448 +3446 +3449 +3445 +3439 +3447 +3440 +3456 +3443 +3467 +3478 +3473 +3487 +3486 +3484 +3494 +3492 +3489 +3497 +3500 +3488 +3487 +3488 +3491 +3487 +3511 +3520 +3515 +3512 +3504 +3509 +3502 +3505 +3508 +3511 +3512 +3513 +3515 +3516 +3519 +3524 +3519 +3520 +3518 +3529 +3535 +3539 +3551 +3560 +3559 +3567 +3571 +3569 +3570 +3556 +3559 +3538 +3541 +3542 +3548 +3535 +3533 +3539 +3549 +3545 +3546 +3541 +3527 +3528 +3564 +3565 +3568 +3571 +3569 +3574 +3578 +3583 +3585 +3601 +3598 +3620 +3621 +3638 +3621 +3623 +3602 +3605 +3600 +3601 +3602 +3582 +3584 +3574 +3570 +3572 +3563 +3564 +3565 +3557 +3556 +3557 +3558 +3555 +3560 +3565 +3564 +3552 +3560 +3559 +3589 +3592 +3590 +3605 +3617 +3599 +3600 +3608 +3589 +3593 +3600 +3598 +3596 +3597 +3598 +3610 +3611 +3631 +3637 +3660 +3661 +3673 +3680 +3681 +3680 +3676 +3677 +3678 +3664 +3656 +3655 +3640 +3637 +3635 +3636 +3639 +3621 +3608 +3592 +3606 +3605 +3601 +3603 +3620 +3619 +3617 +3609 +3612 +3610 +3599 +3606 +3602 +3605 +3604 +3606 +3615 +3617 +3619 +3620 +3626 +3627 +3626 +3625 +3640 +3653 +3625 +3617 +3620 +3623 +3633 +3627 +3598 +3607 +3606 +3611 +3610 +3609 +3611 +3612 +3620 +3621 +3602 +3593 +3594 +3593 +3594 +3602 +3603 +3610 +3596 +3600 +3604 +3601 +3604 +3605 +3582 +3579 +3568 +3569 +3576 +3584 +3586 +3566 +3563 +3571 +3581 +3586 +3601 +3584 +3574 +3585 +3574 +3584 +3581 +3585 +3576 +3578 +3593 +3618 +3623 +3624 +3628 +3636 +3638 +3643 +3648 +3641 +3664 +3662 +3675 +3690 +3697 +3698 +3695 +3696 +3694 +3685 +3686 +3687 +3684 +3693 +3687 +3704 +3710 +3711 +3715 +3710 +3705 +3692 +3704 +3709 +3724 +3725 +3729 +3722 +3723 +3712 +3716 +3717 +3741 +3714 +3700 +3716 +3710 +3711 +3733 +3734 +3737 +3728 +3729 +3739 +3743 +3746 +3756 +3763 +3794 +3798 \ No newline at end of file diff --git a/2021/inputs/10 b/2021/inputs/10 new file mode 100644 index 0000000..aee98c5 --- /dev/null +++ b/2021/inputs/10 @@ -0,0 +1,94 @@ +(<{([{([[[<{(<(){}>({}()))}[(<[]<>>{<>})[{{}()}<{}[]>]]><[[<{}{}>([]{})]<<<>{}>[<>{}]}]{{([]{})({}())}< +<[<<{<[(([[[[<[][]>][(<>()){<>()}]]][<{<<>{}>(()<>)}><([<>{}]{()()})([()()]([]{}))>]]){{<{[[<><>]({}{})] +<(({(<{<({[<[[[]()][<>[]]]{{{}()}({}[])}>]{[{<<>[]>[()[]]}][[[{}[]](<>{})]{[()()]((){})}]}}( +{{[{[[[{{{{{[([]())(<>())](<[]<>>{[]{}})}([[(){}]<<>()>]<<()()><{}{}>>)}}((<[{{}()}<()>]<({}{ +({([({([[({([{[]<>}]<<<>{}>[<>[]]>)})({{{[()[]]<()>}(([]<>)<[]()>>}({[<>{}]}([{}<>]([]())))})]][{< +<(((<<<{([[[<{()<>}{{}()}>[({}())([][])]]{{(()())(<>{})}(<{}><[]{}>)}]<[{([]())<{}>}<[[][]](<>)>]<{ +(([{[{([(<{{[<{}><<><>>]<<{}<>>>}(({<>{}}(<>[])){{<>[]}})}>)({(<<([]<>){[][]}>([{}<>]({}()))>)<(([<>{}]<{}[]> +<((<[[<({[<({{<>[]}}{<<>{}><{}[]>}){([(){}])<(()[])<<>[]>>}>(<((<>[])[<>[]]){{<>{}}{{}()}}>)]}[< +<[{<[<(<[[[{[<[][]>][[<>()}({}())]}]<<((<>[]))[((){}){[]()}]><((()<>){{}{}})[(()[])<<><>>]>>]]{<[[<<< +[{(<(({{{(<(({{}{}}))>{<[(<>[])<(){}>]<<()<>>{[][]}>>((([]()){[]})({<>[]}<()[]>))})({<<({}())>[(()()) +<{[<<[<[([{{<<(){}><()[]>>([{}<>][{}<>])}}[[[[(){}]({}())][(()[])<[]()>]]]]({([<<>>[<>()]]([[]<>]<{}{}>))((<{ +({{{<(([{(([{{()()}{<>{}}}[<<>>[()()]]]))<[<[[{}{}]{[]()}]<([]<>){[]()}>}{{{[]}[<>()]}}]>}] +[(([({[<([{<<({}{})<{}[]>>><<{()()}([])>{{[]<>}[()()]}>}{{<([]()){{}{}}>[{<>()}{{}()}]}[({<>()}{(){}})<[{}( +{([{({[<<<<<[{{}[]}](<{}<>>)>>({(<{}()>[[][]])})>><<[[({<><>}({}[]})]([{{}()}[[]()]][({}{})({}{})]) +<{([{[<{<<{<<{<>[]}<()<>>>[<<>()>(()[])]>{<({}())([]())>}}<({{{}{}}([]{})}{{{}<>}({}<>)})[{<{}()>(()[ +[<{{(<{<<{<(<{[]<>}{(){}}>{{()<>}[[][]]}){[{<>[]]<{}<>>]<({}{})>}>}{<(<{[]{}}(<>())>)[{{[][]}[()]}<<()>< +[[[<[[[[<{(((<[][]>(()<>)))<<<<>{}>{<><>}}{({}())(<>{})}>)[({[<><>][{}()]}[([]{})])({(<><>)[(){}]}(<{ +({[<[<<([<{<{(<>{}){[]>}<{{}[]}(<><>)>>}><[(<({}())><<<>()>[()[]]>)([{<>{}}({}{})])]({{{<>{}}{{}<>}}[[< +[(<[{<[[(<[<{[()()][{}[]]}{[(){}][<><>]}>]{({<[][]>[()<>]}[([][])<{}>])}><[(<([][])<<>()>>[[<>()](<><>)] +[({(<{[<{[(<<[()<>]([]{})>[<[][]>({}{})]>(<{[]<>}<<>[]>>((()[]){{}[]}))){[<({}{})<()<>>><<()[]>([])>]<<< +<(<((({{<[{<[<()[]><()<>>]{<<>{}><()[]>]>{<{()[]}{<>()}>({()<>}[<>{}])}}<<[[()()]<[][]>]<<()<>><{}{}>>> +<<{{[{([{(({[<()<>>[{}()]]{<()()><[][]>}}(((()<>]{{}{}})([<>[]]{<>[]})))[<[<{}()>({}())]<(()<>)[[]()]> +<<[[(<[<[[<{(<<>{}>{[]<>})}<<[[]<>](<>())><{{}<>}[()()]>>>((({{}()}<()()>))[[(<>{})<<>{}>]{(()){{}<>}}] +[{<{([<<{{[[[<[]{}>{(){}}][{{}()}{[][]}>][({{}()}[{}{}]){({}<>)}]]{{[({}())([])][<{}><{}()> +[{((({([{((<<[[]()]<{}>><<[][]><[]{}>>>[[[<>()]{[]{}}][{()<>}[(){}]]]))<<{[<[]{}>({}{})]}>(<{[[] +{[[[{[{{((<[(<<>[]><{}()>)[{<>()}[()<>]]]{({{}{}}({}{})){[()()](())>}>)({(<<[]()><[]>>)}{[[({}[]){()< +<<<((<<({({<<[[]][[][])>>[({<><>}[<>()])<[{}{}]([][])>]})([{(<[][]>[{}<>])<[<><>]>}<<([]{})(()<>)>[[{ +[({[([{[{<(({([][])<{}[]>}({(){}}[()()]))<([{}[])(<>[]))[({}()){[]<>}]>){<{[()[]]<{}{}>}>{<[()()]<[] +{<<[<<[((([{[{[]()}<<>>][<()[]>]}[[{{}()}{[][]}]<({}{})(<>{})>]]){({[{()<>}<{}<>}]{(()<>)}}<([[]][[]( +<<({{[{<<{<[{[()()][[][]]}]>(([{[]}(()())]<{()[]}<<>[]>>)(((()[])[()()])))}{((<{{}()}{{}{}}>{[[] +<({[{[(([{([[<{}<>>]]<[[()<>](<>())]>){[[[(){}]]{<{}<>>{()<>}}]{<[[]{}]<{}{}>>{[()<>]}}>}]{(([{([]{} +[<{{{<<[{(({[({}()){{}[]}](({}{}){[]{}})}(<{{}[]>>[<()<>>{{}<>}]))[[<<[][]>><(()())[<>()]>][({()[]}(() +(<{{{{[({[{{<[{}<>]((){})><[[]{}](<><>)>}(({[][])<{}[]>)[<()()>[<>[]]])}]})]<{{[<{(([]{})<()()>){ +(<<<<[{((<{({({}[])[[]()]}[<{}{}>([]<>)])(({[]()})({(){}}(<><>)))}[[[<[]{}><()()>]<{{}()}{{} +(([([[<{{{([<(<><>){(){}}>[[[]{}]]]({[[]{}]<()()>}<<<><>>>))}}}]<[[<({[{<><>}{<>()}]{([]<>){()<>}} +(<(<{<(<(<(({{<>}<[]()>}([[]{}])){<(<>())[{}()]>([()[]](()))})[[[{()()}({}{})]<<{}>([]{})>]([<()[]><{}<>> +[(<[[{{((<[<<<[]>[{}{}]}<[[]<>]<[]{}>>>{{[[]()][()<>]}}]>{({([{}()]<()()>)[<()[]><(){}>]}[ +{[<{<<<<<[{(<{[][]}({}())>(((){}){()()}))}]>>{(<({<(<>{}){[]{}}>{((){})<<>()>}}<<[<><>][<>()]>[<[][]><<><>> +<{[({<[{{{<{<(()[])><{[]()}<(){}>>}{[([][])[()[]]]}>}({{({{}<>}<[]()>)}}<([{{}<>}]<({}<>)<()<>>>)<<([]( +<[<{(<({[<[({<()<>>{(){}}}<{{}[]}(()<>)>)]{<(<<><>>(<>))<{{}<>}({}<>)>>{{<()[]>{{}{}}}{<[]<>>}}}>]}{<[ +{{[<({{{{[{({[{}[]]{{}[]}})(({[][]}<<>()>)<[<>{}]{[]<>}>)}{{<[<>{}][()()]>([(){}](<>{}))}}] +([{<[(((({[({<()<>><<>{}>})]{<[([])[<>()]]{(<>)[[]{}]}>[<(<>)({}[])>[({}){<><>}]]}}{[[<(<>)(()[])> +{(<{<{<({[({{[{}[]]}})[({(<><>){[][]}})<([()[]](<>{}))<[{}()]((){})>]]]{{{<(()<>){()<>}>}[(({}())[ +<(<[<{{{[[<{({()()}([]{})){[<>]<(){}>}}>[[[{[]<>}{<>[]}][(<>{}){<><>}]](({(){}}<[]<>>))]][<({{{}( +<{((([<{<[[(({()<>}(()<>)))[<{[][]}[<><>]>]]]><<(({([][])[{}{}]}[<[]{}>[<><>]])([{(){}}[()()]][[[]{}]({}[])]) +{{<[[{<<[<<{{<<>{}>([]())}[[<>[]](()[])]}[<({}{})[<><>]>[[{}]{[]}>]>>[<([([])(()[])])><{(<(){}>{()[]}) +[<[[<<(<{<({{<<><>>([]<>)}}{<[{}{}]{[][]}>[{[]{}}<<><>>]})({{<[]<>>(()[])}(({}[])[()<>])}) +(([<{[{[[<{(({<>[]}{()[]}))[{[()[]]{<><>}}(({}{})[{}[]])]}[{(<{}<>>(<><>))<(()<>)([][])>}{<{[]()}<(){}> +(<<{{<{(<{<<[{{}{}}{{}()>]{{<>[]}<<>[]>}>>}>)<[({[{([]<>)(())}[({}{}){(){}}]]{[[(){}]]<([])([][ +({{(<[<[<<<{[{<>[]}]<{{}<>}>}>{<<[[]()]((){})><<[]()>[(){}]>>{{([]()){[]()}}(<()()>)}}>({[([<><>][<>()]){(()( +<[{(<(<{([[[<([]{})<<><>>>[[()]([]<>)]]]{[<[<>{}]([]())}([<>()][{}<>])]<<([]{}){{}<>}><{{}()}{<>()}>>}])< +(({{({[[[<({[({})<<>[]>]{<{}()>{()[]}}}){[[(<>{})([]{})]{[{}()](()[])}]([<()()>]{((){})<{}()>})}><[[ +[[[(({<{[([(({()<>}<[][]>))][[(([]())[[][]]){<[]>}]([[[][]]<<>[]>]([{}]{()()}))])]{{[({[<>[]][[]]}{(< +([([{<[(({[{{<(){}>([]<>)}(<[]<>><(){}>)}]({([{}{}][()<>])}{(([]<>){[]<>}){[<>[]]<{}<>>}})}))<((< +{<(<[{<<<(({<{()<>}<[]<>>>}{<[<>{}>{{}<>}>({(){}}{()})}){[{(())(()())}({()[]}(()<>))]<[{(){}}({}<>)]<[<>()]> +{{[<[{([<(<<<<[]{}>[[][]]>{[()[]]<<>[]>}>{(({}())([][]))({[]()}<()<>>)}>[(({[]<>}(()[]))[<{}<>>{()[]}]) +<{<{{{{<[{{(<{{}{}}{()()}>[([]{}){[]()}])<{[[]<>]<<>()>}[<{}[]>{[]()}]>}<((<()()>[()[]]))>}][{[{<<{} +({(([({[[(<<([<>()]{{}<>})(<()()>[[]()])>(<[()[]]{[]()}>{[()()]{()()}})>){[{[[()<>](()<>>]}([[ +({{<{[[{{<{<{([]){[]<>}}{{[]{}}<[]<>>}>}(<{{{}[]}<{}>>>)>}(([[[([]())(<>)]{[[]{}][[]]}]<<({}() +[{([({([<<<<{{()[]}<{}{}>}[[[]()]{<>{}}]>[([<>{}]<[][]>){{[]<>}({}{})}]>{[[<[][]>([]())]{[<><>](<>[ +([({{<<({(([[<<>()><{}<>>]<(()[])({}())>]){((<[]()>[(){}])(<<><>>{{}[]})){[[[]()][[]<>]]<<[]()>[{ +[{(<<({[<[<<{[{}<>}[{}()]}{[[]<>]{()()}}>(<[()[]][()()]>)>(<{[()<>](()<>)}<<<>>({}{})>>([{ +(<[[{(({[{{({[()<>]}(({}[])[<><>]))([[[]<>](<>[])]{<(){}>[()<>]})}(((<<><>>({}()))({<>}((){})) +(<{{<<<[({({[{{}<>}[<><>]][(()<>)<<>()>]}>})(<(<((()[])({}))<<<>>([][])>>)(({<()()>[()<>]})(({{}{}}({}()))( +({<{{[<<{([((((){})<[]()>)(<<>[]>({}())))<{({}[])([])}{<{}[]>{()()}}>]<<{[()[]]{[]<>}}>>]}{<{([<[]<>><(){}> +<[<[<<({{<[[{{<><>}<{}<>>}<[[][]>({}<>)>]]>(<<{(<>{}){()[]}}[<()<>>[[]]]>>[{<<<><>>((){})>[<()()>[{}<>]]}<([ +{<<(<[([<[[{<{[]<>}{{}[]}>{[<>()]{{}{}}}}<{<()<>>[()[]]}{(<>{})({}())}>]]><[([<<()<>>{()[]}>(<<>> +{<({<[{{({(((({}[])(()<>)){(()[])})<[<(){}>(()<>)][<{}<>><[][]>]>){<{([]()][()<>]}<(<>())<() +{{(([<[({<[(((<>()){()[]}){(<>{}){[]<>}}]<{{{}()}<{}{}>}[[{}()]{{}<>}]>][<{[[][]]{[]<>}}<<(){}> +{[{(<{{([[{<{{<>}[<>{}]}{<[][]>{[]()}}>(((()[])({}()))<<()()>{[][]}>)}[<(((){}){{}[]})[({}[])] +{[<([[({{({{[<{}[]>{[]()}])}<[[[[]{}]][<()[]>({}[])]]<<[[]<>]<<>{}>><{<>{}}(<>{})>>>)}}){{<([ +[([<(([[[{{<{<[]{}>{[][]}}[<[]()>(()[])]>{[{<>{}><()[]>][[[]]]}}<[[((){})[[]<>]][(()[])([][])]]>}(<{[[[]() +[([{[({[{{{{<{()[]}>{<<><>>}}[[(<><>)([]())][([][]){<>[]}]]}}}]})]{{{[<{{{<{{}()}(<>{})>}{<({ +[<[{<[[[[<<<[<()[]>[()()]]<[{}()](<>)>><([<>{}]({}[]))>><<[<{}{}>[<>()]]((<>{}){[]()})>[([ +[<{{[{([[<<[<(<>{})({}<>)>]{<[[]{}]>{(()<>)[<>[]]}}>{[((()[])(()[])){({}{}}[[]{}]}]{([{}[]] +{<<(<{<<([(<{<{}>[()()]}{{{}{}}[{}()]}>[{{[]()}{{}<>}>{{()()}([]{})}]){(<[()<>]<[]{}>>[{(){}}([]<>)])}] +[<[<([<[{{{(<({}<>)[{}()]>[[<>()]])(({()[]}){({}){[][]}})}}}(<([<{{}[]}[{}{}]>{(()())}])[((({}[])[ +{(<(([(([[{<{<()[]>(()[])}(<<><>>(<><>))><[[[]{}][()()]]{([]{})({})}>}]({<[{()()}(<>()))<[[]](()())>>}<({{{}{ +{(({{<{([<{<<<(){}><{}()>>{[<><>]<{}()>}><[<{}{}>]<{<>[]}<(){}>>>}{{({[]<>}{()[]})}}><{(<{{}()}{{}()}>({(){ +{<<{(([<(({{{((){})<{}()>}}<(<()<>>([]<>)){{<><>}{()()}}>}<{{(())[<>[]]}}<<<(){}}<[][]>>[<{}()>[<><>]]>>))> +<[{{{<{{[[[[({()<>}([]()))<(())([]())>]{{{<>()}{(){}}}{{{}[]}}}]][({{<<>()>}[([][])<()>)}((([ +[(({[<<[[({({{(){}}<[]()>})})][<[[([{}{}][[]()])]([(<>{})<{}()>][{{}{}}([]())])][[{[()()]<<>{}>}<<<> +([(<<[(<[<<{[((){})(<>[]}]({<>}[<>[]])}(({{}[]}((){})))>{({{[]<>}[[]<>]}<{{}}<{}>>){(<[]() +[[{{<[<{<{{{{([])[[]()]}((<>)(()[]))}(<<{}{}>([]{})>)}[{(<()<>>([]{}))<(<>())[()()]>}{<{[]()}[ +<<(<<[(<(([{({()<>}({}<>))[{()[]}[[][]]]}]((<{<>{}}[<>[]]><(()<>){()<>}>)[(<<>>{()<>})<([]()}[[]()] +[<<<{[<<<[(<<{{}()>{[][]}>[[(){}](<>[])]>{[[[]<>]]<({}){()()}>})][{({<{}[]>}){[{[]()}[{}[]]]{[[][ +[{([<<[{((<<((<>[])<()<>>)>>)(<<(<()()>)(({})<<>>)>>))}]>(<{{{[((<()()>[{}{}])[<[][]>([]()}])[<[{}[]]{{}{}}> +[{{{[(<([([{{{<>{}}}{[{}[]]<[]()>}}{{[(){}][[]{}]}((()<>)(()()))}]<<{{()<>}<()()>}>>){[[{(<> +<<[[(<([({([{<{}[]>(<><>)}])}{(({[{}]({}{})}[[<>{}]])[{[()[]]{{}()]}{[{}[]][[]<>]}])<<(<[]()><( +(({[<[[[[{<{<<()()>[<>[]]>{(()<>){()}}}{<(()())([]<>)>{[()<>]<<>{}>}}>}](({([[{}<>]<(){}>])<([[ +(<<[{[[<{<[(({<><>}[<><>])({(){}}(<>[])))<[([]<>){{}{}}]>>>}[<{({[<>()](()())}{([]())[<>[]]})[[(<>[]) +<[<(({([(((<[<{}[]>{<>{}}]{{<><>}<[]<>>}><([[]<>]{[]{}})[<{}>{()}]>)){[[{([]<>)}{<{}()>{<>{}}}]{[{[]< +{{((<<{((([(<[()[]]([][])>)[{{(){}}[{}()]}<([]{}){[]{}}>]]{[[({}())[()]]][{[[]{}]<[][]>}{<{}[]>[< +([(([{{[({<[[<(){}>[[]<>]]]<[{()<>}<(){}>]>>[{((<>[]))}]}(<[[{()()}{{}<>}][(()[]>{{}{}}]][<({}[])>[ \ No newline at end of file diff --git a/2021/inputs/11 b/2021/inputs/11 new file mode 100644 index 0000000..e950256 --- /dev/null +++ b/2021/inputs/11 @@ -0,0 +1,10 @@ +2524255331 +1135625881 +2838353863 +1662312365 +6847835825 +2185684367 +6874212831 +5387247811 +2255482875 +8528557131 \ No newline at end of file diff --git a/2021/inputs/12 b/2021/inputs/12 new file mode 100644 index 0000000..ed192d4 --- /dev/null +++ b/2021/inputs/12 @@ -0,0 +1,23 @@ +yw-MN +wn-XB +DG-dc +MN-wn +yw-DG +start-dc +start-ah +MN-start +fi-yw +XB-fi +wn-ah +MN-ah +MN-dc +end-yw +fi-end +th-fi +end-XB +dc-XB +yw-XN +wn-yw +dc-ah +MN-fi +wn-DG \ No newline at end of file diff --git a/2021/inputs/13 b/2021/inputs/13 new file mode 100644 index 0000000..d7d62d2 --- /dev/null +++ b/2021/inputs/13 @@ -0,0 +1,840 @@ +602,683 +1297,593 +1118,603 +534,850 +221,383 +524,835 +735,194 +117,872 +1233,648 +1160,509 +278,558 +20,697 +622,675 +60,217 +120,460 +296,505 +206,29 +20,131 +73,791 +1014,535 +708,473 +1042,371 +1243,672 +1197,798 +1218,586 +62,885 +48,843 +880,170 +788,729 +816,401 +969,47 +1119,567 +335,721 +160,45 +718,120 +666,427 +295,815 +850,109 +1208,618 +388,427 +177,481 +149,481 +676,197 +216,708 +646,696 +206,546 +641,749 +242,353 +1250,421 +520,568 +234,614 +1218,308 +817,579 +934,586 +84,737 +244,676 +1208,564 +1220,409 +473,665 +426,740 +1118,792 +928,201 +1061,213 +577,200 +862,641 +892,492 +150,201 +898,322 +641,847 +848,703 +392,329 +1266,341 +228,712 +494,493 +838,271 +1148,778 +1146,86 +493,91 +1126,105 +576,551 +234,651 +838,267 +561,502 +606,801 +1062,521 +1074,402 +166,45 +460,480 +1308,103 +1067,476 +1250,116 +15,592 +865,358 +979,121 +1014,743 +848,102 +1198,311 +120,253 +358,599 +316,299 +520,326 +1116,148 +1160,201 +880,778 +736,295 +335,173 +438,809 +1178,544 +74,565 +902,659 +831,859 +564,185 +776,44 +376,275 +125,812 +922,330 +130,205 +671,317 +92,308 +295,303 +771,744 +492,534 +380,840 +902,683 +65,86 +887,448 +1032,765 +120,641 +488,339 +1293,23 +733,470 +952,595 +909,831 +99,642 +166,555 +922,841 +1118,352 +191,719 +401,735 +652,791 +131,255 +18,827 +1000,488 +1178,527 +850,480 +474,712 +232,562 +294,185 +539,744 +395,105 +776,64 +231,253 +1292,382 +954,408 +488,401 +382,649 +842,427 +634,131 +150,649 +1302,827 +462,792 +1148,116 +262,742 +716,217 +729,159 +425,366 +463,175 +1044,427 +1228,703 +668,61 +1294,854 +1062,373 +79,194 +296,702 +659,243 +773,872 +806,833 +671,302 +686,299 +480,722 +88,75 +92,243 +882,607 +850,253 +1012,856 +1032,250 +410,71 +142,789 +1262,597 +647,397 +622,877 +160,712 +646,205 +1108,885 +582,575 +771,150 +624,299 +411,726 +132,445 +505,861 +376,558 +974,56 +132,320 +877,635 +624,254 +629,689 +746,402 +1114,129 +815,848 +298,67 +1056,716 +356,255 +356,827 +624,147 +216,123 +142,341 +900,218 +910,709 +1168,789 +954,827 +818,330 +492,360 +629,17 +664,319 +602,435 +196,241 +974,491 +970,285 +350,75 +1299,894 +1285,205 +884,488 +72,166 +1168,322 +370,178 +1280,819 +1220,485 +321,844 +95,357 +90,485 +77,470 +8,67 +298,603 +934,308 +644,369 +192,191 +248,359 +575,334 +298,291 +62,120 +100,288 +903,642 +147,543 +898,775 +1178,599 +719,476 +1062,7 +1118,827 +1118,219 +708,883 +401,831 +1295,78 +917,178 +472,715 +885,528 +102,134 +1116,752 +3,46 +1118,675 +1081,156 +22,371 +184,789 +1015,591 +644,427 +417,343 +1307,46 +755,866 +954,255 +325,159 +151,213 +32,877 +1210,288 +1119,623 +82,683 +60,778 +989,50 +348,322 +708,683 +278,765 +336,295 +733,694 +560,292 +564,402 +1049,758 +1094,771 +412,322 +1044,521 +900,659 +1245,30 +1290,770 +509,247 +576,103 +686,75 +705,574 +110,339 +934,619 +676,763 +294,644 +192,827 +124,457 +231,701 +1076,243 +102,842 +192,281 +1193,134 +788,165 +736,31 +1084,607 +1114,241 +1009,205 +1094,533 +336,765 +102,564 +458,241 +838,715 +214,815 +684,774 +175,859 +676,131 +838,579 +406,821 +249,213 +855,806 +848,227 +1222,75 +1116,253 +214,729 +32,628 +1168,372 +295,79 +393,30 +1114,404 +1033,320 +1245,86 +734,343 +1216,292 +602,473 +807,651 +520,165 +1140,397 +151,651 +504,649 +1213,366 +918,565 +263,777 +600,693 +326,723 +336,129 +571,642 +1232,723 +130,59 +783,582 +107,757 +1057,894 +1218,651 +1250,217 +167,885 +1033,126 +562,19 +191,175 +848,542 +181,199 +1280,864 +769,684 +1193,872 +1098,653 +1198,79 +1159,651 +562,586 +458,404 +1168,329 +248,439 +624,523 +1200,339 +406,535 +544,85 +584,301 +435,842 +571,54 +512,372 +651,243 +1034,600 +132,747 +756,158 +771,879 +537,648 +922,229 +227,700 +676,770 +1180,689 +769,798 +1068,289 +310,488 +130,891 +1047,441 +401,63 +1089,383 +952,702 +749,392 +134,326 +410,676 +1101,694 +18,830 +594,105 +440,815 +82,703 +460,871 +1176,326 +758,564 +818,116 +160,849 +807,203 +102,276 +221,831 +1145,222 +8,632 +965,871 +1175,175 +577,718 +60,116 +1036,449 +790,568 +52,446 +1012,603 +1089,259 +766,533 +1048,742 +602,11 +880,676 +716,116 +569,437 +94,12 +975,173 +102,341 +509,329 +360,560 +718,774 +142,249 +329,735 +12,61 +316,859 +84,775 +838,495 +43,117 +492,116 +592,774 +787,527 +488,567 +534,460 +932,294 +606,93 +227,553 +602,448 +458,852 +248,887 +1250,373 +602,813 +1233,669 +524,675 +1232,171 +1096,135 +328,310 +917,30 +1278,266 +20,763 +644,817 +1278,877 +1036,445 +462,227 +1226,775 +594,169 +1036,813 +472,271 +433,259 +918,329 +962,315 +840,789 +595,35 +1280,613 +194,253 +962,572 +733,1 +1175,551 +726,301 +52,11 +1295,592 +885,156 +214,135 +1144,45 +676,579 +552,217 +639,86 +716,677 +458,42 +294,485 +425,290 +594,725 +1068,353 +728,575 +719,418 +1302,487 +974,151 +527,582 +987,121 +333,498 +212,138 +1064,843 +1226,723 +900,823 +209,200 +969,369 +1116,673 +175,707 +32,516 +1268,121 +880,249 +1133,145 +875,894 +1150,45 +1077,726 +1091,757 +1238,268 +221,187 +571,28 +77,225 +219,620 +1086,329 +102,330 +984,275 +156,721 +95,607 +1232,383 +728,709 +271,506 +160,182 +97,696 +296,432 +167,9 +224,106 +1128,579 +740,801 +974,743 +1101,200 +196,490 +705,350 +818,267 +209,694 +1292,399 +837,665 +1303,845 +107,836 +428,793 +733,893 +440,576 +323,773 +162,778 +734,882 +296,417 +1150,182 +1280,371 +268,523 +1211,252 +472,267 +1213,528 +786,891 +629,205 +985,159 +428,607 +852,490 +82,647 +231,0 +25,689 +459,703 +1208,330 +28,588 +1057,103 +199,88 +430,170 +395,789 +805,861 +62,437 +788,126 +130,577 +338,747 +904,551 +733,718 +816,600 +195,703 +974,407 +356,603 +1193,806 +602,367 +674,67 +1262,51 +1203,757 +773,22 +887,446 +1044,467 +2,551 +591,453 +102,106 +581,287 +723,131 +651,651 +716,105 +242,373 +308,719 +1208,665 +1036,459 +710,649 +664,696 +1076,84 +1216,602 +1178,449 +828,408 +54,245 +554,549 +10,525 +728,319 +734,103 +30,96 +1228,683 +960,75 +768,583 +1144,339 +331,121 +298,186 +1160,833 +472,623 +341,47 +624,371 +433,635 +1066,683 +1042,523 +1298,61 +90,492 +1039,670 +626,120 +1278,516 +112,79 +54,201 +410,659 +996,285 +524,219 +60,617 +1086,149 +830,620 +534,512 +805,33 +1290,197 +410,218 +1196,821 +129,15 +430,676 +986,847 +1303,49 +1210,345 +1154,397 +1067,418 +321,50 +740,871 +1268,684 +816,787 +534,64 +750,292 +412,775 +376,308 +301,205 +482,486 +1079,253 +1104,796 +534,253 +1159,691 +151,233 +740,775 +1126,789 +535,588 +296,295 +1258,473 +192,352 +410,255 +336,39 +1220,709 +1079,894 +1111,88 +473,199 +1056,166 +166,742 +494,271 +1248,550 +1089,187 +1054,476 +1208,553 +1215,565 +1044,564 +160,555 +132,893 +681,877 +831,187 +577,1 +8,262 +398,749 +892,402 +1082,182 +1156,498 +984,723 +318,151 +423,448 +391,441 +806,385 +1133,481 +298,197 +594,217 +1292,64 +418,492 +1238,136 +1226,23 +1215,537 +147,95 +1237,791 +1036,670 +684,421 +1280,23 +266,521 +1091,274 +589,86 +1208,394 +1119,719 +78,723 +135,343 +1261,126 +80,683 +940,268 +65,850 +234,691 +400,716 +1048,210 +32,334 +927,388 +821,222 +758,106 +196,129 +1135,651 +890,467 +93,392 +1158,620 +8,39 +715,35 +806,201 +97,366 +997,847 +438,634 +246,683 +102,394 +60,169 +10,77 +1082,712 +488,493 +370,268 +156,397 +1218,728 +30,595 +77,246 +107,137 +904,535 +987,773 +344,406 +1308,551 +324,847 +348,315 +1118,281 +1278,334 +658,103 +426,236 +462,165 +426,658 +659,46 +1168,645 +972,77 +406,73 +42,684 +1014,505 +226,607 +8,407 +728,185 +313,847 +1178,893 +1166,399 +848,729 +452,9 +542,352 +1280,595 +524,689 +105,259 +1068,745 +1081,80 +639,368 +756,233 +639,317 +92,586 +1116,221 +112,718 +624,747 +1233,1 +1215,607 +1039,388 +382,245 +1295,86 +582,185 +952,599 +440,191 +458,689 +62,550 +186,467 +1084,287 +1245,416 +790,820 + +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 \ No newline at end of file diff --git a/2021/inputs/14 b/2021/inputs/14 new file mode 100644 index 0000000..7795116 --- /dev/null +++ b/2021/inputs/14 @@ -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 \ No newline at end of file diff --git a/2021/inputs/15 b/2021/inputs/15 new file mode 100644 index 0000000..93af15e --- /dev/null +++ b/2021/inputs/15 @@ -0,0 +1,100 @@ +9134437236318171116117288148911191769789149391998581842118486728495315197918969961726641911197278519 +4266599972129377121978987858118144193371121224689932255439189962124983957264992917811528481174141159 +4941264622844649255181863611661937989592573911314587911782284256729939692285214646949151417873145114 +9945129815342473711424195426247119937972981595714311991417119392838691411867714292812665718171417224 +1423818398213251171691473971673889569992131512132754569226823131415196188491991866258247115715611321 +8271949774191463914431151294928179929172131829943916791618917131342352982182671917472939235329739287 +1952694952277173514253513153118634151159329774821227939596521118915991151517398355228881788289998825 +6294228718411191711731415119272125331883929678134156945112362831191869711861933445241916118268865925 +2356988459435979847977978218396878179236826858228579488119689162193671247912113492191423992627295229 +2111941153771299263815996117179768913916931152689617128191487833381948938691616718823312163299281129 +9171226987969165893999355671387991712129929312892448326219555178861569689471513141379921621364122952 +1249283311974145392919182141161915111428797238114236163511979989617362555346148769687595349142819111 +9571153637692556311122411512417957975197837271859411582315253218891991115633697938928761345192119815 +6911911719178156912898261314116923182117799319918261334615762427162794888182289172165471919659749491 +5138941619256899722425914897278227859922169794121914729992557374347523328615137941489945927279892298 +1691252769119353319251199741258446168371199133897657115794287829411223252993425141227229172926195991 +4431947845795998941397452166121292427378268698276815598921157812421421921137439117762855115396211321 +1412756891815118959881159821318921697175898788398954349771755161362198519611669783133198193528874868 +9112427971395352891325118446527417451387398974497274794171961657481915243671945196458978948184534614 +1252984992119991919443992419281218931751632496151245223815394764927248125111917191639415221892886327 +5275881461396171768287168681176851922162133331972139186149383246278369457147977367987123251988139239 +3155313932191132412999399385239196913239141225397279469965159917967896812911581351817198298381714458 +8464311739148758223215553168996711382181221218285896362741211188733419177711385113999818871569458994 +1879111627898539912854218917149885217579453695415812149191615172737921454619365138151192211263832184 +1745287434814238973615122917959292149719727428287841339213292793511992466717722299721728324384289841 +4119917831499159771215319299198921969441688115393251912979392649954159382215672649185991245667814867 +8421899779299898935824114111781991991411972699748599694715611772821147161929899653114683282545695526 +1391911761757955826198918825188872958214852918859954962451299229771599464484643431812976399151594211 +7999299191226143344136335797291214258929751616148411628765219875949185336487232964441426796267617912 +9312793471126411211319197241162921824154811118258812197295391233753951149972246192116499143192987292 +4166762724111379882254285999918693852512391771491411962495421789918493222895245283519755983913436856 +2963981682868141266469319124727698516761839935812991845875451292524746826223193197624842311169613222 +6612255182641994167791551111348896911973163521891312524155251722964145239519186611192969965242913815 +3812621525315137988179772883496249224315754451295212281139491173735522521919727818254843554645119381 +4999158935552656126424919271681281222845174349586213875171837259468168544653738583124471131293191635 +3181461832897859121599429871282449726143213119969341268912719652828419145751649491758911217661915157 +2169192795931271344799317331232245363729244373498978114194323826954196691112529121721939918266141929 +3241171999893699197731615971189489698196184156739628453726665161716169418115729142121813117496917312 +9831982399979619227751246564122511222191768891641244418169396221146399559241628139113624784889111194 +1155992956973218257113121742449819911282169221791685438834989831462311298934183898126817972689556913 +2519898848973471121965719156724668633673521392182113214714862941331418991139359111131317972245927248 +1118272518293161815811581122177733818141312931879171267424799872998965711214314214963634164128586931 +2942442175915698691189261219221898849591485832258619654613715291299912115494527828561788132242817329 +9134374827352131491917164116112919112787815595986821853713344183899964113211196119611514227791311992 +9924299274183222692855629928987629693696499919678172652254115527315712512151391963112118896723831394 +6779188289768247515714634371778114944931198991117156179591211247196718242116149269395151911696952519 +6119956112724139655491921933667514145862512222356296111499316331983418167229798845792853586693717131 +6372419768588511842299529371721979699214258298121849549534431753318493219659119917449983451931926192 +3485612552714411976149279439751975283275376828619691946988338211527217167319996112545312398992879576 +8911294845849625718666114889391259242715919185919258191919825363677319992889695151251781589282852117 +4759389598841389431656112779112613727996898244974817841817673141882655234312237196313473494929711296 +2517916235761217123817811121342199762378281252761996844994858638621799822625147911311996961937298294 +8941194944727437278225493439462865186717416935129471145392629214119511179552917231612758179238812192 +8613679516939369115354319882498579981182142179392359372494313198765131854838591291111497225594621291 +1321812891162243718977896933879119675992957879218399616327481131591451932792366297113625996961715161 +9919212621338919781697293391954682913289543115843443361296269489413995767817811241472294564151339898 +1153111296993149893651924112964964498943984891792279823296848763161369826128828344762117588116482442 +6123889111891594678393829789136113819817277539926913591976269942117982588817411692511994951496113514 +3657811212317993965191682913498637567188187111117115621469178459598143491991792689755739933419117862 +7314238428299521431289133119379941741813916137974192112136216716487266119929717625919112311493945899 +4582259569619129439519515298935136921338659571725612321769129259399162831816521211675898518155647185 +9337781751569517624916199381968246468135841277376892295935423361417921323271527491114899619766811929 +6496894511398568413638937939142622175812611591219465278582322635169316643921142893963885889927221829 +9318299299359253261579998597435658137417149721348299137634991118913481795889317121113338934128838629 +6541881992577123981195284395322888211297894224491391962893439581761934194671147952725731481427916649 +9311452111494252879933898891614768841261859962518671447799131599799521639754123258387678228943995311 +7914972421955981118348969134195843411368511735627132149839112127893994123473952691819167912799723124 +1148123817312136912725525155116195975886323391941888991939816715748973117421318917639921146511652985 +1199179183175916316771119743618165114495659192195944588463122311315675991911843866795727192997866988 +9337612411577132215565136169797995961321193921231868914489125228236861957111791121699917726559832713 +1527861616446251369121672139925121545192136447182614449376627391866462621154311989436118329916169849 +5988658341336525277657964159221299997699171286183921358327151183141825891152978939848511311271593926 +1569247222134936917536456153929155118563335252391138515531339399219733451936875816329472261397159162 +2899483829435817271833114149863318984981183561112229826192183676616452514124142991716196214798497919 +9527213833937136521987411723376681985293899165175386716871819947959194632794697178923684119463547829 +2854432958777866715317916915113811894364131583222426327295252996237937885931182736177587595356652826 +9292791825572342998189238243481265143547123371145272499877211861289528149911866723621152144889164521 +7812791799144112298119927111729999331915996374849222511786242989692145121139867622884136581416861877 +2621697312859698611314954659879711998947319146163283382749226353492995814551983529319197719146319279 +1181689782312573125995572776913895925171719598759894581282921836139182186977823977139988831937622188 +1699371374339217977493799224337731169591838158994283944355214634111659452591451955335692953966318314 +6921766478831113391177431172211315219799523578679981229512729591461641328367485691611299226369221868 +1621183335128299162112113216382599938981412719143441119714219494571485175571363933181533696417218993 +8111733123792914948924741644289258361929671131265585911491923132589853772112698247452955252652287195 +4623565625343971711118316872971671351998386941178128117481951295674894929491113119859179268811672891 +9119253898553912835191299992174182446119522826949624892968911122889389959979722346686641928178371515 +1156979519211885312865297819159992638192941638151344933497157381518531741418311312939933873322996162 +9119866992911469199934229138529227124588462935646719771117722149719163467299528793678922791293192756 +5754112531261399382691549594226235781794322919551722626284861999719919938122995814891929128348195227 +1476939511988755913262415929131918147129878942582826367868775152919383681939285969253767294271769221 +4139838427281391394644889717526983869112349958311477333993331271264398181716117119671177353876357113 +9395111963828795242322999743437188928311517327921181521397714214124992279711196564219515654423132714 +5397995631493629229761241328349116889325332194211384536692587121267898922532891128293457732564197447 +1428788229794345214842932733556277189861813158716216541114488155884118964521257399853593319713317954 +6728345291621899178333839493777613181691411694427424287889116411916641242419499935762325669754616915 +8483418822832213859522891811919124297212128149427761926241859462911148672547925611168174834274766844 +9392994191381132573111791221994711714912329797688737955321919386929933869914697342139924761519959232 +8913639328747941618998853389276157672143941321324374964653258173881963233275332569899861163971254537 +2176921618954489827742992883331891265257528128915417961339186196593313933247197215741495622248115191 +1921172993934749931619794374326831718362869432327311322223119167392126596357641716995181921555441215 \ No newline at end of file diff --git a/2021/inputs/16 b/2021/inputs/16 new file mode 100644 index 0000000..98e1681 --- /dev/null +++ b/2021/inputs/16 @@ -0,0 +1 @@ +6051639005B56008C1D9BB3CC9DAD5BE97A4A9104700AE76E672DC95AAE91425EF6AD8BA5591C00F92073004AC0171007E0BC248BE0008645982B1CA680A7A0CC60096802723C94C265E5B9699E7E94D6070C016958F99AC015100760B45884600087C6E88B091C014959C83E740440209FC89C2896A50765A59CE299F3640D300827902547661964D2239180393AF92A8B28F4401BCC8ED52C01591D7E9D2591D7E9D273005A5D127C99802C095B044D5A19A73DC0E9C553004F000DE953588129E372008F2C0169FDB44FA6C9219803E00085C378891F00010E8FF1AE398803D1BE25C743005A6477801F59CC4FA1F3989F420C0149ED9CF006A000084C5386D1F4401F87310E313804D33B4095AFBED32ABF2CA28007DC9D3D713300524BCA940097CA8A4AF9F4C00F9B6D00088654867A7BC8BCA4829402F9D6895B2E4DF7E373189D9BE6BF86B200B7E3C68021331CD4AE6639A974232008E663C3FE00A4E0949124ED69087A848002749002151561F45B3007218C7A8FE600FC228D50B8C01097EEDD7001CF9DE5C0E62DEB089805330ED30CD3C0D3A3F367A40147E8023221F221531C9681100C717002100B36002A19809D15003900892601F950073630024805F400150D400A70028C00F5002C00252600698400A700326C0E44590039687B313BF669F35C9EF974396EF0A647533F2011B340151007637C46860200D43085712A7E4FE60086003E5234B5A56129C91FC93F1802F12EC01292BD754BCED27B92BD754BCED27B100264C4C40109D578CA600AC9AB5802B238E67495391D5CFC402E8B325C1E86F266F250B77ECC600BE006EE00085C7E8DF044001088E31420BCB08A003A72BF87D7A36C994CE76545030047801539F649BF4DEA52CBCA00B4EF3DE9B9CFEE379F14608 \ No newline at end of file diff --git a/2021/inputs/17 b/2021/inputs/17 new file mode 100644 index 0000000..ed087d6 --- /dev/null +++ b/2021/inputs/17 @@ -0,0 +1 @@ +target area: x=241..273, y=-97..-63 \ No newline at end of file diff --git a/2021/inputs/18 b/2021/inputs/18 new file mode 100644 index 0000000..9c68703 --- /dev/null +++ b/2021/inputs/18 @@ -0,0 +1,100 @@ +[[[[3,9],[0,5]],[4,6]],3] +[[[8,[3,0]],[[8,4],[9,4]]],[[[0,9],4],[[3,8],2]]] +[3,[3,[[2,8],[1,4]]]] +[8,[[3,6],[[8,9],[4,1]]]] +[[3,[[5,8],[3,3]]],[[[9,3],[6,3]],[[7,0],[8,8]]]] +[[6,[[5,8],7]],[8,[[1,6],7]]] +[[[[8,6],[9,3]],[3,[2,7]]],[[[6,7],[2,8]],[6,7]]] +[[[9,[1,6]],0],[[7,3],[2,4]]] +[[[[4,9],3],6],[[7,5],8]] +[[[[8,3],8],[2,[6,5]]],[[6,[1,9]],[0,2]]] +[[[9,9],[[9,8],1]],[[[7,4],[1,4]],[[1,1],4]]] +[[5,[[8,2],[8,6]]],[9,[7,[8,9]]]] +[[4,6],[8,[3,[1,2]]]] +[[[2,[7,9]],7],[[2,0],[9,2]]] +[[4,9],[[[3,4],[2,9]],5]] +[[[[0,0],[3,7]],[[6,1],8]],[[[4,0],4],8]] +[[4,[[8,9],[2,2]]],[[[1,8],[2,7]],[[6,8],0]]] +[[7,5],[[7,0],1]] +[[[5,[1,0]],1],[[[7,7],[2,2]],[[4,2],8]]] +[[[7,1],[7,3]],[2,0]] +[[[[6,2],3],[3,[5,2]]],[[7,2],[[9,5],[0,1]]]] +[[[[0,3],2],6],9] +[[[9,8],[[7,8],[5,9]]],[[[4,8],[0,2]],[[6,8],[2,3]]]] +[2,[[3,7],9]] +[[[9,9],1],[7,[7,[5,8]]]] +[[8,[1,1]],[8,8]] +[[[[3,3],[1,4]],[[5,3],4]],[5,2]] +[[[[0,9],1],[[3,8],8]],[9,[[8,8],[0,7]]]] +[[[9,4],1],[[9,7],[[6,1],[9,5]]]] +[[[1,[4,0]],9],[[3,7],2]] +[[[5,[0,5]],[5,[9,2]]],[[[2,2],[8,0]],[3,[7,8]]]] +[[[[8,2],3],3],[[[5,4],[0,5]],9]] +[[[3,[6,2]],0],[[[7,3],[6,3]],[[6,3],2]]] +[[6,1],[[[1,2],2],[9,4]]] +[[[1,[9,0]],[[8,2],[4,9]]],[[0,[9,6]],[[0,4],[4,0]]]] +[9,[4,[7,0]]] +[[7,2],[[9,5],8]] +[[6,[[0,6],0]],[[[2,0],[4,1]],[[9,5],4]]] +[[[6,[0,0]],5],[[[5,2],[7,3]],[[2,8],[3,2]]]] +[[[2,7],[[8,2],2]],[[5,[0,6]],[[9,8],[0,4]]]] +[[[8,9],[[4,1],2]],[[[3,4],[4,5]],[[7,4],0]]] +[[5,[2,[2,1]]],[[5,6],[[6,2],[3,0]]]] +[[8,[0,0]],[[6,1],[9,[1,3]]]] +[[[9,[5,8]],5],[[8,[6,6]],[7,5]]] +[3,2] +[[8,[[6,3],[8,4]]],[[2,7],[8,[9,5]]]] +[[[4,[9,1]],[[3,6],[8,8]]],[[[9,0],6],[[3,7],6]]] +[[9,[[4,9],6]],[[8,2],[1,3]]] +[[[2,[4,3]],[[5,6],[7,3]]],7] +[[[[0,1],7],[[9,1],9]],[[[0,1],[6,5]],1]] +[[[7,[5,3]],[[6,6],6]],[[2,7],3]] +[[1,[[5,8],[1,7]]],[[[5,0],[4,7]],[[3,3],[3,7]]]] +[[[[8,8],[2,6]],[1,2]],[[[2,6],4],[1,[1,8]]]] +[5,[[8,[8,2]],0]] +[[6,[[5,9],[8,4]]],[7,[5,9]]] +[[7,3],[[[2,5],4],[[1,1],8]]] +[[[0,1],7],[0,8]] +[[7,[6,6]],[2,9]] +[[[[1,9],1],[[4,8],5]],[[0,[8,3]],[[0,9],[1,5]]]] +[[[0,9],[[6,7],5]],[4,[[1,1],[0,6]]]] +[[[6,1],7],[[[1,4],8],[[9,0],4]]] +[5,[3,[[0,7],[4,9]]]] +[[[[6,0],[1,5]],[[1,5],1]],[[1,[7,1]],[[6,2],7]]] +[[[9,0],8],[[[4,1],[5,4]],[4,[5,1]]]] +[3,[5,9]] +[6,[6,5]] +[[1,[8,0]],[9,0]] +[[[[1,8],3],0],[7,[[0,8],6]]] +[[[[4,2],2],3],[[2,5],[[9,2],4]]] +[[1,[[1,1],[8,4]]],[[[8,1],0],[0,2]]] +[[[[0,7],[8,7]],[9,6]],0] +[[3,7],[[1,[0,9]],[1,[7,6]]]] +[[[[3,5],[4,6]],[[7,1],[8,0]]],6] +[[7,[5,[7,7]]],[4,[5,3]]] +[1,[[[0,0],[4,6]],[7,[1,9]]]] +[[[3,7],[7,[0,6]]],[7,[5,3]]] +[[[[5,3],0],2],[[[2,7],[7,9]],[[1,4],3]]] +[[[[8,3],9],[[8,3],[7,4]]],[[4,[6,0]],[7,[3,7]]]] +[[[6,[5,0]],8],[[[4,5],3],[1,[5,9]]]] +[[7,8],[[6,8],[[8,4],[3,1]]]] +[[[2,7],[6,3]],[[0,0],4]] +[[1,[[6,5],[4,8]]],[[8,[2,7]],[[7,8],[6,8]]]] +[[[2,3],[7,7]],[0,[3,3]]] +[5,[[2,8],[2,[6,9]]]] +[[[[6,3],2],[[2,8],9]],[[[5,6],[8,0]],[[9,3],[5,0]]]] +[[[[6,2],7],[6,1]],[[[5,9],4],4]] +[[[[7,2],[0,4]],[[6,7],7]],[6,[[8,5],[9,0]]]] +[[[[9,6],8],[2,[3,7]]],6] +[[0,[[1,0],4]],[5,[[7,4],[2,4]]]] +[[[[4,4],[4,7]],[[7,4],3]],5] +[[[[8,2],[0,3]],[[7,2],1]],[[7,[1,2]],6]] +[[[3,8],[3,1]],[7,7]] +[[[6,5],[[8,7],4]],3] +[[7,[2,[2,5]]],[9,1]] +[9,2] +[[4,[2,9]],[[4,[2,9]],0]] +[[[0,2],[[2,1],[9,2]]],[[6,[8,2]],[4,[3,8]]]] +[1,[[[2,2],6],[[3,5],6]]] +[[[9,[4,8]],[1,4]],[4,[1,[9,1]]]] +[[[8,0],[[8,4],3]],9] \ No newline at end of file diff --git a/2021/inputs/19 b/2021/inputs/19 new file mode 100644 index 0000000..9eccb19 --- /dev/null +++ b/2021/inputs/19 @@ -0,0 +1,1004 @@ +--- scanner 0 --- +417,597,-659 +-781,-790,-526 +1,-140,-9 +311,816,519 +274,815,564 +-89,11,-167 +-842,-411,466 +-760,591,-661 +-831,-483,469 +-831,-515,455 +-826,643,-605 +-794,-873,-582 +378,-780,-402 +-864,635,-645 +369,-725,-496 +587,-558,577 +-973,480,540 +-723,-955,-453 +406,-622,-430 +510,768,-630 +-845,401,529 +492,744,-683 +618,-598,694 +-898,460,422 +630,-610,724 +313,739,706 + +--- scanner 1 --- +360,-299,497 +-508,-693,402 +-498,789,-433 +363,-337,520 +552,923,540 +760,712,-783 +-526,-582,503 +555,847,732 +-504,-552,465 +-44,110,-66 +-484,965,-483 +535,-532,-585 +-557,598,300 +804,671,-875 +-727,-524,-876 +-459,538,435 +-588,-537,-984 +496,-257,464 +529,794,525 +755,707,-914 +-547,549,368 +-628,-595,-809 +-368,847,-513 +683,-558,-467 +651,-545,-533 + +--- scanner 2 --- +-907,-631,538 +482,428,-727 +-880,-633,504 +735,570,659 +550,-692,-660 +-653,656,563 +10,-81,45 +634,-661,822 +660,694,698 +594,-647,753 +620,527,650 +-522,630,647 +415,439,-639 +-937,-647,-598 +-762,-705,-558 +562,-671,706 +-829,-634,-459 +-466,737,-818 +347,488,-629 +449,-803,-678 +-138,69,37 +-386,679,-688 +-436,855,-702 +-845,-568,655 +-499,588,611 +512,-662,-682 + +--- scanner 3 --- +726,450,702 +166,24,-152 +-805,-721,-823 +-566,541,485 +746,-764,-858 +829,-653,-923 +859,554,-478 +-683,591,521 +-797,-743,-752 +973,-907,634 +17,-64,-58 +-278,772,-974 +-377,-534,362 +893,-709,-835 +-709,-670,-777 +-410,724,-933 +651,280,750 +-381,771,-823 +769,484,-430 +676,558,-420 +909,-712,606 +930,-894,647 +666,355,677 +-339,-537,503 +-272,-423,393 +-606,549,396 + +--- scanner 4 --- +-577,625,351 +-79,-87,-12 +-382,653,287 +673,-570,651 +774,-493,620 +451,360,660 +579,759,-613 +424,-566,-782 +-535,-845,-759 +-580,-816,367 +-636,-904,431 +-611,806,-547 +-627,695,-442 +678,-402,614 +543,344,666 +426,-529,-611 +438,-545,-831 +-623,-779,-686 +392,339,534 +-395,666,330 +-525,-839,514 +600,756,-388 +672,782,-515 +-638,-814,-807 +-727,670,-545 + +--- scanner 5 --- +459,399,606 +379,533,690 +745,-584,-446 +772,-522,634 +-392,-600,-626 +-676,790,479 +-397,-421,763 +-31,66,-33 +-545,652,-604 +-539,-525,-602 +-656,865,597 +509,689,-635 +600,645,-566 +666,748,-599 +796,-438,630 +-368,-618,-573 +-321,-382,621 +-320,-419,576 +845,-644,-523 +368,475,733 +786,-593,-452 +76,-74,25 +-493,718,-548 +-735,737,586 +843,-594,685 +-116,-107,-99 +-501,756,-588 + +--- scanner 6 --- +-370,827,-693 +725,-460,-869 +433,-644,603 +569,-566,519 +-533,-499,398 +-491,-472,309 +611,789,-471 +783,797,397 +-381,855,-705 +735,662,382 +690,807,439 +-666,-597,-826 +-399,-453,375 +-349,800,-548 +-858,-599,-890 +599,925,-439 +-445,512,316 +380,-529,482 +684,-417,-838 +681,-402,-863 +-10,29,20 +730,884,-518 +-742,-531,-896 +-416,525,257 +-396,609,295 + +--- scanner 7 --- +-415,-962,703 +77,-97,178 +548,-679,932 +454,585,-397 +-397,-920,580 +735,468,512 +-519,-670,-454 +-760,489,755 +676,594,533 +-88,-171,102 +-655,712,-471 +-555,-735,-399 +449,548,-229 +-615,632,-371 +-824,435,717 +701,-677,-356 +689,-897,-372 +-725,560,673 +-680,-648,-345 +703,-848,-393 +-375,-851,645 +353,554,-320 +455,-581,955 +527,-454,929 +-645,642,-438 +584,600,517 + +--- scanner 8 --- +-54,-117,-72 +-854,705,692 +652,577,-579 +-757,-630,462 +496,-451,680 +-864,-693,499 +56,-81,110 +268,-484,696 +335,-405,615 +383,-649,-346 +-705,729,700 +-814,533,-677 +-881,643,-791 +470,-780,-408 +-530,-380,-563 +-823,-708,439 +657,398,697 +-776,674,-680 +-376,-432,-632 +619,664,-645 +687,604,684 +506,-633,-353 +476,642,-561 +689,444,705 +-412,-481,-505 +-729,735,762 + +--- scanner 9 --- +680,529,620 +-718,-621,-425 +-564,609,543 +411,533,-650 +31,103,28 +447,-502,547 +-680,-667,464 +-819,-601,-276 +-518,692,697 +-537,592,735 +-642,679,-491 +356,604,-585 +479,-689,-216 +544,607,704 +-667,754,-457 +-799,698,-515 +-84,-36,106 +419,-504,653 +468,-791,-343 +-731,-484,-303 +-669,-573,574 +424,-725,-247 +-749,-577,526 +477,-389,648 +733,644,741 +408,563,-430 + +--- scanner 10 --- +-485,824,-858 +703,502,-601 +-472,781,-845 +-634,-715,590 +462,-867,750 +-417,577,499 +-442,517,404 +-513,760,-663 +-369,502,329 +-723,-755,598 +599,-856,765 +305,404,532 +377,480,527 +-598,-832,640 +49,-126,70 +398,-890,-660 +-83,-28,-74 +297,-772,-602 +-616,-488,-488 +372,517,470 +-726,-421,-374 +-757,-526,-485 +608,585,-700 +605,-868,611 +349,-926,-533 +815,532,-667 + +--- scanner 11 --- +-694,427,-875 +562,-761,510 +537,656,390 +720,-789,482 +-399,545,639 +-520,580,654 +812,851,-392 +-651,-530,-656 +813,-609,-690 +-695,-546,-760 +-619,394,-717 +814,749,-523 +730,-665,-677 +-657,-532,521 +116,82,-5 +-447,514,742 +-828,-561,614 +895,-738,-619 +587,711,341 +866,801,-514 +-73,38,87 +-686,537,-712 +665,-695,473 +-703,-586,-722 +-804,-508,596 +552,738,329 + +--- scanner 12 --- +832,759,531 +-729,806,-799 +642,-813,-438 +-482,582,440 +485,577,-256 +-550,-716,536 +-628,-497,-361 +629,-747,-470 +-451,-793,599 +729,820,488 +-480,541,550 +-587,-405,-317 +574,493,-271 +535,-869,723 +-381,595,617 +-623,-366,-366 +616,-695,-586 +59,-35,-40 +-524,-761,551 +505,662,-299 +-102,90,32 +562,-857,688 +-810,700,-791 +-764,727,-839 +617,-808,738 +673,891,534 + +--- scanner 13 --- +-852,-535,-709 +465,732,427 +-868,-532,732 +-932,-337,760 +-142,-2,108 +-568,718,-463 +-33,60,-24 +-599,819,-386 +-605,723,-295 +313,-821,519 +-889,-350,773 +520,344,-381 +750,-574,-651 +526,399,-422 +340,662,457 +489,670,433 +-788,-591,-797 +418,-710,488 +-559,496,467 +603,384,-447 +-685,437,446 +846,-523,-697 +-553,588,451 +380,-707,629 +838,-501,-626 +-705,-480,-732 + +--- scanner 14 --- +-716,656,381 +-62,55,-107 +571,894,290 +-604,791,-506 +760,-301,297 +625,671,-651 +669,602,-742 +-776,-417,-727 +-881,781,374 +453,783,356 +-664,714,-406 +712,-342,429 +-682,-498,728 +546,-855,-657 +759,-452,400 +-665,-352,-810 +14,-63,26 +-755,-523,816 +492,844,281 +728,638,-585 +542,-797,-840 +-721,-440,-874 +-733,-452,824 +472,-845,-750 +-613,785,-465 +-735,824,404 + +--- scanner 15 --- +772,-816,337 +864,441,745 +-285,393,403 +-507,-507,398 +737,-752,429 +867,424,805 +-372,-522,350 +-270,823,-443 +908,466,819 +-598,-547,-666 +-558,-636,-674 +668,-751,287 +-402,782,-491 +-675,-672,-624 +674,-828,-860 +734,-853,-765 +867,327,-661 +-244,314,534 +-362,-564,443 +-380,346,522 +-373,672,-444 +684,269,-657 +118,-82,2 +659,-901,-935 +777,279,-731 + +--- scanner 16 --- +665,708,-330 +-733,694,571 +664,-786,320 +-808,582,463 +630,787,-370 +-646,651,424 +488,-424,-852 +-728,-766,-699 +606,-866,450 +529,-516,-808 +524,-385,-803 +-715,-714,-583 +327,398,388 +711,681,-378 +-183,-72,54 +-584,558,-913 +-604,643,-870 +782,-816,436 +-741,-832,-731 +446,529,388 +-707,-423,679 +-720,-315,540 +-778,-490,580 +474,346,310 +-25,68,-28 +-673,474,-898 + +--- scanner 17 --- +462,-358,694 +852,846,-508 +-749,-272,-739 +119,111,14 +506,-450,653 +784,661,-492 +831,-340,-724 +-696,-348,-640 +984,774,517 +-454,-746,830 +944,853,552 +-295,629,799 +-257,397,-736 +-708,-487,-709 +-405,588,801 +803,-303,-697 +8,22,117 +-472,642,900 +-391,-669,731 +511,-319,658 +-406,-714,757 +939,-393,-705 +-455,474,-726 +936,747,471 +-316,509,-721 +722,783,-535 + +--- scanner 18 --- +746,-835,-745 +500,476,-649 +-537,-859,-713 +-813,650,483 +-874,568,498 +590,-348,604 +512,492,-429 +-653,-723,-715 +-798,-418,622 +-721,-517,685 +577,-449,781 +886,706,687 +498,513,-478 +536,-447,671 +674,-809,-872 +71,46,-110 +754,865,690 +-461,792,-501 +-40,119,53 +653,-812,-647 +-549,726,-574 +-766,-491,670 +-862,595,533 +-553,-748,-818 +815,762,733 +-74,-66,-38 +-564,761,-453 + +--- scanner 19 --- +-582,281,-494 +-843,-640,442 +-757,506,680 +-626,-395,-625 +-515,369,-529 +-548,-398,-675 +-829,493,530 +818,495,-500 +-620,372,-650 +-552,-517,-656 +109,4,-110 +847,762,352 +829,-608,-764 +-602,-680,432 +-782,525,623 +880,784,550 +814,778,584 +832,585,-685 +-713,-658,372 +352,-672,455 +869,449,-593 +391,-716,632 +845,-529,-874 +20,-172,26 +445,-695,591 +842,-470,-752 + +--- scanner 20 --- +-557,-265,-548 +-731,788,725 +-688,-578,559 +-874,793,658 +-723,-563,438 +-60,-7,111 +754,953,782 +-530,-253,-513 +419,831,-624 +555,-406,-700 +-754,-666,486 +54,128,35 +578,846,-672 +-612,-314,-498 +-519,599,-775 +-841,951,733 +897,-590,698 +761,-474,700 +529,-361,-685 +814,910,898 +786,-574,803 +709,817,838 +-467,590,-827 +-417,468,-773 +593,832,-733 +456,-329,-637 + +--- scanner 21 --- +349,652,447 +-529,349,581 +467,-913,584 +365,744,495 +-528,338,595 +-439,-716,-675 +378,-849,647 +-916,835,-971 +796,-844,-856 +674,781,-874 +-482,-748,749 +-500,-654,775 +-422,-583,-735 +-527,-680,564 +441,-906,641 +333,680,656 +-133,46,-68 +-419,-571,-613 +33,-85,-36 +720,786,-873 +-821,808,-908 +834,-717,-970 +-493,393,568 +819,-796,-856 +-864,798,-814 +651,871,-730 + +--- scanner 22 --- +-751,763,-725 +-630,-391,-700 +451,501,-562 +745,-844,401 +-680,822,-674 +-339,676,443 +-322,683,330 +761,-624,389 +511,-699,-660 +-391,-851,432 +724,-795,387 +-309,-637,433 +386,418,-673 +888,601,641 +476,-820,-675 +-601,-562,-793 +474,354,-617 +-50,36,-34 +-757,722,-734 +-371,661,286 +-358,-658,392 +-63,-134,-164 +797,607,737 +445,-772,-572 +-577,-415,-718 +720,638,636 + +--- scanner 23 --- +405,660,729 +105,150,11 +697,920,-522 +-808,840,-493 +444,704,552 +-776,-505,654 +-685,725,-506 +-704,-518,504 +383,-758,-834 +-790,628,742 +498,683,593 +933,-796,634 +-790,-305,-515 +415,-625,-778 +-660,646,812 +-549,668,752 +-801,-394,-474 +867,-790,600 +-729,-537,561 +701,700,-502 +-765,815,-497 +466,-777,-839 +730,759,-607 +-17,-25,40 +-819,-485,-561 +900,-774,832 + +--- scanner 24 --- +-885,-456,811 +492,775,662 +-788,-411,925 +488,894,681 +783,652,-436 +-905,763,880 +349,-596,421 +-708,-433,751 +-79,52,127 +-1,-85,-13 +-505,597,-585 +503,-466,-712 +-855,-746,-414 +542,612,-426 +430,-460,-618 +-889,684,770 +-909,-684,-257 +374,-605,-707 +-412,620,-449 +-969,-707,-470 +-451,576,-626 +446,-598,394 +653,634,-366 +289,-511,382 +-902,822,758 +566,897,631 + +--- scanner 25 --- +697,-510,490 +755,-515,605 +-440,481,441 +-430,-776,-600 +706,481,892 +766,568,-462 +727,-409,603 +-339,-379,543 +695,354,790 +47,-53,139 +-508,526,626 +-338,-710,-619 +818,723,-503 +84,121,36 +-275,-468,606 +763,788,-432 +750,385,826 +-472,-687,-573 +494,-482,-428 +-282,-442,549 +-578,732,-719 +-534,499,415 +-616,670,-761 +441,-603,-543 +630,-566,-506 +-638,732,-698 + +--- scanner 26 --- +-714,-918,-562 +369,-722,-477 +487,609,527 +-598,706,-362 +-484,-631,683 +-648,-919,-708 +-395,-687,653 +-412,443,517 +439,-712,-444 +-592,761,-321 +-716,-830,-642 +592,-827,749 +481,517,511 +74,2,8 +-33,-144,105 +-537,373,487 +496,387,-403 +-597,-685,736 +-561,435,493 +646,-891,711 +613,668,506 +533,382,-235 +-675,721,-387 +527,286,-326 +449,-682,-377 +521,-792,667 + +--- scanner 27 --- +391,-557,-718 +563,311,-710 +-457,-686,560 +-503,-840,643 +-402,788,-820 +-633,-671,-532 +-476,-648,660 +-450,747,-688 +741,-763,723 +794,-642,608 +-625,-582,-492 +490,678,496 +439,-542,-583 +-583,-707,-415 +-498,398,402 +444,358,-805 +449,709,539 +605,-679,645 +-403,637,-717 +484,-599,-728 +575,279,-846 +13,-166,107 +-390,373,471 +493,703,481 +-512,399,370 +68,-45,-73 + +--- scanner 28 --- +582,501,-693 +-293,833,-689 +-454,-545,388 +796,693,822 +-330,648,793 +549,-924,909 +-557,-416,-719 +-250,846,-676 +-6,-10,-31 +-314,651,-648 +723,605,756 +479,601,-718 +-477,703,816 +-547,-619,378 +844,590,791 +584,617,-829 +624,-766,942 +-364,-615,436 +444,-790,-641 +500,-926,-686 +160,-65,70 +-394,592,881 +557,-761,799 +-572,-341,-792 +384,-883,-746 +-497,-511,-744 + +--- scanner 29 --- +382,-681,475 +-351,-434,-559 +-402,720,-764 +-478,-332,-570 +800,822,480 +471,-618,411 +-477,800,-630 +513,-734,-561 +-496,-809,670 +-382,-398,-614 +445,-675,418 +823,822,528 +-478,-783,576 +-418,701,741 +518,-619,-619 +838,936,607 +40,-33,4 +-9,72,165 +473,806,-344 +-435,641,608 +386,752,-237 +-523,-598,644 +509,763,-398 +412,-621,-591 +-454,816,-689 +-415,579,753 + +--- scanner 30 --- +-4,-8,-83 +-622,-534,377 +-443,897,-643 +-508,379,661 +-450,480,779 +673,-712,-556 +576,694,-553 +88,126,45 +747,-706,337 +554,692,327 +495,659,-574 +581,-696,-562 +-577,431,815 +522,-717,-688 +-410,690,-696 +-625,-675,415 +-252,-403,-935 +755,-730,486 +517,629,434 +-736,-644,310 +-265,-390,-892 +494,707,368 +-447,-431,-871 +499,509,-547 +817,-736,462 +-509,785,-613 + +--- scanner 31 --- +367,-348,-854 +254,-264,598 +357,532,-577 +492,-355,-689 +477,677,652 +-695,818,406 +-779,898,540 +546,768,696 +-665,-383,493 +-822,909,482 +-140,33,-111 +304,-255,519 +-719,481,-431 +363,491,-586 +-723,505,-515 +-774,434,-587 +324,-378,-708 +-895,-681,-373 +-726,-433,361 +510,611,755 +-851,-734,-482 +-91,143,54 +365,-330,480 +434,432,-637 +-660,-538,430 +-844,-571,-368 + +--- scanner 32 --- +-662,500,-315 +-837,-866,578 +-81,29,87 +-652,-880,668 +398,-956,638 +-585,-890,-387 +601,-549,-847 +-573,-877,-525 +281,732,878 +-687,572,455 +345,496,-692 +-712,578,-312 +403,-813,705 +-681,504,-434 +359,511,-753 +-843,534,364 +-463,-893,-446 +-808,467,452 +723,-499,-793 +592,-601,-795 +360,337,-644 +-744,-917,532 +21,-144,-39 +238,672,762 +374,627,818 +240,-923,713 + +--- scanner 33 --- +-77,29,-55 +-442,-597,702 +427,-632,-886 +-538,-460,-459 +-348,463,460 +627,-772,760 +-551,-423,701 +822,374,525 +-503,-582,716 +-677,608,-444 +-627,553,-395 +-475,-559,-536 +630,-848,568 +819,412,548 +647,607,-557 +-402,413,338 +686,332,492 +653,-719,553 +-662,526,-383 +422,-637,-755 +29,-89,-133 +-400,515,469 +531,620,-505 +378,-596,-847 +499,633,-439 +-490,-533,-491 + +--- scanner 34 --- +458,-419,-582 +-293,-415,514 +-260,913,598 +154,126,94 +-488,-625,-457 +509,544,-583 +55,-19,-30 +576,643,-654 +-312,835,451 +431,-453,-580 +902,787,906 +-424,-703,-396 +816,-562,681 +-443,835,570 +-308,-268,484 +401,683,-596 +-565,799,-522 +-575,-728,-478 +-496,760,-684 +839,-526,639 +952,773,730 +-400,-335,494 +685,-478,707 +872,903,788 +493,-570,-517 +-608,652,-609 + +--- scanner 35 --- +587,-669,-516 +512,-575,482 +-393,-672,-483 +547,657,-893 +662,536,-840 +493,-599,639 +599,651,377 +-57,-48,-110 +628,-514,-568 +584,620,-704 +-476,592,484 +-789,700,-583 +-644,757,-538 +658,-734,-571 +-779,742,-490 +-440,-611,513 +582,459,404 +499,613,358 +-472,-714,-522 +-593,628,534 +-553,717,526 +-452,-605,359 +-441,-468,374 +437,-541,507 +-440,-828,-567 \ No newline at end of file diff --git a/2021/inputs/2 b/2021/inputs/2 new file mode 100644 index 0000000..31a1f1e --- /dev/null +++ b/2021/inputs/2 @@ -0,0 +1,1000 @@ +forward 8 +forward 3 +down 8 +forward 4 +down 2 +down 4 +down 8 +down 4 +down 7 +up 4 +down 6 +down 2 +forward 7 +down 5 +down 7 +down 5 +forward 8 +forward 4 +forward 3 +down 4 +forward 2 +up 3 +up 6 +forward 7 +down 4 +down 2 +forward 7 +up 3 +forward 8 +down 4 +down 6 +forward 3 +forward 9 +down 9 +down 6 +forward 8 +up 8 +forward 3 +down 8 +down 4 +forward 7 +forward 3 +up 9 +down 8 +forward 7 +forward 5 +forward 3 +down 1 +down 4 +forward 1 +down 6 +forward 9 +up 2 +forward 3 +down 2 +down 1 +up 5 +down 8 +down 7 +down 5 +down 9 +up 7 +forward 4 +down 9 +down 8 +down 4 +forward 3 +down 1 +up 8 +down 1 +down 8 +forward 4 +up 1 +forward 7 +down 6 +down 2 +forward 3 +down 9 +forward 9 +forward 4 +down 1 +up 6 +down 1 +up 2 +down 4 +down 9 +down 7 +forward 5 +down 3 +up 9 +forward 4 +up 5 +down 9 +forward 1 +forward 7 +forward 1 +down 8 +forward 5 +down 2 +down 4 +down 3 +forward 4 +down 9 +up 7 +up 1 +forward 4 +up 2 +forward 4 +forward 4 +down 1 +down 5 +forward 6 +forward 1 +down 6 +forward 8 +forward 8 +forward 6 +down 3 +forward 3 +forward 1 +forward 5 +forward 7 +down 5 +forward 8 +down 7 +down 8 +forward 7 +forward 8 +down 7 +forward 7 +up 2 +up 9 +down 1 +forward 1 +forward 6 +up 3 +up 6 +down 2 +down 4 +forward 2 +up 8 +forward 5 +up 9 +up 5 +down 2 +forward 5 +forward 9 +up 3 +forward 7 +down 4 +down 3 +down 2 +forward 9 +up 4 +down 7 +down 1 +forward 9 +forward 3 +up 4 +forward 1 +up 6 +forward 5 +forward 2 +forward 2 +down 9 +forward 1 +up 7 +forward 3 +down 1 +down 5 +up 8 +down 5 +forward 5 +forward 5 +down 9 +up 5 +forward 8 +up 9 +down 1 +forward 1 +down 7 +up 3 +down 9 +down 9 +down 5 +up 6 +forward 7 +down 5 +down 2 +down 5 +forward 3 +forward 2 +forward 9 +forward 5 +forward 6 +up 7 +up 7 +forward 4 +forward 2 +up 4 +up 6 +down 8 +up 9 +up 5 +down 8 +forward 4 +up 9 +forward 8 +forward 3 +down 6 +down 6 +down 7 +down 6 +forward 7 +up 5 +down 2 +down 5 +forward 2 +up 5 +forward 7 +down 5 +up 4 +up 2 +forward 2 +forward 9 +forward 5 +forward 8 +up 4 +forward 6 +up 7 +forward 5 +down 2 +down 3 +down 8 +up 2 +down 2 +up 1 +up 7 +down 1 +down 6 +down 9 +down 7 +forward 8 +up 8 +up 9 +down 9 +forward 6 +forward 6 +down 6 +forward 3 +forward 4 +forward 6 +forward 7 +down 5 +down 8 +forward 7 +forward 9 +down 4 +up 9 +forward 8 +down 6 +down 1 +down 2 +forward 4 +down 5 +up 1 +forward 1 +down 6 +forward 4 +forward 2 +forward 6 +down 8 +up 2 +up 8 +forward 3 +down 6 +forward 7 +down 1 +forward 1 +forward 8 +down 8 +down 8 +down 2 +forward 8 +down 4 +up 8 +down 6 +forward 2 +down 5 +up 3 +up 1 +down 2 +forward 4 +up 7 +forward 2 +up 9 +forward 1 +down 5 +forward 3 +up 9 +up 4 +down 4 +up 6 +down 1 +forward 9 +up 5 +forward 5 +up 4 +down 6 +forward 2 +up 6 +forward 5 +forward 5 +down 4 +up 7 +forward 2 +down 9 +down 8 +down 7 +forward 4 +forward 7 +down 4 +forward 9 +up 2 +forward 1 +up 4 +down 8 +forward 9 +up 2 +up 5 +down 7 +up 6 +forward 7 +up 1 +forward 3 +down 3 +down 2 +down 6 +down 6 +forward 3 +down 2 +down 2 +down 5 +down 4 +down 6 +down 2 +forward 7 +down 6 +forward 4 +down 5 +down 7 +down 3 +forward 2 +forward 8 +forward 1 +up 6 +down 8 +down 4 +up 5 +forward 5 +down 7 +forward 5 +forward 8 +forward 7 +down 8 +down 5 +down 3 +up 2 +forward 8 +forward 7 +down 6 +up 1 +down 9 +down 3 +down 7 +down 2 +forward 9 +forward 2 +forward 4 +forward 8 +forward 3 +forward 2 +down 3 +down 8 +up 7 +down 7 +down 1 +forward 8 +down 2 +up 4 +forward 9 +down 6 +forward 5 +forward 8 +forward 1 +forward 4 +down 6 +down 1 +down 6 +forward 1 +forward 7 +down 3 +down 3 +down 1 +up 2 +down 6 +down 5 +down 6 +forward 5 +forward 2 +forward 1 +forward 8 +up 5 +down 2 +down 9 +down 9 +down 5 +down 3 +up 6 +forward 2 +down 7 +down 7 +down 2 +down 2 +up 6 +forward 8 +forward 6 +forward 4 +down 1 +forward 7 +down 5 +up 9 +forward 5 +down 4 +down 9 +up 7 +forward 1 +up 3 +up 7 +forward 6 +forward 8 +up 6 +up 3 +forward 4 +up 3 +down 1 +forward 8 +forward 1 +up 3 +forward 7 +up 2 +forward 6 +forward 2 +down 2 +down 9 +down 9 +forward 1 +forward 8 +down 5 +forward 4 +forward 5 +forward 5 +down 9 +forward 8 +up 8 +down 6 +down 2 +down 5 +down 6 +up 9 +up 8 +down 4 +down 9 +up 4 +forward 6 +forward 1 +forward 3 +up 4 +up 3 +forward 3 +forward 8 +down 1 +down 2 +down 2 +forward 9 +forward 4 +up 2 +forward 7 +down 4 +up 1 +forward 2 +forward 9 +forward 8 +down 4 +down 7 +up 7 +down 1 +forward 3 +down 7 +down 8 +up 2 +forward 2 +forward 8 +forward 4 +forward 4 +down 5 +forward 8 +down 2 +up 7 +down 1 +up 9 +up 5 +down 3 +forward 6 +forward 2 +forward 6 +down 5 +down 6 +forward 9 +up 5 +up 6 +down 4 +down 5 +up 4 +down 6 +down 2 +down 5 +down 4 +forward 7 +forward 6 +down 8 +forward 2 +down 5 +down 7 +down 2 +forward 8 +forward 6 +down 3 +forward 4 +up 6 +down 9 +down 3 +forward 3 +forward 3 +down 9 +up 1 +up 3 +forward 3 +forward 6 +forward 1 +forward 4 +forward 3 +forward 3 +forward 3 +down 6 +down 8 +forward 3 +down 5 +forward 8 +forward 3 +down 4 +up 3 +up 1 +down 7 +forward 7 +up 6 +forward 7 +down 4 +down 7 +up 9 +down 9 +forward 8 +down 5 +down 2 +forward 9 +down 3 +forward 4 +forward 4 +forward 4 +forward 6 +down 1 +up 5 +forward 8 +down 6 +forward 5 +up 5 +up 5 +down 2 +down 9 +down 7 +up 3 +up 7 +up 6 +forward 2 +forward 6 +up 9 +forward 5 +forward 2 +up 4 +down 4 +down 5 +forward 7 +down 5 +down 7 +forward 3 +down 6 +down 1 +forward 6 +up 5 +up 6 +up 3 +down 9 +up 7 +forward 9 +down 3 +forward 4 +up 2 +forward 9 +down 2 +up 2 +up 5 +forward 1 +down 8 +down 1 +down 8 +up 2 +forward 9 +forward 1 +up 2 +down 1 +up 1 +forward 2 +down 7 +forward 9 +up 1 +forward 8 +down 5 +down 5 +down 9 +forward 5 +down 7 +down 1 +forward 9 +down 5 +forward 9 +forward 9 +down 6 +down 5 +down 6 +forward 3 +down 4 +up 8 +down 6 +up 4 +down 9 +up 1 +up 2 +up 8 +forward 6 +down 7 +down 4 +down 9 +down 3 +forward 9 +down 5 +forward 6 +down 6 +forward 7 +down 9 +forward 2 +forward 2 +down 8 +down 7 +forward 5 +down 8 +forward 6 +down 1 +forward 6 +forward 7 +forward 3 +forward 2 +forward 1 +forward 1 +down 9 +forward 7 +up 9 +down 5 +forward 6 +down 4 +down 2 +forward 4 +forward 3 +forward 9 +down 8 +down 2 +forward 4 +down 8 +down 6 +forward 9 +down 7 +forward 1 +up 1 +forward 3 +down 5 +down 8 +up 6 +forward 9 +forward 4 +down 2 +forward 4 +up 2 +forward 9 +down 5 +down 1 +down 9 +forward 5 +down 9 +forward 1 +down 9 +forward 8 +down 5 +forward 9 +forward 8 +up 8 +down 7 +up 9 +down 5 +up 9 +forward 7 +forward 7 +forward 1 +up 2 +up 2 +forward 6 +up 5 +up 5 +down 7 +forward 2 +up 8 +forward 8 +down 8 +forward 7 +forward 8 +down 7 +down 8 +forward 4 +forward 2 +down 8 +up 4 +down 1 +up 7 +forward 4 +forward 3 +down 6 +up 6 +forward 6 +down 1 +forward 3 +down 6 +forward 6 +up 3 +up 1 +up 5 +down 1 +up 9 +down 8 +forward 7 +forward 9 +up 2 +forward 2 +forward 6 +up 2 +up 3 +forward 1 +forward 2 +forward 8 +down 6 +forward 5 +down 8 +forward 2 +up 1 +down 1 +down 3 +forward 9 +down 6 +down 1 +down 6 +down 6 +down 6 +down 1 +up 6 +down 6 +forward 6 +down 5 +down 2 +up 5 +forward 7 +down 3 +forward 9 +forward 2 +down 2 +down 1 +down 9 +up 3 +down 2 +forward 2 +forward 6 +down 4 +up 7 +up 3 +up 9 +forward 3 +forward 8 +forward 9 +forward 4 +forward 2 +up 7 +up 5 +down 9 +forward 1 +up 1 +down 7 +forward 5 +forward 5 +down 3 +forward 1 +forward 6 +up 8 +down 4 +down 2 +up 2 +forward 2 +forward 1 +down 4 +up 9 +down 1 +down 4 +down 6 +forward 3 +forward 7 +down 4 +up 8 +down 6 +forward 7 +forward 4 +up 2 +down 8 +forward 5 +down 1 +forward 7 +down 1 +up 6 +down 9 +forward 3 +forward 1 +up 2 +up 4 +forward 8 +forward 1 +up 8 +forward 3 +forward 7 +up 9 +up 6 +up 9 +down 9 +down 5 +forward 8 +forward 7 +down 5 +forward 7 +forward 6 +forward 8 +up 4 +forward 6 +down 6 +up 8 +down 7 +up 8 +forward 6 +forward 7 +down 4 +forward 4 +up 2 +forward 9 +down 6 +down 2 +down 8 +forward 6 +up 2 +up 8 +forward 2 +down 3 +forward 7 +forward 6 +down 9 +up 1 +forward 1 +down 8 +down 8 +forward 4 +forward 4 +up 6 +down 8 +up 8 +forward 1 +forward 1 +down 6 +up 3 +up 7 +forward 1 +forward 1 +up 2 +forward 2 +down 4 +up 8 +forward 1 +up 7 +down 2 +forward 2 +down 1 +forward 1 +down 4 +forward 4 +forward 8 +up 5 +down 6 +up 8 +forward 4 +down 3 +up 6 +forward 3 +forward 4 +down 5 +forward 1 +forward 6 +forward 4 +forward 1 +down 7 +down 4 +forward 2 +down 6 +forward 3 +down 5 +forward 3 +forward 4 +forward 4 +forward 9 +down 5 +forward 7 +forward 7 +forward 9 +down 1 +up 6 +forward 1 +down 9 +forward 3 +down 7 +up 8 +up 6 +down 7 +forward 2 +down 9 +forward 9 +forward 6 +down 9 +forward 6 +down 8 +forward 1 +up 6 +down 1 +forward 6 +down 9 +forward 6 +forward 7 +forward 3 +forward 8 +forward 5 +forward 8 +down 9 +down 2 +forward 3 +down 3 +up 4 +down 4 +down 3 +forward 3 +forward 3 +down 5 +forward 5 +forward 1 +down 9 +down 3 +up 7 +forward 9 +up 1 +down 1 +down 6 +up 1 +forward 2 \ No newline at end of file diff --git a/2021/inputs/20 b/2021/inputs/20 new file mode 100644 index 0000000..c678ba5 --- /dev/null +++ b/2021/inputs/20 @@ -0,0 +1,102 @@ +#..##.##.##..#.#.####.##..#..###.#..####.#.#....##....#....#...##.#.#.##...#.##.#...#.##..##.#....#...###.#.##.#..#..#..######..#....#.###..#....##.##..........#.#..###.......####..#...###.#.###...#####....##...##..##......#.#......#..#..#.#.......#.##.###.....##.#.#....##.#####.###.....#..###...###..##.##.#.#...#.##.###.###.#.....#.####..#..##....##.#.#.###...##.#.#.#...#.#####.......#..##......#..##.###.##.####.#.#..#...######...####...#.##.#...#....#.......##..#.#....###.#...#.##...#.#.......#.#....#.#.. + +#....#..##..##.....##..####.#....####.##......##.##.##..#..#..#....###...##.#######.####.#..#.###### +.####.#....##.#...##.......#...####.#.#.###.#.#..####..###.#####.##.##..........#..##.#...#...#..### +#######..#....##...#....##...#..###.##.#.#.#.####.###..##.#....#.#####...#..#...####...#..#..#.#..## +##..##.##.##..######.#.....##..#..#.#.#..#..####......#..#......##.#.##.###.###.##.##########.#.#.#. +#..##.#.#...#..#.####.###....###..##.#.###.##..##...#..####.##.####.#####..#..#..#.#.#...#..#.#.###. +.##...###....###..#..##.#..##...#.###.#.##...#....##..#.....#.##.##......#.##..#.#....##...###.##..# +###..#.###.#..#...###.####.#.....##.#..#####.##..#.........#.##.#..#.#...#..##.#.##.#.##.#.######..# +..###..##.#.##.....#....#.#..####..#...#####.....##########..###........#.##.#.#.#...#.....##..#..#. +#.....###..#.#..#..#.##..####.#.#......##.#..####.##.#...#.#.##.#....###.#...##....#.#.##.#.##.##### +##..###..#####.#..#.#.##.#####.######.##..##..##..#..#..######.#.#.###..#..##..##.#..##..###.####.#. +####..#..#..#..#.#.#.#.#.##.#..#...##.##.#.#.###...###.#.##...###.#.#.#.##.#...###...####..##......# +.###.#......#..#..####.....#####.#.##.....#...#.#.#####.#.#..#####.##........#...#.###.#...#.#.##... +........######..####..##.#..##.#.#...#....##.#..#..#####.#######..##....#.####.########..#......#..# +##.##..#...##.#..##....##.#.........#..#.#.#######.##.#..##...#.##.###.##.#.#...#.######.##...#####. +.##.#.#####......#.##.#.#.#..#......#.#..#....####.#.#..#.#..#..##.#.#..###.##.#########..#...#.#### +.###.##......###..#..##.#.##.###.##.##.#####.#.#.#.#.##....#.#.###.######.#............###.###..##.# +.########.#.#...###.##...#...##..##.##..#..#..##...##..##.....#...#.#...#..#.##..#.####..#...#..#... +#.##...#.#.##.####..##.##.......#.#.#.######.#..##.##..#.#.##..##....###..#.#.#.##.##..#.###.###.... +#..#..##.##.##.#...##.#....##.#..##...#.##..#.##....###...#..###..#.######..###.#.#.#..###.##.###..# +.##..#.##.#..#.#.#.#.#..#.###.###.##.#..##.#.#..##.#.#.#...#..#.###..###.##.#.#..#####.#..##.##...#. +#..###..#.##..#.####...##..#.#.#...####...##.....#..#.#.#.......##.#..##.#..#..#.....###..#########. +##..####...#.##.#.##.#######.##...#..#.#.#.#..##.#.....###...###.#..##.#..#..##.....###...#.##.##.## +.##.#.##.#.#.#.###...###..###.######............##.###.###.#.####..##....#.##.#.#..#.######....#.#.. +###.##.....##..#.###..##...##.#...#..#..#.##.#.#.##.##...##.##.#.#..#.#......#.####...###..#.#..#.## +##.#....#.###..#.#.#.##...#..#..#.######..#.#..#...#...#.#.#.#..#.##..#.#....##.....#.#.#.#.##.#.### +####....#.####.###.#...##...##.#.#..........#..##.##...###..#.##...###.#.#.#...##.##......###.##...# +...#.#..#.#.#######..#..#...#.##.##.#.....#####.##...#..##...#..##..###......#...#..###.##.##....### +#...#..#..#....###..##.....###.###.#...#..##.###..##.##.#.##.#.##......#.#...#.####..#.#..#########. +...#......#.###.#..###..####...###..#......#.##..#..#.#.#.#.....##.#...#......#.#####.###..#..#.###. +.##...###.##.###....##..#..#..#####..##.##.#.####..##.#..####.###..###.#.###.#..#####...#.####.##... +#.#.##........#..#...##.##..#..####.####.#..#..###.###.#...#..###.####.####.##.##..#.#.##.###..#.### +....#......#.####....#######.#.####..#.##...#.###.....##.##.#.#..#.##..#..#...##.#..........#...#... +##.##.#.#########.####.###.#...#....#.###.###.#..###.#...###.#...###.###..##.##...#.#..#.#######..#. +##.......#.##.##.###.#.####.#..#.#......##.###.###.###.........######...#.#####.#...##.#..#.#.##..## +#.#..###..#..#..#..#..#..#.#..#......###...#####...#.#.#.#####..#.......#....###.#.#...##..##..##.## +##.....##....##.#####..#####.#..#...#.#..####...#.###..#####..##..##......#........##.#..##...##..#. +###..#..#...#....##.###..##.##.#.#.####.#.####.##...#.....######.#....#.#.#.......###.....######.### +#.#.##..###..###..#.#.##.#.#.##..#..#..#.#.######.#.#.#...#.#.#.##.#.#....#....###.#.#...###...#.##. +....#..#.#..###.##.##.#####..###...##.#####...#.....#.##.##.###.##.#.##....##.#.#.######.##.###..##. +.###.#..##..##.###.#.#.#....###..#.##..##...#.#####.#.#..##....##....####.#..####..##.#....##..#.### +#.#..##...#...##...####..####..###..##.#.#.##..###..#.####..###.#.#...#...#....##...##..#...###.#..# +#...#.##..##.####..#..#.....#.##.#####.##.......###.#...###.#..#..#....##.#...####..#...###...#.###. +#..###..####.#.#.####...##.#......#.####.##.#..##...#.##...##.##...###..#..##.#..#...###.#..###.#.#. +.###..#.##.##.#.#...#.#.#.#.###.#.#...#.##..#....###.#.#.###...#....##.#.####.##.#.###.#..#.##..##.. +..###.#.###..##....#....##.#...##.##.###...#..#.###..##..###.#..##.##.#.#.##.#.##.##..##.#..#####..# +.##.#......###.##.##.###......####..##.###...##...##....###.#####.##.#.#.#.#####.#..#..#####.##.###. +##.#..#.#....#.#.#..###..##.#..#.###....#...#.#.....###.##.#...##.####.##...###....####..#....###### +##.#..##.#.#####.#..###..#.....##...##.###.##.#.....#...###..#.###.#..#....#.#...##.#.###.#....#.#.# +.........##...##...#.##.....#.##.###..#.###.#.###...##.##.#.#.....#......######.#.....###..#####.#.. +.####.##...#.###.###.##...##.#...#...##.#...#...####....##.#####..####.#....#..##...#.#....#####...# +.###..######..#...##..#..#..##.##.#...##.##.#..##.#..#.#...#.#######.###.####.#..##.##.#..#..#.#...# +.###.#....##.##.#...##..#.#.##..##.###.#..#.#..####.#..#.##.##.###########.#.#...##.#.##...#..#...#. +..#.##.#.#.#.#####..###.#.#####.#.####.#.#....#..#####..##.######.....###.#.#.#...#..##...#.#..###.# +..##....#...#.####.##..####.##..###.....#...#..#....##.#.#..#....#.###.##.##...#.#.##....###.#####.# +##.##...#.##...#.###.########..##....####.#...#.#...#..##...##......#.........#.#.#.####.#...#.##..# +####...###.#########..#.##...#.#.####..##.#.###....###..#...#.#..#.#.##...#####.#......#..#..##.#.## +#...#.####.##....#.###..#.###.#...#..###.#..####...#..##..#....##......##..####.####.#..##....#.#..# +.##...###.#..#.#.##..#..##...#...#....##..###...##.###.#####.#.####.###.##.#.#.##.####.#...##.##.##. +####.##.####...#..#......#.#..##.#.##.##.#####.#.#.##.##.#..###.##.###...#.####.#..#..#..#.###.##### +#.#.###.#.#.#..#...#..#..#...##..##..######.#...#..####...#.#.###..####.#.#..##.##...##...####..#.#. +###.#..##.###..#.#.##.#...#.#..#....#..#....#.####.#.######..####.##.#.###.....#.....######..###.##. +.###.#.#...#####.##.#..##.##.#.#....##..###.#.##...##.#.....#.#.#####.##.####....##.#####.######...# +.##.###...#####.#.###.#.#.###..##.#..##.#.#..#.##.##..#....#..###.#.####.#..##.#...#.........#.##### +#..##..#.#.#...###....##..##....#...#.#.##.#...#..###..##.#...#.#....##..#.#.#....###...#.##...###.# +###......#..##...######.#.##.#.#..#.#..#...###.#.#####....##.###..##.#.###.###...##..##.....##..##.# +.###..###.#....#..#.###.###....###.#....##.#.##.##...#####.#..#######..##.##....#...##.#.###..##.#.. +###.##.##..#...#.#.#..#..#.#####.#.##...###..##...#.#..#....#.#######.#####.##...#..#.####...###.### +.#.#.#.#.##....###..##..######.##.###.##.#.....#.#.##.##.#.##......#.#........#..##.#..#..########.. +.##.#.##.#....#......##.##.#.#..#..######.#.###.#....#.#.#..#.....#.#.#######..####.#..######..#.### +.#....#....#.#.#..#.###........##...########.#.####.##.#..#..#.####....#..#.#.#...#####.##.#.#..#..# +####.##.###...###.....#..##.#.##.#....#....###.###.###.##......####.######.#.#.###.#.#.###...###.##. +..##.#######..#.#....#.#..##.........##..#..##.#.#........#..##...#.#####.......##.....##.#...##...# +#.#..#.#.#..###..#..#..##.#..##.##.###.##.#..##..######.#..####.#...#.###...#..#.#.#...#..###.#..##. +.###.#.##..#.#.##...###.#####.##.###..###..#...###.#.##....##.#...##.#.###.##.....#.#####.#####.#.## +...##..##.#.#.#.#.#.##.#.##.#..##.#.##..##..##.###.##.#........##.#.###.####.####....###.#.##.#.#.#. +.##.##...#........####.#.#..###....#.#.##.#.##.......##..#.####...##..####.....#.####.....#######..# +#.#.##...#.#..#.##..#.####..#.#....######..........#.##..##..#..#######.##.#.#...###.....##......##. +###.###..####.#.#..####...#..#..###.###.####....#..##..#..#...#######..#...#.##.##...#.####..#.#.... +####.##.###.#..##...##.##.##.##....##.#.#.#.###.###.#.#..##.#.#####.#....#.###.#......##.#.##..#..## +.##.##.#..#.#.......##...###.#.##.#.##...##.##...##.#..#.##...###.####..#....###..#.....##...###..## +#....##..#.###..##..#.###.##.###.#..#######....##.#.#.#.#..###.##.......####....#..#..##..#.#..#.... +.######...#...#.#.##.#..#......#.#.##.#.#...###.#...###...#..###.#.....#...#...#....#.......##....## +#.#.###...#.####..##..##.##...###.#######..#..###...#..#.#.#..#..##.....#.#.####.#.#.######..###.### +.####.....#.#.######.#..###...#.#...##...##.#..##.#.#.#......###...#.#..#..#.###..#...########..#... +#..#.#.#..#.#....####..#.##..#..##.#..#.#..####.#####.##.######....#..#.##.#..#..#...#..#.....#.#### +....#.#.#....###...###..##....#####..##.#....##.###....#.#.#####..###..#.#..#####.#....##.#..##.#.#. +#...##.#..#.###.#...##...#.#..#.#.####.####..###.####.....#.....##..###.#..#.#..###....#.###..###..# +......##....##...#....###.#..##....#.#...#######..##.###..##...#.###..####.##.#.###...####..#.#..... +#..#####.###...##.##..#..#....###...#..##...#...#.######...#.#######..##.#..####...###.#..##..####.# +..#.##.##.#..##......###.#.##.##.###.#####..##.#.##....##..###....#..#..###..####.#......#.#.###.#.# +###.#....#..######..#...#.##.##..###....#...##.#...##########..#.####.#.#..#..###.#.#.#.##....#.#.#. +###.###....#....#...##.##..#.#.###.##..##....##.#.####.##.#.####..#..###.#...###.#.#.##.#.##...##..# +#....####..###.###..##.#.##.#....#.###...#.###.#..####....######.####.##.#.#.#.####.#.#...#.#.#.#### +.#.#.....##.#..#####.###.##..#..#.##..#.##..##.#.#..###...##..###.#.##.#.##..#..####..###.#..##.#.#. +.##..##.#...#..##.#.####.####....#.#.###.###.##.#####.##....#.#.#...#.#..##..####..#.#...#.##...###. +#....##.#.#..#.#....#...##..#..####.##.#.##.....#.###..#.##.##..###.#..##..###.##.....##..#..#.#.... +.##.####..#.#..#.#.#.##...#.#.##........#..#..###.#..#.#..#..###...####.######......##..##.#####.##. +####......##.######...##.#.#...######.#..###.#..#.######.#.#######..##.....##.#.###...#..##.##..#### +...###.....#.##..##.#.....###.###.####..##..###..#..##.#.#......##..#.#.#..##.##.####.##.#.####.#.## +.....#..#####.#.###..###..#.##....##.#..##.#.#.##...###....##.####.##..####....#...#..#.######..###. \ No newline at end of file diff --git a/2021/inputs/21 b/2021/inputs/21 new file mode 100644 index 0000000..e9455f7 --- /dev/null +++ b/2021/inputs/21 @@ -0,0 +1,2 @@ +Player 1 starting position: 8 +Player 2 starting position: 5 \ No newline at end of file diff --git a/2021/inputs/22 b/2021/inputs/22 new file mode 100644 index 0000000..ffd3834 --- /dev/null +++ b/2021/inputs/22 @@ -0,0 +1,420 @@ +on x=-13..37,y=-36..14,z=-3..45 +on x=-1..43,y=-15..32,z=-35..15 +on x=-7..44,y=-6..48,z=-13..38 +on x=-42..3,y=-42..10,z=-3..44 +on x=-34..13,y=-27..27,z=-31..23 +on x=-14..39,y=-34..10,z=-40..10 +on x=-12..34,y=-25..19,z=-32..15 +on x=-47..6,y=-29..20,z=-45..9 +on x=-37..16,y=-17..34,z=-25..29 +on x=-28..20,y=-19..34,z=-3..47 +off x=1..19,y=-30..-14,z=19..33 +on x=-34..19,y=-22..25,z=-17..35 +off x=-49..-32,y=-26..-13,z=19..38 +on x=-28..25,y=-46..2,z=-11..43 +off x=-30..-21,y=-44..-26,z=6..21 +on x=-20..31,y=-39..11,z=-23..28 +off x=33..49,y=29..47,z=8..25 +on x=-28..25,y=-26..20,z=-49..-1 +off x=-19..-5,y=3..18,z=-44..-27 +on x=-34..15,y=-29..25,z=-34..17 +on x=-77707..-66888,y=-15495..7977,z=21658..44356 +on x=16734..33844,y=-90735..-54900,z=2270..19264 +on x=37676..47017,y=-53726..-31603,z=-58485..-51594 +on x=-25500..-16563,y=-6468..2463,z=69232..89880 +on x=-35872..-12957,y=-84461..-60975,z=-20007..-9532 +on x=-89647..-67921,y=-39059..-13640,z=-42281..-6574 +on x=47838..82298,y=-43677..-35749,z=9027..31549 +on x=-9400..11474,y=-39127..-21505,z=57808..89970 +on x=61666..80803,y=10083..24758,z=37048..46860 +on x=26068..46741,y=-77898..-58561,z=-30238..62 +on x=-22689..-13065,y=-81029..-64591,z=-21055..3749 +on x=38030..60209,y=-34391..-15028,z=-55983..-51628 +on x=42982..62845,y=-54347..-47689,z=15630..45725 +on x=-18872..11038,y=-76016..-52462,z=-42387..-37005 +on x=-55695..-38898,y=36001..55982,z=-70788..-36425 +on x=-7131..26336,y=42833..63923,z=-64129..-45423 +on x=-60488..-40325,y=-47405..-31877,z=48181..58567 +on x=-13302..15801,y=73748..92138,z=-34147..-17494 +on x=31153..53512,y=41173..61390,z=38591..49656 +on x=-35709..-8667,y=-34876..536,z=-79524..-59100 +on x=45731..73067,y=50149..54110,z=-34129..-20399 +on x=2923..23025,y=53277..82004,z=30350..45240 +on x=-34895..-14927,y=27451..50766,z=-67502..-59363 +on x=-8366..10206,y=22907..37139,z=70976..78784 +on x=26000..31619,y=55905..81695,z=28039..45741 +on x=-27099..342,y=70224..85805,z=-6497..11011 +on x=-1601..9361,y=-40465..-9946,z=64120..76194 +on x=-29110..-17895,y=38967..50663,z=56746..78592 +on x=-77526..-50930,y=-60463..-42672,z=-16932..667 +on x=-19801..1121,y=-95369..-68521,z=-2863..7840 +on x=-56034..-34754,y=-4651..19561,z=61780..87310 +on x=50357..81377,y=-54480..-35226,z=-13214..22298 +on x=-37854..-29487,y=-24307..-9466,z=-70318..-65828 +on x=-87626..-68588,y=-1140..28963,z=23659..43617 +on x=10140..45670,y=19441..48501,z=52468..67612 +on x=-61161..-46395,y=50168..60300,z=-43642..-22240 +on x=-41791..-23146,y=59820..92015,z=-30219..-13117 +on x=51416..66401,y=21581..26160,z=36042..66562 +on x=43985..71278,y=-76853..-47487,z=10319..33057 +on x=16554..44446,y=-83467..-49432,z=27702..46302 +on x=-40078..-32697,y=-19712..13098,z=-79179..-70318 +on x=-72544..-48748,y=-24529..-10822,z=25757..62217 +on x=-49848..-23893,y=49735..70928,z=-17843..4166 +on x=46504..62954,y=-63451..-39706,z=-7060..12582 +on x=-18091..5639,y=-80367..-60849,z=20700..28381 +on x=-70298..-58521,y=-36254..-16840,z=39462..58760 +on x=-57895..-36812,y=-80262..-60063,z=17594..35827 +on x=66005..74563,y=-40697..-10634,z=-28571..-12651 +on x=-34740..-12979,y=14459..27693,z=72315..83610 +on x=-54526..-27860,y=20919..36223,z=53916..69317 +on x=5482..28204,y=-72328..-47181,z=36101..68864 +on x=-10361..18618,y=50680..80016,z=29881..52293 +on x=22013..53090,y=61184..77888,z=-690..15445 +on x=49878..80860,y=-45597..-24600,z=8773..42131 +on x=-21481..-2534,y=-52590..-35874,z=59304..71419 +on x=-27491..-2116,y=-57213..-37184,z=35989..58007 +on x=-27046..-11339,y=-93198..-69701,z=2894..23463 +on x=-49531..-33827,y=-71407..-54183,z=28280..48597 +on x=2360..31991,y=25158..56562,z=-80620..-60755 +on x=-26128..-998,y=-62930..-52635,z=35279..63815 +on x=48650..66941,y=-61055..-28617,z=29166..31637 +on x=69844..85996,y=-22985..-2275,z=21553..38166 +on x=2845..20505,y=49897..61909,z=53069..67906 +on x=-28415..-3203,y=57533..73503,z=21661..31210 +on x=8443..20885,y=34174..61857,z=57794..68245 +on x=12152..42225,y=17448..37654,z=50480..71531 +on x=57295..73077,y=-41599..-9861,z=-67808..-36322 +on x=-39269..-26154,y=-14375..14800,z=71243..78784 +on x=10757..31258,y=-62179..-38241,z=-79093..-48669 +on x=-30816..-13772,y=31105..43599,z=56286..80856 +on x=-81989..-50706,y=-30815..-14580,z=18775..44958 +on x=40071..59419,y=44624..61873,z=29016..50450 +on x=40251..59324,y=-67414..-49803,z=-36761..-11231 +on x=27417..46406,y=-66475..-47513,z=-25177..-11900 +on x=-65899..-38890,y=-12430..5965,z=57577..63876 +on x=-25267..-2876,y=-44000..-32310,z=-80593..-53949 +on x=-18326..-7876,y=43132..66145,z=-66613..-36605 +on x=-57018..-53229,y=36751..59783,z=-30079..-9617 +on x=-66290..-47772,y=-31894..-1002,z=33540..57723 +on x=-125..24382,y=-80848..-72343,z=-49693..-15529 +on x=-24015..-2898,y=-53625..-39125,z=55225..73628 +on x=51897..80923,y=-4054..3520,z=-45412..-36746 +on x=-30093..-1431,y=34246..47381,z=-75270..-59132 +on x=31766..51586,y=48710..67006,z=39768..49335 +on x=-20923..6424,y=1580..14928,z=-89071..-61335 +on x=-78388..-68973,y=2726..15396,z=31839..51487 +on x=-17101..1916,y=-31904..-18696,z=62499..86196 +on x=60981..74827,y=-33558..-6318,z=17172..47217 +on x=-3097..3774,y=74123..95012,z=-15851..19259 +on x=-29901..-26536,y=-5670..9081,z=62581..77681 +on x=-23676..-6641,y=-87054..-60450,z=6151..27241 +on x=-75546..-60657,y=-46787..-18586,z=6164..28899 +on x=-62447..-45293,y=-55081..-38324,z=-45488..-36816 +on x=-35053..-11420,y=-78994..-73796,z=-27546..-2495 +on x=14791..35832,y=8044..17682,z=-75881..-70257 +on x=37114..54311,y=-62857..-40402,z=42866..62581 +on x=-78891..-57261,y=-19933..2380,z=-46848..-34329 +on x=-40885..-31987,y=56185..85808,z=-12714..14124 +on x=-22584..-1227,y=62080..69853,z=31132..43774 +on x=21369..37041,y=-29949..1877,z=-84346..-70161 +on x=-32994..-11854,y=-23931..-13655,z=68474..75824 +on x=28950..44900,y=37331..65913,z=-53762..-21514 +on x=14251..32416,y=-59808..-39089,z=-69466..-54177 +on x=-1001..11349,y=-91855..-70109,z=-20491..-5599 +on x=-55376..-22523,y=26566..45387,z=53177..76643 +on x=5773..21346,y=-24068..-6968,z=63947..88583 +on x=-61909..-45698,y=56099..78327,z=-6552..20928 +on x=-91524..-56986,y=-1853..11970,z=13238..33401 +on x=65923..82086,y=-3320..28990,z=2252..31777 +on x=-49874..-21418,y=3494..29323,z=-69436..-64723 +on x=73184..89417,y=-42741..-7654,z=2716..14770 +on x=-19543..5754,y=-45523..-35685,z=-69929..-58853 +on x=20033..44221,y=-84229..-57579,z=-8712..5719 +on x=-91462..-67462,y=4054..26833,z=-39415..-13802 +on x=27732..50763,y=-58005..-35512,z=-66011..-34072 +on x=27133..51350,y=45426..71070,z=-8192..-4652 +on x=32748..56378,y=-70321..-50194,z=26633..50320 +on x=-79635..-59790,y=-1252..13376,z=19282..37497 +on x=63307..93679,y=7073..20800,z=1161..28560 +on x=-36145..-14630,y=-37537..-21452,z=56070..76078 +on x=30686..50529,y=-67131..-36989,z=35265..66047 +on x=-15752..-11751,y=59850..88935,z=18731..42395 +on x=38283..60807,y=51015..57433,z=-40995..-25599 +on x=-28800..-5978,y=73498..82844,z=-33104..-12502 +on x=38063..67439,y=-35709..-20195,z=-53965..-32238 +on x=-68345..-50452,y=8456..26579,z=30921..48065 +on x=-32241..-19903,y=41696..65189,z=51000..65538 +on x=36262..42472,y=-64295..-31497,z=-60784..-48215 +on x=-19510..-110,y=31699..54917,z=-67629..-53476 +on x=-62256..-40043,y=-35060..-34579,z=-70111..-50680 +on x=-39707..-23353,y=-19810..6512,z=-87108..-53181 +on x=-82176..-51976,y=-50348..-40880,z=-33910..-14246 +on x=-83924..-70902,y=-19175..2985,z=-15384..15455 +on x=49316..72497,y=425..6060,z=52206..70825 +on x=-83699..-57057,y=-27150..-4795,z=22540..29041 +on x=-3101..12001,y=68638..91778,z=-40657..-29719 +on x=2252..24442,y=34848..55848,z=-75998..-48307 +on x=-5069..16361,y=-20661..-2439,z=65914..86332 +on x=-57402..-38222,y=-69446..-40489,z=-54314..-29224 +on x=-13242..408,y=68201..84940,z=-45871..-38004 +on x=56749..63913,y=-8638..3672,z=47720..62702 +on x=54011..76285,y=-62270..-39823,z=-22993..-14872 +on x=58382..77062,y=-20697..-7882,z=46625..52172 +on x=-47219..-11653,y=26546..45116,z=-73892..-62298 +on x=52120..73926,y=32675..54357,z=-45806..-32181 +on x=-11456..-3541,y=-68839..-41789,z=45637..76793 +on x=-45992..-25163,y=70590..94451,z=-3611..27080 +on x=-77343..-54249,y=25725..46466,z=-7443..1553 +on x=53624..60939,y=16322..19384,z=-60689..-54993 +on x=-62023..-51180,y=-11378..-249,z=-60785..-36599 +on x=51752..62523,y=-55025..-48761,z=-35067..-13224 +on x=-79436..-62124,y=17736..25062,z=-33415..-15642 +on x=58309..68890,y=-53920..-35770,z=-5858..12657 +on x=-70319..-60470,y=13686..43339,z=-44612..-11192 +on x=-14271..3865,y=-5940..16892,z=-89272..-77708 +on x=56603..74277,y=-30330..-17500,z=-65513..-34252 +on x=70395..81599,y=-8116..-4807,z=-47231..-23373 +on x=26409..53159,y=37900..58813,z=-58362..-44114 +on x=-6833..22656,y=49013..66204,z=-64722..-42138 +on x=-79939..-47600,y=-54134..-42160,z=7100..29266 +on x=-12387..1516,y=-93270..-73717,z=21246..31778 +on x=-68856..-43032,y=-13298..19069,z=45157..61355 +on x=-52372..-35450,y=7419..16683,z=-86081..-55547 +on x=24953..45687,y=45007..63906,z=14094..39220 +on x=-55616..-27396,y=62300..72738,z=-2200..9190 +on x=50053..83913,y=-11119..-1995,z=-60574..-21845 +on x=-34214..-11133,y=-11996..-4356,z=72157..82626 +on x=-81300..-54391,y=-17887..-200,z=31179..50660 +on x=-16117..18870,y=61218..84345,z=33172..58266 +on x=-94022..-70920,y=422..21148,z=-40110..-4601 +on x=7997..32024,y=-93325..-76394,z=-1522..5982 +on x=-9500..16520,y=23350..46041,z=-88268..-58078 +on x=-23747..-4542,y=-58091..-41118,z=62263..73989 +on x=-17732..-2905,y=-95543..-64883,z=-1683..25695 +on x=75498..83226,y=-6258..14464,z=2112..14733 +on x=20265..41561,y=11946..41840,z=50936..79878 +on x=53047..82535,y=-14468..1393,z=-43142..-21193 +on x=27130..52544,y=57145..81711,z=-35213..-9752 +on x=-45338..-15941,y=-19607..110,z=67448..89256 +on x=-59996..-26746,y=2539..21005,z=53468..67082 +on x=3402..28703,y=-93591..-66413,z=8528..10542 +on x=-49409..-35285,y=32697..52202,z=48515..71687 +on x=49025..53870,y=-9075..16495,z=-66082..-46321 +on x=30601..51564,y=-69996..-47533,z=-25031..2209 +on x=5635..35015,y=53724..79653,z=-26973..-16059 +on x=55318..86926,y=-23333..-9355,z=7047..44226 +on x=-30289..-12285,y=-68389..-57981,z=-48161..-40552 +on x=58882..92805,y=23648..37563,z=5964..22967 +on x=34496..42738,y=-72380..-48483,z=-34740..-955 +on x=20317..32221,y=20101..38130,z=-86821..-68574 +on x=-34120..-25879,y=-55894..-44842,z=-55903..-40976 +on x=-45645..-28331,y=-74951..-59701,z=30291..41140 +on x=-18717..-645,y=-49850..-25005,z=-85064..-56705 +on x=-66069..-62114,y=-7151..16958,z=31325..61285 +on x=-8768..2875,y=70141..79960,z=-16283..162 +on x=48671..75660,y=34126..57253,z=25955..40686 +on x=1592..40495,y=17266..42218,z=53722..79079 +on x=-19745..6994,y=-93790..-75591,z=-28647..9949 +on x=-33893..-12969,y=-90507..-60780,z=-42644..-10587 +on x=60910..79183,y=-49087..-26806,z=-209..8359 +on x=-35209..-832,y=18733..37433,z=-77554..-53413 +off x=-24707..-6441,y=-41376..-10856,z=55331..90949 +off x=6474..32653,y=-14454..17574,z=-88453..-71268 +on x=-13493..-6403,y=47314..66556,z=-54874..-29147 +on x=-9291..12608,y=53741..85000,z=-46306..-17017 +off x=13983..32183,y=38353..59846,z=44630..60489 +on x=-20250..12042,y=6499..35623,z=-81728..-71834 +off x=-12034..26843,y=-13773..3,z=-84021..-75465 +on x=-26797..-16552,y=-49960..-32197,z=-65821..-61668 +on x=8368..23515,y=21417..44347,z=55621..84595 +off x=49540..69051,y=31705..39693,z=-42453..-14061 +on x=-69780..-50337,y=-64895..-31351,z=-1140..22240 +on x=70874..82029,y=-4927..29616,z=-17097..7597 +off x=-35974..-21133,y=-17861..70,z=66698..84031 +off x=-47342..-11961,y=-672..21189,z=-74692..-65282 +off x=24383..49319,y=48619..83833,z=15987..31130 +off x=4559..23214,y=61581..86675,z=11178..41759 +on x=61861..73539,y=-60405..-42686,z=5953..23802 +off x=-59929..-28960,y=-56097..-28974,z=-52538..-46415 +off x=-72615..-55995,y=-36832..-13278,z=19227..40885 +on x=-12406..8284,y=-92734..-74910,z=-35203..-11978 +off x=11249..35967,y=28322..57776,z=56548..84816 +off x=44731..62241,y=35624..44662,z=-66511..-34520 +off x=-87104..-74134,y=-13992..12953,z=-3294..10178 +on x=-28985..-3937,y=-56788..-26115,z=63095..78456 +off x=22993..41149,y=-72025..-38641,z=53155..65281 +off x=-70263..-64986,y=10277..24698,z=17534..54469 +on x=33137..54068,y=49394..60447,z=14589..36485 +off x=1761..5646,y=-30207..-23218,z=67948..86068 +off x=23532..51240,y=-68091..-30165,z=-66152..-47659 +on x=63492..78630,y=26451..49621,z=-16485..2633 +on x=61364..70239,y=-44857..-25262,z=-8792..15341 +off x=-44240..-24659,y=40477..65486,z=46273..50810 +on x=-82196..-65068,y=22741..26991,z=21666..26831 +on x=19512..39779,y=51290..71942,z=33521..52593 +off x=52818..66473,y=38215..68935,z=11423..29773 +off x=19475..48035,y=50117..69010,z=-49063..-24987 +on x=-14143..9865,y=-10817..8431,z=65536..80561 +off x=-72733..-48163,y=-25291..-9724,z=-66757..-36479 +off x=-43106..-20567,y=58626..65043,z=30453..56787 +off x=13154..16214,y=5656..13752,z=66016..80418 +off x=-11408..18735,y=39272..59415,z=60254..73108 +on x=-77078..-61965,y=-17101..-10110,z=44955..62934 +off x=40661..68779,y=45899..59382,z=-21792..-15201 +off x=53315..78287,y=-31686..-15404,z=-41990..-23080 +off x=-18699..12677,y=-34848..-11433,z=63732..95545 +off x=-24502..-17077,y=-91563..-71124,z=15320..22882 +on x=24300..44953,y=-8117..20940,z=-85817..-64192 +off x=-57159..-39199,y=-29219..-23341,z=-68301..-54847 +on x=34394..67095,y=-53551..-28864,z=43253..61926 +off x=-50069..-30721,y=-14112..20450,z=-84644..-54725 +on x=23629..36100,y=59625..71637,z=-42808..-14597 +on x=-48311..-40298,y=-52473..-36850,z=-55879..-29005 +on x=-12671..11981,y=-46219..-25335,z=68262..79543 +on x=-4192..11450,y=-33767..-22561,z=62929..78589 +on x=-72223..-46005,y=-407..27380,z=-64061..-33742 +off x=41077..57062,y=-58884..-45405,z=19829..48890 +off x=49487..69913,y=17640..41283,z=44735..66488 +off x=-73528..-49377,y=-49007..-39363,z=9948..35961 +off x=-71643..-56910,y=30988..61528,z=1455..7445 +off x=-37842..-11285,y=64140..77407,z=-1880..26818 +on x=-73578..-43035,y=9872..28002,z=44466..65647 +off x=326..24287,y=68067..99200,z=-19343..11282 +on x=55367..74607,y=22023..39362,z=-34371..-18588 +off x=58603..79981,y=-22871..1116,z=22611..39894 +off x=47930..73685,y=-6214..-2685,z=-60846..-31022 +off x=22820..41562,y=-16265..-4928,z=58506..83229 +off x=-88133..-62301,y=15247..30618,z=-10265..10510 +off x=1253..22476,y=-60567..-30741,z=51569..81597 +off x=63494..75187,y=-55856..-27033,z=-16423..-4091 +off x=52204..70316,y=21707..45143,z=24511..43927 +off x=27774..33872,y=30457..60549,z=52881..74012 +off x=-67751..-48677,y=6535..14109,z=41406..63051 +on x=62817..79049,y=4793..27715,z=-40593..-20781 +on x=21141..51290,y=-74209..-55507,z=15792..30070 +on x=-32225..-15877,y=21103..45553,z=-66267..-46475 +off x=-53085..-35827,y=-36046..-19282,z=55940..62461 +off x=17599..44204,y=13384..25615,z=-76042..-64772 +on x=-23704..-3540,y=-20375..10502,z=59465..97525 +off x=-82359..-68971,y=12420..30737,z=-38435..-11957 +off x=-40061..-9787,y=-1989..10412,z=57295..74944 +on x=-76144..-61483,y=-58373..-37868,z=-43080..-14295 +on x=7696..27949,y=-72779..-56254,z=-54768..-32949 +off x=39003..59670,y=-62963..-47662,z=1974..16893 +off x=29968..35020,y=-22383..-11225,z=61966..80305 +on x=50004..63242,y=-20016..6273,z=44941..69658 +off x=-59279..-55566,y=-61178..-54387,z=-29065..-8057 +off x=-61413..-26740,y=60749..79809,z=-21764..16450 +off x=32196..66439,y=-60264..-26865,z=26941..60013 +on x=-58520..-43376,y=37472..61676,z=23422..43293 +off x=-56396..-25541,y=-68416..-55661,z=-19690..-9207 +on x=18618..44778,y=-85629..-64714,z=-8305..17838 +on x=-61504..-52282,y=-57912..-39990,z=-14780..6801 +on x=11156..42237,y=11867..43976,z=-85896..-64810 +on x=-55007..-28867,y=52919..63309,z=-40553..-23411 +off x=59765..80865,y=35650..56453,z=-27643..-24090 +off x=43182..81228,y=-34129..-7000,z=40063..52672 +on x=-13505..20448,y=64022..91445,z=26743..48275 +on x=27815..43279,y=-70617..-52124,z=24964..51972 +off x=35675..49869,y=-62404..-56365,z=18269..35287 +off x=35300..54594,y=35804..62612,z=-52851..-29341 +off x=-71395..-53018,y=-19495..-4921,z=24089..52405 +on x=-33332..-3755,y=-59570..-40365,z=56013..63939 +on x=42324..60577,y=-49964..-34186,z=-52816..-27743 +off x=48768..67360,y=-61320..-28892,z=-37831..-21312 +on x=16338..40996,y=-53751..-18105,z=48116..68706 +off x=-27168..-9712,y=-84533..-68775,z=4825..41138 +off x=-60047..-36975,y=37870..61975,z=32191..46708 +on x=26376..40244,y=-65020..-54338,z=43732..56693 +off x=-91738..-68157,y=-24748..6980,z=-39819..-19451 +on x=-5317..14596,y=-21035..-10563,z=71696..82823 +off x=49847..64417,y=23298..37336,z=21615..52831 +off x=-52432..-40255,y=-26836..-5279,z=-70876..-60890 +off x=-20102..9857,y=-1721..20913,z=78025..98271 +off x=-4990..6648,y=-21613..4090,z=-86165..-59847 +on x=43038..56116,y=-63896..-49438,z=-26881..-4325 +on x=-4380..2751,y=55174..85405,z=-46983..-21937 +on x=70338..80320,y=-37100..-1120,z=-25918..-14953 +on x=-54364..-27158,y=23057..50821,z=50502..69300 +on x=1520..12529,y=-78320..-56572,z=38211..50552 +off x=49738..66773,y=30561..59431,z=2951..29462 +off x=16271..28523,y=-45270..-31343,z=63465..75526 +on x=71234..85618,y=-41395..-7960,z=-4130..3364 +on x=-69317..-40653,y=-67757..-43558,z=6142..24036 +on x=25022..40901,y=-60207..-43245,z=29925..58586 +off x=-81117..-47868,y=-43751..-16831,z=-35356..-29663 +on x=-1180..17290,y=67627..89970,z=11528..29483 +on x=-61937..-38595,y=-63471..-51265,z=-41226..-7643 +off x=-79920..-67593,y=23081..43335,z=-27955..-4111 +on x=52546..75163,y=49315..56898,z=-14675..7154 +off x=3726..34564,y=-66091..-47518,z=-66664..-37455 +on x=34949..60501,y=-28771..-11144,z=51352..61485 +on x=-12954..14301,y=-93475..-65638,z=-10004..11614 +on x=11713..39311,y=-13965..-4062,z=-81763..-73474 +on x=51282..59807,y=-57951..-35734,z=5994..36901 +off x=-7411..26099,y=32784..55370,z=51744..64477 +off x=28307..41980,y=-60121..-44354,z=-62749..-36419 +off x=67213..84298,y=-29046..-11454,z=21296..44275 +off x=-63074..-36397,y=-44584..-33108,z=-62259..-41864 +on x=-52919..-32901,y=-76109..-58400,z=-18640..-10098 +off x=22269..46465,y=-75997..-51073,z=-46540..-31244 +on x=-13358..1813,y=-48320..-19885,z=65575..90081 +on x=57248..73703,y=50245..59021,z=-23752..-325 +off x=-61356..-40218,y=-63746..-48236,z=-4162..13109 +on x=-86721..-52575,y=18886..39871,z=-27525..-18940 +off x=-32958..-9613,y=54585..89567,z=-25434..-6238 +on x=-34933..-16868,y=35195..53598,z=53014..59010 +on x=-50111..-41812,y=53666..72265,z=-43276..-17297 +off x=-48541..-31980,y=-29629..-9928,z=-72149..-56249 +off x=8404..34890,y=-91946..-64517,z=-36821..-5171 +on x=-61476..-46150,y=34461..64440,z=-52672..-31719 +on x=17053..48276,y=8196..30921,z=-90002..-67999 +off x=30567..51548,y=48492..49629,z=-60064..-40577 +off x=-11485..16121,y=49496..85403,z=-58551..-28464 +off x=-71575..-66788,y=-28618..-14850,z=25881..53946 +on x=-82870..-69951,y=-31733..-21150,z=2448..31565 +off x=21102..31260,y=28479..55875,z=53439..84269 +on x=-92343..-73224,y=-5440..30589,z=-11302..13705 +off x=57846..67138,y=-51876..-19075,z=25743..40789 +on x=-42146..-14334,y=-91427..-56913,z=11466..17841 +on x=-8337..5046,y=-97914..-59588,z=-17297..-3854 +on x=72959..77792,y=-7695..23596,z=16641..36941 +off x=48708..70778,y=-52975..-24049,z=38893..49884 +off x=-48001..-30155,y=-34640..-8100,z=-68127..-58824 +on x=-23589..-642,y=-55673..-20006,z=53073..77106 +on x=-33552..-8377,y=53425..81818,z=-47589..-31657 +on x=-4435..19578,y=50903..85239,z=-52340..-31908 +off x=-65297..-43991,y=45255..59229,z=-39945..-7463 +off x=-27752..-7352,y=56826..62480,z=-59434..-52524 +on x=-52395..-36890,y=-60404..-53667,z=-52971..-34646 +on x=-17036..-10608,y=22073..34956,z=-87647..-59521 +on x=-20406..2585,y=-75526..-51689,z=-53856..-28503 +off x=57297..67915,y=40135..59210,z=-10318..20975 +on x=54413..78003,y=2451..10064,z=24601..41429 +off x=-30323..-21158,y=35905..68915,z=-71573..-39806 +off x=-24500..-12434,y=-76402..-60478,z=-18069..-8858 +off x=60931..77777,y=-41037..-25321,z=-7530..26700 +off x=37607..47278,y=-15018..6458,z=67782..87778 +off x=-32488..-5083,y=26413..40281,z=60169..76864 +off x=7746..18062,y=45927..81504,z=29094..62804 +off x=-60955..-54035,y=33191..54217,z=25181..37101 +on x=52094..81032,y=-29343..-25525,z=-50030..-21747 +off x=57932..85467,y=-4500..2029,z=-46429..-9720 +on x=36386..64660,y=-73512..-44017,z=16903..32394 +on x=-1492..33205,y=-82073..-69752,z=5149..23012 +off x=-6314..2597,y=-82434..-52899,z=-54568..-42166 +off x=47307..75857,y=-39178..-30672,z=23379..47503 +on x=64489..84771,y=-20277..-8288,z=-10334..20346 +off x=-40498..-13375,y=-21960..-1763,z=-89263..-65000 +on x=19554..31662,y=55672..61731,z=-60358..-37905 +on x=-39219..-7291,y=35227..63484,z=-72685..-36545 +on x=43613..70012,y=-33475..-18062,z=33764..41733 +on x=19674..39635,y=-73170..-53816,z=-59139..-34916 +on x=-2303..14767,y=69085..89874,z=-44748..-25607 +off x=-41923..-21656,y=-11475..12712,z=-92655..-63472 +off x=-65609..-28677,y=49338..76417,z=-17143..20767 +on x=-66708..-54445,y=-8844..3726,z=40665..69409 +on x=57741..80306,y=-53751..-27969,z=-2005..11767 +off x=-36833..-8071,y=11487..45001,z=-74496..-55088 +on x=-33089..-16969,y=-41928..-15082,z=-82121..-64107 \ No newline at end of file diff --git a/2021/inputs/23 b/2021/inputs/23 new file mode 100644 index 0000000..7ce3a59 --- /dev/null +++ b/2021/inputs/23 @@ -0,0 +1,5 @@ +############# +#...........# +###B#B#D#D### + #C#A#A#C# + ######### \ No newline at end of file diff --git a/2021/inputs/24 b/2021/inputs/24 new file mode 100644 index 0000000..5de8848 --- /dev/null +++ b/2021/inputs/24 @@ -0,0 +1,252 @@ +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 13 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 0 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 11 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 3 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 14 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 8 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -5 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 5 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 14 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 13 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 10 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 9 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 12 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 6 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -14 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 1 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -8 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 1 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 1 +add x 13 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 2 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x 0 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 7 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -5 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 5 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -9 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 8 +mul y x +add z y +inp w +mul x 0 +add x z +mod x 26 +div z 26 +add x -1 +eql x w +eql x 0 +mul y 0 +add y 25 +mul y x +add y 1 +mul z y +mul y 0 +add y w +add y 15 +mul y x +add z y \ No newline at end of file diff --git a/2021/inputs/25 b/2021/inputs/25 new file mode 100644 index 0000000..e777de8 --- /dev/null +++ b/2021/inputs/25 @@ -0,0 +1,137 @@ +>.>vv.....v.v.vvvv..>..>>....v.>>>>>v.>..>v.vv......vv>>.>.>.>v.>..>>.v>..vv.>>.>..v.>>..vvv.>.>>v.>>.>v.v..v.v.>....>..>....>.v>>>.>>..v.. +..>v..>..>vv..vv.v..>>..v...vv..>.v>vv...>.>vvv>>>>>....v>v..v......v>.v..vv>.>.v..>...v>v.v.>.vv>..>v......vv>>vv>..v.v>vv.>v.>..vvvvv.>v> +>>.>v....>>vv.vv...v..>.....v.>>..>.v>>>v..>vv..>>..v.v..v.>.v>..v.v>...v..v>..v>>.vv.v>>>>.>...v.v.v>.vvv.v.vv.v..vv>....v.....v.....v.>>. +v...>.>v>v>>..v..>..v.>v>vv>.v.v.....>v..>.>....>....>vv.vv.>....>vvv>..vv....>>>...v....v.v..>....>..vv>.>>.vvv>v>v.vv.>.....v>..v...>v.>v +..>.......>vv.v..vvv>.vv.v.v.v>.>v>>.....v.v.v>.....v.v.vvv>..v...>v>>.......>>>vvv>>.>....vvvv>>v>>.v.v.>..v.v>..v.v>....>..>v......v>v.>. +>vvv.v..v>vv.v......v..>.vv...v........>.>.>..v>.>>...v.vv>..>v.v>.>.v.v.>>.>>..>.>>.v>.v..>>..>vvv..>>.v.vv.>v.>v...v>.v..v.vv..v...>v..>. +v...>v>>..v..>>v>vv.>>..>>v.v>.>v>.>..vvvv>.>>v.vv.>..v.>...vv..v.>.>v...>v.v>..v.vv>..>>......vvv>..>>>>vv>......v.>.>>>>>>>.v.>..v.>..>v> +.v>.>.>vv>>.>>...v>v>>.v>.>.v..vv>v.>v>v>v.>....vv>.>.v>.v....vv..>..v..v.v>.>...>..v.v....>.vvv.vv..v>v....vv...v...v..>.>.....vvv>vv..v.. +.....vv.vv.v..v>.>v..>>.v.>..v.v....>>v..>.v...>..v.>.v.v>.>..>....>>.....>vv.v..vv>v.>>...>.......v.>.vv...v.>..>.....>>v.>vv....>..vv.>.> +.vv.v.v>.>.v...>.v..>.vv.....v.>.v>.>v>>...v>.v>.>v>>......>.>>v>..v>.>v>.......>.>...>v..>...>..>.>.>>v.v..>..>..v>>.v.v..>>v.>.>>>>....>v +vv...v>>.vv>...v.vv..>......v>.>>v.>>vv.>>vv..vv.v...v.>>>v>.v.>>v.v..vv>vv.>....>>>v>>v.......v..>.......v.>..>....v..v..>.>v....v...vvv.. +....>>.v>v........>>..v..v...>..v...>v..v>>...v.>.v.>>>.......v.>>v.v>>.v.v..>v.>..>..>>..>.vvv>...>>>v.v...v.>..>>v.>>>v.>..v>...v...v..>. +.>.>.>>..>>.....vv..>v...vv.v....vv..v.v>v....>.v.>>....>.v.>.>.v.....vv..v.>.....>>>.>>.vv.v>...vv..>.>>v....>.>.>.v..vv.v>.>>...>>v..v.>. +>..>.>..>v.v....>.....v>v....>.v..vv.v>......>v..v...v.>v.v.>.>>.vvvvv..>>>.v>.>...v...v...>.vv>..>..>.>..>..v>>>>v>.....v.v..>>vv.vvv..vv. +.>>>.>.v>>v>v>>v>.>.....v>>v>>v>..>.>>.>...>>.>.vvv....vv....>vvv>..v..>.>.>vvvv.>vv...>...>>>>.v.>..vv..v.v..v.>..v.v>.v.>..>..v>.....>>.v +.v>.v.vv.v>...>vv>..>vvv.>vv..>.vv..v.v..v>..>..>v>>>.....>>..vvvv>vv......>..>..vv>v.>v.v.v..v..v>v>>.>....v>.>.v..v.>>.v>..>v.vv..>..v.vv +..v>v.v....v.v.v....v>.>...v.>.>v.vv>v....v.>...>>v.v>.>>.v...v>>v.>>v.v.>v.>vv.>.v..v>>..>.v.>>..vv>..vv>.v>.....>..vv.v...v>.>.vv.>>v.>.> +.v.>.>>..>>.v>v...>>..v.>.v..>.v>>v>>.v>v>.>.....>>...>..>v>>........v..>>.v..>..>v>..v.v.>..v>.>..>..v.v.v.>>v.vvv..>>>>>>.........v.v..v. +>>..vv...>....>...vv.v.>..v.v.v>>v>.>..>.v...v...v...vvv..v>.....>>v..>.>...>...v>.>v...v...>v....>>v...vv........>....v>......>.v.>..>.>.. +..>v.v....>>.>..v.>>.>.v>..>v.vvv..>.>..v..>..v.v..v......v....>v.>vv..v.>.vv..>>>.>.>.>>.....vv..v...>>v.>v.v.vv.vvv>..v..v.vv>vvv>vv>.... +.>>v.vv...vv.>v>vv.>...v.v.>v..>.>>.v.>>..v...>v.>v..>>.v...v.>v.v..vv>>>...>>..>.v..v>..vv.v...v.>vv.>>>.vvv...>v...v.....vvv.....vvvv.v.> +.v>.vv>>.>.vv.>>.>.>....v...v..v>.>.vv>.v..v..>v>..>>>v.v..vv....>..>v..vv.>..>..vv>..v...v..v.....>>.>..v.>v.v.v..v..v..vvv.v...>....>>v.v +v>....v.v>....>..>v.v...>>v..>v>.vvv..v..v.v>>.v..>.vvv..v.v..>>>>v>v...v..>...v..vvv>.>>>vv>>v..>.>.v.>......>..v>.v>>v>v.>..v.>>.v.v..... +.>..v>v.>v..v>>.>....>vv>v.vv>.vv.>v...v.>.>...vvv..>>..>vvv......>>>.v.v..v...>..>vvvv.>.>>.v.v>>.vv.>>v..>v>v>..>v...v.v>>.>>....v.v.>.>. +...>..>.v.>.>.v...vv>.v.....v.v..>v>v..v.>.>..>..>.>..v.v.v.>.v.>v..>.vv.v>>.v>...>.>v.....vv..v>v..v........v.v..vv>vv.>vv>v.v.....vv..vv> +.......vv>v...>>v...>v..>v..>.>>v.>>.>>v.v>..v.vv..>>>.>..>..>v.>v...>>>v..v.v>v.v.>.v.vv.v.v..vvvv.vv.vv>>>>....>.>.>...>..v...>v>..vvv..v +.v....v.vv.>v.>.v.>>.v.>..........v>...>>>>....v>....>>v...v....v...v>vv.....>v.>.vv>>>..v>vvv>..>.vv..>...v.v..>.>...v..v.>vv..v.>vvv>>v.v +..>>vv.v.>.....v>...>v..>..>.>.v........v>..v>>..v....v.v.v....>v>vv>..v...v.>.v>...>.>>.vv....v...v>v.v>vv....>v>v.>..vv>.>.v..>v>>v>vv... +...>v>>>..........>..vv..>>.v...>..>>........v..v.v>..>.vv.>vvv..>vv..>v.v...v..vvvv.>.v>..vv>.v..>v>>.>.>>v>>vv..v>>>.vvvv..>.v.v......... +.>.>>v>v>v>.>..v.>v.>.vv...>......>.>v....vv>.>..>.>.v..v..>v.>>.v..v.>....vv.v>.v.>....>>.>>.v>.v>v.vvv....>.>..v>.v.vv.>>......>.>.>...v. +v..>..>>>.v.>.>>.>v>>.vv>.>v..vv.v..>....v.v.>v...>..vv..v>v>.>>...v>..>v.v.v>>>v.>.>.vv>.v>..vv...>v...v>...>v>v>.v>v....v>vv...v.>>>>>.v. +.v.>.v...>..vv>......>>..>v.v.....v>.v...>...v.v..v>.....v.v.v>>>>....v..>.....>.vv>.>v...v>.v.>>.>vvv>v.>.v.vv>...>..>.>.vv>v....>v.>..v.. +>..>.>v.>v..>.>v>..>....>vv.v>v.v..>v..v.v.vvv.>v.vv.v>.v...>...v.......>v.......>v>v.v.>...>.......v>v.v...>vv.v>.v>v>..>>>.>>.vvv..>>v... +.v>>>v....vvv.>v.>.>>v>v...>.v.v.....v>.....>.>>v.>>vv..>.v.vvv....>>v.>v>.v>vvv>>>..>>.v.vv>v>.....>>.v.v.>....v...>..v>.>vv.>.v.v...v.>.. +....>>...v..>>v...>>>.>.>>..v>.vv....v....>>.>.>..>...vv..>>v.>.v..v.vv.v..vv.>>.v...>>.>.>....>.>vvv.....v....>>v.>....vv..v..>.>v>.>...v. +.vv.>.>v...vvv....v....v.>..>.v>>.>.v...>.>>.vvv...>.v.>...v.vv..v>>.>..v.>..>...v..v..v.v>v.vv.>v>.v>.v>v...>>.>>>v>>>..v.v..>..>.v>.v.>v. +>v..v..v.vv.>vv.v..>.>v..v.v.>..v....v.v>.v...v>.>>vvvv>.vv.v>..v.>v>.>v>>.v>>>>.vv..>vv>v..>>...v..v....v..v>...>...vv.v>...>v...>.>..v.v. +>>.v.>v>.vv..vvv......v>>..>>.vv.vv>.v...>>.>.>.v>v..>>v>>.>....>.v.v.v>....v.v>>..>..v>......>.>.v>.v..v>....>v....v.vv...v>vv>.v....>v.>> +>v...>>.>.>v>v...>....>.vv....v..v>.....vv..>vv>v....>.>..vv..vv.v.v>>.>.vv>vvv>..vv..>.>.vv..v..>.>v.>.v.>>>..>>..>>>>.vvv...>.>....v.v..v +>.>.>..vv.v..v>v.>.>>>v>v>..v..>...>>..>vv>v..v>v.vv>>>..vv.>.>vvv>.v....>...v.>v>.>....>vv>...v>>vv.v..v.>.v>..vvv>>.>v>.....>>>..v.>.v.vv +vvvv>v..v>v.>vv.>.v..v..>.>....v.v....>v>.v>.>.>...>v..>v...vvv..v.v...>>..>..>>>...v>>>.>.v.>.>...>..>.v.>v..vvvvv.>v>>.v>..v.>v..vv>..>>> +...>v>.>v...>>>vv..>vv.v.v..vvv....>..>.>.v>>vv...>....v.v>.v.>..v.>.>>...v...v>v>>.....v>>vv...v..>...v.>...>v>....vvv.v....vv.>...>..vv.. +......v..>..v>v.v....>.v.v>..v>..>v...vvv.v.v.>>vv.....>..v.v.v....>v.>v....>.>..>>.>...v...>...v..>v>>>.>.vv..>vv>.>v.....>..v.>>..v>..v.. +.>v.>...vvv>..v..v..>...>.>>.>..>v.>..v>....v>>v..v.vv....v..vv......v>>>..v>v>.>...>v>>v>.v.v>.vvvv..v...v..>>..>>>...>..>>>>...v..v>v.v.v +..v..>v.....vv.v....v.vv.>.vv>.v>>.v.>v>v.vv..v.vv.>.....v.>.vv.>.>..v...v.v.vv.>v...v>.>>.>.>.>.>...>..vv.v..v.v.>v..>v...vv>v.v..>.v.v>.> +...v..v>>>...vv>vv.v.>...v>>.>.>v>>v.v>vv>v>......>.....v..v..v>>>v..>>.>>v.>v..vv......>.....vvvv.v>.>.vv...>...v...v>...v..v>v.vv.v>..>>v +v.>vv>>v.v.v.>v...v.....v.>>..v.>>v>>.v.........v..vvv..>...>.>>.>v...>>.v.v.>>..>v>v..v...vv>.>>..v.>.>v.v.>>>.vv.vv.v.>.v.>>>..>>..v>>.>. +....>.....vv...v.>.v>>>>.......v....>>>>>..>....v...>....v>....>v..>>..v.>.>...v>v........>.>v..v>.v>>..vv>>>v>...vv.>..>>v.v..v.v.>..v>vv. +>>v.vv..vv..>>.>.v..vvv.v>...>>.>>.>v.v...>v......vv..vv....v...>v..>..v.v>.vv>>......v.>.v>v.v.>>v>v>.v.vv....v...v.v.>....>v>>v....>v..v> +v...>v.>.v>v>.vv...>...v.v.>.>>>v.>>...>>>v>..v.v...v.vv..v>.....>...>.>.v.>...>.>...>..vv..>>>vv>.v>v.>>..v>v>.vv..>v....vvvv.>.>>..>..v.. +..v..>>.vv>.>v.>.v.>..>..>>v>v..v>>>...v>v>>v.>>..v.>v>>v...v..>v.v>.>.>>.>..v.v>v>.v...>v...>v>>...v.v>v..vv.....v>..>v..v......vvv.....>> +.....>..>.....>...>v..>..>..v..>...v..v..vvv..vv>v>...v>........>..v..>..>v.>vv>...>..vvv>.>>>.....v.>>.v>.v>.>..v>>.>..v..vv>>.v.vv.>...>v +>>.v>v.>>.>>v>>.vv.v.>.>.v..>vvv..vv..vv>v>.v..v..>>.v>..v...vv..vvvv>.v..>.>vv>.v>v>>.....v>v>>..>...>...v...v>>v.>..>..vv.v>....v>..vv... +....>>.>..v..vv.v....>.v>.v>v>..>v>>.v>>v.vv.v.v>>vv>>>>.>v>.>.v..>v.>vv>>..>..v>>v..>>.>..vv>>>.>..>.v>v>..v.vv...>>..vvv...>>.>.vv.v>v.>> +.v.vv>.v...>.>>>.>...v.v>>>.>...>>..>>.vv..v...v>..>v>..vvv>.>.....>v.v.vv.v>>>.>..vv.v.v..v.>>.vvvv>.>v>.>v..>..>vv.>>.....v.>v..v.vv.v>.. +..v..v....v...>.vv..v..>......>>>>v.v..v.vv>......vv>..>v.v>...>.>v...>>.>>v.v.>>.>.>.>..>>..v....v>.>>>vv>......v.......vv.>...v.>...>v... +.>.vvv.v....>vv.>>>...vv>v.vv.v>>>>.v.>v.v....v>..>.v.>>vv.>vv....>.......>...v.>>v.v.>>.>.>vv.vv...v>..v>>>......>>.v.>v.v.>.>..v.>.>....v +.>..v...>>>>.>..v...>>.vvvv.>v>.....>>vv...v....>.>>.vv>.v..vvvv....v........>v.v....>vv.v.>..v>..v...>.>..>v.vv>.v..vv.>..>.vv.>.v...>.>>v +v>..vv>..>..vv>..>v..v>vvv..>v>v.v.....v.>vv.>...>.>v.v>>..>v..v.v...v>.....v.>..>>v.v..>>>...>...vvv...>.....v>.......>vv.>..vv.>.>.v>v>v> +...v>v>.>.v.>..>....v..>.v.v>v.vv.>.v..>>..v.vv>v>....v>>.>>.v>.v....>>vv.v.v>.v.>.v>v.>.>.v..>>v..>>.v>v>>.v.>v.>..vvv.>....>>>v.>..>v.>.. +..v.v..v..>..v>>...>...>>.v>.vv.>...v.vv>.>..v.>v...v..v.>...v.v...>.v.>>...>>..>.v..>>.v>v....>.>.>>vv....vv...v..>>.>>.>>vv.....>v.....v. +>.>>.v..>>.vv.v>>.vvv>....v.....v..>....>>.v.v>vv>>..>v...>.v>.v.v.>.v.>>..>>...vv>.>>.>.v.>..>v.v.>.>v.v>>v>..>.v>v.>vv.>v>.>.vvv.>.>...>. +v.v.v..vvv..>..vvv..v....v....>.v....v..>..>.>v...v.vv>.>v..v.v>>.v.>>>>.v>.>....v..v>vv..v.v>..vv.v.v..>v...v.v.>..>..v..>>>...>..v.v.v.>v +.>..>....>v.v..vv..>.v.v>...v.vvv.>...>.vv>.vv...........vv.vv.>..vv...>vv.v.vv>v..>v..>.v.>...>.v>.v.....v>.>>>.v>vv....>>v..v>.v..>v..>.> +..v>.......>.>.vv>>.>.vv>.vv...>>v.>.>v>.v>>.vv.vv.v>>..v>..>.v.v.>vvv.>vv...v>...>..vv...v>v>.v>.>...>>>.>.v>v>>v.>.v>......>.>.v>....v... +.vv.v>.v...>vv.v..>...v..>..>>.vv....>v>>>v>v...>.v>>..>..v..v.>>v>..>>v..>..>v.>..>v.v.>.v.vv>.>.vv.>vv..v..>..>vv.....>>...>...>v>>.v..>. +.>.>..vv>>v>.v..v>..v>>>.>..>.>v..>..v...vv.....v..vvv.>.>.vv..v.vvvvvvv..v>>>.v...>......v..vvv.v.>>.....>.>.v......>.>>>..v>.>>>...>..>>v +>vv.>...>vv>v>.v.>>v...>....>>..>>.v..v>vv...>>>>....vv.vv>.vv>...v.>>....>>>>.....>v.vv.vv..>.vv....v.v>vvvv..vv..>...v>v.>vv.v......>v>>. +>>v.>>..v.>>.v.>.>.v.v...>.>>v..>.>>v..>>>.>..>>...>>.>...v>v..vv>...v.>..v..>...>v...>v>.v>>v>.>.v..v...v.v>.v>...vv..v>vv..vv>.v.......v. +..vv....v....v.>v....>..v.>.v.>..vv>v>.vvv.....>........>>v>vv>..v....v.v>...>.vv>.v.>vv.....v.v>vv>>v>.v>...>..>.>vv.>>>>>v>.>.v..v..v..>v +v.......>..vvv.>..>>v>......>v>v...vv..v..>v...v>>vv>.>.>...v...v>>vv.>.>>..vv.>>vv...v>v.v.>v.v......>......>>v>...>>>.>v.....vv>...>>.v.. +v.v>>vv>.>v>.v.>v.v....v.>v>v..vv....v..v>.>>>.>v...v>.....v.>v...>vvv>>.>v...>..>...vv>>>>....>.v.>vvv.....v..>.v.>v>.v.....v>v>.>.vvv>>>v +.v>>..v.v.v.v.vv...v.>.v.vv.vvv>>.v>>>.v.v>v>.vv.>>v>v.>..>v.....v.......>.>.vv.>...>v.v...v...>.>.>...>>v.v..>>.vv..>...vvvv.>.v>..v..vv.. +..v....>vv.>>v>>..>v..>v.>v>.v>>v.>.v.>>.>.....>..>..v..v..>..>vv........vv.>v>.v...v.>.>...v..v.v.>>...v>v.v..v.v>.>>...v>.>.v..v.>..v>... +vvvv...>..v.>>..v..>>.v.>>.v..v>.>vv>..>v>>>..v>....>..>.v>>>>.....vv>v..>..>v>vv.v.>v>..>vv.vv...v.v.vv.v>.v.vvv>..>.vv.v..vvv..>v>v.v.v.. +.>vv.>v..v>..v>...v.v>...>.>v..v>...vvv....v...v..>>>....>..vv>....>.>.vv.>.....v.>.>....>>.>.vvvv>.>.>.>..>>>....>.vv...>>..v>.>.v.....v>. +vv>>..v>.....v>.v.v.........>.>.>...v>>.v......v>..v>..v.vvv..v...v.vv>v...>v>>v>.v....vv.>>.>v>...>.>v.>..vv......v..>v.>vv..v.v..v...vv.. +>v.>..v>...>v.v>.v.vv..>....>..>.v..>>>v>>..>..>v.>v..>>..v....vv..>.>>>>>.v.>vvv.....v.>>>.v.v..>.v.v.v..>>v.>>vv>>....vv...vv>>.v.v.>vv.> +v>>.v.>....>>..v>>.>.>.......v..vv...>...vv.v>>>>v>...v>vv...vv...>....>>>.>..>.v.v.>>.v.v>vv..v>..vvv.>...>...v.v..v>v>.>.....vvv..v>.v.>. +..>.>v>>>..>v...>>v.v.v..v.v>>.v>..>.v>v>.>...v.>..>.v.>>.vvv>.>>>.>...>v.v...v.>....v...vv.v>..>.>..v.>.>.v.>.v.v..>>....>v>..>.v>..v.vv.> +vv.>>v.v>>vvv.....v.v>..>v>.vv.>>vv>....v....v..v.>>.>vv>..v.vv....v...v>>>.vvv..v>>.>v>>v.v...v.>>>>v>>.v.>>vvv..v.vvv.vv...>>..>>..v.>.v. +v....v.v>>.>v..>.....v.v>...vv...v.....v>>v..>vv>...>v...vv..>>v.>>.vv..v>.>>..>>.v..v....>>.v.>>.....v.>>...v..>v>vv...>>>.v>..>.v.vv.>v>v +........vv>>vv.>v.>...v.>v.>>.>........vv..>.>..>>>.v.>v..>.>>.v.>..>v...>.v>>.>..>v>.v.v.v.>...>.vv.v.>>.>vv..>...v>vvv>.>..vv.>v.>v.>..v> +.v>>vv.>>>.>..v>v>v....>.....>>>.>>.....>v>.v.>v>>vv>..>...>>v.vv>vv>v..v>>>v..>v..vv...vvv.....v.v>v..>v..>v..v>>v>.v>..>.v...vvv.>.v.v.>> +.v>>>.v..vv.....v>v....>v...vv..v.>>.>.>..v.>...v...v..v>.>v.>>v.vv....v>v.v....>.>>>...>..vvvv>.v..>.>>.>vvv..>.......>v>v..>....>..vv>.v. +>.....v..vvv.v.>>>..>v>>vv>.>..v.>>.v......>vv.v>.vvv>vv..vv>...v...vvv.>>....vv>>.v>vv>.....>v.>..v..v..>>.......v.>v..>v..v....>>v..v.v.v +>.>vv>.>.>v.....v>>....>.>v>>vv.v>vv..>>>>>.>.v...>>v...>.vv.>vv.v>....>......vv.v.>......v>v....v.....>..>>.v.>.>>>v.>.v>v>..>.v..v>>v>vvv +...>.>.>.v>.>v.>....v..>..>..>.>..v>vvv.>...>>>.v..v...v..>>vv>.v.v..v>>.>...v>.v......v.v>>vv..v.v.vvv...vv>v.>.>>v....vv.v..>>.v.vvv>v.>> +>>.v.>v...>..vv>>v.>...>...>...>v.v.....v..>..v>v...>.>..>.>..vv...>..>v..>>>>>....>.>v.>..v..>.>v>v.v...v>>......vv..>.v..>.>.>.....>v>v.> +v>.v....v..>v.v.>>....v....>....>>.v>..>.v..>.>..v>>.v..>>..v..v>>v>v.vv...>>...vv.v.>.>>.>.....>..v.v...>.v.vv..v.v.vvv>.>.>v.v.vv>v.vv>.v +..>>.v..>>....>..vv.>.v..>>.>.>.>v.>..>..>..>v..v..v>v.v..>.>>.>...>>>....>.>>..vvv.v>v..v...vv..vv.vv>v..>v..v..v>v>.>...>v....>>.>.....vv +v.v...v.>>....v.>v.v....>.>.>...>>..vvv>..v>>v..>>.vvv.>v....>>..>>v>>>>v..vv>v.v..>v>>v>.>>v...>.>v>.>>.v..v>.>>vvv>..v.>..v......v>>>..>v +v>.>.vv.>>vv...>.>.v.vv.v>.v>v...vv.>vvv.>v...v.v..v>.vv>.>v.v...>.>..>v>.>..v..>.>v>..>.>v.>>>>>.>.v>.vvvv..v.vv.>.>...>.v>v.v....>.>>.>.v +>...v.v...vv........>>vv...vv.v>...>.>>>>>.>.v>>vv>..v.>v.>>v>>.v..>>..vv..>....>...v.v>.v.>..>..>>v...v.>>v...>....>.v..>.>>v.v.>.v>vv.... +.vv..v>>>.v.v.vv.v>>..vv>.v>v>.>...v>v.......v....>>v..>.>.vv.v>.>.v.v..v..vv......>...>..v....>>>...v.v>..>>v....>.vv..v......v.>...v...v. +>.>....>.v>..>.>>.>v>..v.>.vv...........vvv>...>v.v>>...v>vv....v.>..>>>.>..>.v.v..>vv>..>v>vvvvv.v.>...v..>.vv.vv....>>v...v.v...>v...>.>. +.>.v...v>.v..>.>v....>..>>.v.v.v...>.>.vv..v.v.....>>..vv>.>.v..>..>.>>.>>>v..>.>..vv...>....>..v.v.v.>>vv>v..vv....v.v.vv.....v.>..v...... +>..>>>v>>v>>..>>.>vvv..v..v....>v...>.v..v..v>>>..v.>...vvv..v>>v...>>>..>>..>.v..>>.>>.v>.........>..vv.>.v>>v.vv>.>.>.vv>>....v...>..>>v. +..>vv..>vvvv.v>.v.>..v.v..v.vv>>>vvv.v>.v.>>..v.v..v>>vv..vvv.....v>.>..v>vv....v..>.>.v>..>.....v.v.>>vvvv..v..v>v..v>v>>>>.v.>v...v..v>.. +>>...>.....v.>...v>..>.vv.v....>.>.>v...>v>.>vv.v.vv.......v>.>.>.vvvv>....v.>..>v..>v.>>>...v>v>>........>>...v>.....>v>v..>.vv.>..v...... +>v.v..>...>>...>...v.vv..>v>....v.v.>v.v.v..v>.>>v...>.v>...>.vv..vv.v..>....v>>.v..v>vv...>v.>....v.>..v>...v.v.>>>vv.>.>..>...>v.v.>vv.>> +>v.v>.vvv>...>>v>>>v>v...>..>.vv>.>vv>v....vvv........v>v.>v...>>v>.v..v.>...v>.>..>>..v.....v...>.v.vv>v.v....>.v..>vv.v.>>..vv>....v...v. +>>>>.>...>v.v..>>.>>.>>...v>v.v..>>...>v>>v..v...>..>.vv>>>...v.v.>.>v..v.v>>vvv.v>>>>.....v.>..>.v.vv.v>....>.v>....>.vv.>vv..v.v..vv.v..v +v.v>vv..vv...>.......vv.>v..v..v....>.>.>..v>.vv>.>.>.vv.>>v.v.>v>>..>.>>>.vv.>vv>v>.v.>vv.v>>vvvv>.vvv>>>...v>v.v>..>.....>.>>..v.>v...... +..v.....>vv.v...>..v.v....>>>..v...>.......v.>....>.>..vvv>v>..vv>v>v...>..>>..v>.....>>.>.vv>...>vv.vv>>..........vvv.>vv...>>.v...v..v>>. +....>.v..>.>v.......v.vv>>>v.vvv.....v>>.vv>.>.>...v>.v.>vvvvv.>v>.v.v>>....>>...>....>.v...>.......>.>v>>vv..>...>......>....vv.v.v.>.v.>v +...>v>.v.>v..v>>.>.v>vvv.v>v>.v>v..>..v...v.v>.......>v.>..v.v.>...>>..>.>v.>>v..>.v>v...vv..vv...>v..>.>...>.v.>v.v....v.v..vv.>>....>v>.. +...>.v...v.>..>..>v>v>v>.>>v..>....v.>.....>v>..>>>>.v..vv>v.v..vv>.v>>.vv..>>..vv.>>...v.>v.vvv.v>.>.>.>v.v>.>.v.>.....v..........v.>>..>v +v>.v>.v.>vv>>vvvv>.>v.>.>.>.>vv.vv>.>vv..>...>...v>v>v>...>....>....>>.>>....>v..vv.vv...>.v..>.v..>.v>v>v>.>..v..>...>..>v...>>.>>v>..>.>. +>v.>.v.>.vv>...v>.>..v.v.v...>v.>.>.>v>>>.....v..vv..vv...>.>>.>>>.v>...vv>v.v.>.>v....>>>vv.>.>>v.vv.vv>>v..v>>>>v..v.vv>vvvvv.v..v...v... +.>..>.>..v..>>>.v..v..>>.>...>..>>.v..v.>>.>>.>.>>v.>v.>.....>v.v..>..v.v>..>>>..v........>vv>.v.v.v.v....vvv.vv>..>>v...vv.>...>.v..v.v.v> +..>.v>..>..>v>.v.>v>>...vv>>>>..>.vv.v...vv.vv.>>>>.>>.....v.vv.v.>>v>>.>v.>>.>>>>.v>>vv>..v.....v>>.vv>..v.v.>..>v>..vv>...>.>v.>vv..>..v> +>v.v>.v...v>>.vv>.vv>v>.>vv...>v>.>v>.vvvvv....>.>.vv...>.....v..vvv>v..v.v.v.v>>vv.v...v....v.>..>.v.v..>..v>>..>v......v..>vv.v...v...>.. +..>v>>v>>v.v....v.>>v.v.>.v.>>.vvv.v>v.>..>>>>.........>..v.vv>.vv>>.>v...>>>>vv....>>vv....>.v>v>v>v.....>.>>>.>.v>..>.......v.>>>>vvv.>.v +>>>>>vv...v.>.vvv...>...>.v..v..>....>>.v>v..v.v>...>>v.>.>.v>......>>>>>vvv.>.>.>vv...>>v..vvv...>v..v.v>v...v>v>..>>vv>v.....>...v>.v.vv. +.v...v.v>v...>.v.>..>v.v...v>...>v.v.>>...>>>>vv.v>>.>..>.>.v>..vv.v>vv....v>>>....>v>>v>.v.v.....v>v..>>...v>>v.>...v...v>v>vv..>>.v>>>v.v +.v..>>vv.>>>.>v..>..v.v>.>vv...>....vv>.>vv...>v>....v.vv.>........>......v.vv>...>vv.vv..v.v>v.>..v...>.vv>vvv..v......>.>.vv.v...>..vv... +.v.....>>..v.>>>>v..v>>>>.>>......vv.vv.....>.v.vv>>v>.>..>....v>..>>.>v..vv.>v.vv..v>........v>....>..v>v>v.v>>v..vv>.v.>.v....>.vvv...>>v +.>..v..v..v....>v.v>...v.vv>v>.v.v>>..>v.vvv>...>>.v...v.....>vv.>.v>...>>.>v>vv...v>.>v>v...vv>.....v...>.>>>.>v..>vv.vv.v>.v.vvv.vv>v>... +>>.v..>.v.v.>.vv..v.v..v..v.vv.v.vv.v>v.>.vv>..v>.>v>..v.>v.>........>>>.v.>v>....v.>........>>.v...v..>vv..>.vvv.vvv....vvv.>.v>.>>..>>.v. +...>...v.>>v>.vv>.vv>..>....vv..vvv....>.>..v>.>>..v....>.>>>.v>>vv.>....>.>.v..>>>.v>.>.>...vv.>..>..>..>..>>.>>>...>.>vv....>...>.>>>...> +.........vv>>>v.v>.>v>vvv>v>..>..v>>>..>>.v>>>.>......>.vv.....>.v.....>....>..v......v>..v..>...>....v.v>....>>.>.>v.vv..v.v.>..>v.>..>..> +v..v>......v.>....vv.>v...>.vv>>v.v.>.>..v>>vv.v.v>v..>.vv....>..vv....>>..v...vv..v.>vv.>...>..v.>...v..>v.>.v.vv.....v..>.vv.>.vvvv...>v> +..v..v>.>>v>.vvvv>.v.....>v>vv.>.>v...>.v....v.>vv...>>...vv.v..v.>v.vv..>..>.>..>v>.>v..vvv>.v..v.v>...vv.v>.v>.v>>..>v.v>vvvvv.>.....>v>. +v>.>.v.>..>>>..v>..vvv..v>>.>..>>>v....>v.>...>.v>...>....>>..v>v>...>>.....>>v..v>>.>.>>.>v......v.v.v>v.>.>.v>>.v>>>v>>>v....v>>..v.vv>.v +>..v....>.vv>v..>vv>>>.>vvv>v..vv>.>>...vv>v..>.vv.>>..>..>....>>.......v..........>...v>>v>.vv..>>.>..>.vv>..v>..>vv...vvv..>.v>.vv>.vvv.v +.>>.v....v...>..v.v>.>.>v>.>v.v..v>.v.v..>v>...v.v>..v>v...>...vvv.>.vv>v>...v.v..v...>>.>.v.vv..>>>>v.>v>v.v.v.>v...v.>v.>v.vvvvv.....v>v> +>>vv.v.>vv...>>v..v...>>..vv>.>v.>>.>v.......>>v>v.v>v.>.>..v.......v>>>v..>>>.>..>v..>vvv..>..>.>>v>>>..v.>.vv..v.>.v.>>>..>>v.>>..>>...>. +>>..v..>..>v....v....>vvvv>.v.>...v.v.>v.>vv....>.>>>.v>v>.....>>v>.>>>>vvvv.>vv>vv>.....>>vv>..>>....v..>v.>v.v>>v>vv>....>v.v>>.v>...v... +..>>..v>v.>...v>....>v.>...>...>...>..v.v..v>.>>..>.>v...>>.v.>>.v.v..v..>.v.>...>v.v>v>>>.>.vv.v>>.vv...>v>>>..v>.v...>>vvv.v..>..v....>.. +v>v>.>vv.>>>>vvv>.>v>>..>..v>.>.vv>>v.v>>.v>>.v>>.>.......>>>v>.>>.>>v>...vv>vv..>>>.v>.v>..vvv..>...>...v>v>...vv>>.>.vv>>>.>.>v>....>>v>> +...>>v>>v.>..v.v..v.v>v>>>..>..vvv..vv>.v.....>.vv.vvv.....>vv>v.v>v...>vv..v..vv.>.vv>...v.v>.v>>v.vv....v...>v...>>.v>v.vvv>v>>v>....>... +>>v..v.vv.>..vv.>>>>..>v>vv..v..v.>>>.vv..v.v...>>......vv>.....vv..>..>....>......>v.>.....vv.>>v....>.v>>..>.>....vv..>v>.>>>>.v>v...>vv> +v.v>v>v....>v..>.v..>>...v.v.v..>>>.....>v......v....>>>..v....>.v.>>>v.v.v.>v>.>v.....>>vv>.>v..v...>v..>>>.>>v.v..>>.>.v....>v>>>v..>v>.v +>>v.....v>v...>>vv>>.v>.v>..>...>..>.>.v........v.>.vvv....v.>>v>..vv..v.v>vv>.>..v>>v>v.v.>v>..v>v....v....>.>.>v>..v.v>>v>.>.v.vvv.v..v.v +>..>..>>.>...v>>vv...v.v>..v..>vv..>.>..v>>>v>.....v>v.vv.>vv>vv>>...>....>.v.vv...v.....>.>.....vv.....v..>>.v.>v....vv>.v...v....v>.vv... +v.>..>.>..>>.....v.>>......v>vv>v.vv>.>>v.vv.>.>>.vv...v.v..>vv...v.vvvvv..v>v.....>v.v..>..v...>.v..vv>.v.v.>v..>.......v....vv...>vv.v>>> \ No newline at end of file diff --git a/2021/inputs/3 b/2021/inputs/3 new file mode 100644 index 0000000..1748a55 --- /dev/null +++ b/2021/inputs/3 @@ -0,0 +1,1000 @@ +101011111001 +111111011110 +010000111100 +101000010000 +011101100010 +010111000101 +011111011011 +011010011111 +000111000010 +000010011001 +000000100101 +000110000010 +011001010110 +011010000101 +010001000100 +111101010101 +000111110011 +010111010000 +010010000011 +101011110011 +010010010010 +010110100101 +101011010001 +101011101100 +100111011001 +100111101001 +111000111010 +100111010101 +101011100011 +110011001010 +111100011011 +111101110001 +101100000011 +000011000100 +001001000110 +001011001010 +010111101001 +100011000111 +111100010101 +101100000010 +001011111011 +101100111001 +101110110010 +011111001010 +001111001001 +110111101100 +011111001110 +111000111110 +011100101110 +000001101011 +110101001011 +111000111001 +010110011000 +000101100101 +101010110011 +111100001000 +100101000010 +110000111111 +011110001011 +000110100110 +110010001010 +001110110011 +000010000001 +100010011111 +001100001011 +110001111001 +100010011101 +010100000111 +110101000100 +011110010111 +100011010111 +001011011111 +110110010000 +101110110000 +101001001011 +011110100000 +100000000101 +100101011100 +111101101101 +101100110110 +000000011100 +101111000111 +110001000101 +000110000110 +001010001101 +101101111111 +011000011010 +101111010000 +001000101101 +010100001111 +101110011010 +011110010000 +001011011010 +100100010000 +111100011111 +111101000110 +010101101110 +010001010010 +100100000100 +101010111010 +001010001011 +000011101110 +011100110001 +000001111111 +100101000001 +101110000100 +111111100101 +111010111100 +111100000011 +000111001110 +010111001000 +010010110000 +100101000110 +100111001111 +101001110011 +001110011000 +111000001000 +010110011001 +000011001011 +000100001101 +100101110010 +110111110011 +011100000100 +111011000010 +110011010010 +011011101110 +010010111011 +110100001000 +100100111000 +111001011011 +110111000111 +011010111110 +010110011110 +111111011111 +101100110000 +011000011100 +001111111010 +011110111111 +101110110110 +100100000011 +001001100001 +010010001001 +101001100100 +110100011001 +000010101100 +001010110001 +001110011110 +111000110011 +110100001010 +110110011110 +111010100110 +100110000000 +001111010000 +110001011010 +000000101111 +100110110101 +011011100101 +001011100100 +100010111111 +010011010011 +010011100001 +011001100110 +000111101010 +111101100010 +111011101111 +111001111001 +001000001111 +010100001001 +000000011010 +111011101110 +100001000111 +010010010101 +011001100000 +100101110011 +010001011011 +110011010000 +111011001110 +001111010111 +110010110100 +101111110000 +000111011111 +111111011001 +010011001011 +101000110011 +001110101100 +001110000110 +001001110100 +000101011001 +101001111001 +001111111001 +100111111100 +010100001010 +011101111100 +011100011011 +111100110111 +000110011000 +100001111001 +000111111111 +111010010100 +110011111011 +010000001000 +000010110101 +000011111010 +010011001110 +011111000001 +110011001110 +100111110010 +011111011110 +011110110111 +001011010010 +110101010001 +100000100010 +000110100111 +101100101010 +001110111101 +010000101101 +001101011100 +101101010111 +101101010000 +111000100010 +011100110000 +001111110111 +001011000101 +111100111000 +001000001110 +101010110101 +010100110110 +101110111000 +110010000111 +111100111010 +100010111010 +010001011111 +010101011101 +010011110011 +000110110111 +000001111011 +110100010001 +001000010100 +101010011001 +010011100110 +110110011011 +110111000100 +101001110100 +010001111110 +011100001100 +011011010101 +110010010000 +101001011101 +101010010000 +111011110100 +011101110001 +111000011110 +100000100011 +010110101001 +110111111101 +010101011011 +000001110100 +000000000010 +111100101011 +111100001100 +110111000011 +011000011001 +110000011011 +100010001011 +110010011100 +001010001000 +011010000000 +110111100001 +000011001101 +001010001001 +000011101001 +011010010111 +111011011100 +110001111011 +001000111011 +110001111111 +111110011111 +011000111101 +001111101110 +111111001011 +010101110010 +000011100000 +100101101110 +001100000100 +101111001110 +001000110101 +111001011111 +011111110101 +010101011010 +111000101100 +011100000010 +011101011110 +011001101011 +000100100100 +100100010010 +010011000100 +111111100001 +010000100000 +111010001101 +000010010110 +100011101000 +100110011010 +000110100101 +011111100101 +111001101010 +101110001011 +101110101010 +011000010110 +101110011110 +101011001000 +001101000100 +111100111001 +011011101001 +100000010100 +100110101010 +010110001100 +010100100010 +001001011101 +110101101011 +111110011001 +011001011010 +000101000100 +100010111011 +000111110010 +011010001000 +001110010000 +100011001001 +010010010000 +110000010001 +000000110110 +011010000001 +010100010101 +000101011110 +101100010111 +010001111000 +100010001100 +100100100001 +011011000010 +111001001101 +111001010101 +111011011011 +001101100010 +010001000010 +111111011101 +011101101001 +010011100011 +000001000000 +100100010110 +010011000010 +010110010001 +111001001001 +010110001110 +000101110111 +001011101001 +001011111000 +111110111100 +000110111110 +001100111100 +001011000001 +110000100111 +000111001111 +101101111001 +111110100111 +111111111111 +111011010111 +001101001011 +011001011001 +010110111101 +111111000001 +001001100100 +111111101011 +011111100011 +010010110101 +011010111011 +010001010111 +001011000011 +100100001100 +110011011010 +000111111011 +011101010011 +010100010000 +110100010011 +101001110110 +111101110010 +000100001001 +111001101110 +111010110010 +010011000001 +110111011111 +111101111000 +100011010110 +001001010001 +010101100010 +110101110100 +000111101110 +111011110110 +010011011001 +100000011000 +111001110100 +011110010100 +110011011100 +011011010100 +101010101000 +000000111111 +001111110000 +110000011100 +100010100000 +101110000000 +011010011110 +110101010110 +011011100110 +111000101000 +100011101010 +000001100001 +101010011111 +111100001010 +111101001110 +011010111010 +001000011000 +101011010010 +101110001010 +101110011000 +000110000111 +110001101111 +100111000010 +011000011101 +100011000001 +010001100100 +111001100011 +111111100000 +111100101110 +001101111101 +110111101111 +100001011110 +111110100001 +011110100001 +110001001001 +001111010010 +011100100001 +010101100011 +011111011111 +010100101111 +100010001010 +010101111000 +000000001101 +000011011010 +100000010011 +001111010011 +101110110101 +000100000000 +001100101100 +100111110100 +001011100111 +110110100000 +111000000000 +110011001101 +010100011011 +100011010100 +000101011101 +110111110001 +010010100011 +011101000000 +100001001111 +101010110100 +110001101110 +100011111001 +011111011001 +000101000010 +001110100110 +100011011111 +100000000011 +110100000101 +001110110100 +101101001110 +000011010100 +110000001100 +110010110101 +110110101010 +001010001110 +111000010100 +011111100110 +000100011110 +010000010011 +010010100001 +000111010111 +110001001101 +010010110110 +010111010011 +101101011000 +100001110111 +101110001110 +010001110000 +101001111111 +100000001100 +000010000011 +011110010011 +110001000100 +001101110111 +110000110110 +100010000100 +100011111110 +001010000101 +111011010101 +111100000010 +110110010111 +000100111011 +011110111000 +001100001000 +101010100101 +110000111100 +010110100111 +111111111011 +110111011100 +111101110000 +111010000100 +001000110000 +101010101100 +100011100011 +110011110010 +001010111110 +100001010001 +010010111000 +000011001110 +001100010000 +011100110111 +001011101100 +011000111110 +011101001111 +011010000111 +111000010000 +001111001111 +011001100111 +011000110101 +111100110010 +000101000111 +101100110001 +110010110000 +000011011111 +110010011001 +010011000101 +010000111110 +000100101000 +101101100000 +110011101110 +011100100100 +111011100100 +100101010111 +001000010111 +011011110001 +011100010000 +001011110010 +111111100011 +001011111100 +110011101100 +100111000111 +010011011111 +100100110001 +101111101001 +101001110010 +000010110111 +111011111111 +100011111010 +101010111001 +101111100001 +000000011001 +011111000011 +000100001110 +001011110100 +000110111111 +001101110101 +000000010001 +010111001100 +001010100110 +110110000101 +110001000010 +100010000011 +001011001000 +101111011110 +111011111100 +011000011000 +101010101010 +111010110011 +110101000101 +010101000110 +000000010011 +101000001010 +100010101110 +110110000001 +011100010101 +101000110111 +010101000001 +000011011100 +110010100010 +011110110011 +010111111000 +110100101101 +111011111101 +011111111101 +100101001011 +010111000001 +000011011001 +000011100010 +100101111101 +000000101001 +111111000111 +111011000110 +101000001100 +000110000001 +001111011100 +000100010000 +100111101011 +111011011010 +011110010110 +001010010101 +100100110110 +000101111001 +000100011010 +011010010010 +001101001000 +001011011110 +000011101011 +001100011001 +110101100011 +100010000101 +011011100001 +011011110000 +100101100011 +010110111000 +001001001011 +000010111110 +000011010101 +110110011111 +001111000101 +110101111011 +011010010100 +000100110011 +110011110110 +010011101011 +100100001101 +110010000101 +010111100111 +100111111000 +011001001011 +011010100011 +110101111000 +011000111010 +011101000100 +001100110000 +010101111011 +101010010010 +010001000110 +000101111111 +110111001000 +110101111010 +100110010100 +110001000001 +011110001001 +010111110011 +010001010110 +011100111001 +110000010110 +010000010110 +010111111011 +000101101110 +100000001111 +010111111010 +000010001111 +100101110100 +000111100010 +000000101101 +010001011010 +010110111010 +011110111010 +110100000100 +101110000011 +110110100100 +110111110111 +110101011100 +100010010101 +001010110100 +110101001101 +000100110010 +111111111010 +001001000001 +000011110001 +010110111011 +001111101011 +010100100101 +001110010111 +100010010111 +100011110101 +001100001100 +010000000100 +011010110011 +100011101110 +010000000001 +100010010011 +110100111001 +000000110001 +000001000101 +011011001011 +000100101001 +010100001110 +000110001111 +011110000110 +110000000110 +010101001000 +000110111010 +011111100010 +111111010101 +101011000001 +001010101101 +110101111111 +001110110101 +010100101001 +110101100111 +010000101000 +011011110110 +111111110110 +010000100111 +000011010001 +101000011010 +001110000000 +111010110110 +011110011110 +100101001101 +101000000010 +001111101111 +011100001011 +011000011111 +001001001010 +100010011010 +100010100011 +000110010011 +100001110100 +010000011110 +011111000100 +001010101111 +111111001100 +010101110011 +110100110000 +010110010101 +111011000111 +001000111001 +010110110101 +110001011111 +010010101100 +110000101101 +100010000001 +111111110011 +110000010010 +111110000001 +100101011000 +010101010111 +100111101100 +100110101100 +110111000110 +000011111110 +100101100010 +000010010001 +111100100011 +001001111100 +100011110110 +111111011100 +110001100011 +110010111110 +000100010001 +000101100110 +100100000110 +010001101001 +011010010110 +100010110000 +001000001000 +101101011100 +111100111110 +001001011011 +010111101000 +100001100010 +000101111101 +101111110101 +001110000111 +010011010010 +100100110101 +101011011111 +111100010010 +110111010000 +111001101011 +100001001101 +101100000101 +011100101000 +000000100011 +000000111110 +001010001100 +100001110101 +100111011100 +110111100000 +101010101011 +001011000000 +011011111110 +001000101111 +101111101100 +001010011001 +100110101001 +101110010001 +110000011101 +001110000001 +000001100110 +011001101100 +000100000101 +110111010001 +101101100100 +010110101000 +001100001001 +000111001001 +010010101000 +101000001101 +110010000001 +110110010101 +110110001111 +101100110010 +000101110101 +011011101011 +000100100111 +110000111011 +101011011010 +000010101001 +110101101010 +111100101111 +101001010111 +110101100010 +001100100010 +101110111110 +110011110101 +000101111010 +011000111001 +110101001000 +101000100010 +111111001000 +111001101100 +110010100111 +011010110100 +100101111010 +000110010101 +101110000001 +001011110011 +011111110001 +101000101001 +011011001111 +100010001110 +111111110111 +010101111100 +100001000001 +010011110100 +001000010110 +001011101111 +010100011000 +011110111101 +111100110100 +100111011011 +000011001000 +001110100000 +010100011001 +101110001101 +100011001010 +111101011001 +000011100011 +110101011110 +111110001010 +010100010010 +000110110010 +001001001001 +100010110001 +110000110101 +111000101101 +011110010101 +010001000000 +000110001001 +011001111110 +010100111111 +001101110001 +011110000001 +110111111011 +011101000111 +110000111101 +010001110100 +010111011001 +110111010101 +001101000001 +011010000010 +110011010100 +111000110110 +001000000100 +111011001111 +010101010000 +001011101010 +010011010110 +111101100101 +111011011000 +001000100010 +111010000000 +101111011111 +100000111111 +110010000000 +100000011111 +110011001011 +001001111111 +010101101101 +111100011010 +100101100101 +001110001011 +001110111111 +101110011001 +100100110111 +110100000000 +111010110111 +111100110001 +111010100000 +010001100101 +011110100010 +100110010010 +001010110010 +011000100111 +010011011000 +110011010110 +010000001110 +011100111111 +011011000100 +101111001101 +111111011010 +011111010101 +111011101101 +011010000110 +011111111011 +010000011001 +001010001111 +100001010011 +101011001101 +011100111100 +110100011111 +011111011000 +110010111001 +111100100000 +101111100010 +100001101001 +110010111011 +010010001011 +001000011110 +000101010111 +011011111001 +101101000101 +000101100111 +101111111110 +000100110111 +111000011010 +010110111100 +111100001110 +111000100001 +010100000011 +010100110111 +110111010100 +011001001101 +100100101010 +111110110000 +110101110001 +110010100000 +001010011101 +111101001101 +010010000000 +111010111011 +011011110011 +111010001111 +101001111101 +100110000110 +000000000000 +010001110011 +100000111000 +101010100010 +010101100100 +110000110000 +000010011101 +011111001000 +111110011010 +010101001001 +011001111010 +101111000011 +110010111111 +110110001101 +000001010110 +101011100001 +100111100001 +010100100000 +100011101100 +010001100011 +110011000111 +000000000101 +101111110001 +010110011101 +111101000001 +101101011011 +100011101011 \ No newline at end of file diff --git a/2021/inputs/4 b/2021/inputs/4 new file mode 100644 index 0000000..a3a546a --- /dev/null +++ b/2021/inputs/4 @@ -0,0 +1,601 @@ +30,35,8,2,39,37,72,7,81,41,25,46,56,18,89,70,0,15,84,75,88,67,42,44,94,71,79,65,58,52,96,83,54,29,14,95,66,61,97,68,57,90,55,32,17,47,20,98,1,69,63,62,31,86,77,85,87,93,26,40,24,19,48,76,73,49,34,45,82,22,80,78,23,6,59,91,64,43,21,51,13,3,53,99,4,28,33,74,12,9,36,50,60,11,27,10,5,16,92,38 + +94 97 41 22 48 +21 47 72 23 26 +12 81 86 24 91 +71 78 90 59 54 +92 63 68 65 1 + +75 62 66 74 37 +14 79 35 96 30 +33 25 29 57 6 +60 93 17 55 53 +65 16 59 40 27 + +26 60 95 24 78 +55 12 22 68 43 +67 48 85 66 36 +29 80 52 3 56 +11 59 41 15 18 + +65 44 99 82 13 +14 62 46 61 84 + 4 38 7 29 0 +36 40 27 20 12 +31 18 15 42 55 + +90 77 52 24 56 +58 82 19 74 87 +97 93 25 91 95 +40 83 99 9 46 +61 94 96 57 41 + +40 28 30 81 64 +71 82 10 44 72 +98 31 3 90 67 + 5 47 61 22 59 +85 0 68 57 14 + +69 97 61 75 34 + 2 12 45 15 63 +71 66 85 39 64 +78 50 0 96 41 +52 3 82 43 74 + +14 92 59 71 24 +40 8 41 19 83 + 7 65 21 51 6 +55 49 2 97 36 +37 86 56 32 33 + +68 95 17 24 82 + 6 70 45 8 23 +52 59 55 4 31 +62 2 46 64 36 +43 42 93 44 90 + +55 58 88 48 12 +81 8 28 3 26 +96 44 80 22 97 +21 57 74 53 72 +90 77 13 56 37 + +69 49 48 37 41 +84 9 24 18 30 +70 61 86 25 0 +74 50 1 33 87 +97 46 72 60 80 + +92 66 39 59 43 +25 41 34 26 35 + 3 18 90 52 60 +83 29 24 93 28 +72 2 50 17 71 + +61 83 19 90 66 + 3 57 69 39 85 + 4 7 60 71 37 +64 75 58 67 17 +41 89 6 31 72 + +88 28 89 9 48 +70 45 6 72 85 + 7 39 26 58 44 +98 16 33 86 76 +21 99 82 1 81 + +50 20 44 11 1 +53 73 33 86 95 +41 21 68 42 28 +26 90 39 94 51 + 3 77 2 0 55 + +97 19 80 48 18 +78 92 99 10 23 +16 55 33 26 58 +25 30 62 17 54 +60 22 69 21 68 + + 6 47 50 19 24 +60 95 8 90 38 +20 59 73 3 57 +14 87 93 35 29 +97 85 49 12 79 + +14 77 64 0 40 +45 70 3 5 81 +97 73 11 67 33 +93 24 23 79 2 +17 10 54 35 51 + +30 3 57 41 18 +59 21 74 83 86 +12 85 82 67 48 +72 77 49 93 55 +66 76 43 34 91 + +88 19 38 24 51 +60 43 67 1 55 +42 47 79 45 73 +53 25 8 77 15 +34 61 76 70 74 + + 7 91 17 69 57 + 0 24 16 21 53 +70 13 46 39 56 +32 81 48 15 22 +41 58 26 45 14 + +52 77 31 89 93 +34 87 21 64 71 +41 38 9 39 30 +97 1 83 20 61 +62 5 27 88 99 + +74 87 89 29 44 +54 49 36 62 77 +53 72 59 70 15 +27 47 1 84 19 +55 78 56 52 66 + +64 29 67 44 82 +84 38 3 59 72 +88 53 45 62 21 +93 12 16 15 52 +97 98 54 9 6 + +93 4 37 44 86 +95 5 13 92 23 + 2 55 39 52 89 +32 35 51 99 47 +42 74 56 67 59 + +93 37 3 16 35 +42 75 18 72 95 +48 23 91 81 66 +54 49 62 67 36 +56 69 58 50 14 + +91 58 41 81 18 +86 17 67 2 23 + 4 75 78 66 43 +26 94 77 39 88 +92 5 38 29 56 + +78 60 23 42 31 +98 55 37 53 82 +41 87 12 69 73 +84 8 96 13 45 +16 59 40 67 77 + +83 64 43 12 93 +25 88 49 51 21 +97 41 92 68 1 +86 98 47 75 38 +11 63 70 31 19 + + 7 35 93 29 94 +12 41 30 46 96 +22 78 3 50 38 +13 18 53 81 71 +76 69 16 67 56 + +60 44 8 12 57 +31 11 79 28 27 +98 94 17 88 99 + 3 93 84 83 96 +90 56 40 15 0 + +13 96 27 41 48 +64 6 52 58 3 +17 15 50 89 10 +49 12 26 82 0 +83 95 30 32 21 + +98 44 68 91 12 +66 45 8 24 2 + 3 15 9 99 20 +59 37 97 33 79 +85 73 5 39 32 + +21 11 2 17 67 +97 78 32 73 34 +51 89 38 20 53 +35 76 31 62 66 + 3 79 88 4 10 + +40 14 63 55 21 +62 87 67 72 82 +93 79 31 98 64 +80 13 47 25 66 +76 65 26 96 5 + +12 3 33 49 23 +91 97 35 99 27 +73 44 79 26 48 +90 65 78 64 34 + 4 32 5 19 40 + +36 77 2 85 46 +16 67 63 49 51 +27 90 62 88 72 + 8 12 95 83 34 +47 74 11 30 48 + +60 84 55 19 47 +97 18 44 52 88 +50 0 29 36 58 +77 65 21 49 40 +87 39 89 31 27 + +44 57 78 25 3 +59 70 2 11 96 +63 94 23 50 92 +55 85 88 52 14 +40 4 75 90 6 + +43 72 12 6 92 +98 26 4 22 3 +54 89 19 58 8 +97 17 49 71 57 +48 29 60 86 56 + +17 74 31 40 45 +24 32 64 13 80 + 5 43 3 23 7 +86 97 93 78 55 +95 68 21 99 12 + +93 12 24 3 80 +54 71 95 64 68 +75 22 9 85 38 +62 77 28 48 19 +36 47 30 40 7 + +11 95 28 2 32 +64 91 90 24 37 +44 31 4 43 68 + 9 8 52 72 74 +25 63 13 18 54 + +17 61 46 3 63 +14 37 25 95 48 +40 60 74 91 56 +42 67 81 10 43 +51 16 72 87 52 + +29 92 47 15 31 +32 34 61 48 63 +78 26 22 36 73 +30 76 95 97 12 +74 67 77 86 64 + +45 22 20 77 61 +41 15 46 82 25 +65 44 63 40 39 +57 36 19 66 10 +13 75 83 26 47 + +72 83 19 92 41 +42 75 38 88 24 +58 34 22 48 76 +70 86 17 53 26 + 7 33 52 59 85 + +13 98 64 0 78 +21 23 75 9 67 +70 71 1 33 96 +42 53 38 55 80 +72 95 7 51 49 + + 8 64 15 28 77 +69 86 97 50 88 +31 29 16 22 81 +72 39 11 67 85 +51 61 5 91 18 + +19 63 76 58 7 + 8 67 46 53 50 +99 87 95 91 56 +30 88 89 11 83 +39 62 68 28 40 + +38 21 1 81 46 +41 6 9 86 40 +79 29 90 55 84 +68 63 93 27 70 +65 33 4 75 98 + +44 72 66 58 5 +53 13 91 2 93 +92 11 71 83 75 +85 50 29 77 73 +31 10 45 36 98 + +63 85 15 12 0 +27 29 97 42 45 +33 82 40 28 64 +51 22 47 94 2 +91 57 73 87 14 + +75 98 31 26 57 +71 18 77 17 16 +22 72 54 44 81 +53 35 12 6 30 +67 1 46 7 39 + +51 16 61 91 18 +13 9 57 30 40 +53 76 23 81 45 +80 41 11 98 8 +35 4 58 54 20 + +87 74 46 16 49 + 2 31 68 35 75 +60 89 45 11 50 +73 44 32 61 34 +85 5 10 43 42 + +69 53 13 46 81 +49 58 51 25 67 +22 19 45 6 30 +83 32 9 61 91 +55 11 34 42 50 + +68 71 96 31 11 +98 84 57 48 6 + 0 99 62 74 76 + 1 37 54 72 16 +91 81 75 24 40 + +49 14 42 88 79 + 9 63 51 34 78 + 5 27 57 81 40 +60 64 45 92 50 +52 20 59 44 97 + +63 72 98 90 57 +56 76 92 77 9 +41 21 93 23 39 + 3 28 74 8 65 +15 42 59 7 46 + +28 75 84 6 8 +99 69 56 62 72 +78 45 50 42 92 +73 59 61 27 33 + 0 24 4 44 18 + +23 5 88 2 71 +35 41 45 51 14 +53 83 95 66 84 +70 92 76 96 90 + 1 37 17 74 50 + + 7 65 5 39 95 +80 18 66 69 32 +93 79 6 37 55 + 1 0 47 73 3 +23 40 2 44 61 + +48 53 25 76 52 +35 83 97 99 33 +22 86 1 55 73 +82 43 40 50 87 +18 3 51 75 81 + +25 62 69 24 64 +61 41 39 44 30 +93 52 33 26 28 +82 8 50 36 75 +68 48 94 1 85 + +72 67 3 54 80 +24 14 46 27 92 +26 25 56 49 61 +19 84 0 6 9 +91 1 39 4 78 + +74 14 20 58 83 +99 89 60 31 93 +13 3 77 62 94 +10 82 85 32 49 +65 79 9 29 50 + +98 6 94 60 68 +74 38 64 10 18 +23 20 95 33 90 +67 28 17 12 65 +19 40 61 47 22 + +48 69 14 93 53 +75 55 96 51 87 +52 82 72 56 17 +84 44 70 83 34 +97 37 85 92 59 + +31 92 13 90 43 +81 51 58 52 83 +76 15 18 87 98 +10 37 94 93 26 +55 44 48 67 29 + +50 86 33 5 61 +59 46 42 80 77 +82 30 6 19 87 +41 57 78 60 49 +26 18 55 15 25 + +73 7 14 51 58 +55 22 11 30 67 +69 32 93 83 42 +59 60 40 63 1 + 9 12 48 47 43 + +61 50 3 5 66 +39 73 53 38 89 +37 34 80 95 74 +64 16 44 54 48 +46 79 69 24 13 + +76 66 15 33 96 +62 9 3 74 72 +77 75 80 56 31 + 1 43 52 87 44 +23 51 7 53 30 + +51 73 93 15 19 +91 90 61 96 13 +39 48 54 66 6 +16 25 47 10 81 +36 29 55 46 72 + +44 93 12 94 53 +14 22 92 23 78 +71 47 39 5 54 +49 86 48 65 84 +61 7 67 36 3 + +92 45 59 10 82 +76 30 8 86 38 +88 36 3 55 96 +41 24 64 87 42 +35 7 16 54 0 + +18 82 8 9 77 + 5 91 61 21 83 +59 13 15 67 29 +36 48 88 90 17 +68 12 25 23 22 + +97 79 74 44 76 +47 23 25 37 16 +98 42 29 26 62 +91 36 7 20 50 +87 12 21 92 77 + +65 24 33 50 54 +36 59 89 29 3 +15 25 39 95 83 +66 62 58 47 41 +21 37 64 93 69 + +91 60 47 93 54 +69 70 66 85 74 +61 5 9 37 40 +51 99 42 82 26 +84 30 19 11 75 + +83 2 27 92 46 +75 43 69 65 31 +76 70 34 97 95 + 1 6 49 66 82 +91 55 98 80 54 + +10 2 59 74 24 +92 73 88 7 82 +11 30 98 45 97 +28 14 67 47 63 +23 22 55 48 89 + + 8 90 50 4 0 +86 16 18 28 13 +76 37 31 46 38 +51 54 21 14 27 +59 23 49 97 1 + + 6 80 36 74 96 +99 27 73 18 64 +84 79 95 24 0 +38 4 15 91 42 +29 87 48 35 32 + + 4 3 73 77 29 +65 64 96 31 40 + 9 59 45 2 8 +88 0 87 70 89 +17 79 54 61 24 + +51 69 66 98 39 +27 30 57 35 46 +75 19 31 44 84 +58 25 78 8 86 +24 83 33 34 22 + +20 59 63 33 56 +78 47 37 48 86 +11 66 83 97 89 +27 55 52 94 26 +70 45 1 18 13 + +41 14 64 31 19 +85 76 52 34 57 +37 7 77 0 66 +93 11 3 12 74 +67 9 63 1 88 + +12 58 86 72 96 +80 75 99 40 98 +82 29 2 53 60 +88 46 57 83 8 +13 77 69 38 30 + +68 90 26 31 60 +87 62 88 50 94 +43 14 67 65 41 +21 8 66 13 12 +17 83 38 72 97 + + 8 65 30 22 87 +50 19 73 83 96 +33 49 20 36 17 + 9 4 11 56 60 +42 75 62 57 68 + + 4 28 15 16 60 +86 22 66 18 52 +27 51 61 8 26 +33 1 50 73 48 +11 70 17 76 82 + +37 63 25 62 59 +73 47 91 35 70 +81 17 76 94 75 +71 36 92 57 44 +82 40 4 97 1 + + 9 24 53 97 20 +11 89 90 86 96 +99 61 49 66 93 +68 22 26 7 88 +57 70 12 63 34 + +52 72 93 55 74 +27 2 98 8 4 +77 36 63 59 54 +43 69 79 85 84 +64 76 19 80 21 + +98 80 54 45 26 +47 71 35 38 21 +67 13 28 65 31 +41 17 82 22 9 +12 10 91 39 34 + + 0 79 49 14 44 +93 69 46 19 54 +63 89 60 95 20 +47 24 33 16 6 +35 27 61 29 28 + +57 40 49 31 1 +74 61 21 85 26 +95 83 69 8 29 +34 25 17 82 92 +78 14 53 65 87 + +18 97 74 79 15 +78 57 41 44 64 +48 21 2 59 96 +30 73 34 86 16 +39 37 98 76 63 \ No newline at end of file diff --git a/2021/inputs/5 b/2021/inputs/5 new file mode 100644 index 0000000..2455beb --- /dev/null +++ b/2021/inputs/5 @@ -0,0 +1,500 @@ +491,392 -> 34,392 +337,52 -> 485,52 +256,605 -> 256,959 +889,142 -> 153,878 +189,59 -> 512,382 +399,193 -> 598,193 +578,370 -> 795,153 +79,450 -> 569,450 +565,444 -> 270,149 +39,28 -> 39,846 +114,353 -> 114,383 +356,61 -> 356,327 +140,132 -> 515,132 +361,848 -> 361,527 +466,257 -> 466,784 +818,397 -> 818,14 +693,554 -> 693,984 +171,290 -> 171,655 +989,889 -> 170,70 +527,855 -> 527,549 +209,355 -> 486,355 +800,430 -> 291,939 +980,38 -> 31,987 +964,559 -> 964,799 +491,612 -> 930,173 +57,977 -> 958,76 +149,465 -> 349,465 +512,624 -> 629,507 +460,943 -> 460,441 +988,29 -> 988,968 +104,337 -> 441,337 +939,48 -> 939,546 +941,904 -> 498,461 +850,972 -> 649,771 +840,901 -> 23,84 +231,790 -> 231,873 +230,668 -> 840,58 +410,922 -> 435,897 +341,337 -> 341,406 +264,752 -> 258,752 +457,969 -> 457,757 +465,42 -> 465,350 +748,783 -> 502,783 +461,930 -> 461,142 +392,265 -> 215,265 +417,805 -> 417,231 +825,870 -> 60,105 +524,167 -> 703,346 +963,829 -> 308,174 +730,361 -> 730,252 +61,373 -> 61,593 +873,893 -> 132,152 +820,719 -> 417,719 +142,238 -> 212,168 +142,653 -> 676,119 +392,955 -> 392,453 +368,385 -> 414,385 +464,762 -> 592,762 +542,168 -> 542,789 +622,693 -> 166,237 +477,290 -> 792,290 +731,56 -> 731,677 +516,77 -> 326,77 +595,973 -> 779,973 +68,487 -> 128,487 +389,738 -> 762,738 +721,13 -> 827,119 +797,625 -> 347,625 +75,67 -> 75,458 +931,142 -> 219,854 +422,835 -> 980,835 +278,565 -> 753,565 +225,970 -> 806,389 +791,725 -> 691,725 +924,975 -> 18,69 +326,763 -> 969,120 +663,895 -> 663,559 +940,965 -> 142,167 +146,425 -> 791,425 +832,968 -> 272,408 +494,804 -> 694,804 +23,25 -> 900,902 +621,163 -> 894,163 +587,605 -> 587,716 +41,931 -> 383,589 +888,530 -> 341,530 +292,801 -> 292,567 +537,213 -> 245,213 +513,84 -> 527,84 +623,516 -> 623,128 +549,729 -> 509,729 +576,232 -> 869,232 +513,847 -> 433,847 +536,612 -> 434,612 +608,377 -> 33,952 +137,762 -> 424,475 +329,286 -> 584,541 +493,296 -> 493,316 +160,343 -> 189,343 +477,929 -> 976,430 +695,607 -> 557,607 +745,322 -> 28,322 +777,73 -> 76,774 +163,723 -> 163,816 +30,549 -> 63,516 +163,914 -> 898,179 +603,823 -> 603,78 +498,616 -> 886,228 +229,591 -> 341,591 +742,841 -> 343,841 +720,808 -> 934,808 +985,48 -> 48,985 +368,859 -> 178,859 +506,30 -> 144,30 +19,110 -> 19,750 +293,689 -> 293,294 +13,462 -> 980,462 +536,963 -> 346,773 +836,471 -> 462,471 +506,952 -> 489,952 +830,15 -> 461,15 +392,378 -> 237,378 +295,48 -> 295,825 +264,679 -> 264,602 +487,582 -> 487,116 +832,677 -> 788,677 +469,770 -> 211,512 +400,773 -> 394,773 +262,836 -> 262,454 +51,17 -> 969,935 +483,525 -> 838,880 +71,124 -> 164,31 +103,226 -> 912,226 +785,169 -> 785,454 +858,825 -> 176,143 +248,960 -> 427,781 +255,37 -> 767,37 +832,149 -> 506,149 +256,246 -> 86,246 +447,448 -> 765,448 +654,159 -> 654,158 +120,500 -> 120,341 +200,19 -> 839,658 +451,251 -> 763,563 +931,75 -> 931,312 +69,404 -> 311,646 +31,678 -> 31,231 +410,307 -> 410,236 +988,976 -> 387,375 +654,402 -> 738,486 +30,942 -> 942,30 +115,652 -> 98,669 +405,764 -> 375,734 +88,759 -> 125,759 +636,835 -> 722,835 +300,60 -> 126,60 +159,225 -> 159,319 +934,188 -> 934,74 +46,822 -> 708,160 +605,612 -> 605,463 +200,281 -> 536,617 +392,11 -> 79,324 +917,126 -> 258,785 +803,143 -> 803,180 +116,556 -> 651,556 +922,222 -> 468,676 +266,782 -> 896,782 +733,448 -> 764,448 +915,75 -> 305,685 +150,243 -> 842,243 +485,641 -> 963,641 +965,206 -> 965,275 +78,868 -> 748,198 +37,947 -> 859,947 +429,289 -> 429,48 +378,261 -> 378,624 +768,494 -> 768,782 +702,566 -> 113,566 +290,148 -> 913,771 +806,931 -> 849,931 +725,970 -> 299,970 +38,565 -> 740,565 +262,730 -> 973,730 +826,376 -> 826,97 +318,576 -> 318,227 +159,868 -> 448,868 +344,256 -> 344,615 +824,188 -> 588,424 +505,843 -> 897,843 +293,348 -> 293,488 +433,833 -> 165,565 +56,471 -> 169,471 +77,896 -> 914,59 +405,904 -> 405,174 +274,364 -> 274,88 +785,704 -> 538,704 +877,389 -> 681,389 +790,936 -> 327,936 +89,143 -> 755,809 +721,450 -> 721,406 +253,664 -> 811,664 +881,143 -> 97,927 +205,738 -> 645,738 +869,951 -> 282,364 +374,697 -> 374,592 +251,989 -> 251,977 +521,187 -> 885,187 +536,401 -> 536,38 +636,840 -> 636,873 +695,333 -> 52,976 +790,757 -> 790,358 +314,765 -> 882,765 +880,439 -> 127,439 +266,848 -> 810,304 +802,419 -> 802,936 +554,67 -> 554,956 +311,379 -> 685,753 +183,544 -> 305,544 +857,341 -> 407,791 +306,559 -> 727,980 +184,477 -> 509,152 +934,174 -> 934,154 +28,12 -> 28,968 +418,984 -> 112,678 +788,89 -> 837,89 +229,425 -> 192,462 +714,701 -> 424,411 +198,313 -> 156,355 +142,742 -> 215,742 +15,639 -> 15,787 +573,396 -> 462,396 +954,977 -> 76,99 +645,448 -> 652,448 +958,822 -> 376,240 +47,359 -> 212,194 +524,366 -> 524,916 +100,977 -> 501,576 +932,148 -> 115,965 +854,120 -> 421,553 +318,630 -> 318,964 +196,31 -> 874,709 +812,826 -> 812,679 +111,890 -> 897,104 +46,35 -> 972,35 +40,842 -> 40,835 +390,510 -> 98,510 +832,57 -> 124,765 +422,331 -> 422,44 +696,837 -> 696,555 +849,571 -> 849,679 +598,143 -> 598,261 +670,745 -> 670,757 +660,390 -> 660,912 +960,578 -> 960,253 +123,343 -> 123,28 +643,199 -> 969,199 +66,642 -> 669,39 +776,30 -> 776,173 +595,951 -> 84,951 +908,183 -> 724,367 +330,332 -> 330,455 +954,955 -> 188,955 +981,269 -> 90,269 +235,579 -> 513,579 +217,25 -> 217,990 +811,810 -> 811,405 +245,255 -> 367,255 +860,225 -> 860,100 +753,626 -> 697,626 +755,404 -> 836,404 +733,476 -> 336,476 +562,172 -> 964,172 +339,989 -> 749,989 +167,581 -> 167,611 +217,475 -> 217,747 +103,598 -> 431,270 +11,989 -> 989,11 +925,90 -> 46,969 +26,963 -> 935,54 +40,925 -> 40,816 +67,942 -> 984,25 +933,652 -> 933,242 +942,292 -> 942,138 +889,909 -> 180,200 +604,770 -> 237,770 +30,627 -> 973,627 +750,777 -> 750,645 +254,797 -> 254,169 +939,167 -> 347,759 +889,682 -> 394,682 +788,338 -> 388,338 +757,252 -> 169,252 +806,131 -> 699,131 +562,270 -> 562,481 +950,349 -> 459,840 +219,915 -> 932,202 +977,505 -> 977,708 +915,559 -> 915,125 +366,397 -> 366,717 +54,723 -> 433,723 +570,842 -> 236,508 +513,365 -> 513,80 +569,523 -> 569,266 +278,764 -> 278,178 +136,136 -> 84,84 +787,108 -> 787,809 +461,388 -> 855,782 +64,898 -> 848,114 +628,71 -> 178,521 +842,66 -> 842,699 +293,68 -> 742,68 +960,102 -> 358,704 +834,669 -> 27,669 +11,43 -> 374,406 +399,803 -> 340,803 +564,211 -> 20,755 +370,841 -> 370,321 +518,590 -> 518,255 +470,150 -> 470,850 +769,182 -> 234,717 +97,787 -> 97,382 +36,31 -> 982,977 +831,467 -> 471,827 +253,836 -> 547,836 +957,681 -> 957,919 +768,831 -> 768,275 +98,36 -> 955,893 +283,413 -> 840,413 +21,870 -> 20,870 +979,507 -> 979,37 +339,757 -> 210,757 +388,594 -> 801,594 +867,939 -> 91,163 +755,864 -> 755,501 +856,177 -> 736,57 +74,365 -> 376,63 +386,451 -> 815,22 +389,883 -> 679,593 +116,216 -> 157,175 +693,960 -> 693,454 +704,962 -> 306,962 +613,442 -> 867,442 +578,13 -> 578,855 +417,683 -> 118,683 +127,161 -> 742,161 +646,979 -> 646,270 +14,842 -> 14,802 +496,902 -> 506,912 +468,354 -> 468,875 +714,431 -> 714,172 +554,297 -> 554,790 +717,664 -> 883,664 +551,182 -> 980,611 +794,932 -> 499,637 +384,499 -> 507,499 +32,368 -> 257,368 +984,131 -> 904,131 +973,16 -> 10,979 +189,178 -> 189,752 +492,404 -> 492,593 +11,515 -> 117,515 +230,182 -> 230,954 +652,16 -> 663,16 +698,693 -> 490,693 +252,942 -> 587,942 +551,901 -> 428,778 +899,320 -> 903,316 +14,577 -> 313,278 +409,576 -> 409,475 +466,883 -> 819,883 +221,472 -> 609,472 +686,828 -> 686,720 +988,989 -> 13,14 +514,171 -> 227,171 +868,842 -> 632,842 +279,824 -> 697,406 +678,464 -> 678,687 +736,358 -> 736,259 +933,66 -> 24,975 +679,470 -> 679,689 +979,953 -> 45,19 +98,826 -> 737,187 +612,732 -> 612,681 +985,23 -> 23,985 +787,732 -> 332,277 +660,211 -> 660,61 +395,19 -> 246,19 +129,876 -> 955,50 +676,246 -> 821,246 +980,26 -> 18,988 +142,945 -> 142,218 +165,240 -> 540,240 +941,522 -> 941,129 +876,274 -> 876,340 +627,782 -> 905,782 +928,235 -> 246,235 +336,449 -> 92,205 +748,62 -> 748,787 +804,725 -> 356,277 +910,89 -> 19,980 +391,99 -> 155,335 +608,127 -> 516,219 +337,255 -> 337,649 +818,831 -> 818,859 +146,204 -> 301,359 +629,646 -> 906,923 +87,860 -> 824,123 +613,867 -> 613,946 +286,339 -> 286,626 +942,120 -> 595,467 +35,207 -> 187,207 +684,559 -> 283,158 +48,768 -> 48,349 +656,965 -> 656,27 +865,341 -> 865,576 +218,786 -> 152,786 +697,69 -> 583,69 +790,79 -> 552,79 +310,547 -> 846,11 +428,809 -> 428,940 +664,829 -> 664,455 +265,775 -> 749,775 +362,221 -> 309,168 +437,253 -> 437,597 +601,324 -> 245,680 +24,69 -> 24,476 +420,344 -> 420,525 +215,866 -> 635,866 +926,770 -> 315,770 +413,650 -> 413,624 +751,765 -> 475,489 +673,709 -> 39,75 +230,689 -> 805,689 +31,209 -> 789,967 +698,255 -> 909,255 +641,752 -> 866,527 +346,780 -> 391,825 +328,905 -> 328,130 +628,674 -> 628,354 +666,110 -> 98,678 +846,651 -> 846,371 +28,946 -> 28,482 +289,844 -> 458,675 +605,602 -> 605,297 +355,217 -> 239,217 +453,96 -> 195,354 +988,90 -> 145,933 +801,194 -> 801,109 +894,708 -> 894,212 +177,447 -> 607,877 +824,391 -> 788,391 +386,940 -> 471,855 +703,425 -> 583,425 +848,110 -> 36,922 +603,596 -> 685,678 +584,458 -> 584,482 +464,903 -> 343,903 +888,413 -> 405,413 +320,185 -> 103,185 +475,458 -> 55,878 +371,843 -> 371,466 +785,507 -> 785,570 +904,553 -> 904,983 +872,600 -> 872,848 +296,693 -> 751,238 +490,488 -> 322,488 +37,371 -> 185,223 +238,618 -> 238,883 +232,89 -> 123,89 +20,14 -> 961,955 +794,318 -> 914,318 +407,499 -> 246,338 +641,514 -> 227,514 +284,210 -> 562,488 +164,566 -> 498,900 +20,825 -> 150,955 +235,384 -> 537,686 +151,116 -> 979,944 +697,133 -> 59,771 +212,226 -> 38,226 +523,527 -> 523,497 +119,493 -> 352,726 +927,157 -> 154,930 +336,149 -> 581,394 +103,580 -> 354,580 +891,494 -> 532,853 +22,272 -> 538,788 +544,296 -> 519,271 +821,382 -> 821,155 +501,807 -> 501,202 +588,76 -> 708,76 +773,681 -> 184,681 +754,936 -> 86,268 +582,972 -> 40,972 +530,458 -> 530,329 +109,433 -> 649,433 +411,215 -> 411,311 +433,568 -> 433,585 +232,504 -> 799,504 +72,442 -> 38,442 \ No newline at end of file diff --git a/2021/inputs/6 b/2021/inputs/6 new file mode 100644 index 0000000..14c9317 --- /dev/null +++ b/2021/inputs/6 @@ -0,0 +1 @@ +4,2,4,1,5,1,2,2,4,1,1,2,2,2,4,4,1,2,1,1,4,1,2,1,2,2,2,2,5,2,2,3,1,4,4,4,1,2,3,4,4,5,4,3,5,1,2,5,1,1,5,5,1,4,4,5,1,3,1,4,5,5,5,4,1,2,3,4,2,1,2,1,2,2,1,5,5,1,1,1,1,5,2,2,2,4,2,4,2,4,2,1,2,1,2,4,2,4,1,3,5,5,2,4,4,2,2,2,2,3,3,2,1,1,1,1,4,3,2,5,4,3,5,3,1,5,5,2,4,1,1,2,1,3,5,1,5,3,1,3,1,4,5,1,1,3,2,1,1,1,5,2,1,2,4,2,3,3,2,3,5,1,5,1,2,1,5,2,4,1,2,4,4,1,5,1,1,5,2,2,5,5,3,1,2,2,1,1,4,1,5,4,5,5,2,2,1,1,2,5,4,3,2,2,5,4,2,5,4,4,2,3,1,1,1,5,5,4,5,3,2,5,3,4,5,1,4,1,1,3,4,4,1,1,5,1,4,1,2,1,4,1,1,3,1,5,2,5,1,5,2,5,2,5,4,1,1,4,4,2,3,1,5,2,5,1,5,2,1,1,1,2,1,1,1,4,4,5,4,4,1,4,2,2,2,5,3,2,4,4,5,5,1,1,1,1,3,1,2,1 \ No newline at end of file diff --git a/2021/inputs/7 b/2021/inputs/7 new file mode 100644 index 0000000..49faa49 --- /dev/null +++ b/2021/inputs/7 @@ -0,0 +1 @@ +1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,478,1187,253,1892,900,155,20,787,17,248,1397,407,167,686,638,1020,960,124,840,220,1824,700,373,4,551,229,294,567,254,350,1144,679,124,361,145,483,335,202,1334,367,60,870,11,557,482,645,672,1296,1538,427,78,542,1135,13,65,0,140,705,13,642,187,1085,36,1118,349,601,382,584,941,26,949,200,763,198,430,204,1352,1135,210,342,11,1089,830,1523,9,523,167,762,254,805,8,132,29,102,1299,936,756,59,134,183,235,316,139,48,182,44,88,213,113,93,169,565,601,1899,1191,189,796,770,32,1183,365,374,867,918,1084,86,75,20,47,99,1140,2,99,1024,366,455,752,556,1220,66,326,450,213,1,342,756,49,675,160,280,68,221,193,379,88,179,94,16,109,570,1145,1207,824,355,1389,1601,168,86,236,923,120,759,14,478,460,84,167,1723,1005,269,6,171,861,311,832,952,701,3,1598,1466,96,780,57,161,631,572,276,105,594,276,17,405,688,1444,173,23,199,177,689,19,565,472,151,986,76,379,1430,212,928,106,25,143,84,833,942,860,1555,271,239,720,596,1209,235,535,361,1794,79,283,275,17,342,1687,1434,173,967,740,217,1370,18,1579,1259,546,94,623,475,834,1000,456,101,520,120,1023,360,167,213,617,42,1149,629,760,17,33,27,1347,414,646,1116,1340,134,259,143,407,249,328,968,677,241,438,98,313,27,791,1,634,3,918,1482,213,123,444,45,24,26,26,1203,64,67,1562,1,4,298,12,384,32,443,37,268,674,356,202,286,694,272,163,950,1022,54,59,21,73,519,462,106,76,1112,10,72,388,194,6,120,9,645,209,1121,75,599,362,661,439,69,62,339,390,23,1247,365,1266,4,246,511,47,467,134,276,497,130,458,427,669,1191,701,917,168,1191,294,641,236,801,375,106,872,800,87,356,583,1096,253,459,951,1331,719,66,1091,525,15,370,290,141,1201,30,43,37,76,1131,616,297,172,402,1016,654,301,63,872,303,69,1195,502,351,52,1659,86,104,294,807,166,120,190,333,60,283,819,198,184,144,278,343,1395,496,103,705,485,172,642,225,181,583,188,38,436,801,91,5,634,180,28,20,146,488,676,121,420,965,220,1564,1011,241,423,3,1631,709,106,725,164,1032,65,205,503,188,397,1072,49,121,761,721,249,418,87,126,258,712,500,435,157,127,681,108,270,647,504,505,83,407,212,165,1177,160,715,1292,491,195,141,25,829,1316,242,754,364,1707,33,594,434,488,368,298,183,1156,29,1674,537,378,8,9,860,240,571,749,471,331,501,156,62,427,1103,52,12,832,1198,284,388,827,556,194,288,218,397,84,1485,95,401,739,986,994,305,668,1324,1437,312,993,15,822,923,707,135,42,423,37,1183,1344,997,19,699,395,119,7,168,1711,50,151,38,20,163,686,1364,21,24,411,32,335,188,55,628,274,1766,439,180,286,1024,87,15,1498,290,561,971,32,294,67,113,219,42,18,715,3,664,242,583,221,1045,236,74,46,1612,639,325,164,100,69,518,38,502,26,329,112,1174,127,124,90,144,527,468,152,1098,800,125,349,191,290,191,27,651,446,267,9,1304,269,586,64,983,152,236,512,8,248,177,109,311,957,47,126,69,13,709,204,381,1151,580,340,994,865,258,190,9,1149,930,1128,321,100,471,0,507,1308,326,585,813,1088,76,174,333,387,631,186,430,988,24,820,11,45,173,167,1494,98,1467,456,167,21,1363,1173,394,318,1601,1111,1249,757,282,672,1227,1214,277,336,815,136,1192,681,689,431,130,1488,154,465,14,709,339,1123,68,151,1280,143,1797,23,250,1231,1007,302,1103,2,585,552,1732,994,225,771,1495,82,229,700,910,15,38,159,1122,316,1044,711,1436,920,1722,523,1398,188,443,1032,93,33,397,272,187,24,489,53,79,1277,671,1094,68,1705,984,1096,512,145,389,167,161,1174,94,4,534,1295,648,75,24,366,995,175,220,714,843,412,267,634,1209,66,1094,125,822,1114,1513,694,1520,30,676,817,245,26,77,1146,552,143,165,39,343,971,87,0,90,1434,588,616,99,297,1034,114,5,702,917,582,733,31,54,820,0,212,192,282,33,639,1661,460,75,680,115,178,194,271,274,582,1008,89,139,611,707,0,376,65,9,161,135,40,134,566,66,601,95,817,745,202,352,447,322,842,6,1247,175,468,330,608,368,139,21,29,486,121,9,1293,298,73,328,302,145,889,1794,677,56,952,520,80 \ No newline at end of file diff --git a/2021/inputs/8 b/2021/inputs/8 new file mode 100644 index 0000000..ff7848c --- /dev/null +++ b/2021/inputs/8 @@ -0,0 +1,200 @@ +ecdbfag deacfb acdgb cdg acdbf gdfb efacdg gd cagdbf beacg | cdg dcebgaf gbdf bdacg +fadecg gdbecaf agbfd fgdcb gab ebagdf feabcg deab gdefa ab | adfbg ab fcgdbae bfgecda +cgebad edfagcb fg fedg ebfca gcefb fcedgb dbagcf cgf cdbeg | cfg acfbe bcgdafe dgeafcb +bgcde cbefg gd dbeafc afbcgde bedgca gacd dbg cedba fbegda | agfcebd adgfbce dgb fgceb +gadcbe gcade debfac fdagce egdbf cfedg fbgcade gafc dcf fc | fcga eacfdg gfca fdcbea +dbgcae gdeaf cefga cfa dcbgfa cgfabe cefb cf ebfgcda acgbe | gebacdf fcgdeab bacdge cfeb +fgde efc dacgf cbdgfa fe abdcfe afdbecg gaefdc gcfae abceg | ef agdcbf bfdagec efdg +egfacd bfcdeg ac facbg acbe cfa fbgace fgecb gfdba fbdcgae | ac ca ca fgeacb +acefg dae dfbec abfcedg cfdea dgeafc ad dfag eacgbd bcagfe | dfag gfad dgfa beagfcd +gae cabfgd fbcag ecbgad gfec ge agbfe gdefbca bfeda cfbgea | geabf gecf efgc gafbc +efdgabc bda gceadb gafbec aedbf da cadf cbaef badfec gdfbe | efbda dba adcf da +dgbaec gcade feacd bcfgae fabcd edfg ef agdfcbe gdefca fea | gedf aegfcdb edagc cefdgba +cf adbfc bfagd gdaefc cgdefab gfbc gdacbf caf eacdb fdeagb | fgcb faedcg cbfg gcafbde +bg cabg cdfge efbacg cebadf dgeafb fcebg gbe cabef egdbfac | gb bge cgba ecbfa +dgfcabe geadfc gbadf cgd gbedcf acdgf dfbcea agce cg dfeac | cg agcfd aegc cdg +gcfdae bcgde bdf gfcaedb bafc abfdcg agdfc cbgdf bf beafdg | fbd bafc cafb dbfcga +fgab fbedca fgead fg bfgead efadb gefcdb defgcab fdg gadec | cbedfg abgf agfebd gabfcde +begda fgbdeac gecf cgd dgeac efadc fbecda cegadf cg fabgcd | adgfbec cgd gdc dgfcaeb +gcbfe gacdef eadbgc eabcf cbg dgfcbe bg dfeagcb dfgce bfdg | gbc bfgd bcg bafce +efcbd ecabgd cbdga cfaedbg fcabdg deg ebga eg gdceb aegfcd | acgdbe ge aecdfgb fagdec +gdeba afb cgdfab gfacebd gafe fa fbedc dfbega dbecag ebdaf | cagfdb eacdbgf bdefagc ecdfb +fcbgdae egfbc fdbac dgcaef fbcdag fgcbd aecfdb dcg bgda gd | dbag dg afcegd cgd +dgcea agbedcf ed agcef acgbd dagfbc gbed ecbgad dae bdaefc | begd ed dea ead +efdbac bedcgfa agcde cdgfea cg bgaed dcg efgc faced gdcfab | dafbec fdacgbe fgdace gadeb +bdgae acdegb adgfbe agc gbcaedf gc agdfec abecg ecfab cbgd | aebgd cg cg gdbc +abgcef ebgcf badgef cfgdbae cfagb eb gbe cfedg dbafgc baec | beac agbcf be ebg +dca cabedg acbf aedcf agcdebf daegf gefbcd efdcba ca debfc | cfba agcbefd ac cbeagd +bf gfbeca cbaef adfgbc bfc gbef aegbc gcafebd bagced acdef | fcb gefb bfeac ebgfac +gcbaefd fg cfagbd bafdc bceafg gfbcd fgb dafg dbafce ebgcd | fg gf adgf gafd +gadbf aefbg egfd efb dgfbea cbfeda cbega ef agbefcd gdcabf | gfde ef gdfe gbfae +egbdfc gecbfa dfgea egcfb bea ba bcag fabcde gacfdeb gafbe | agbc bdcagef ba dfgea +gfdce afged dcgbef adcgbef dbage agf gcfdae gbadfc cefa fa | dfcgab bdgae gaf gaf +fadgec bdaegc fedag cd bfdaeg dac agbfdce efcd cgbaf dfacg | bdgcaef gfedca cda abcgf +afebgc eac agfcb fdbce fbcdag faegbdc cafegd gabe cbeaf ea | ae eca gadefc cfdbega +gcdb db ebgacfd deb gedca efacgd cabed ebcfa decabg eabdgf | dgecfba fabdecg aecdgfb fegcbad +cgefd gd edcfbg dfbgca fdg cdabef fadcgeb dbge bdcfe caegf | dgbfce gbde degacfb edbcf +eadgb fegbd faebcg bdecga agb cbad cbdaefg aefgdc ba dgcea | egabcdf ba agb deagbcf +cedga ab fdgeba gfdeb fbga eafdgbc dbgae dcgfeb dab ebcfad | agfb dbcfage ab gfba +efdacb fabegc dbgfcae gce ceagf gcba gc gebfdc efadg afcbe | agbc dabfce fgcbde dfega +bfdcga debgf fde gfeadb de dabfce fbadg ebcgf dega bfaegdc | cefbdga dega dgbfa cgfeb +efagbcd gafbed ab gcdfab cgbde cabf cabdg gafdc bda gaefcd | cfba adb egdcb bad +fcbe fcagde bc fcbgd fdgbec fdgab degcf bcadfeg gdeacb cbg | fbagcde efdbcag gdfba abgfdce +bdfac cedfa cabdgf bdgafe cdfbega dcabge fba fgbc bf adcbg | gabcfd afcdb beadcgf eadcgb +cb edcfa aedbc dgbfea bdc cgeb adgfbec edagb cfbagd cgadbe | bdc cedba bfgceda bc +fdbca badgec gbf cgaeb gf fcebgda bfgac dafbge cafbge gcef | baegc gfb fbg gbf +dbafce daecb bgdca edbgfa abg egcdab ecga cgdbeaf dcbgf ga | bag ga cage cfbgd +eacfbgd cbagdf dbegcf edac fgceda gaefc cgfed gbefa ca fca | faebg bagfe gfabced acf +fde edbca cdgfba ef gadfebc bfagd efdba bfge efabgd edgcfa | fegb bacgefd gbef bgdafc +bcgdf gbdeca ebcgfa fcgaedb agdfb dfce cfg fc ebdfgc cedgb | cfg cf cgf cedgfb +bfega cafdbe adfcg dfabgec fdb db dagbf gaefbc afebdg bged | bfd gdeb gbed bfdagec +facgbe gbdefc egfcd ceadg efdb cef dbfcga bdgcf ef fgdaecb | bdfegc fe edfb cef +bfad dagbc cbd fgedbc dgcea degbafc dgbacf agbfc bd cgfaeb | db dcgafbe dacgbf dfba +cdbae acfe gcfadeb ead ae degafb bfcdga beadfc bcdge acbfd | fdebcag dfbac ae ea +bdgfac ga gfae cga bceadfg agdec fcead bgdce afdebc eadgfc | cga ga faeg facdbeg +af afb bcdae ecbfg feabc cdfa bgedac egdafb fcadbe eacbdfg | cabef afb gecfb cagedb +abgcde fbd bdeaf df cdeagbf dbgfae facbe dbage cefbdg gafd | dgbacef df febdcg df +egdbaf bcafg gedab fe efg ecafgdb bcgdae gacfde bgaef ebdf | bfedga ef cfgaedb bdaeg +bfe ef fgebadc deagb feadb caef cegdfb cfbad ebacdf cdfabg | cdabf fcedba dcgbaf afgbecd +dec gacfd geac ebgfd ce fdegcab edacfg dfceab bdgafc edfgc | cega geac dce ceag +cbfdge cebag efa febgda gbdef fa dfag agfbe fdaecb befdacg | febga baegcfd aefbcd agdf +fgdcba bdcaef gaf bcga dgfac ga gdcef cfdab gfdeba gfbceda | cabfd ga gfa cgfad +gdaef fabdceg fgdcba gcd acbfd cbfg cgdeab dfgca cdefab cg | begcad fgcb fegda dacbfg +efbdg gfad bfadgce deafb da fbaec ead debcfg bdafge ecdbag | acgdfbe dea eda bafgdce +gcb efcadb cgfdb bg dbag gbfdeac cagbdf bcadf egfdc abecgf | cagfbd dfacgbe bg bgda +ab fedba ceagdbf dgbef afcde bdca cgeabf afbecd aeb aegcdf | cbda egafcb abe dfcea +acgbde bcag fcbged bec dfeab ebadc bc ceagbdf gdaecf aegdc | abcde gcba ebc ecb +bacgfed ecafgb gefbc agfedc fbeag fegdba fcg dcgbe fc bcaf | gebaf facb gbefca cegbfda +dfebgca daceg beadgc bcgda gebd bag fgcade gcfeab gb cadfb | dbge gdeac bag acdgb +cefg bfcda eacgbd bdfcg cgedfb geafdb cg cdg fegbd fceagbd | fcdgb gcdbf cdbfg cg +febc cgdaebf gedbf bf fgade fdcbeg bdagcf bgcade cgbed gfb | gfdbe fb cbegd ebdfg +ed bacdge dafgbce gaedb cbgafe fabgd deb cbgae gdec efbdca | deb ed degba acbgdef +gcfdba gbadf cb dbgcae cefda bgadecf efbagd abc fcgb afcbd | cb bfcg cdeabg cbfg +bfcedg bcedaf bfecgad efbad aefc ce degbaf bce aecbd cgbda | bafdce acefdbg dbfecg cbe +bf cdbef bef gcfb ecgadbf debfcg bgadef cbdea afecgd efcgd | gfedcba gedfbc edbca efgbda +becgaf fbedcg dgbef defcb gbf begda cfdgeba dfbace dgcf fg | degab fgcd gbade gdfeb +fbecdag edafc ebdfc aecb fabcgd bfc bc ebdacf cgeafd bgfde | bc fcb cb eabc +bdegfa daefb dgbacf dcfagbe cdeab fgeab efdg gfcbae fd adf | afd eabcfdg adf df +efcabd gdfec bgdcae acegb db cegdb dbag deb bfgace fadbceg | deb bed gacebd gcedb +adb bdeagfc adgce cfdbe fbae ebacd cagfdb bdcgef ba adbcef | dab edfcagb ab aebf +caed cga dgceb edfbcag gcaeb bgaef ca gbecad gdcbaf cedfgb | cdebfg eacgb gac dcegb +cdbeag bagfc aef dbeagfc fabdec bedf gcfeda febac fe baced | efbd afe acdegb cadebf +aecfd cbedf bd cbafgd ecgfdab dbcgef gebd aebgfc bcfge dbc | dbc dbc fbgaec dbc +cfdgae fgacd ga dbcfa bgfced dag gfedc daecbg gafe ecgafbd | dgfca cfadg acefdbg ag +degba gecbad gbcfead deafgb gafedc gec gbdc ebcag cg cfeba | gce afecb gce gce +debf gcfdb ecd dgbcaf eabcg ed dgfcbe agcdfe bgedc gbcafed | cgdfaeb gcbfd dacbfg fbed +bg gbed abceg cegfa fgaebcd cbgadf bga decbaf gedcab acdeb | cadebf gba abg abcegd +cafbdg bfaeg fgedab bgafecd gab befcg adbe ecagdf edfag ba | beda afebcdg eadb dfecagb +fdebc ge edbcaf fbdagec dfebg cegd gcfdeb gbfaec dbgaf beg | ebg bge ge dceg +becad gbcdafe egcdfb eafcb degcb fbcgda agde adb badgec ad | facbgd afceb fbeca badgfc +gdfac fadgbec cef ec bdgfe agfceb fcdeg gefcbd defgab edcb | abgedf eadcbfg dbgecfa fgebdc +ebfcdg cgdbaf gdbfc bdec debfg febga edfgacb def facgde de | gfcbad cebd ebcd fdgcb +feg faedc afdebg ge bgcafe gdcabf edgb gdfea dfbag efdbacg | gedb eagdf egbd gfbad +eagdc gabedc cebdf gfc gadbfc edfcbga fcegd gdefca efag gf | fg fcg adegc edgfc +fde fgedc cbdafe agefcb fagdce gfda efacg gbcde fgdecab fd | eafgcb cgfdeab cgfae efd +afdegc dec dc ebcfad bceagf ecfag becdgfa gbdea gaedc gdfc | ced acbgedf gabde faebcd +efdacgb cdagf cdegb egcdfb bf dcfbg cbfe gebcda bfadeg fbg | cbgdae gbf bf ebcf +bdcfe cfdbga dec eabgdc caebfd ce fagcbde efac bdacf ebgdf | fadbgec cde aecf cde +acgfdbe bceda bdgac fgcabe cebfa dbe eafd fbdceg dbfeac de | acfeb cagbfe feda aedf +cd adgcfb adgc dfabce fdbgace gbdfea dfabg dfgbc dcb gcbfe | bcd badfecg cd gfeabdc +bedc cgbdfa ec cge efdagc dgacb acgdeb agfbe bcage baecgdf | gce cedb ce cge +fagecd gdfb ecgab fcbgade fcdge bdgce eadbfc gbecdf bd bde | gdecfab cedgf gbace abcfde +debf fbc fcgeab dfgec dgacfe debgcf dgcfb bf cbdga aebdfcg | cdgefa adcefg dfbe agdefbc +bcafe bdga debgacf ecafgd ad ecbgdf bfcgd bgfdca cad bcdfa | aefgcbd acdegf eagfdc ad +fbdce de fcbdg bfecad cfaeb adegcb facedgb bde faed bfaegc | cfdbg afde fadbec bde +fcdgbea cfe cebgf fe fbcdg abcge dbfe gfdbce dgcafb fdgace | eafdgc fec fce cef +fagdebc fcbdg ba adecbf dgebcf cbga edagf bad agfdb gfcdba | fgbcd ab dcfbeag ba +efgadc gbeac fadebg gbaef gec dabce cgfaeb bgfc gc fdacegb | begdfa gc gc fcbg +ec fgbde befgda caegfbd agbcd bdcgef egc bcfe dcgeb edcfga | gecadf gadbcef ebgcd dgefb +cfadgbe cdef ebagdc cadfb cfbade afbde deb gdcbfa aebgf ed | dbe decf ed ed +ef fcae gdbeac bcedgf def ebfacd edbac eacbfgd bfdae dbagf | eabfcdg dfe edf bcdefa +bafgd dc gdebacf decg fagedc cad gcdaf egacfb aecgf aedfcb | ecgd bgafec acd bcedaf +fcegb dafcgb bgd bagcdfe gfebd fdbae eagfbd gd edga aedcfb | dfgbea gdb bgd fbgacd +dec cgebaf fdgc afedbc dgbce cd fgbdce bcgfe egdba ebafdgc | bacedfg gbacef dgcf acbfed +edfgab bgeaf eacbfd ebcagd dafbegc afe gfde bgfca fe eabdg | ef afe cfdeab abegd +ae egbaf eacg gdfecb bacdef efbcg adcfbge fae dfabg ecfagb | agbef cbefag eaf adfcbe +gce edfgbac dgefac fcega adcebg fagcd fgdbca aecfb ge fgde | degf egfac begafdc eg +ebacd gdace bc bdefa gdefac eafgdbc ecgb dcb ecbadg dcbafg | dbc ceagdb gbdacf cdb +aecdb bfae gcefd af cdafe fda eadfbc gabcdf begadc cabdgef | edcgfba acgbdfe cadbefg afd +cad cefadg geacbfd debag cbag egbdca ca cdabe eagbdf ecbdf | ca cda acd cgab +cbf adcgb dbfa bf fdeabgc eacdbg fabcg fgaec ebcfgd fdagbc | gcdfbe cgafe bfc agdcb +dfeagc dacgf fdcea bdgacf defbga aefcb dgce ed dae adfbcge | cedg afegbd gfbceda eabdgcf +egacd ebdgfc fc cfg dcfgea cdfa dgaecb efbag aegcf bgecdaf | cgf fc cbdega badefcg +gedb fgabc adfbec bfedag dbafg dfcgabe gfd adgefc gd dfabe | adgfbe bfcgade gdf fdg +deg fcgbdea gdbacf cgbade bfgcd fcaed fdgbce fgeb edcfg ge | ge gfeb gbcdfa gebf +cdfag ebfdgac ecga gfade bfdeg gfacbd gdefca ea afe adfecb | ecga abcgedf dcfabge efa +gadebcf aebg bdgac fdbac dcage bg acedbg dbg efgdcb egfdca | dgb bage ecfgadb gbd +ecfd efgcb dcgbf fcbdga afdgcbe gfe bgedfa dcbgfe cgbae fe | fge ebfcdag bgeca cdef +dfbgca dfbac ebgfdca abefd ebdgac fcgbd ca cab cfag fedgbc | cgaf bedcgaf gbcfd bac +begfac faedc fedcb fecdga dcbgefa fegca adc dega cbafdg ad | da adc ad cda +cebgdf fegdb ea efgabdc gcbda bdgea ebgdaf dcagfe bfae ead | ea ade cegdfab bfgaecd +aefcbdg dbafg agdeb agfcbd fa adf efcabd gbefcd gfac cgdbf | fa adf af gdbcf +cdgabef bfcaed cdf gcdbf bdgac fc dcebag gcaf bfged afdgbc | cf cgadeb fcd abdfgc +fbcea egfcad dcbf adbef befgca dfa cagfdbe feacbd ebadg df | cfbd dgecbaf df decfba +ebdcg ecbag egbcfd dgc cdefb dbfg dg bacefgd dcefba fgdcae | fbedc fedgac fecadb dg +gcebd gf dafg acegbf fcadb eacbdfg cgf dbagfc dcbfg defabc | dagf agdf egacdfb dfbcga +ebafgd cafdg gbfad bf eacbfd bfa edfbcag abgde cagdbe bfge | cgabed fadbg bcdfea bf +ebdca dgbef facebg fba acdf bdafce daebf cgdebfa gadbce af | eafcgb egcdba gebacfd dcgbefa +gafcdb dfcbe ae bacdg ecfagdb fcageb agde baced deabgc bea | cdgab cdfagbe ae acbde +ecgdf acdg adfegb edc cgdeaf bedgafc dfgae cd bfceg afbedc | cebdaf dce acgd aegfd +ab gdcebf bga ecgbf bdgafce gfbac afdgc cegadb gbefac eafb | fcgad eabf afbe ab +bgefca fd bdegaf fdb debfg agefb gdbcaf afde dgbce dfbeagc | cafgbe fdb dfb dbafgce +febcadg ecabg agdbec dafegb cegbfa baf bfgc bf febac dafce | gfcb fcbg efcad cefabdg +bcgaf bgfcda acbdfge ad bagd dca gfacde bdcef ebfgac abcfd | ad ad agfdec cad +gaefdc dbgfae bd fbd gdefbc cbdef cebfa cdfeg ebcfdag bdgc | bedfc bd gdcfe db +dbgeac fdcgbe eg gace cbaed adgbe gecdbfa gbe fgbda dfaecb | ebg gadeb aegc eabfgdc +bcgde cfgdbe gefc bfg fcdbg fdegab dfcba gf adbgecf bdgeca | bdcge efbdga cegabfd gfb +fcgeb ced cd begcd dbgcae dabeg gdefac gabedf bgefdca bcda | gfbaced aebgd dcab acbfged +ebadg fdbecg cgbfe fabc agf efabgc fa dfaecgb bfgea dagcfe | bcfa fag af cfadeg +ga cbegd fgae fdgaec bfacgd cgade gfecdba adcfe fdbeca gac | acg gacfdeb gefa fedbac +gbe debcf cgdfeab bdegfa agec ecdagb acfbgd ge gcdeb gcdba | egb gbadfec cgae cage +cdfg fgdebca gadbfe cg egfac adgfe egc fbace dcbaeg dfcaeg | ecg gdeaf cgfd gdcf +fagecdb fed gedac cfgd aefcb df gbaedf fcade dgafce geabdc | bfdcega df fd agbedf +eaf af gdeac gfeadb egdbf bafd bdgceaf afegd gefbdc eacgbf | dfab fea fae edgca +ea bgaec fbcge bdagc bcfdeg afdbeg abfegc eba cgbefda ecfa | ae ea bagcd ea +de abegdf dea fdbaceg gdcab dgaeb gfbae cbedaf egdf cbgaef | cebdgaf bfgcead ebcafg dea +cgaefb ca bagdcf caf badc fdgceab dgfea cgfbd cgfad cefdgb | ac bfdagec fca bcedgf +dbefcg bdgacf fegbd ebgc bgdfcea dgb gb aegfd bfdcea dcfbe | bgfdca fgbdca fcdeb bcge +gcadb dbage adbgfc deafbgc cbdf gcd dc eacfgb gdface gcfab | cdg cgbad gfdace gdc +dfc cadg bacfgde cd fagbc gbedf acedbf gfbdc cbefga cbafdg | cd gcdbf cd gbfde +adebf dbgae dfe adfcb gcbfeda ef bgfdae gadecf gfbe dbgcea | bgfe ebdfcga beadcg badcf +eafbgcd bfdcae egfac dbaeg cafegd bfcgae gcfb ebacg cab cb | aedfgbc bc ebdag bgcea +bdace abgdef dfc bdecf fc gbefcd cfegad fcgb degfb dgbafec | dfc dfc gcbf fgabecd +gbfdeca gca gcdb fgebac bcdfag bdface dcbfa agdcf gc afgde | cbadf fcgeab afgdc gbdc +daceg ceg eabg abefgcd ge gbcda gbcedf geabdc adecf fdagcb | fdbceag eg adceg gce +bd acdgb fdegca egadc edgfacb ceabgd gdafeb dgb cbde fcabg | cebd gbd ecbd ecdb +gdeca gcafbe gfecabd ecfd adbgc fdgea dfagbe ec cea gecfad | efgabdc dgabcef cea ce +adefcgb gbfd cbedf gf gefbdc cgfeb acbeg cfbeda fge fcgaed | dbcegf fge egdacf abgfdce +bfegca fdgb fdcga dga fbcga cfbgade dagbec gd caefd cdgbaf | dbceag dgfbeca dbfg cagdbfe +cbad cageb egbdaf cgdbaef da dea efgcd bgcade gaefbc dcage | dea ad ade gcdae +fgeab adecfgb beagcf debafc acbged fb cagbe gefad feb cbfg | badcge bfe fbe bgcf +cbfag bd fdaeg afdbg dba bagdec gbeafd abfegcd dfeb fadegc | abgdec gfbcdae bdgfaec fcgba +eabdgf fadbcg aedcfgb eg bge bagfce bgecf bfced fbgca cgae | ecfgb eagc eg ge +cgab bc abfdec cgefd adbeg ceb fabgde cadegb cbedg bgdeacf | gabc gacb cbag gefabd +bfecgd facdeg bcgfd fd fgcab bcegadf bdegc debagc dfg dbef | cgbdea dfg efbd gdf +bedf debcag abfcg afd acdbe fd dabfc deabcfg abedcf egfdac | efcgda bfde ebdf dabfec +gacbf gdebfc aedfb eg eacfdb egad febag aefgbdc egb gfabed | defba gbe eg eagd +fcdb cgadef bgfcad gabef eabdgc cgb gefbacd bc dagfc gbcaf | bgc bgacf cb dbfc +ebgfcad ebdga efdbac gefacb ge eafbd dgfe bagdfe gbe bgacd | bgedfa eadcgbf beg degf +gfabcd ba abedcfg bfae bca edafc bcade gcfeda efdacb egcdb | ba ba afbe dbgacf +ecdga deagcb gdbe ecgafd gabfced gfdcab gb cbg efcab ecgab | fagcbd dbagecf gbecad deacgf +fegbcd dg gfaedc egafc befgca eacdb edacg ged decbgaf agdf | fedacgb dge dg gecfad +cba abfeg gecabf cfdbae eacgbdf gfca ebdafg bcdeg ceagb ca | eabfg gcaf gafc acegb +dgefc fbgecd bafec da cdafeg fecad dca bfecadg dfga gcedba | egdcf aecdbfg aecfd acd +gdcf afcgbd cad gebda dfeacb fcabedg abgcd bfcag dc abefcg | cdgf cabfg gcfd adgbe +ef cafeb gbcfea agcbdf agbfc gfae bfe cgfbeda bdefcg dceab | eafg dgcbef cfgba bcagedf +eadgcf cadb ac cdbge bcaeg bcdfeg egabf ace fbgcead dbeacg | afgdecb egafcdb cdgefa ca +da bfacg bdfgace adfgbc badc fcdga gdaebf caebfg dga gecfd | fdbaecg ad cdgfaeb fbcdgea +cfd fc gfebacd bdcge cefgd afcged abdfcg acef adfge gdefab | bagfde gaebfd cf cf +dag bdfgac agbc fgbdc fdcgabe ga gbdfce gdafc ecfda bfdaeg | cbfdg bcag dag ga +gacfe aegfcdb fdgca dafcb cedgbf fgd ebacfg dega afdcge dg | gacfe gcebfd aedgbcf dg +cdafb cbfag ecfdba acgdefb daegbc fcgd dcafbg gbc gc aefbg | gbfea gbc cgfd cabefdg +bcdeg cfeabd fc afgc gecdf gdefab dgecaf efc bdaefcg egdaf | gbfaed efdcg bgecd dbagecf +cdeb cadgfb dagcb deacgf bgfae aebdfgc badeg eda aebgdc ed | ecbd fageb ebcd ed +cfde eacgfd gaefc agbdc gcdaf edgfba cebgaf gbcdefa gfd df | cfde fgd ecfd df +egfdb fgadc bgc cb cafdebg ecfgab cdab ceafgd bfgcda cfgdb | cabd ecdabgf adfgc egdcbaf +edcbagf fa gdcbea egcfd aecbd fadce adf ebafdc gbafed fabc | ebgdcfa daf acebd dcfge +bdfec cg dabegc cgbde fcegbad dcagef abcg cge dgfabe badeg | bcfed bacged gc cgadfbe +dagbf fbgdc fcbaed geaf ga ebadcg agd begafd cgedafb afbed | fgcdbea fdeab fdabe dga +fae dacfeg cade acdfbg ea dacefbg gcfabe cadfg degaf fbdge | bdafecg afdge fceadg fgbceda +becagdf gabfce gb bfdca agb dbgafe agfec egbc cegfda gcbfa | cgbe bga bdgeaf faegc \ No newline at end of file diff --git a/2021/inputs/9 b/2021/inputs/9 new file mode 100644 index 0000000..bb52fc9 --- /dev/null +++ b/2021/inputs/9 @@ -0,0 +1,100 @@ +0197653456789987679545987978921245689901497654212455689767899878999979653246892123569876467899212346 +9989542349899986578959976557890134599892398943201234678956789467989867932135789012398764345678923456 +8679931298999765459898765445921247987689459865432345889345892399876546899013894123459976569799634577 +6567895497998764345789543239895456797535967976545467891234989989865434598954993248969987678999545798 +8456897986539975234568955398789967998212899597676578910395678979996423987895789356798698799997656789 +7357899765624987356979967997678899876323795498789789929989989968989219876789998767986569899998867899 +6479998654012998487899879886456799985434589349899897898879899757878929865699989878987461939879878989 +7989876532129876598967998754347899876545679299965945977569798436569197654389876989986320129865989778 +8995987644234998679459899975456943987656798989654326965497656424459298796578965699875431234979998568 +9424987654346789789348789986567892398767987878943219876989843212348999887679873579987549345698976457 +5313598789556999893245679987679921299899656667894398989878964301237899998995432123597698996987665376 +2102459898967898987656799998789992989998943456789497898957896324356789449789521012398987989976554245 +3213456997998967899878978969899789978997432347899986787545697534458891234689942123789976879876432156 +4323569876899756799989569956987698766986421566789995631234789947669910123799893454569895366999943018 +5444567985679534789991349899996569645977310145679864320123456898978954394569789965698789245987894236 +6565979874599323567890198798989459759864321236799998432335679999989796989998679796987679123976789345 +8989898765678901378932987567868969898765462347899876543479895695395689879876534599876568999435899456 +9998719876789323489649876476457890949976574456789987687568996989987899965432123489985389987645998767 +2987624989898754599656975324348991234989675778892399898978989878998999996542014678976498998757899898 +1298545699999865987999764210235689946798776799999567999989879767899998987843124789998567899969999919 +0987656789989986976889754321347999899989987898898998999997665456789987698764434999987689921399989101 +1398777899874197975678965432456789678976898987686889989876556345999876549978556789998995439978976992 +2349889999963098984568977949767894569865789997575679764986433235794989998989678997899986598867895889 +9456992198742129799679989898979913598754657896434768992096520145693199877898789245999999987656954678 +8967921098653245698789998767892102987653235789123456789989321238789098965459890129878998654347893557 +7898943459854756999895987658943213498732126789012567999878932456896987654323991298765579543238912345 +6799854598769867899954398769654324596543245899923456898969896577945698763212679987573498764369543467 +5679767699989998999863239878965735987654376799899767987756797689434997853101598765432349878456976568 +3568979987899769998943143989876896798765797895798979765645989995319876543213459898543556997567898679 +2389998976598643987521012398997997999897898954687997654236978894201998765325578987656789698689998789 +3567897895498656799432123567898998988999969543456789894399769799213459876736789998967896569799999894 +7678976789329767987993544679999999976987654312398999975987654568924599987858998999989999678998989943 +8799235699901989876789795889989988665398979103456789989999543457895987698969987894595698999987867932 +9890123988892398965678976999869876543239898919767896799988651367939876459878976943203497899876756891 +9921299876793987834779998998754989654198787998998924999977520179923984369989645894312986789765347799 +7549987975899875324567999989965999965987676797899212398765421467899865458999786797324975678963235678 +8998975986921965434678999878899899878986555656899404459875432348954986567899897896439864567942124579 +9397654599899876645889889756789789989299434346798912346986545699843298789921998999598963878921023459 +3298943498765987856795679847679678990198621234567895487987659789765109899910139998997654989542434678 +9099894598654398967894599934533467799986532345998987579298767999953212999891239997549765698656547789 +8989789999763219878962378921012345678987543456789598690129899459895629989789398876839876789767656896 +7677679899972102989754569532133469789098658597999439789436943245789798765679987654324987999898867997 +8564576789989743499895678943544678993129867998998929896545692134567999954399999976786798956999999898 +6432345894398654899998789654665689943248978969987899987657789029989898899498763987997899235689988789 +4321434899298776789359898765887799894356989653656789898767892198898756798979942199998989957899975678 +5210123678929898995498979876798988789987996542345896789878954987668645987668893267999777898998654589 +7491234579012999976987567987899576699999876431556965432999979876557539875456789346789656899998785699 +8989955689129899897896456798954324598999765432369994321023498767432129654321239997894347912989898789 +9979896793298766798989399899765945987899976545498789432344987654321098768732997899965456899876989899 +8765799975987654899878989939879869876789899876987687993656798765534129879549876799989567899765674999 +7654567899998432398765779019989998765456798987899456789767929876656434999656965689997698969874323478 +8652089998998657989874568998999879876789897798998767898979213987767849878969854569998789754985412567 +7643578997899869876543457897998765998995965679349879937698923998878997667898773237899997642195423456 +8654689976879878988764598976899654959123987890199995326457899879989986456899632126789999654987689587 +9869789865767989899875789655698969843234899989987654215345989768999965345798543234567898767998789678 +7989897654656798797976789434987998764345678978998754301234569654569874237997656346678999898959898789 +5496987643235897656987894324996889875456789867929865456345978943349752146789866457789999929234999893 +4345695432124569547898989209875679876568997657813987678456989432198643256789987667899989910126798912 +6456789643097697667969679213986789987689598543101299899568996543398764469899999788999876899437987893 +7767998764989899878954598929987891298795349959212349998699569756459895678978999899998765698948976789 +8998939875978999989543987898998992999894239898923598979789459867968998799567987999765984567959865990 +9769323989865989995432496787899989799930199796899987869894324989899879899979876898754323678999754891 +7653212399754779996531985656799877679321987645678975456965455798799864999899985789543210989988966789 +8874309987653656789699764545689954578939998437899986345896596987678972989768994898764439899877899891 +9986498767321247899987653434599843467998992123789997956789989876567899767957989959765998765656789910 +6598987653210345929876432125987656567897789035679989898899976995459998951345679349879876543234898923 +5329998654328456913998521016798767878976578997799878789999895976599987530123489219989998932123567899 +6910989865987667899876543223569899989895456789912965689998754698679987621238999998994987543234589998 +9899878997898898945987956334689991398774346999899754678987543549989986532357898897892198656357678947 +5798769898999959321398967456789889987653234987678943789995432125798998754588987646789098765458789435 +3987656799986543210179878997995679876543129876567965699864321013457999885678996535899199876768997623 +9886545678999654322457989598933598765431098965459899789765532134567892976989987323988989997879789794 +8765434567998768473578992349212399979532987653217678999898643246789921987896795439976578998997678989 +9876323458999898764679874459323989998754987632104569632987654356896439898945987698765489899989539878 +9988434567899999989789765598994978999875698544323689541098765467989597659139898987654346789878910167 +9876575878999888999899877987689767891986987698765678932129876579768987543298769499874234679967892345 +5987689999998767999910998976598756990197898789879889543234987678957897654369754398765645698856789756 +4398794599987656789999999896432646789298989990989997654345798999348998976456963219879896897645679877 +3239895989876543498987798754321434567999876421299598766987899621298999986569876323989999982123899998 +6345999876987432567975649865410124567899996542998439987898999542456789998998765456899998765236789439 +5456899865697643778954234987521234679988889959886724398999997663968997899129976568999899874345689321 +6667897654987654567892123498435345898767767898765410279899989789899466789298799789998776965456797452 +7979999743598775799954294999545456998656656999874321456789878998791245679989578999886565978967896543 +8999898995679896987968989899876569876535345789975432357899869876589387889875465789765434989878999964 +9988757989789997896899876789997879854321236789997549456798756982468998998753234898954326499989198895 +9876545678992198975798765679998997653210147999989698967898743210178959769942102457893212389991096796 +2997626789999019424597654568939298764321256899978987998987654321389543457943212967894345678992985689 +1459739899898929013698742379029109885454345998765676899998765434499872129874567898965566989989864578 +0296547998767898924797653489198999996965456789653235789999876595578953298765678999899789899876943456 +2987656789248567895679854579987689999876787995432123567899987989989875459876789989789898679875432345 +3498779893123468976789765678966578899989898954321012345678998979899976569987899876678987598765320156 +4999889954564567897899897889656466789999979765432125767889219856789989878999998534567895459876431345 +9876998795778678998999998996542345678999865986544234579995439767998799989998996545698954346997532666 +8965345696889789129989329986421234899999754397655655678976546978945679999986989676789876234598754598 +7844236789994998998778939765410125679989653298786769889999656989234567899975879989893986356798768789 +5432125679553456986567799877321236798979790129897878999998987993123458998764567993912995467899989899 +6594034689432349987434567986432347897857989245998989988877999899012367899653467892199876878901498967 +7689125678944498975412798987685498986546679956789899876456997688975457998762345993987989989892397756 +8794234789656987654323689999886579873234567897896797984349876567896569874321235689976492198789976546 +9895345998767899875454568923987689764356678998965986543212987678987698765210123498654321013567894324 \ No newline at end of file diff --git a/aoc b/aoc index 77d07a6..1c4cd69 100755 --- a/aoc +++ b/aoc @@ -1,2 +1,2 @@ #!/bin/bash -NODE_INSPECT_RESUME_ON_START=1 node inspect out.js +NODE_INSPECT_RESUME_ON_START=1 node inspect out.js $@ diff --git a/cat.sh b/cat.sh index 80cc14b..b5d812e 100755 --- a/cat.sh +++ b/cat.sh @@ -1,3 +1,3 @@ #!/bin/bash -cat dll.js pt.js grid.js binheap.js graph.js proto.js utils.js repl.js > out.js +cat dll.js pt.js grid.js binheap.js graph.js proto.js utils.js test.js repl.js > out.js diff --git a/grid.js b/grid.js index ef2ac8c..d75990d 100644 --- a/grid.js +++ b/grid.js @@ -101,7 +101,7 @@ Grid = class Grid { findAllIndices(func) { func = typeof func == "function" ? func : (e) => e == func - let points = [].pt + let points = new PointArray() this.forEach((e, pt, grid) => func(e, pt, grid) ? points.push(pt) : 0) return points @@ -119,7 +119,7 @@ Grid = class Grid { return this.findIndex((e) => e == val) } - contains(pt) { return pt.x >= 0 && pt.x < this.width && pt.y >= 0 && pt.y < this.height } + contains(pt) { return !pt.is3D && pt.x >= 0 && pt.x < this.width && pt.y >= 0 && pt.y < this.height } getAdjNeighbors(pt) { return pt.getUnfilteredAdjNeighbors().filter((pt) => this.contains(pt)) } getAdjNeighborsIncSelf(pt) { return pt.getUnfilteredAdjNeighborsIncSelf().filter((pt) => this.contains(pt)) } @@ -140,15 +140,15 @@ Grid = class Grid { static BFS_END = 2 bfs(pt, func, neighbors = "getAdjNeighborsThat", limit = 1000) { - let visited = [].pt - let toVisit = [pt].pt + let visited = new PointArray() + let toVisit = new PointArray(pt) let count = 0 let end - toVisit[0].path = [pt] + toVisit[0].path = new PointArray(pt) out: while (toVisit.length > 0 && count++ < limit) { - let newToVisit = [].pt + let newToVisit = new PointArray() toVisit.sort() diff --git a/out.js b/out.js index 8016de8..f2eb90f 100644 --- a/out.js +++ b/out.js @@ -171,12 +171,15 @@ DLL = class DLL { } Pt = Point = class Point { - constructor(x, y) { + constructor(x, y, z) { + this.is3D = z != undefined this.x = x this.y = y + this.z = z } - equals(pt) { return this.x == pt.x && this.y == pt.y } + equals(pt) { return this.x == pt.x && this.y == pt.y && (!this.is3D || this.z == pt.z) } + isIn(arr) { return this.indexIn(arr) != -1 } indexIn(arr) { return arr.findIndex((pt) => this.equals(pt)) } lastIndexIn(arr) { return arr.findLastIndex((pt) => this.equals(pt)) } @@ -189,6 +192,8 @@ Pt = Point = class Point { upright() { return new Point(this.x + 1, this.y - 1) } downleft() { return new Point(this.x - 1, this.y + 1) } downright() { return new Point(this.x + 1, this.y + 1) } + above() { return new Point(this.x, this.y, this.z - 1) } + below() { return new Point(this.x, this.y, this.z + 1) } u() { return this.up() } d() { return this.down() } @@ -199,37 +204,167 @@ Pt = Point = class Point { dl() { return this.downleft() } dr() { return this.downright() } - getUnfilteredAdjNeighbors() { return new PointArray(this.u(), this.l(), this.r(), this.d()) } - getUnfilteredDiagNeighbors() { return new PointArray(this.ul(), this.ur(), this.dl(), this.dr()) } - getUnfilteredAllNeighbors() { return new PointArray(this.ul(), this.u(), this.ur(), this.l(), this.r(), this.dl(), this.d(), this.dr()) } - getUnfilteredAdjNeighborsIncSelf() { return new PointArray(this.u(), this.l(), this, this.r(), this.d()) } - getUnfilteredDiagNeighborsIncSelf() { return new PointArray(this.ul(), this.ur(), this, this.dl(), this.dr()) } - getUnfilteredAllNeighborsIncSelf() { return new PointArray(this.ul(), this.u(), this.ur(), this.l(), this, this.r(), this.dl(), this.d(), this.dr()) } + getUnfilteredAdjNeighborsIncSelf() { + if (!this.is3D) { + return new PointArray( + this.u(), + this.l(), + this.copy(), + this.r(), + this.d()) + } else { + return new PointArray( + this.above(), + this.u(), + this.l(), + this.copy(), + this.r(), + this.d(), + this.below()) + } + } - add(pt) { return new Point(this.x + pt.x, this.y + pt.y) } + getUnfilteredWingNeighborsIncSelf() { + if (!this.is3D) { + console.error("Can't get wing neighbors of 2D point") + } + + return new PointArray( + this.u().above(), + this.l().above(), + this.r().above(), + this.d().above(), + this.ul(), + this.ur(), + this.copy(), + this.dl(), + this.dr(), + this.u().below(), + this.l().below(), + this.r().below(), + this.d().below()) + } + + getUnfilteredDiagNeighborsIncSelf() { + if (!this.is3D) { + return new PointArray( + this.ul(), + this.ur(), + this.copy(), + this.dl(), + this.dr()) + } else { + return new PointArray( + this.ul().above(), + this.ur().above(), + this.dl().above(), + this.dr().above(), + this.copy(), + this.ul().below(), + this.ur().below(), + this.dl().below(), + this.dr().below()) + } + } + + getUnfilteredAllNeighborsIncSelf() { + if (!this.is3D) { + return new PointArray( + this.ul(), + this.u(), + this.ur(), + this.l(), + this.copy(), + this.r(), + this.dl(), + this.d(), + this.dr()) + } else { + return new PointArray( + this.ul().above(), + this.u().above(), + this.ur().above(), + this.l().above(), + this.above(), + this.r().above(), + this.dl().above(), + this.d().above(), + this.dr().above(), + this.ul(), + this.u(), + this.ur(), + this.l(), + this.copy(), + this.r(), + this.dl(), + this.d(), + this.dr(), + this.ul().below(), + this.u().below(), + this.ur().below(), + this.l().below(), + this.below(), + this.r().below(), + this.dl().below(), + this.d().below(), + this.dr().below()) + } + } + + getUnfilteredAdjNeighbors() { return this.getUnfilteredAdjNeighborsIncSelf().filter((pt) => !this.equals(pt)) } + getUnfilteredDiagNeighbors() { return this.getUnfilteredDiagNeighborsIncSelf().filter((pt) => !this.equals(pt)) } + getUnfilteredAllNeighbors() { return this.getUnfilteredAllNeighborsIncSelf().filter((pt) => !this.equals(pt)) } + + add(pt) { return new Point(this.x + pt.x, this.y + pt.y, this.is3D ? this.z + pt.z : undefined) } addMut(pt) { this.x += pt.x this.y += pt.y + + if (this.is3D) { + this.z += pt.z + } + return this } - sub(pt) { return new Point(this.x - pt.x, this.y - pt.y) } + sub(pt) { return new Point(this.x - pt.x, this.y - pt.y, this.is3D ? this.z - pt.z : undefined) } subMut(pt) { this.x -= pt.x this.y -= pt.y + + if (this.is3D) { + this.z -= pt.z + } + return this } - squaredMag() { return this.x * this.x + this.y * this.y } + squaredMag() { return this.x * this.x + this.y * this.y + (this.is3D ? this.z * this.z : 0) } mag() { return Math.sqrt(this.squaredMag()) } squaredDist(pt) { return this.sub(pt).squaredMag() } dist(pt) { return this.sub(pt).mag() } - readingOrderCompare(pt) { return this.y < pt.y ? -1 : this.y > pt.y ? 1 : this.x < pt.x ? -1 : this.x > pt.x ? 1 : 0 } + readingOrderCompare(pt) { + if (this.is3D && this.z < pt.z) { + return -1 + } else if (this.is3D && this.z > pt.z) { + return 1 + } else if (this.y < pt.y) { + return -1 + } else if (this.y > pt.y) { + return 1 + } else if (this.x < pt.x) { + return -1 + } else if (this.x > pt.x) { + return 1 + } else { + return 0 + } + } - copy() { return new Point(this.x, this.y) } - toString() { return this.x + "," + this.y } + copy() { return new Point(this.x, this.y, this.z) } + toString() { return this.x + "," + this.y + (this.is3D ? "," + this.z : "") } } Point.NONE = new Point(null, null) @@ -342,7 +477,7 @@ Grid = class Grid { findAllIndices(func) { func = typeof func == "function" ? func : (e) => e == func - let points = [].pt + let points = new PointArray() this.forEach((e, pt, grid) => func(e, pt, grid) ? points.push(pt) : 0) return points @@ -360,7 +495,7 @@ Grid = class Grid { return this.findIndex((e) => e == val) } - contains(pt) { return pt.x >= 0 && pt.x < this.width && pt.y >= 0 && pt.y < this.height } + contains(pt) { return !pt.is3D && pt.x >= 0 && pt.x < this.width && pt.y >= 0 && pt.y < this.height } getAdjNeighbors(pt) { return pt.getUnfilteredAdjNeighbors().filter((pt) => this.contains(pt)) } getAdjNeighborsIncSelf(pt) { return pt.getUnfilteredAdjNeighborsIncSelf().filter((pt) => this.contains(pt)) } @@ -381,15 +516,15 @@ Grid = class Grid { static BFS_END = 2 bfs(pt, func, neighbors = "getAdjNeighborsThat", limit = 1000) { - let visited = [].pt - let toVisit = [pt].pt + let visited = new PointArray() + let toVisit = new PointArray(pt) let count = 0 let end - toVisit[0].path = [pt] + toVisit[0].path = new PointArray(pt) out: while (toVisit.length > 0 && count++ < limit) { - let newToVisit = [].pt + let newToVisit = new PointArray() toVisit.sort() @@ -1048,6 +1183,41 @@ utils = { createGridArray: (w, h, fill = undefined) => Array(h).fill().map(() => Array(w).fill(fill)) } +if (typeof window == "undefined" && process.argv[2] == "test") { + const fs = require("fs") + + const year = "2021" + + for (let i = 1; i <= 18; i++) { + const func = require(`./${year}/${i}.js`) + const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8") + const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n") + + let res = func(input, false) + + console.log(`${year} day ${i} part 1: Got ${res}, expected ${answers[0]}`) + + if (res == answers[0]) { + console.log(`${year} day ${i} part 1: SUCCESS`) + } else { + console.error(`${year} day ${i} part 1: FAIL`) + process.exit(1) + } + + if (i != 25) { + res = func(input, true) + + console.log(`${year} day ${i} part 2: Got ${res}, expected ${answers[1]}`) + + if (res == answers[1]) { + console.log(`${year} day ${i} part 2: SUCCESS`) + } else { + console.error(`${year} day ${i} part 2: FAIL`) + process.exit(1) + } + } + } +} if (typeof window == "undefined") { debugger } diff --git a/pt.js b/pt.js index ede753c..c543bc6 100644 --- a/pt.js +++ b/pt.js @@ -1,10 +1,13 @@ Pt = Point = class Point { - constructor(x, y) { + constructor(x, y, z) { + this.is3D = z != undefined this.x = x this.y = y + this.z = z } - equals(pt) { return this.x == pt.x && this.y == pt.y } + equals(pt) { return this.x == pt.x && this.y == pt.y && (!this.is3D || this.z == pt.z) } + isIn(arr) { return this.indexIn(arr) != -1 } indexIn(arr) { return arr.findIndex((pt) => this.equals(pt)) } lastIndexIn(arr) { return arr.findLastIndex((pt) => this.equals(pt)) } @@ -17,6 +20,8 @@ Pt = Point = class Point { upright() { return new Point(this.x + 1, this.y - 1) } downleft() { return new Point(this.x - 1, this.y + 1) } downright() { return new Point(this.x + 1, this.y + 1) } + above() { return new Point(this.x, this.y, this.z - 1) } + below() { return new Point(this.x, this.y, this.z + 1) } u() { return this.up() } d() { return this.down() } @@ -27,37 +32,167 @@ Pt = Point = class Point { dl() { return this.downleft() } dr() { return this.downright() } - getUnfilteredAdjNeighbors() { return new PointArray(this.u(), this.l(), this.r(), this.d()) } - getUnfilteredDiagNeighbors() { return new PointArray(this.ul(), this.ur(), this.dl(), this.dr()) } - getUnfilteredAllNeighbors() { return new PointArray(this.ul(), this.u(), this.ur(), this.l(), this.r(), this.dl(), this.d(), this.dr()) } - getUnfilteredAdjNeighborsIncSelf() { return new PointArray(this.u(), this.l(), this, this.r(), this.d()) } - getUnfilteredDiagNeighborsIncSelf() { return new PointArray(this.ul(), this.ur(), this, this.dl(), this.dr()) } - getUnfilteredAllNeighborsIncSelf() { return new PointArray(this.ul(), this.u(), this.ur(), this.l(), this, this.r(), this.dl(), this.d(), this.dr()) } + getUnfilteredAdjNeighborsIncSelf() { + if (!this.is3D) { + return new PointArray( + this.u(), + this.l(), + this.copy(), + this.r(), + this.d()) + } else { + return new PointArray( + this.above(), + this.u(), + this.l(), + this.copy(), + this.r(), + this.d(), + this.below()) + } + } - add(pt) { return new Point(this.x + pt.x, this.y + pt.y) } + getUnfilteredWingNeighborsIncSelf() { + if (!this.is3D) { + console.error("Can't get wing neighbors of 2D point") + } + + return new PointArray( + this.u().above(), + this.l().above(), + this.r().above(), + this.d().above(), + this.ul(), + this.ur(), + this.copy(), + this.dl(), + this.dr(), + this.u().below(), + this.l().below(), + this.r().below(), + this.d().below()) + } + + getUnfilteredDiagNeighborsIncSelf() { + if (!this.is3D) { + return new PointArray( + this.ul(), + this.ur(), + this.copy(), + this.dl(), + this.dr()) + } else { + return new PointArray( + this.ul().above(), + this.ur().above(), + this.dl().above(), + this.dr().above(), + this.copy(), + this.ul().below(), + this.ur().below(), + this.dl().below(), + this.dr().below()) + } + } + + getUnfilteredAllNeighborsIncSelf() { + if (!this.is3D) { + return new PointArray( + this.ul(), + this.u(), + this.ur(), + this.l(), + this.copy(), + this.r(), + this.dl(), + this.d(), + this.dr()) + } else { + return new PointArray( + this.ul().above(), + this.u().above(), + this.ur().above(), + this.l().above(), + this.above(), + this.r().above(), + this.dl().above(), + this.d().above(), + this.dr().above(), + this.ul(), + this.u(), + this.ur(), + this.l(), + this.copy(), + this.r(), + this.dl(), + this.d(), + this.dr(), + this.ul().below(), + this.u().below(), + this.ur().below(), + this.l().below(), + this.below(), + this.r().below(), + this.dl().below(), + this.d().below(), + this.dr().below()) + } + } + + getUnfilteredAdjNeighbors() { return this.getUnfilteredAdjNeighborsIncSelf().filter((pt) => !this.equals(pt)) } + getUnfilteredDiagNeighbors() { return this.getUnfilteredDiagNeighborsIncSelf().filter((pt) => !this.equals(pt)) } + getUnfilteredAllNeighbors() { return this.getUnfilteredAllNeighborsIncSelf().filter((pt) => !this.equals(pt)) } + + add(pt) { return new Point(this.x + pt.x, this.y + pt.y, this.is3D ? this.z + pt.z : undefined) } addMut(pt) { this.x += pt.x this.y += pt.y + + if (this.is3D) { + this.z += pt.z + } + return this } - sub(pt) { return new Point(this.x - pt.x, this.y - pt.y) } + sub(pt) { return new Point(this.x - pt.x, this.y - pt.y, this.is3D ? this.z - pt.z : undefined) } subMut(pt) { this.x -= pt.x this.y -= pt.y + + if (this.is3D) { + this.z -= pt.z + } + return this } - squaredMag() { return this.x * this.x + this.y * this.y } + squaredMag() { return this.x * this.x + this.y * this.y + (this.is3D ? this.z * this.z : 0) } mag() { return Math.sqrt(this.squaredMag()) } squaredDist(pt) { return this.sub(pt).squaredMag() } dist(pt) { return this.sub(pt).mag() } - readingOrderCompare(pt) { return this.y < pt.y ? -1 : this.y > pt.y ? 1 : this.x < pt.x ? -1 : this.x > pt.x ? 1 : 0 } + readingOrderCompare(pt) { + if (this.is3D && this.z < pt.z) { + return -1 + } else if (this.is3D && this.z > pt.z) { + return 1 + } else if (this.y < pt.y) { + return -1 + } else if (this.y > pt.y) { + return 1 + } else if (this.x < pt.x) { + return -1 + } else if (this.x > pt.x) { + return 1 + } else { + return 0 + } + } - copy() { return new Point(this.x, this.y) } - toString() { return this.x + "," + this.y } + copy() { return new Point(this.x, this.y, this.z) } + toString() { return this.x + "," + this.y + (this.is3D ? "," + this.z : "") } } Point.NONE = new Point(null, null) diff --git a/test.js b/test.js new file mode 100644 index 0000000..e78fb54 --- /dev/null +++ b/test.js @@ -0,0 +1,35 @@ +if (typeof window == "undefined" && process.argv[2] == "test") { + const fs = require("fs") + + const year = "2021" + + for (let i = 1; i <= 18; i++) { + const func = require(`./${year}/${i}.js`) + const input = fs.readFileSync(`./${year}/inputs/${i}`, "utf8") + const answers = fs.readFileSync(`./${year}/answers/${i}`, "utf8").split("\n-----\n") + + let res = func(input, false) + + console.log(`${year} day ${i} part 1: Got ${res}, expected ${answers[0]}`) + + if (res == answers[0]) { + console.log(`${year} day ${i} part 1: SUCCESS`) + } else { + console.error(`${year} day ${i} part 1: FAIL`) + process.exit(1) + } + + if (i != 25) { + res = func(input, true) + + console.log(`${year} day ${i} part 2: Got ${res}, expected ${answers[1]}`) + + if (res == answers[1]) { + console.log(`${year} day ${i} part 2: SUCCESS`) + } else { + console.error(`${year} day ${i} part 2: FAIL`) + process.exit(1) + } + } + } +}