diff --git a/day01.py b/day01.py index 012d0cc..635aec2 100644 --- a/day01.py +++ b/day01.py @@ -2,8 +2,8 @@ from tools.aoc import AOCDay class Day(AOCDay): - test_solutions_p1 = [7] - test_solutions_p2 = [5] + test_solutions_p1 = [7, 1602] + test_solutions_p2 = [5, 1633] def part1(self): count = 0 diff --git a/day02.py b/day02.py index 65c13b8..c3dcacc 100644 --- a/day02.py +++ b/day02.py @@ -17,8 +17,8 @@ def follow_directions(path: List) -> (int, int, int): class Day(AOCDay): - test_solutions_p1 = [150] - test_solutions_p2 = [900] + test_solutions_p1 = [150, 2120749] + test_solutions_p2 = [900, 2138382217] def part1(self) -> Any: path = self.getInputAsArraySplit(" ", [str, int]) diff --git a/day03.py b/day03.py index 5436005..4bb490b 100644 --- a/day03.py +++ b/day03.py @@ -3,8 +3,8 @@ from typing import Any class Day(AOCDay): - test_solutions_p1 = [198] - test_solutions_p2 = [230] + test_solutions_p1 = [198, 4147524] + test_solutions_p2 = [230, 3570354] def part1(self) -> Any: report = self.getInput() diff --git a/day04.py b/day04.py index 2339fae..960fad9 100644 --- a/day04.py +++ b/day04.py @@ -47,8 +47,8 @@ class BingoCard: class Day(AOCDay): - test_solutions_p1 = [4512] - test_solutions_p2 = [1924] + test_solutions_p1 = [4512, 58374] + test_solutions_p2 = [1924, 11377] def part1(self) -> Any: numbers_and_boards = self.getMultiLineInputAsArray(join_char=" ") diff --git a/day05.py b/day05.py index d78a701..8d44d6b 100644 --- a/day05.py +++ b/day05.py @@ -27,8 +27,8 @@ def getCrossCount(grid: Grid) -> int: class Day(AOCDay): - test_solutions_p1 = [5] - test_solutions_p2 = [12] + test_solutions_p1 = [5, 6710] + test_solutions_p2 = [12, 20121] def part1(self) -> Any: grid = buildLineGrid(self.getInputAsArraySplit(" -> ")) diff --git a/day06.py b/day06.py index dcd6879..b782683 100644 --- a/day06.py +++ b/day06.py @@ -19,8 +19,8 @@ def evolve_fishes(start_state: list[int], days: int) -> list[int]: class Day(AOCDay): - test_solutions_p1 = [5934] - test_solutions_p2 = [26984457539] + test_solutions_p1 = [5934, 346063] + test_solutions_p2 = [26984457539, 1572358335990] def part1(self) -> Any: start_state = self.getInputAsArraySplit(",", int) diff --git a/day07.py b/day07.py index 5426aaf..f329e58 100644 --- a/day07.py +++ b/day07.py @@ -28,8 +28,8 @@ def getMinFuelUse(crabs: List[int], increased: bool = False) -> int: class Day(AOCDay): - test_solutions_p1 = [37] - test_solutions_p2 = [168] + test_solutions_p1 = [37, 336120] + test_solutions_p2 = [168, 96864235] def part1(self) -> Any: crabs = self.getInputAsArraySplit(",", int) diff --git a/day08.py b/day08.py index ce45609..eb3bcb1 100644 --- a/day08.py +++ b/day08.py @@ -44,8 +44,8 @@ def getDisplayValue(input_str: str, output_str: str) -> int: class Day(AOCDay): - test_solutions_p1 = [26] - test_solutions_p2 = [61229] + test_solutions_p1 = [26, 365] + test_solutions_p2 = [61229, 975706] def part1(self) -> Any: signals = self.getInputAsArraySplit(" | ") diff --git a/day09.py b/day09.py index d9a66e4..54b79c3 100644 --- a/day09.py +++ b/day09.py @@ -35,8 +35,8 @@ def getBasin(caveMap: Grid, start: Coordinate, visited: set) -> set: class Day(AOCDay): - test_solutions_p1 = [15] - test_solutions_p2 = [1134] + test_solutions_p1 = [15, 545] + test_solutions_p2 = [1134, 950600] def part1(self) -> Any: caveMap = getCaveMapFromInput(self.getInput()) diff --git a/day10.py b/day10.py index d038c44..cd63a3d 100644 --- a/day10.py +++ b/day10.py @@ -23,8 +23,8 @@ def parse_line(line: str) -> (bool, List[str], str): # (corrupt, expected_closi class Day(AOCDay): - test_solutions_p1 = [26397] - test_solutions_p2 = [288957] + test_solutions_p1 = [26397, 168417] + test_solutions_p2 = [288957, 2802519786] def part1(self) -> Any: char_scores = {")": 3, "]": 57, "}": 1197, ">": 25137} diff --git a/day11.py b/day11.py index f50541b..d18ba07 100644 --- a/day11.py +++ b/day11.py @@ -33,8 +33,8 @@ def flashGrid(grid: Grid) -> int: class Day(AOCDay): - test_solutions_p1 = [1656] - test_solutions_p2 = [195] + test_solutions_p1 = [1656, 1601] + test_solutions_p2 = [195, 368] def part1(self) -> Any: grid = getOctopusGrid(self.getInput()) diff --git a/inputs/test_input01_1_1 b/inputs/test_input01_1_1 new file mode 100644 index 0000000..d7b0d0d --- /dev/null +++ b/inputs/test_input01_1_1 @@ -0,0 +1,2000 @@ +127 +147 +148 +147 +146 +153 +154 +167 +184 +181 +194 +183 +188 +195 +193 +207 +208 +220 +222 +234 +226 +247 +248 +253 +257 +250 +251 +285 +293 +294 +314 +311 +305 +312 +318 +321 +322 +344 +353 +354 +383 +391 +393 +394 +369 +373 +377 +378 +385 +388 +400 +402 +414 +422 +435 +414 +422 +436 +446 +455 +463 +478 +483 +482 +499 +495 +501 +506 +507 +509 +529 +522 +526 +527 +530 +529 +535 +536 +520 +525 +516 +518 +524 +525 +519 +520 +525 +531 +539 +551 +555 +579 +583 +594 +593 +594 +611 +610 +613 +616 +630 +637 +645 +641 +644 +646 +659 +671 +672 +676 +678 +682 +686 +688 +694 +720 +725 +735 +741 +742 +748 +745 +747 +752 +775 +776 +778 +777 +791 +797 +799 +800 +801 +806 +802 +804 +808 +817 +815 +817 +825 +830 +838 +839 +848 +849 +856 +861 +868 +875 +881 +875 +877 +858 +867 +861 +865 +855 +856 +857 +858 +859 +863 +866 +860 +871 +884 +882 +893 +904 +905 +917 +938 +951 +957 +958 +963 +967 +979 +980 +979 +980 +995 +994 +992 +994 +996 +998 +1007 +992 +1026 +1027 +1019 +1024 +1023 +1039 +1026 +1038 +1045 +1050 +1059 +1056 +1059 +1060 +1057 +1058 +1060 +1072 +1092 +1101 +1110 +1116 +1155 +1166 +1187 +1189 +1190 +1202 +1207 +1208 +1224 +1239 +1237 +1243 +1242 +1261 +1284 +1283 +1284 +1283 +1298 +1287 +1283 +1280 +1277 +1280 +1309 +1314 +1315 +1321 +1323 +1324 +1332 +1356 +1358 +1360 +1363 +1364 +1365 +1367 +1366 +1382 +1398 +1400 +1407 +1421 +1444 +1449 +1461 +1464 +1465 +1471 +1475 +1466 +1475 +1476 +1479 +1494 +1500 +1519 +1521 +1531 +1539 +1533 +1544 +1547 +1561 +1562 +1561 +1574 +1580 +1581 +1588 +1589 +1591 +1604 +1600 +1601 +1606 +1607 +1614 +1599 +1604 +1606 +1605 +1611 +1612 +1615 +1616 +1618 +1619 +1621 +1624 +1639 +1643 +1637 +1644 +1645 +1644 +1639 +1652 +1665 +1677 +1683 +1687 +1694 +1700 +1706 +1696 +1691 +1727 +1728 +1732 +1739 +1751 +1749 +1762 +1774 +1773 +1769 +1770 +1774 +1766 +1767 +1775 +1759 +1760 +1759 +1770 +1776 +1777 +1781 +1782 +1783 +1784 +1785 +1796 +1805 +1807 +1808 +1809 +1810 +1806 +1803 +1805 +1806 +1808 +1807 +1794 +1796 +1818 +1824 +1827 +1830 +1818 +1831 +1834 +1844 +1846 +1857 +1865 +1866 +1888 +1890 +1891 +1895 +1904 +1912 +1910 +1911 +1931 +1929 +1933 +1944 +1946 +1958 +1968 +1982 +1983 +1980 +1957 +1961 +1968 +1966 +1968 +1970 +1975 +1978 +1983 +1991 +1995 +1997 +2017 +2018 +2022 +2025 +2038 +2039 +2042 +2068 +2065 +2068 +2070 +2071 +2079 +2081 +2084 +2085 +2086 +2100 +2104 +2106 +2107 +2116 +2125 +2129 +2131 +2132 +2133 +2141 +2128 +2121 +2113 +2103 +2120 +2117 +2119 +2120 +2135 +2136 +2148 +2151 +2133 +2134 +2140 +2150 +2166 +2167 +2169 +2172 +2175 +2178 +2187 +2188 +2189 +2186 +2187 +2206 +2239 +2238 +2244 +2238 +2239 +2207 +2208 +2209 +2210 +2211 +2210 +2217 +2219 +2220 +2222 +2224 +2229 +2234 +2237 +2234 +2240 +2237 +2239 +2245 +2244 +2245 +2239 +2238 +2263 +2266 +2269 +2278 +2291 +2292 +2295 +2296 +2298 +2299 +2306 +2310 +2321 +2326 +2335 +2338 +2339 +2340 +2345 +2350 +2354 +2355 +2374 +2373 +2379 +2381 +2396 +2394 +2400 +2405 +2411 +2412 +2423 +2426 +2431 +2432 +2428 +2429 +2444 +2459 +2470 +2454 +2458 +2460 +2464 +2468 +2482 +2483 +2487 +2509 +2505 +2507 +2487 +2504 +2499 +2508 +2540 +2550 +2551 +2554 +2555 +2537 +2541 +2529 +2525 +2533 +2534 +2535 +2536 +2511 +2518 +2537 +2536 +2549 +2550 +2563 +2594 +2597 +2602 +2608 +2619 +2638 +2642 +2645 +2649 +2654 +2667 +2672 +2689 +2710 +2713 +2730 +2726 +2731 +2739 +2733 +2722 +2720 +2722 +2723 +2724 +2733 +2743 +2759 +2743 +2741 +2742 +2751 +2757 +2759 +2761 +2771 +2810 +2805 +2815 +2820 +2822 +2825 +2822 +2836 +2838 +2839 +2837 +2845 +2850 +2853 +2879 +2881 +2886 +2888 +2907 +2908 +2909 +2911 +2924 +2925 +2928 +2929 +2930 +2946 +2947 +2949 +2954 +2936 +2944 +2947 +2953 +2954 +2956 +2971 +2976 +2977 +2968 +2967 +2972 +2973 +2977 +2970 +2975 +2987 +2997 +2996 +2998 +2993 +2996 +2997 +2999 +3031 +3028 +3039 +3043 +3045 +3026 +3028 +3036 +3044 +3046 +3019 +3023 +3020 +3021 +3023 +3025 +3037 +3038 +3039 +3062 +3063 +3081 +3086 +3081 +3082 +3083 +3098 +3105 +3106 +3108 +3110 +3107 +3116 +3125 +3139 +3137 +3143 +3144 +3145 +3159 +3162 +3172 +3173 +3172 +3173 +3174 +3182 +3183 +3177 +3185 +3175 +3178 +3179 +3195 +3210 +3201 +3205 +3202 +3203 +3191 +3188 +3197 +3198 +3206 +3215 +3233 +3240 +3243 +3253 +3254 +3264 +3267 +3289 +3267 +3271 +3280 +3290 +3308 +3307 +3308 +3316 +3320 +3311 +3318 +3331 +3343 +3357 +3358 +3360 +3389 +3402 +3403 +3405 +3407 +3420 +3380 +3372 +3374 +3380 +3357 +3356 +3361 +3356 +3364 +3365 +3366 +3367 +3386 +3387 +3388 +3389 +3406 +3407 +3409 +3413 +3416 +3441 +3443 +3441 +3442 +3446 +3448 +3454 +3453 +3457 +3461 +3467 +3459 +3469 +3482 +3497 +3490 +3497 +3495 +3494 +3495 +3496 +3498 +3494 +3510 +3515 +3535 +3536 +3535 +3544 +3562 +3557 +3546 +3553 +3557 +3558 +3555 +3562 +3571 +3573 +3575 +3591 +3590 +3591 +3592 +3598 +3600 +3608 +3609 +3648 +3653 +3654 +3657 +3655 +3657 +3660 +3669 +3670 +3671 +3667 +3669 +3674 +3676 +3683 +3687 +3688 +3699 +3720 +3719 +3720 +3726 +3729 +3734 +3737 +3757 +3767 +3773 +3774 +3778 +3780 +3779 +3777 +3781 +3782 +3801 +3800 +3798 +3802 +3803 +3806 +3817 +3819 +3834 +3837 +3838 +3839 +3837 +3846 +3850 +3851 +3868 +3865 +3890 +3893 +3895 +3889 +3884 +3886 +3887 +3884 +3886 +3903 +3905 +3906 +3909 +3911 +3922 +3927 +3943 +3953 +3959 +3961 +3960 +3954 +3933 +3932 +3939 +3941 +3942 +3941 +3950 +3951 +3971 +3947 +3953 +3962 +3996 +4017 +4032 +4036 +4040 +4067 +4068 +4073 +4096 +4098 +4097 +4093 +4115 +4118 +4119 +4144 +4148 +4149 +4161 +4173 +4177 +4182 +4185 +4186 +4196 +4184 +4196 +4198 +4210 +4214 +4210 +4217 +4195 +4206 +4192 +4193 +4205 +4208 +4184 +4203 +4204 +4205 +4211 +4205 +4206 +4182 +4193 +4195 +4196 +4212 +4213 +4216 +4215 +4222 +4232 +4230 +4251 +4255 +4256 +4271 +4281 +4279 +4292 +4295 +4301 +4302 +4303 +4285 +4288 +4292 +4294 +4296 +4299 +4282 +4285 +4290 +4318 +4331 +4340 +4335 +4329 +4335 +4347 +4379 +4388 +4375 +4384 +4411 +4415 +4416 +4418 +4416 +4428 +4430 +4431 +4432 +4420 +4436 +4439 +4446 +4458 +4459 +4472 +4468 +4493 +4495 +4468 +4469 +4474 +4475 +4502 +4505 +4516 +4522 +4518 +4519 +4532 +4535 +4540 +4534 +4530 +4534 +4535 +4538 +4544 +4543 +4546 +4543 +4545 +4548 +4550 +4557 +4559 +4560 +4555 +4569 +4576 +4579 +4597 +4596 +4603 +4597 +4596 +4620 +4619 +4617 +4602 +4605 +4606 +4612 +4625 +4626 +4651 +4647 +4650 +4649 +4668 +4674 +4686 +4687 +4695 +4723 +4726 +4739 +4752 +4754 +4765 +4781 +4809 +4797 +4799 +4797 +4796 +4799 +4802 +4804 +4807 +4808 +4809 +4810 +4811 +4820 +4828 +4829 +4830 +4833 +4825 +4829 +4830 +4839 +4844 +4848 +4849 +4858 +4882 +4877 +4878 +4882 +4883 +4869 +4871 +4872 +4876 +4879 +4880 +4878 +4880 +4899 +4921 +4922 +4919 +4920 +4915 +4916 +4917 +4938 +4939 +4940 +4938 +4941 +4943 +4944 +4947 +4967 +4968 +4981 +4982 +4983 +4993 +4994 +4995 +5000 +5001 +5007 +5008 +5007 +5000 +5017 +5026 +5040 +5048 +5050 +5046 +5084 +5083 +5089 +5097 +5101 +5061 +5060 +5078 +5079 +5095 +5096 +5102 +5129 +5126 +5127 +5125 +5127 +5128 +5123 +5129 +5132 +5146 +5156 +5157 +5182 +5198 +5201 +5208 +5211 +5212 +5215 +5217 +5200 +5204 +5205 +5207 +5212 +5218 +5206 +5207 +5214 +5220 +5230 +5236 +5241 +5240 +5245 +5246 +5242 +5240 +5239 +5242 +5232 +5230 +5225 +5232 +5226 +5221 +5224 +5234 +5240 +5263 +5268 +5301 +5303 +5310 +5311 +5332 +5337 +5338 +5339 +5324 +5341 +5346 +5323 +5324 +5325 +5329 +5330 +5331 +5338 +5360 +5361 +5371 +5373 +5362 +5375 +5387 +5393 +5387 +5396 +5417 +5418 +5421 +5422 +5404 +5405 +5412 +5414 +5413 +5444 +5445 +5446 +5447 +5453 +5463 +5473 +5478 +5480 +5484 +5479 +5489 +5494 +5484 +5506 +5500 +5510 +5512 +5519 +5520 +5518 +5523 +5524 +5529 +5533 +5520 +5521 +5522 +5521 +5530 +5535 +5550 +5551 +5544 +5551 +5552 +5549 +5550 +5551 +5547 +5589 +5603 +5612 +5614 +5623 +5622 +5624 +5617 +5639 +5641 +5627 +5630 +5634 +5641 +5646 +5648 +5655 +5679 +5665 +5666 +5669 +5687 +5688 +5692 +5690 +5688 +5691 +5695 +5696 +5697 +5699 +5698 +5715 +5716 +5717 +5744 +5741 +5750 +5743 +5712 +5716 +5717 +5743 +5746 +5749 +5751 +5752 +5761 +5767 +5769 +5784 +5785 +5786 +5784 +5786 +5787 +5790 +5799 +5807 +5808 +5826 +5828 +5826 +5837 +5856 +5876 +5877 +5879 +5887 +5890 +5892 +5894 +5911 +5922 +5935 +5936 +5942 +5950 +5966 +5985 +5986 +5976 +5979 +5976 +5984 +5950 +5951 +5955 +5964 +5965 +5969 +5974 +5990 +6008 +6038 +6045 +6051 +6060 +6066 +6070 +6105 +6120 +6121 +6127 +6149 +6150 +6157 +6162 +6163 +6165 +6185 +6186 +6190 +6191 +6218 +6235 +6250 +6231 +6239 +6229 +6237 +6240 +6241 +6243 +6249 +6264 +6251 +6257 +6276 +6279 +6271 +6290 +6292 +6290 +6293 +6294 +6287 +6289 +6290 +6291 +6293 +6294 +6300 +6295 +6296 +6303 +6332 +6334 +6333 +6340 +6341 +6344 +6345 +6346 +6352 +6356 +6355 +6368 +6370 +6361 +6362 +6359 +6361 +6362 +6368 +6364 +6373 +6374 +6383 +6384 +6385 +6384 +6389 +6388 +6389 +6404 +6410 +6415 +6407 +6406 +6405 +6402 +6407 +6413 +6412 +6398 +6384 +6386 +6407 +6408 +6409 +6408 +6418 +6415 +6416 +6418 +6427 +6434 +6458 +6455 +6456 +6457 +6458 +6468 +6463 +6454 +6455 +6459 +6460 +6464 +6471 +6463 +6480 +6467 +6468 +6470 +6462 +6463 +6464 +6462 +6461 +6463 +6471 +6482 +6459 +6460 +6462 +6469 +6484 +6479 +6481 +6492 +6502 +6477 +6483 +6486 +6488 +6466 +6467 +6463 +6444 +6464 +6466 +6482 +6497 +6498 +6511 +6512 +6517 +6522 +6521 +6524 +6547 +6549 +6553 +6557 +6562 +6563 +6567 +6596 +6597 +6602 +6588 +6620 +6621 +6613 +6608 +6616 +6632 +6648 +6683 +6688 +6693 +6694 +6697 +6707 +6705 +6710 +6722 +6721 +6717 +6731 +6725 +6733 +6749 +6750 +6751 +6752 +6769 +6770 +6777 +6800 +6825 +6834 +6838 +6839 +6854 +6862 +6863 +6867 +6858 +6854 +6887 +6890 +6891 +6890 +6900 +6899 +6900 +6918 +6922 +6940 +6941 +6946 +6948 +6927 +6928 +6924 +6907 +6910 +6917 +6920 +6931 +6943 +6971 +6973 +6974 +6978 +7001 +7000 +7001 +7017 +7018 +7019 +7020 +7021 +7023 +7027 +6998 +6980 +6979 +6975 +6974 +6984 +6992 +6994 +7003 +7011 +7012 +7029 +7041 +7044 +7063 +7065 +7067 +7069 +7076 +7074 +7076 +7080 +7083 +7086 +7108 +7137 +7141 +7142 +7159 +7160 +7158 +7157 +7165 +7167 +7189 +7193 +7194 +7192 +7196 +7200 +7203 +7209 +7214 +7219 +7209 +7169 +7168 +7169 +7171 +7168 +7170 +7165 +7166 +7176 +7178 +7168 +7165 +7169 +7170 +7171 +7172 +7176 +7177 +7178 +7179 +7174 +7178 +7182 +7158 +7172 +7193 +7199 +7192 +7191 +7194 +7192 +7195 +7199 +7202 +7201 +7216 +7213 +7237 +7256 +7245 +7246 +7249 +7263 +7265 +7262 +7272 +7273 +7294 +7298 +7296 +7300 +7301 +7313 +7314 +7316 +7318 +7326 +7327 +7328 +7330 +7349 +7350 +7366 +7381 +7382 +7383 +7390 +7399 +7382 +7384 +7380 +7381 +7385 +7388 +7402 +7403 +7404 +7405 +7409 +7420 +7424 +7420 +7421 +7426 +7429 +7435 +7425 +7426 +7429 +7452 +7455 +7474 +7469 +7472 +7473 +7466 +7461 +7462 +7470 +7472 +7474 +7480 +7474 +7475 +7473 +7472 +7475 +7484 +7472 +7473 +7489 +7491 +7514 +7516 +7509 +7510 +7513 +7514 +7539 +7549 +7571 +7582 +7570 +7573 +7574 +7575 +7576 +7581 +7589 +7587 +7590 +7592 +7598 +7625 +7627 +7626 +7627 +7633 +7638 +7640 +7641 +7645 +7657 +7669 +7670 +7654 +7681 +7682 +7679 +7689 +7690 +7696 +7709 +7718 +7723 +7721 +7722 +7728 +7751 +7764 +7756 +7747 +7748 +7757 +7766 +7779 +7784 +7785 +7804 +7805 +7808 +7809 +7808 +7834 +7836 +7837 +7853 +7854 +7855 +7866 +7901 +7920 +7930 +7931 +7928 +7931 +7916 +7917 +7947 +7948 +7952 +7948 +7985 +7984 +7988 +7998 +8004 +8017 +8016 +8033 +8035 +8039 +8053 +8062 +8063 +8064 +8068 +8085 +8104 +8103 +8104 +8107 +8113 +8116 +8127 +8129 +8119 +8117 +8139 +8140 +8142 +8151 +8153 +8168 +8169 +8172 +8161 +8162 +8165 +8168 +8176 +8180 +8182 +8188 +8196 +8197 +8209 +8211 +8212 +8219 +8222 +8187 +8191 +8192 +8207 +8208 +8211 +8213 +8196 +8207 +8215 +8214 +8217 +8207 +8208 +8209 +8228 +8233 +8241 +8245 +8257 +8258 +8257 +8258 +8259 +8263 +8269 +8273 +8276 +8274 +8269 +8276 +8279 +8280 +8267 +8263 +8266 +8264 +8266 +8267 +8270 +8272 +8271 +8280 +8286 +8296 +8312 +8314 +8320 +8322 +8335 +8339 +8340 +8338 +8367 +8401 +8415 +8416 +8419 +8420 +8426 +8427 +8425 +8440 +8438 +8447 +8446 +8453 +8486 +8492 +8488 +8503 +8512 +8525 +8523 +8508 +8520 +8522 +8547 +8552 +8542 +8541 +8561 +8562 +8583 +8584 +8585 +8586 +8594 +8593 diff --git a/inputs/test_input01_2_1 b/inputs/test_input01_2_1 new file mode 100644 index 0000000..d7b0d0d --- /dev/null +++ b/inputs/test_input01_2_1 @@ -0,0 +1,2000 @@ +127 +147 +148 +147 +146 +153 +154 +167 +184 +181 +194 +183 +188 +195 +193 +207 +208 +220 +222 +234 +226 +247 +248 +253 +257 +250 +251 +285 +293 +294 +314 +311 +305 +312 +318 +321 +322 +344 +353 +354 +383 +391 +393 +394 +369 +373 +377 +378 +385 +388 +400 +402 +414 +422 +435 +414 +422 +436 +446 +455 +463 +478 +483 +482 +499 +495 +501 +506 +507 +509 +529 +522 +526 +527 +530 +529 +535 +536 +520 +525 +516 +518 +524 +525 +519 +520 +525 +531 +539 +551 +555 +579 +583 +594 +593 +594 +611 +610 +613 +616 +630 +637 +645 +641 +644 +646 +659 +671 +672 +676 +678 +682 +686 +688 +694 +720 +725 +735 +741 +742 +748 +745 +747 +752 +775 +776 +778 +777 +791 +797 +799 +800 +801 +806 +802 +804 +808 +817 +815 +817 +825 +830 +838 +839 +848 +849 +856 +861 +868 +875 +881 +875 +877 +858 +867 +861 +865 +855 +856 +857 +858 +859 +863 +866 +860 +871 +884 +882 +893 +904 +905 +917 +938 +951 +957 +958 +963 +967 +979 +980 +979 +980 +995 +994 +992 +994 +996 +998 +1007 +992 +1026 +1027 +1019 +1024 +1023 +1039 +1026 +1038 +1045 +1050 +1059 +1056 +1059 +1060 +1057 +1058 +1060 +1072 +1092 +1101 +1110 +1116 +1155 +1166 +1187 +1189 +1190 +1202 +1207 +1208 +1224 +1239 +1237 +1243 +1242 +1261 +1284 +1283 +1284 +1283 +1298 +1287 +1283 +1280 +1277 +1280 +1309 +1314 +1315 +1321 +1323 +1324 +1332 +1356 +1358 +1360 +1363 +1364 +1365 +1367 +1366 +1382 +1398 +1400 +1407 +1421 +1444 +1449 +1461 +1464 +1465 +1471 +1475 +1466 +1475 +1476 +1479 +1494 +1500 +1519 +1521 +1531 +1539 +1533 +1544 +1547 +1561 +1562 +1561 +1574 +1580 +1581 +1588 +1589 +1591 +1604 +1600 +1601 +1606 +1607 +1614 +1599 +1604 +1606 +1605 +1611 +1612 +1615 +1616 +1618 +1619 +1621 +1624 +1639 +1643 +1637 +1644 +1645 +1644 +1639 +1652 +1665 +1677 +1683 +1687 +1694 +1700 +1706 +1696 +1691 +1727 +1728 +1732 +1739 +1751 +1749 +1762 +1774 +1773 +1769 +1770 +1774 +1766 +1767 +1775 +1759 +1760 +1759 +1770 +1776 +1777 +1781 +1782 +1783 +1784 +1785 +1796 +1805 +1807 +1808 +1809 +1810 +1806 +1803 +1805 +1806 +1808 +1807 +1794 +1796 +1818 +1824 +1827 +1830 +1818 +1831 +1834 +1844 +1846 +1857 +1865 +1866 +1888 +1890 +1891 +1895 +1904 +1912 +1910 +1911 +1931 +1929 +1933 +1944 +1946 +1958 +1968 +1982 +1983 +1980 +1957 +1961 +1968 +1966 +1968 +1970 +1975 +1978 +1983 +1991 +1995 +1997 +2017 +2018 +2022 +2025 +2038 +2039 +2042 +2068 +2065 +2068 +2070 +2071 +2079 +2081 +2084 +2085 +2086 +2100 +2104 +2106 +2107 +2116 +2125 +2129 +2131 +2132 +2133 +2141 +2128 +2121 +2113 +2103 +2120 +2117 +2119 +2120 +2135 +2136 +2148 +2151 +2133 +2134 +2140 +2150 +2166 +2167 +2169 +2172 +2175 +2178 +2187 +2188 +2189 +2186 +2187 +2206 +2239 +2238 +2244 +2238 +2239 +2207 +2208 +2209 +2210 +2211 +2210 +2217 +2219 +2220 +2222 +2224 +2229 +2234 +2237 +2234 +2240 +2237 +2239 +2245 +2244 +2245 +2239 +2238 +2263 +2266 +2269 +2278 +2291 +2292 +2295 +2296 +2298 +2299 +2306 +2310 +2321 +2326 +2335 +2338 +2339 +2340 +2345 +2350 +2354 +2355 +2374 +2373 +2379 +2381 +2396 +2394 +2400 +2405 +2411 +2412 +2423 +2426 +2431 +2432 +2428 +2429 +2444 +2459 +2470 +2454 +2458 +2460 +2464 +2468 +2482 +2483 +2487 +2509 +2505 +2507 +2487 +2504 +2499 +2508 +2540 +2550 +2551 +2554 +2555 +2537 +2541 +2529 +2525 +2533 +2534 +2535 +2536 +2511 +2518 +2537 +2536 +2549 +2550 +2563 +2594 +2597 +2602 +2608 +2619 +2638 +2642 +2645 +2649 +2654 +2667 +2672 +2689 +2710 +2713 +2730 +2726 +2731 +2739 +2733 +2722 +2720 +2722 +2723 +2724 +2733 +2743 +2759 +2743 +2741 +2742 +2751 +2757 +2759 +2761 +2771 +2810 +2805 +2815 +2820 +2822 +2825 +2822 +2836 +2838 +2839 +2837 +2845 +2850 +2853 +2879 +2881 +2886 +2888 +2907 +2908 +2909 +2911 +2924 +2925 +2928 +2929 +2930 +2946 +2947 +2949 +2954 +2936 +2944 +2947 +2953 +2954 +2956 +2971 +2976 +2977 +2968 +2967 +2972 +2973 +2977 +2970 +2975 +2987 +2997 +2996 +2998 +2993 +2996 +2997 +2999 +3031 +3028 +3039 +3043 +3045 +3026 +3028 +3036 +3044 +3046 +3019 +3023 +3020 +3021 +3023 +3025 +3037 +3038 +3039 +3062 +3063 +3081 +3086 +3081 +3082 +3083 +3098 +3105 +3106 +3108 +3110 +3107 +3116 +3125 +3139 +3137 +3143 +3144 +3145 +3159 +3162 +3172 +3173 +3172 +3173 +3174 +3182 +3183 +3177 +3185 +3175 +3178 +3179 +3195 +3210 +3201 +3205 +3202 +3203 +3191 +3188 +3197 +3198 +3206 +3215 +3233 +3240 +3243 +3253 +3254 +3264 +3267 +3289 +3267 +3271 +3280 +3290 +3308 +3307 +3308 +3316 +3320 +3311 +3318 +3331 +3343 +3357 +3358 +3360 +3389 +3402 +3403 +3405 +3407 +3420 +3380 +3372 +3374 +3380 +3357 +3356 +3361 +3356 +3364 +3365 +3366 +3367 +3386 +3387 +3388 +3389 +3406 +3407 +3409 +3413 +3416 +3441 +3443 +3441 +3442 +3446 +3448 +3454 +3453 +3457 +3461 +3467 +3459 +3469 +3482 +3497 +3490 +3497 +3495 +3494 +3495 +3496 +3498 +3494 +3510 +3515 +3535 +3536 +3535 +3544 +3562 +3557 +3546 +3553 +3557 +3558 +3555 +3562 +3571 +3573 +3575 +3591 +3590 +3591 +3592 +3598 +3600 +3608 +3609 +3648 +3653 +3654 +3657 +3655 +3657 +3660 +3669 +3670 +3671 +3667 +3669 +3674 +3676 +3683 +3687 +3688 +3699 +3720 +3719 +3720 +3726 +3729 +3734 +3737 +3757 +3767 +3773 +3774 +3778 +3780 +3779 +3777 +3781 +3782 +3801 +3800 +3798 +3802 +3803 +3806 +3817 +3819 +3834 +3837 +3838 +3839 +3837 +3846 +3850 +3851 +3868 +3865 +3890 +3893 +3895 +3889 +3884 +3886 +3887 +3884 +3886 +3903 +3905 +3906 +3909 +3911 +3922 +3927 +3943 +3953 +3959 +3961 +3960 +3954 +3933 +3932 +3939 +3941 +3942 +3941 +3950 +3951 +3971 +3947 +3953 +3962 +3996 +4017 +4032 +4036 +4040 +4067 +4068 +4073 +4096 +4098 +4097 +4093 +4115 +4118 +4119 +4144 +4148 +4149 +4161 +4173 +4177 +4182 +4185 +4186 +4196 +4184 +4196 +4198 +4210 +4214 +4210 +4217 +4195 +4206 +4192 +4193 +4205 +4208 +4184 +4203 +4204 +4205 +4211 +4205 +4206 +4182 +4193 +4195 +4196 +4212 +4213 +4216 +4215 +4222 +4232 +4230 +4251 +4255 +4256 +4271 +4281 +4279 +4292 +4295 +4301 +4302 +4303 +4285 +4288 +4292 +4294 +4296 +4299 +4282 +4285 +4290 +4318 +4331 +4340 +4335 +4329 +4335 +4347 +4379 +4388 +4375 +4384 +4411 +4415 +4416 +4418 +4416 +4428 +4430 +4431 +4432 +4420 +4436 +4439 +4446 +4458 +4459 +4472 +4468 +4493 +4495 +4468 +4469 +4474 +4475 +4502 +4505 +4516 +4522 +4518 +4519 +4532 +4535 +4540 +4534 +4530 +4534 +4535 +4538 +4544 +4543 +4546 +4543 +4545 +4548 +4550 +4557 +4559 +4560 +4555 +4569 +4576 +4579 +4597 +4596 +4603 +4597 +4596 +4620 +4619 +4617 +4602 +4605 +4606 +4612 +4625 +4626 +4651 +4647 +4650 +4649 +4668 +4674 +4686 +4687 +4695 +4723 +4726 +4739 +4752 +4754 +4765 +4781 +4809 +4797 +4799 +4797 +4796 +4799 +4802 +4804 +4807 +4808 +4809 +4810 +4811 +4820 +4828 +4829 +4830 +4833 +4825 +4829 +4830 +4839 +4844 +4848 +4849 +4858 +4882 +4877 +4878 +4882 +4883 +4869 +4871 +4872 +4876 +4879 +4880 +4878 +4880 +4899 +4921 +4922 +4919 +4920 +4915 +4916 +4917 +4938 +4939 +4940 +4938 +4941 +4943 +4944 +4947 +4967 +4968 +4981 +4982 +4983 +4993 +4994 +4995 +5000 +5001 +5007 +5008 +5007 +5000 +5017 +5026 +5040 +5048 +5050 +5046 +5084 +5083 +5089 +5097 +5101 +5061 +5060 +5078 +5079 +5095 +5096 +5102 +5129 +5126 +5127 +5125 +5127 +5128 +5123 +5129 +5132 +5146 +5156 +5157 +5182 +5198 +5201 +5208 +5211 +5212 +5215 +5217 +5200 +5204 +5205 +5207 +5212 +5218 +5206 +5207 +5214 +5220 +5230 +5236 +5241 +5240 +5245 +5246 +5242 +5240 +5239 +5242 +5232 +5230 +5225 +5232 +5226 +5221 +5224 +5234 +5240 +5263 +5268 +5301 +5303 +5310 +5311 +5332 +5337 +5338 +5339 +5324 +5341 +5346 +5323 +5324 +5325 +5329 +5330 +5331 +5338 +5360 +5361 +5371 +5373 +5362 +5375 +5387 +5393 +5387 +5396 +5417 +5418 +5421 +5422 +5404 +5405 +5412 +5414 +5413 +5444 +5445 +5446 +5447 +5453 +5463 +5473 +5478 +5480 +5484 +5479 +5489 +5494 +5484 +5506 +5500 +5510 +5512 +5519 +5520 +5518 +5523 +5524 +5529 +5533 +5520 +5521 +5522 +5521 +5530 +5535 +5550 +5551 +5544 +5551 +5552 +5549 +5550 +5551 +5547 +5589 +5603 +5612 +5614 +5623 +5622 +5624 +5617 +5639 +5641 +5627 +5630 +5634 +5641 +5646 +5648 +5655 +5679 +5665 +5666 +5669 +5687 +5688 +5692 +5690 +5688 +5691 +5695 +5696 +5697 +5699 +5698 +5715 +5716 +5717 +5744 +5741 +5750 +5743 +5712 +5716 +5717 +5743 +5746 +5749 +5751 +5752 +5761 +5767 +5769 +5784 +5785 +5786 +5784 +5786 +5787 +5790 +5799 +5807 +5808 +5826 +5828 +5826 +5837 +5856 +5876 +5877 +5879 +5887 +5890 +5892 +5894 +5911 +5922 +5935 +5936 +5942 +5950 +5966 +5985 +5986 +5976 +5979 +5976 +5984 +5950 +5951 +5955 +5964 +5965 +5969 +5974 +5990 +6008 +6038 +6045 +6051 +6060 +6066 +6070 +6105 +6120 +6121 +6127 +6149 +6150 +6157 +6162 +6163 +6165 +6185 +6186 +6190 +6191 +6218 +6235 +6250 +6231 +6239 +6229 +6237 +6240 +6241 +6243 +6249 +6264 +6251 +6257 +6276 +6279 +6271 +6290 +6292 +6290 +6293 +6294 +6287 +6289 +6290 +6291 +6293 +6294 +6300 +6295 +6296 +6303 +6332 +6334 +6333 +6340 +6341 +6344 +6345 +6346 +6352 +6356 +6355 +6368 +6370 +6361 +6362 +6359 +6361 +6362 +6368 +6364 +6373 +6374 +6383 +6384 +6385 +6384 +6389 +6388 +6389 +6404 +6410 +6415 +6407 +6406 +6405 +6402 +6407 +6413 +6412 +6398 +6384 +6386 +6407 +6408 +6409 +6408 +6418 +6415 +6416 +6418 +6427 +6434 +6458 +6455 +6456 +6457 +6458 +6468 +6463 +6454 +6455 +6459 +6460 +6464 +6471 +6463 +6480 +6467 +6468 +6470 +6462 +6463 +6464 +6462 +6461 +6463 +6471 +6482 +6459 +6460 +6462 +6469 +6484 +6479 +6481 +6492 +6502 +6477 +6483 +6486 +6488 +6466 +6467 +6463 +6444 +6464 +6466 +6482 +6497 +6498 +6511 +6512 +6517 +6522 +6521 +6524 +6547 +6549 +6553 +6557 +6562 +6563 +6567 +6596 +6597 +6602 +6588 +6620 +6621 +6613 +6608 +6616 +6632 +6648 +6683 +6688 +6693 +6694 +6697 +6707 +6705 +6710 +6722 +6721 +6717 +6731 +6725 +6733 +6749 +6750 +6751 +6752 +6769 +6770 +6777 +6800 +6825 +6834 +6838 +6839 +6854 +6862 +6863 +6867 +6858 +6854 +6887 +6890 +6891 +6890 +6900 +6899 +6900 +6918 +6922 +6940 +6941 +6946 +6948 +6927 +6928 +6924 +6907 +6910 +6917 +6920 +6931 +6943 +6971 +6973 +6974 +6978 +7001 +7000 +7001 +7017 +7018 +7019 +7020 +7021 +7023 +7027 +6998 +6980 +6979 +6975 +6974 +6984 +6992 +6994 +7003 +7011 +7012 +7029 +7041 +7044 +7063 +7065 +7067 +7069 +7076 +7074 +7076 +7080 +7083 +7086 +7108 +7137 +7141 +7142 +7159 +7160 +7158 +7157 +7165 +7167 +7189 +7193 +7194 +7192 +7196 +7200 +7203 +7209 +7214 +7219 +7209 +7169 +7168 +7169 +7171 +7168 +7170 +7165 +7166 +7176 +7178 +7168 +7165 +7169 +7170 +7171 +7172 +7176 +7177 +7178 +7179 +7174 +7178 +7182 +7158 +7172 +7193 +7199 +7192 +7191 +7194 +7192 +7195 +7199 +7202 +7201 +7216 +7213 +7237 +7256 +7245 +7246 +7249 +7263 +7265 +7262 +7272 +7273 +7294 +7298 +7296 +7300 +7301 +7313 +7314 +7316 +7318 +7326 +7327 +7328 +7330 +7349 +7350 +7366 +7381 +7382 +7383 +7390 +7399 +7382 +7384 +7380 +7381 +7385 +7388 +7402 +7403 +7404 +7405 +7409 +7420 +7424 +7420 +7421 +7426 +7429 +7435 +7425 +7426 +7429 +7452 +7455 +7474 +7469 +7472 +7473 +7466 +7461 +7462 +7470 +7472 +7474 +7480 +7474 +7475 +7473 +7472 +7475 +7484 +7472 +7473 +7489 +7491 +7514 +7516 +7509 +7510 +7513 +7514 +7539 +7549 +7571 +7582 +7570 +7573 +7574 +7575 +7576 +7581 +7589 +7587 +7590 +7592 +7598 +7625 +7627 +7626 +7627 +7633 +7638 +7640 +7641 +7645 +7657 +7669 +7670 +7654 +7681 +7682 +7679 +7689 +7690 +7696 +7709 +7718 +7723 +7721 +7722 +7728 +7751 +7764 +7756 +7747 +7748 +7757 +7766 +7779 +7784 +7785 +7804 +7805 +7808 +7809 +7808 +7834 +7836 +7837 +7853 +7854 +7855 +7866 +7901 +7920 +7930 +7931 +7928 +7931 +7916 +7917 +7947 +7948 +7952 +7948 +7985 +7984 +7988 +7998 +8004 +8017 +8016 +8033 +8035 +8039 +8053 +8062 +8063 +8064 +8068 +8085 +8104 +8103 +8104 +8107 +8113 +8116 +8127 +8129 +8119 +8117 +8139 +8140 +8142 +8151 +8153 +8168 +8169 +8172 +8161 +8162 +8165 +8168 +8176 +8180 +8182 +8188 +8196 +8197 +8209 +8211 +8212 +8219 +8222 +8187 +8191 +8192 +8207 +8208 +8211 +8213 +8196 +8207 +8215 +8214 +8217 +8207 +8208 +8209 +8228 +8233 +8241 +8245 +8257 +8258 +8257 +8258 +8259 +8263 +8269 +8273 +8276 +8274 +8269 +8276 +8279 +8280 +8267 +8263 +8266 +8264 +8266 +8267 +8270 +8272 +8271 +8280 +8286 +8296 +8312 +8314 +8320 +8322 +8335 +8339 +8340 +8338 +8367 +8401 +8415 +8416 +8419 +8420 +8426 +8427 +8425 +8440 +8438 +8447 +8446 +8453 +8486 +8492 +8488 +8503 +8512 +8525 +8523 +8508 +8520 +8522 +8547 +8552 +8542 +8541 +8561 +8562 +8583 +8584 +8585 +8586 +8594 +8593 diff --git a/inputs/test_input02_1_1 b/inputs/test_input02_1_1 new file mode 100644 index 0000000..e7e260a --- /dev/null +++ b/inputs/test_input02_1_1 @@ -0,0 +1,1000 @@ +forward 7 +forward 9 +forward 3 +down 5 +down 9 +forward 6 +down 2 +forward 2 +forward 8 +forward 3 +forward 5 +forward 5 +forward 8 +down 6 +forward 8 +forward 2 +up 8 +down 8 +forward 6 +down 4 +down 5 +forward 2 +down 6 +forward 7 +down 9 +forward 9 +down 2 +down 7 +up 6 +up 3 +up 7 +down 9 +forward 1 +forward 1 +down 4 +down 9 +forward 4 +up 4 +forward 8 +forward 9 +down 7 +down 4 +up 6 +down 8 +down 2 +forward 8 +forward 6 +down 3 +forward 2 +forward 6 +down 3 +forward 1 +forward 8 +down 8 +down 9 +forward 5 +forward 4 +forward 8 +down 7 +forward 4 +forward 3 +forward 6 +down 3 +forward 6 +forward 6 +down 9 +down 9 +down 9 +down 2 +down 7 +down 4 +forward 3 +up 7 +up 3 +down 1 +forward 4 +up 9 +forward 4 +forward 2 +down 2 +forward 9 +up 4 +forward 5 +down 8 +up 7 +down 5 +down 1 +up 7 +up 4 +forward 5 +up 8 +up 3 +down 2 +down 1 +down 2 +forward 3 +up 1 +forward 1 +forward 1 +down 1 +down 6 +down 6 +up 4 +down 4 +down 4 +forward 6 +down 6 +forward 7 +forward 5 +up 7 +down 9 +down 6 +forward 5 +forward 6 +forward 2 +down 4 +forward 5 +forward 8 +down 8 +down 6 +forward 2 +forward 8 +down 3 +forward 6 +down 1 +forward 5 +down 8 +up 1 +forward 6 +down 7 +forward 4 +down 8 +down 8 +forward 8 +down 6 +down 3 +forward 2 +forward 8 +forward 9 +forward 4 +forward 3 +down 4 +forward 3 +down 9 +down 1 +forward 2 +forward 3 +forward 7 +down 1 +forward 6 +forward 8 +forward 6 +forward 2 +down 8 +up 9 +forward 6 +forward 8 +down 7 +down 5 +up 4 +forward 9 +up 7 +up 3 +forward 3 +down 6 +forward 4 +forward 2 +down 3 +forward 9 +forward 5 +up 7 +down 9 +up 4 +down 3 +forward 8 +up 1 +forward 2 +forward 8 +forward 8 +forward 5 +down 7 +up 6 +down 9 +down 4 +forward 2 +down 5 +down 2 +down 2 +forward 6 +down 2 +forward 9 +forward 1 +up 1 +forward 4 +down 1 +forward 3 +down 3 +forward 4 +up 5 +up 3 +forward 6 +forward 8 +forward 2 +forward 6 +up 5 +down 9 +down 8 +forward 3 +down 5 +forward 8 +forward 1 +down 9 +up 3 +down 2 +down 9 +up 8 +down 2 +up 7 +up 2 +up 3 +down 9 +down 1 +down 7 +down 1 +forward 1 +down 9 +down 6 +forward 3 +up 7 +up 8 +down 5 +down 6 +up 2 +forward 8 +down 4 +up 1 +forward 4 +up 4 +forward 2 +down 4 +forward 4 +down 9 +up 4 +forward 8 +up 7 +forward 1 +down 3 +up 7 +forward 5 +down 5 +forward 2 +forward 7 +forward 3 +down 8 +forward 4 +forward 9 +up 2 +down 4 +down 5 +forward 4 +down 4 +up 6 +down 8 +up 1 +down 1 +up 6 +up 6 +down 7 +down 7 +forward 2 +forward 4 +forward 8 +down 8 +down 4 +down 4 +down 7 +forward 4 +down 3 +forward 5 +forward 5 +forward 7 +down 7 +forward 1 +down 8 +up 4 +up 9 +up 3 +up 6 +forward 5 +forward 5 +forward 4 +forward 9 +down 9 +forward 4 +forward 1 +up 8 +up 2 +down 9 +up 4 +forward 2 +up 8 +forward 6 +forward 2 +up 9 +down 3 +forward 3 +up 7 +down 7 +forward 4 +forward 7 +forward 3 +down 4 +down 5 +forward 7 +up 3 +up 1 +down 4 +forward 6 +down 1 +forward 1 +down 4 +down 3 +forward 9 +forward 4 +down 9 +down 3 +forward 2 +forward 5 +forward 6 +down 3 +forward 5 +down 9 +forward 2 +forward 9 +down 7 +down 4 +down 3 +down 1 +up 2 +forward 6 +forward 4 +down 9 +down 2 +forward 2 +forward 9 +down 3 +forward 8 +down 8 +forward 5 +down 4 +forward 4 +up 6 +up 3 +down 3 +down 9 +forward 5 +forward 8 +down 2 +forward 9 +forward 5 +up 9 +forward 2 +forward 3 +forward 4 +up 8 +up 1 +up 6 +down 5 +down 8 +down 4 +forward 6 +up 2 +forward 1 +forward 7 +up 8 +forward 5 +up 9 +forward 7 +down 6 +up 5 +up 7 +up 1 +down 3 +up 6 +forward 1 +up 1 +forward 2 +forward 4 +forward 5 +up 3 +up 8 +up 1 +up 6 +up 3 +down 5 +down 4 +up 8 +down 9 +up 7 +down 6 +down 9 +forward 5 +forward 3 +down 9 +down 3 +down 6 +up 3 +up 8 +down 4 +down 1 +up 9 +up 9 +forward 8 +down 7 +forward 1 +forward 4 +down 8 +forward 2 +down 4 +forward 7 +forward 3 +forward 5 +forward 1 +up 2 +down 9 +down 5 +up 6 +down 3 +forward 1 +up 9 +forward 6 +forward 1 +forward 4 +up 7 +forward 6 +down 1 +forward 9 +forward 1 +forward 3 +down 9 +down 8 +down 5 +forward 4 +down 7 +up 1 +forward 8 +up 4 +forward 6 +down 2 +forward 4 +forward 7 +down 8 +forward 6 +down 7 +forward 7 +up 7 +forward 4 +down 8 +down 8 +forward 8 +forward 6 +down 9 +down 8 +down 6 +down 2 +down 4 +forward 7 +forward 3 +down 8 +down 5 +forward 2 +down 9 +down 7 +up 1 +up 5 +forward 6 +up 8 +up 7 +up 4 +down 6 +down 6 +down 8 +down 9 +down 2 +forward 6 +forward 6 +forward 2 +up 9 +forward 6 +forward 9 +forward 8 +down 5 +down 3 +forward 1 +forward 8 +forward 1 +forward 3 +down 4 +forward 5 +forward 1 +forward 6 +down 8 +down 9 +forward 3 +forward 2 +forward 1 +forward 3 +up 7 +down 7 +down 2 +forward 3 +down 5 +down 2 +down 7 +down 9 +down 5 +down 7 +down 9 +up 7 +forward 7 +forward 9 +forward 8 +forward 5 +down 1 +up 6 +up 6 +forward 5 +up 6 +down 8 +up 6 +forward 2 +down 9 +down 5 +up 8 +up 7 +down 8 +down 7 +up 3 +down 5 +forward 6 +forward 2 +down 6 +forward 6 +forward 1 +forward 5 +forward 3 +down 4 +forward 3 +down 1 +up 7 +forward 3 +forward 9 +forward 3 +forward 4 +down 9 +forward 6 +down 1 +up 6 +forward 2 +forward 1 +down 2 +down 1 +down 9 +forward 1 +up 8 +down 1 +up 3 +forward 3 +forward 1 +up 6 +down 1 +down 7 +down 2 +forward 5 +down 4 +forward 4 +forward 9 +down 7 +forward 6 +down 4 +forward 8 +down 5 +forward 6 +down 6 +down 6 +down 9 +forward 3 +forward 2 +forward 7 +forward 6 +forward 8 +up 6 +forward 7 +down 2 +up 4 +forward 6 +forward 3 +forward 9 +down 1 +forward 9 +down 1 +forward 6 +down 9 +forward 7 +forward 9 +forward 6 +up 3 +down 3 +forward 3 +up 1 +down 8 +forward 7 +down 4 +forward 7 +forward 7 +down 1 +forward 5 +down 6 +forward 6 +down 8 +down 2 +down 7 +forward 9 +forward 7 +forward 2 +down 5 +forward 7 +forward 8 +forward 5 +forward 5 +up 1 +down 1 +up 4 +forward 5 +forward 8 +down 4 +up 8 +forward 8 +up 2 +down 1 +down 9 +up 9 +down 9 +forward 3 +forward 1 +down 7 +down 2 +forward 5 +up 7 +forward 9 +forward 1 +down 4 +down 8 +down 2 +up 1 +up 6 +forward 9 +down 3 +down 2 +forward 5 +forward 4 +down 5 +down 4 +up 4 +forward 4 +down 3 +up 3 +down 7 +down 7 +forward 1 +forward 4 +forward 7 +forward 5 +down 4 +down 7 +forward 1 +forward 9 +down 4 +forward 8 +up 4 +down 9 +down 9 +up 6 +up 3 +forward 2 +forward 3 +up 7 +forward 7 +down 4 +forward 5 +forward 5 +up 2 +down 5 +down 9 +forward 9 +forward 7 +forward 1 +up 5 +up 5 +forward 8 +forward 3 +forward 2 +down 4 +down 6 +down 2 +forward 5 +down 3 +down 9 +forward 8 +forward 7 +forward 7 +down 1 +up 3 +down 8 +down 9 +forward 6 +up 6 +down 6 +forward 2 +forward 3 +forward 7 +up 8 +down 8 +down 7 +forward 2 +down 2 +up 7 +up 9 +forward 1 +forward 1 +forward 1 +forward 1 +forward 1 +up 8 +down 3 +up 8 +down 5 +down 3 +up 4 +forward 4 +down 3 +down 4 +down 3 +up 3 +down 3 +up 2 +up 6 +down 9 +down 6 +up 8 +up 7 +down 1 +down 7 +down 3 +forward 3 +forward 5 +down 4 +down 7 +forward 1 +forward 8 +up 9 +up 2 +forward 3 +up 1 +forward 7 +down 7 +down 5 +forward 9 +up 9 +forward 3 +down 2 +up 4 +down 2 +down 1 +down 9 +down 9 +forward 3 +forward 4 +down 2 +down 6 +up 8 +down 5 +forward 7 +forward 4 +up 3 +forward 2 +down 4 +down 8 +forward 4 +forward 6 +forward 8 +down 6 +down 8 +up 2 +forward 5 +up 7 +down 9 +down 6 +forward 7 +up 3 +down 9 +forward 2 +down 6 +up 6 +down 6 +down 3 +down 2 +down 8 +down 4 +forward 8 +up 7 +forward 9 +forward 4 +down 3 +forward 3 +down 9 +down 2 +forward 2 +forward 1 +down 4 +down 3 +down 8 +up 6 +down 4 +forward 3 +down 7 +forward 8 +down 7 +forward 6 +forward 2 +forward 7 +forward 6 +forward 4 +up 4 +forward 2 +down 4 +down 2 +forward 3 +down 2 +up 9 +down 6 +forward 5 +up 6 +forward 1 +up 1 +down 3 +up 4 +forward 1 +down 6 +forward 9 +up 2 +forward 4 +up 9 +up 5 +down 5 +forward 3 +down 9 +forward 5 +down 3 +forward 7 +forward 5 +forward 9 +up 5 +down 4 +down 2 +forward 9 +down 3 +down 8 +down 9 +forward 2 +down 8 +up 6 +down 4 +down 2 +up 9 +forward 8 +forward 8 +down 8 +forward 4 +down 7 +forward 2 +up 7 +forward 7 +down 4 +forward 4 +down 3 +forward 9 +down 9 +forward 6 +down 5 +down 9 +up 5 +forward 7 +forward 2 +down 3 +down 7 +down 2 +forward 3 +down 4 +up 3 +down 1 +forward 9 +down 4 +down 8 +up 9 +forward 7 +down 8 +forward 9 +down 2 +up 2 +down 1 +down 1 +forward 6 +forward 2 +forward 3 +down 5 +down 1 +down 1 +up 4 +forward 8 +down 3 +down 1 +forward 9 +forward 7 +forward 2 +up 8 +up 6 +down 7 +down 6 +forward 3 +down 2 +down 9 +up 7 +forward 5 +up 9 +down 9 +down 4 +down 8 +down 5 +down 8 +down 8 +forward 6 +forward 1 +forward 4 +forward 7 +down 7 +down 6 +forward 4 +forward 7 +forward 6 +down 7 +forward 4 +forward 9 +up 3 +forward 9 +forward 5 +forward 1 +up 2 +down 1 +down 5 +forward 9 +up 4 +forward 6 +up 3 +up 6 +forward 8 +down 6 +forward 5 +down 3 +forward 2 +forward 7 +down 4 +up 8 +forward 6 +up 7 +up 9 +forward 3 +down 3 +down 7 +down 7 +down 1 +down 6 +down 9 +up 1 +forward 6 +forward 6 +down 3 +forward 7 +down 8 +forward 1 +down 7 +down 4 +down 3 +down 4 +down 4 +forward 7 +down 3 +forward 6 +up 9 +forward 3 diff --git a/inputs/test_input02_2_1 b/inputs/test_input02_2_1 new file mode 100644 index 0000000..e7e260a --- /dev/null +++ b/inputs/test_input02_2_1 @@ -0,0 +1,1000 @@ +forward 7 +forward 9 +forward 3 +down 5 +down 9 +forward 6 +down 2 +forward 2 +forward 8 +forward 3 +forward 5 +forward 5 +forward 8 +down 6 +forward 8 +forward 2 +up 8 +down 8 +forward 6 +down 4 +down 5 +forward 2 +down 6 +forward 7 +down 9 +forward 9 +down 2 +down 7 +up 6 +up 3 +up 7 +down 9 +forward 1 +forward 1 +down 4 +down 9 +forward 4 +up 4 +forward 8 +forward 9 +down 7 +down 4 +up 6 +down 8 +down 2 +forward 8 +forward 6 +down 3 +forward 2 +forward 6 +down 3 +forward 1 +forward 8 +down 8 +down 9 +forward 5 +forward 4 +forward 8 +down 7 +forward 4 +forward 3 +forward 6 +down 3 +forward 6 +forward 6 +down 9 +down 9 +down 9 +down 2 +down 7 +down 4 +forward 3 +up 7 +up 3 +down 1 +forward 4 +up 9 +forward 4 +forward 2 +down 2 +forward 9 +up 4 +forward 5 +down 8 +up 7 +down 5 +down 1 +up 7 +up 4 +forward 5 +up 8 +up 3 +down 2 +down 1 +down 2 +forward 3 +up 1 +forward 1 +forward 1 +down 1 +down 6 +down 6 +up 4 +down 4 +down 4 +forward 6 +down 6 +forward 7 +forward 5 +up 7 +down 9 +down 6 +forward 5 +forward 6 +forward 2 +down 4 +forward 5 +forward 8 +down 8 +down 6 +forward 2 +forward 8 +down 3 +forward 6 +down 1 +forward 5 +down 8 +up 1 +forward 6 +down 7 +forward 4 +down 8 +down 8 +forward 8 +down 6 +down 3 +forward 2 +forward 8 +forward 9 +forward 4 +forward 3 +down 4 +forward 3 +down 9 +down 1 +forward 2 +forward 3 +forward 7 +down 1 +forward 6 +forward 8 +forward 6 +forward 2 +down 8 +up 9 +forward 6 +forward 8 +down 7 +down 5 +up 4 +forward 9 +up 7 +up 3 +forward 3 +down 6 +forward 4 +forward 2 +down 3 +forward 9 +forward 5 +up 7 +down 9 +up 4 +down 3 +forward 8 +up 1 +forward 2 +forward 8 +forward 8 +forward 5 +down 7 +up 6 +down 9 +down 4 +forward 2 +down 5 +down 2 +down 2 +forward 6 +down 2 +forward 9 +forward 1 +up 1 +forward 4 +down 1 +forward 3 +down 3 +forward 4 +up 5 +up 3 +forward 6 +forward 8 +forward 2 +forward 6 +up 5 +down 9 +down 8 +forward 3 +down 5 +forward 8 +forward 1 +down 9 +up 3 +down 2 +down 9 +up 8 +down 2 +up 7 +up 2 +up 3 +down 9 +down 1 +down 7 +down 1 +forward 1 +down 9 +down 6 +forward 3 +up 7 +up 8 +down 5 +down 6 +up 2 +forward 8 +down 4 +up 1 +forward 4 +up 4 +forward 2 +down 4 +forward 4 +down 9 +up 4 +forward 8 +up 7 +forward 1 +down 3 +up 7 +forward 5 +down 5 +forward 2 +forward 7 +forward 3 +down 8 +forward 4 +forward 9 +up 2 +down 4 +down 5 +forward 4 +down 4 +up 6 +down 8 +up 1 +down 1 +up 6 +up 6 +down 7 +down 7 +forward 2 +forward 4 +forward 8 +down 8 +down 4 +down 4 +down 7 +forward 4 +down 3 +forward 5 +forward 5 +forward 7 +down 7 +forward 1 +down 8 +up 4 +up 9 +up 3 +up 6 +forward 5 +forward 5 +forward 4 +forward 9 +down 9 +forward 4 +forward 1 +up 8 +up 2 +down 9 +up 4 +forward 2 +up 8 +forward 6 +forward 2 +up 9 +down 3 +forward 3 +up 7 +down 7 +forward 4 +forward 7 +forward 3 +down 4 +down 5 +forward 7 +up 3 +up 1 +down 4 +forward 6 +down 1 +forward 1 +down 4 +down 3 +forward 9 +forward 4 +down 9 +down 3 +forward 2 +forward 5 +forward 6 +down 3 +forward 5 +down 9 +forward 2 +forward 9 +down 7 +down 4 +down 3 +down 1 +up 2 +forward 6 +forward 4 +down 9 +down 2 +forward 2 +forward 9 +down 3 +forward 8 +down 8 +forward 5 +down 4 +forward 4 +up 6 +up 3 +down 3 +down 9 +forward 5 +forward 8 +down 2 +forward 9 +forward 5 +up 9 +forward 2 +forward 3 +forward 4 +up 8 +up 1 +up 6 +down 5 +down 8 +down 4 +forward 6 +up 2 +forward 1 +forward 7 +up 8 +forward 5 +up 9 +forward 7 +down 6 +up 5 +up 7 +up 1 +down 3 +up 6 +forward 1 +up 1 +forward 2 +forward 4 +forward 5 +up 3 +up 8 +up 1 +up 6 +up 3 +down 5 +down 4 +up 8 +down 9 +up 7 +down 6 +down 9 +forward 5 +forward 3 +down 9 +down 3 +down 6 +up 3 +up 8 +down 4 +down 1 +up 9 +up 9 +forward 8 +down 7 +forward 1 +forward 4 +down 8 +forward 2 +down 4 +forward 7 +forward 3 +forward 5 +forward 1 +up 2 +down 9 +down 5 +up 6 +down 3 +forward 1 +up 9 +forward 6 +forward 1 +forward 4 +up 7 +forward 6 +down 1 +forward 9 +forward 1 +forward 3 +down 9 +down 8 +down 5 +forward 4 +down 7 +up 1 +forward 8 +up 4 +forward 6 +down 2 +forward 4 +forward 7 +down 8 +forward 6 +down 7 +forward 7 +up 7 +forward 4 +down 8 +down 8 +forward 8 +forward 6 +down 9 +down 8 +down 6 +down 2 +down 4 +forward 7 +forward 3 +down 8 +down 5 +forward 2 +down 9 +down 7 +up 1 +up 5 +forward 6 +up 8 +up 7 +up 4 +down 6 +down 6 +down 8 +down 9 +down 2 +forward 6 +forward 6 +forward 2 +up 9 +forward 6 +forward 9 +forward 8 +down 5 +down 3 +forward 1 +forward 8 +forward 1 +forward 3 +down 4 +forward 5 +forward 1 +forward 6 +down 8 +down 9 +forward 3 +forward 2 +forward 1 +forward 3 +up 7 +down 7 +down 2 +forward 3 +down 5 +down 2 +down 7 +down 9 +down 5 +down 7 +down 9 +up 7 +forward 7 +forward 9 +forward 8 +forward 5 +down 1 +up 6 +up 6 +forward 5 +up 6 +down 8 +up 6 +forward 2 +down 9 +down 5 +up 8 +up 7 +down 8 +down 7 +up 3 +down 5 +forward 6 +forward 2 +down 6 +forward 6 +forward 1 +forward 5 +forward 3 +down 4 +forward 3 +down 1 +up 7 +forward 3 +forward 9 +forward 3 +forward 4 +down 9 +forward 6 +down 1 +up 6 +forward 2 +forward 1 +down 2 +down 1 +down 9 +forward 1 +up 8 +down 1 +up 3 +forward 3 +forward 1 +up 6 +down 1 +down 7 +down 2 +forward 5 +down 4 +forward 4 +forward 9 +down 7 +forward 6 +down 4 +forward 8 +down 5 +forward 6 +down 6 +down 6 +down 9 +forward 3 +forward 2 +forward 7 +forward 6 +forward 8 +up 6 +forward 7 +down 2 +up 4 +forward 6 +forward 3 +forward 9 +down 1 +forward 9 +down 1 +forward 6 +down 9 +forward 7 +forward 9 +forward 6 +up 3 +down 3 +forward 3 +up 1 +down 8 +forward 7 +down 4 +forward 7 +forward 7 +down 1 +forward 5 +down 6 +forward 6 +down 8 +down 2 +down 7 +forward 9 +forward 7 +forward 2 +down 5 +forward 7 +forward 8 +forward 5 +forward 5 +up 1 +down 1 +up 4 +forward 5 +forward 8 +down 4 +up 8 +forward 8 +up 2 +down 1 +down 9 +up 9 +down 9 +forward 3 +forward 1 +down 7 +down 2 +forward 5 +up 7 +forward 9 +forward 1 +down 4 +down 8 +down 2 +up 1 +up 6 +forward 9 +down 3 +down 2 +forward 5 +forward 4 +down 5 +down 4 +up 4 +forward 4 +down 3 +up 3 +down 7 +down 7 +forward 1 +forward 4 +forward 7 +forward 5 +down 4 +down 7 +forward 1 +forward 9 +down 4 +forward 8 +up 4 +down 9 +down 9 +up 6 +up 3 +forward 2 +forward 3 +up 7 +forward 7 +down 4 +forward 5 +forward 5 +up 2 +down 5 +down 9 +forward 9 +forward 7 +forward 1 +up 5 +up 5 +forward 8 +forward 3 +forward 2 +down 4 +down 6 +down 2 +forward 5 +down 3 +down 9 +forward 8 +forward 7 +forward 7 +down 1 +up 3 +down 8 +down 9 +forward 6 +up 6 +down 6 +forward 2 +forward 3 +forward 7 +up 8 +down 8 +down 7 +forward 2 +down 2 +up 7 +up 9 +forward 1 +forward 1 +forward 1 +forward 1 +forward 1 +up 8 +down 3 +up 8 +down 5 +down 3 +up 4 +forward 4 +down 3 +down 4 +down 3 +up 3 +down 3 +up 2 +up 6 +down 9 +down 6 +up 8 +up 7 +down 1 +down 7 +down 3 +forward 3 +forward 5 +down 4 +down 7 +forward 1 +forward 8 +up 9 +up 2 +forward 3 +up 1 +forward 7 +down 7 +down 5 +forward 9 +up 9 +forward 3 +down 2 +up 4 +down 2 +down 1 +down 9 +down 9 +forward 3 +forward 4 +down 2 +down 6 +up 8 +down 5 +forward 7 +forward 4 +up 3 +forward 2 +down 4 +down 8 +forward 4 +forward 6 +forward 8 +down 6 +down 8 +up 2 +forward 5 +up 7 +down 9 +down 6 +forward 7 +up 3 +down 9 +forward 2 +down 6 +up 6 +down 6 +down 3 +down 2 +down 8 +down 4 +forward 8 +up 7 +forward 9 +forward 4 +down 3 +forward 3 +down 9 +down 2 +forward 2 +forward 1 +down 4 +down 3 +down 8 +up 6 +down 4 +forward 3 +down 7 +forward 8 +down 7 +forward 6 +forward 2 +forward 7 +forward 6 +forward 4 +up 4 +forward 2 +down 4 +down 2 +forward 3 +down 2 +up 9 +down 6 +forward 5 +up 6 +forward 1 +up 1 +down 3 +up 4 +forward 1 +down 6 +forward 9 +up 2 +forward 4 +up 9 +up 5 +down 5 +forward 3 +down 9 +forward 5 +down 3 +forward 7 +forward 5 +forward 9 +up 5 +down 4 +down 2 +forward 9 +down 3 +down 8 +down 9 +forward 2 +down 8 +up 6 +down 4 +down 2 +up 9 +forward 8 +forward 8 +down 8 +forward 4 +down 7 +forward 2 +up 7 +forward 7 +down 4 +forward 4 +down 3 +forward 9 +down 9 +forward 6 +down 5 +down 9 +up 5 +forward 7 +forward 2 +down 3 +down 7 +down 2 +forward 3 +down 4 +up 3 +down 1 +forward 9 +down 4 +down 8 +up 9 +forward 7 +down 8 +forward 9 +down 2 +up 2 +down 1 +down 1 +forward 6 +forward 2 +forward 3 +down 5 +down 1 +down 1 +up 4 +forward 8 +down 3 +down 1 +forward 9 +forward 7 +forward 2 +up 8 +up 6 +down 7 +down 6 +forward 3 +down 2 +down 9 +up 7 +forward 5 +up 9 +down 9 +down 4 +down 8 +down 5 +down 8 +down 8 +forward 6 +forward 1 +forward 4 +forward 7 +down 7 +down 6 +forward 4 +forward 7 +forward 6 +down 7 +forward 4 +forward 9 +up 3 +forward 9 +forward 5 +forward 1 +up 2 +down 1 +down 5 +forward 9 +up 4 +forward 6 +up 3 +up 6 +forward 8 +down 6 +forward 5 +down 3 +forward 2 +forward 7 +down 4 +up 8 +forward 6 +up 7 +up 9 +forward 3 +down 3 +down 7 +down 7 +down 1 +down 6 +down 9 +up 1 +forward 6 +forward 6 +down 3 +forward 7 +down 8 +forward 1 +down 7 +down 4 +down 3 +down 4 +down 4 +forward 7 +down 3 +forward 6 +up 9 +forward 3 diff --git a/inputs/test_input03_1_1 b/inputs/test_input03_1_1 new file mode 100644 index 0000000..e1c1f3d --- /dev/null +++ b/inputs/test_input03_1_1 @@ -0,0 +1,1000 @@ +011101101110 +010110001101 +100111000110 +011110101000 +101101000100 +000001100110 +110111100010 +111000010011 +001011000110 +111110101101 +110100101011 +100100011010 +001010111001 +110111110100 +100011011110 +111111111010 +001000100011 +001101100000 +010101010000 +011000100101 +110100000110 +110011010011 +101011001011 +110111100001 +000100111111 +011110000100 +010110111010 +011000011011 +011001100100 +000111111100 +010101111101 +001110011101 +100001001001 +111100000011 +110110110111 +101000011011 +110100100000 +110101101001 +001010111101 +010101010100 +111101001111 +110001000001 +000111010111 +001001101111 +101100011110 +001001111011 +011100101100 +010100110000 +000100000010 +010000101011 +111001010011 +001100101111 +101000010100 +000000111011 +010111101000 +101000100110 +010101111100 +101101001100 +101001110001 +000111110011 +111110110000 +111101101101 +001010111000 +101001000101 +010000010011 +011110010010 +000000101011 +101000111100 +011100001011 +000000100001 +100011111101 +101111011001 +000011011010 +100010111101 +100011001011 +011001101100 +001101101011 +010010010000 +110011011011 +110100110111 +000110100100 +110101110001 +001010010001 +100110100001 +010111111001 +011101000011 +100110010110 +100010101101 +000001011000 +110000111010 +001110010100 +000110011000 +100001110011 +101111111001 +000011001100 +010110011111 +101010001101 +100001000110 +000101011111 +110000010101 +111100100000 +000111100100 +011110011000 +001111110101 +111011110011 +010111000101 +111101100101 +101100011111 +100001111111 +110011111100 +000000111001 +100101001001 +110001100010 +101001000111 +101010000101 +010000010101 +011011000010 +101001111011 +111100110001 +010100110100 +000011000011 +011001100001 +101110000111 +000110010000 +100011010101 +010000111100 +011011010011 +000011111100 +000010100110 +110000110001 +010110010101 +010101100110 +111001110011 +101011000001 +010011101010 +011101000001 +101111001010 +010100111100 +110100111011 +111010111001 +101100110101 +100101111110 +010111101110 +111011001000 +001100110100 +001110011010 +101100111110 +100110010101 +010011001000 +001100010010 +100001100101 +001001100111 +011001111101 +010100101101 +000011100011 +100111010100 +101010110100 +101011100110 +111000001100 +101111101101 +101001000011 +011000010111 +011111010101 +000000010001 +011010101110 +110101011100 +011000011000 +111011010001 +110001001111 +011100101111 +010010100100 +110111001111 +000001101111 +100011100010 +110111010110 +010000110000 +011010001110 +001111000111 +010001010111 +101010101101 +100000111001 +110110111100 +100111010110 +011100011100 +011011110111 +110011101001 +110010011000 +111010000101 +110000001010 +000000110100 +001010100111 +010011001011 +111010111110 +101111000000 +101001010101 +010110010000 +100010001001 +100010100011 +010100001100 +110000110010 +100011100110 +001111101100 +001110100110 +111000100111 +111011011000 +101010100001 +111100011010 +000101100101 +010111111101 +100011110100 +011110010001 +011001010111 +111101110101 +101010001010 +001010011110 +110011100011 +001001010100 +100010101110 +100011000101 +011010111110 +001011101101 +001100101010 +111101111011 +111101100001 +101111101100 +100101100000 +010011011000 +011001001001 +111111110001 +101000011000 +101000110101 +111001011100 +101100111011 +001000010011 +101111000110 +101001101111 +100101000000 +111011011010 +110001100001 +111110110010 +001010101001 +011010101111 +010101000001 +110100101010 +011110101111 +001010111110 +100111001010 +011011111110 +111011100100 +101101111011 +001111100110 +100110010100 +101110100100 +101111100010 +001111101001 +100000001111 +000111111010 +100011010111 +010100010101 +000100011010 +110001110101 +000101001101 +110101010101 +101011101011 +011101001110 +001000010100 +001110011100 +110100000010 +010010101111 +110101010010 +011111110101 +001111010011 +010001100000 +111101101000 +110100010101 +110000100111 +100000101100 +101110010101 +100100101100 +000010010101 +000111010101 +111000000000 +101011111010 +000101000110 +111110101100 +000001100100 +011101000101 +001011110001 +000011111000 +101000111010 +011100001100 +111010101000 +100010001101 +111100000101 +010001101110 +111000110010 +001100100110 +111001111011 +110101111010 +000100100101 +100101110100 +001011010100 +001000001010 +011101110011 +101110011111 +101111011011 +001000011001 +100011011100 +011101000111 +011010100000 +001111110000 +010100000101 +001010010000 +100101101101 +111100010011 +100101000011 +100000000001 +111000111000 +000101101010 +010101011000 +101101010001 +111111001001 +100001000000 +011110100110 +111101010111 +011111011101 +110000110110 +110010011110 +110000110100 +010001101100 +011101111110 +110111001010 +011000111111 +101110010010 +001010101101 +101101101111 +000101001110 +111000010001 +110110100111 +010101000100 +111001000110 +011010100001 +111100011110 +100101110011 +110001000111 +101000101010 +100101111000 +000011101001 +011110110010 +101111011110 +100000111100 +001100000101 +101010111111 +101011110001 +000000001010 +000000010101 +000011000100 +111101011101 +100100000111 +001111010111 +010110001010 +011001000001 +110011110101 +010100010110 +001111101011 +101111011101 +001111001001 +011001101111 +000011000001 +101010000011 +111101100100 +110100100111 +101000011101 +010101101111 +000000001011 +110101101111 +001110011110 +100101010011 +001010100101 +001110111101 +001111101101 +111111010110 +101011110011 +110010111011 +101101101011 +101100011000 +000010100101 +010000010001 +010101001110 +011100111001 +010010000001 +010111010101 +101110001110 +000100111110 +011110100010 +001010110111 +100010000010 +110010100111 +011111001010 +111000110011 +011000010100 +110011000100 +010010100110 +011110110111 +011001010110 +000111001111 +000111000011 +110110011001 +011110001000 +011110100111 +101001100101 +001101010000 +000111101101 +001001010000 +001100110000 +111001001000 +111110010101 +001001011100 +111111011110 +010110101110 +101001110110 +000000110110 +001011110111 +011111010111 +111100111101 +111010001111 +001111111010 +110001010101 +110000011000 +000001011001 +000010101001 +010100101100 +011101010111 +110100111000 +001101000110 +001101011010 +010000011100 +110101011101 +010110011010 +101011011001 +001111111101 +100011101100 +010011010100 +101011101010 +011000110101 +010001001001 +101110111101 +001010001000 +110101010000 +010101000010 +101101001010 +101000001000 +010011100011 +100100111000 +100010110110 +011100101011 +000010110111 +111000010010 +011011111011 +101000010001 +001010110010 +110100110000 +010111000000 +001011101011 +001000010101 +000110110111 +111001010101 +000111001100 +011110010011 +110010010101 +100000000101 +110100001010 +100000010100 +100001010011 +100110011101 +111100001101 +111011111001 +101110111110 +001000100111 +100000010010 +011110000110 +010101010001 +101101100111 +010100011000 +100110111101 +001000001011 +100111101001 +101100100110 +000100010100 +010011111101 +010001100010 +011111111110 +001011111000 +011110110100 +100101101111 +110111110001 +111000110001 +010110101001 +010110011001 +001010111100 +011110000010 +100001100010 +010011001110 +101101011100 +011100100110 +101000001010 +111110111101 +111101001000 +000010110101 +110110001010 +100011101101 +110111101011 +111111100111 +101110101010 +011010110000 +100011111110 +101110101111 +101001101101 +001011001000 +010010101011 +011100000111 +001011111110 +001001000110 +111000101000 +011011000111 +111110110011 +110010110001 +100001000100 +000011010100 +000101010111 +001011000010 +010110010011 +010111110011 +010011100000 +100011110001 +000100101110 +001010010110 +011100111011 +001101100001 +000001000100 +111010101100 +010001011101 +001011010110 +011011000100 +110000101011 +111100000000 +111110010100 +010010010011 +001110000011 +110101000011 +110101101101 +110101000110 +010011011100 +101101000001 +100001001010 +101111011111 +110111011110 +101110001100 +001111010101 +010110101100 +011101001011 +101000010000 +111000101001 +011001100010 +111011110100 +111101111000 +110011100010 +010000111011 +001101101000 +111000000100 +011000001001 +101110000100 +101100011010 +011011010101 +111000001101 +101000111111 +100010100101 +111000011010 +010110001111 +010011000011 +100011101000 +100001000001 +101111100100 +011000100010 +010000101110 +011101101100 +000011010001 +100001110101 +010101111110 +000011110101 +110101110011 +011101101001 +010000000110 +001000111111 +011101110010 +001011011111 +010001100101 +011001000111 +001010011111 +100000110100 +010111011010 +001110111110 +000101101100 +111000101110 +001010110011 +000100101010 +010111100111 +000110101100 +010010111101 +110110101110 +010010100001 +111001011111 +001100011011 +111000011101 +111000010110 +000000000100 +000010110100 +010011110000 +011001011000 +111110001101 +000100000011 +001100010100 +111110000110 +000010111101 +111010001101 +110011011110 +101001111101 +110100111110 +011010000011 +000010000100 +111101110100 +010000101001 +111001010000 +110011100111 +010111010011 +000010101011 +010001110001 +100010000100 +100000001001 +011111101001 +101010001111 +001101001100 +111110011010 +001101001010 +101000010111 +011010111000 +011001101000 +101000111001 +100111110011 +000000000001 +100111011001 +011101110110 +100001111000 +010110101101 +011111000000 +101010100100 +100010101000 +001000011111 +010110000010 +000100000100 +001001000010 +111000010111 +110010101101 +101000101101 +001110110101 +110010011011 +011011001111 +101010001000 +011001110101 +101000000101 +010010111111 +110100110001 +000100110001 +000000110011 +111011100101 +111000100010 +100100100010 +011100010100 +010010001110 +000010011000 +111110111000 +100101010010 +000001110111 +101111101011 +100011001001 +110110101010 +111100100001 +000100110000 +001111001101 +100000010000 +011111000001 +001111101110 +100111101000 +000111111011 +000001011010 +010100110101 +001111010000 +111011000110 +101000001110 +000101011000 +101011001010 +100101101000 +110101011011 +111000100101 +100100101110 +111100101000 +100110101110 +110001111000 +111010111011 +011011000000 +000001101110 +110110010110 +111100010010 +111111011010 +101110010100 +111010110000 +011101000010 +111010011001 +101001011101 +101100010010 +010010111011 +011110010100 +100000101000 +000101101001 +001000100000 +101000101100 +011011100100 +011100100010 +111110000000 +011011010001 +010110111100 +110110101011 +111111000010 +111101001101 +110101001111 +111110001110 +100001011110 +101111100110 +011110111111 +011011111101 +001000010010 +110111100000 +110001110000 +100001000111 +000010100010 +100000100010 +100010001011 +000100001100 +000000001000 +111101010001 +010100010001 +111001101011 +011010001000 +010001011100 +010101001001 +000110101001 +001001100001 +101000000100 +000100000101 +100011011000 +101100101101 +100110100000 +010100000111 +110100101110 +001111100000 +011110110110 +001100111100 +001111100011 +100111111010 +110011111110 +110010011111 +110111111101 +110000011100 +101011000110 +100110011111 +000011110011 +111000111101 +101011000100 +010111011111 +000111011011 +111010111100 +001110111100 +100010110011 +010000000010 +010000011000 +001111000001 +100100001001 +110101010110 +101110001001 +010011001100 +101100000101 +001010111010 +001000001100 +111100010001 +111110100001 +101010110101 +111100001111 +110001110001 +000110110100 +100100101010 +111110101010 +110111101010 +000111101111 +111000101100 +000100011101 +001110001010 +011110011001 +110001001011 +000111001000 +010001001011 +000100011100 +100000101110 +010111111000 +111011110010 +010011101101 +011010000110 +010100001111 +100100001000 +100001011010 +100111111011 +100000101011 +011101011010 +111100111001 +110010110111 +001010000101 +101000100000 +001111100100 +001100111011 +011000101101 +001110101101 +100011000111 +001010001101 +100110111110 +001001101000 +111000011000 +011001011101 +000110100101 +101000110010 +110110010000 +110100001100 +000001111110 +000111010110 +110101000000 +110011110001 +110100110101 +011111100011 +111011011110 +111111001100 +110111100110 +011101010010 +010001110101 +001001101110 +010110100011 +101101110001 +000111101100 +000010111111 +111001101001 +000101111110 +000000011110 +110011001011 +010101010010 +111101001010 +001010101110 +111010100001 +101110000010 +001101010011 +001101101100 +000110000110 +000010111001 +110100100011 +011001110111 +100001110100 +011001101001 +000100011011 +111001100000 +101110101000 +000001000001 +010111001000 +101101110011 +111111011000 +000001111111 +101111110101 +000101101111 +010111111010 +111010100110 +110011000010 +001110110010 +011100000010 +001010101010 +110110001000 +100011111000 +110101011000 +011001100111 +000101110000 +010110110000 +011010010100 +000101100110 +001011000100 +011100110000 +111100011011 +110000101100 +101110100000 +011110000111 +100010101111 +110111000111 +100010110000 +110010001111 +000001011110 +111110000111 +101101100110 +011001010100 +011011011110 +111001100101 +110101100011 +010100111111 +001010011001 +101101001011 +000011100000 +000100001001 +001010010101 +111100100101 +111101001100 +010111110110 +100011110111 +100101001000 +011011100111 +010110000011 +101001101011 +001101001101 +101101011000 +011100000011 +100101001110 +110001000110 +101111100111 +011111110001 +001111001000 +001101010010 +101110101011 +001111011111 +001000010000 +011011101001 +010101100010 +111000000110 +000100100000 +110000000100 +011100000110 +010100100110 +011001001010 +111010101011 +111001011011 +101101011111 +010111110101 +100101110000 +000101011100 +001010011011 +110110111111 +110001001001 +000001100101 +111110010010 +100110110101 +010101100001 +000001010000 +111100111100 +111011001100 +101100101111 +111111001111 +111100110100 +011010011100 +010000001010 +010010110010 +101110110111 +010000100000 +100101101100 +111001110001 +001110011000 +101010000111 +110011001000 +101100111111 +010110010010 +110011111001 +000111001110 +011101011011 +111011111101 +101100010011 +010000100101 +111110110101 +110101011010 +010110110101 +111011000000 +010001110111 +101111001100 +000100111000 +001011010001 +010011111100 +110011110111 +001100010111 +000010001110 +011001001110 +111101101001 +001000011000 diff --git a/inputs/test_input03_2_1 b/inputs/test_input03_2_1 new file mode 100644 index 0000000..e1c1f3d --- /dev/null +++ b/inputs/test_input03_2_1 @@ -0,0 +1,1000 @@ +011101101110 +010110001101 +100111000110 +011110101000 +101101000100 +000001100110 +110111100010 +111000010011 +001011000110 +111110101101 +110100101011 +100100011010 +001010111001 +110111110100 +100011011110 +111111111010 +001000100011 +001101100000 +010101010000 +011000100101 +110100000110 +110011010011 +101011001011 +110111100001 +000100111111 +011110000100 +010110111010 +011000011011 +011001100100 +000111111100 +010101111101 +001110011101 +100001001001 +111100000011 +110110110111 +101000011011 +110100100000 +110101101001 +001010111101 +010101010100 +111101001111 +110001000001 +000111010111 +001001101111 +101100011110 +001001111011 +011100101100 +010100110000 +000100000010 +010000101011 +111001010011 +001100101111 +101000010100 +000000111011 +010111101000 +101000100110 +010101111100 +101101001100 +101001110001 +000111110011 +111110110000 +111101101101 +001010111000 +101001000101 +010000010011 +011110010010 +000000101011 +101000111100 +011100001011 +000000100001 +100011111101 +101111011001 +000011011010 +100010111101 +100011001011 +011001101100 +001101101011 +010010010000 +110011011011 +110100110111 +000110100100 +110101110001 +001010010001 +100110100001 +010111111001 +011101000011 +100110010110 +100010101101 +000001011000 +110000111010 +001110010100 +000110011000 +100001110011 +101111111001 +000011001100 +010110011111 +101010001101 +100001000110 +000101011111 +110000010101 +111100100000 +000111100100 +011110011000 +001111110101 +111011110011 +010111000101 +111101100101 +101100011111 +100001111111 +110011111100 +000000111001 +100101001001 +110001100010 +101001000111 +101010000101 +010000010101 +011011000010 +101001111011 +111100110001 +010100110100 +000011000011 +011001100001 +101110000111 +000110010000 +100011010101 +010000111100 +011011010011 +000011111100 +000010100110 +110000110001 +010110010101 +010101100110 +111001110011 +101011000001 +010011101010 +011101000001 +101111001010 +010100111100 +110100111011 +111010111001 +101100110101 +100101111110 +010111101110 +111011001000 +001100110100 +001110011010 +101100111110 +100110010101 +010011001000 +001100010010 +100001100101 +001001100111 +011001111101 +010100101101 +000011100011 +100111010100 +101010110100 +101011100110 +111000001100 +101111101101 +101001000011 +011000010111 +011111010101 +000000010001 +011010101110 +110101011100 +011000011000 +111011010001 +110001001111 +011100101111 +010010100100 +110111001111 +000001101111 +100011100010 +110111010110 +010000110000 +011010001110 +001111000111 +010001010111 +101010101101 +100000111001 +110110111100 +100111010110 +011100011100 +011011110111 +110011101001 +110010011000 +111010000101 +110000001010 +000000110100 +001010100111 +010011001011 +111010111110 +101111000000 +101001010101 +010110010000 +100010001001 +100010100011 +010100001100 +110000110010 +100011100110 +001111101100 +001110100110 +111000100111 +111011011000 +101010100001 +111100011010 +000101100101 +010111111101 +100011110100 +011110010001 +011001010111 +111101110101 +101010001010 +001010011110 +110011100011 +001001010100 +100010101110 +100011000101 +011010111110 +001011101101 +001100101010 +111101111011 +111101100001 +101111101100 +100101100000 +010011011000 +011001001001 +111111110001 +101000011000 +101000110101 +111001011100 +101100111011 +001000010011 +101111000110 +101001101111 +100101000000 +111011011010 +110001100001 +111110110010 +001010101001 +011010101111 +010101000001 +110100101010 +011110101111 +001010111110 +100111001010 +011011111110 +111011100100 +101101111011 +001111100110 +100110010100 +101110100100 +101111100010 +001111101001 +100000001111 +000111111010 +100011010111 +010100010101 +000100011010 +110001110101 +000101001101 +110101010101 +101011101011 +011101001110 +001000010100 +001110011100 +110100000010 +010010101111 +110101010010 +011111110101 +001111010011 +010001100000 +111101101000 +110100010101 +110000100111 +100000101100 +101110010101 +100100101100 +000010010101 +000111010101 +111000000000 +101011111010 +000101000110 +111110101100 +000001100100 +011101000101 +001011110001 +000011111000 +101000111010 +011100001100 +111010101000 +100010001101 +111100000101 +010001101110 +111000110010 +001100100110 +111001111011 +110101111010 +000100100101 +100101110100 +001011010100 +001000001010 +011101110011 +101110011111 +101111011011 +001000011001 +100011011100 +011101000111 +011010100000 +001111110000 +010100000101 +001010010000 +100101101101 +111100010011 +100101000011 +100000000001 +111000111000 +000101101010 +010101011000 +101101010001 +111111001001 +100001000000 +011110100110 +111101010111 +011111011101 +110000110110 +110010011110 +110000110100 +010001101100 +011101111110 +110111001010 +011000111111 +101110010010 +001010101101 +101101101111 +000101001110 +111000010001 +110110100111 +010101000100 +111001000110 +011010100001 +111100011110 +100101110011 +110001000111 +101000101010 +100101111000 +000011101001 +011110110010 +101111011110 +100000111100 +001100000101 +101010111111 +101011110001 +000000001010 +000000010101 +000011000100 +111101011101 +100100000111 +001111010111 +010110001010 +011001000001 +110011110101 +010100010110 +001111101011 +101111011101 +001111001001 +011001101111 +000011000001 +101010000011 +111101100100 +110100100111 +101000011101 +010101101111 +000000001011 +110101101111 +001110011110 +100101010011 +001010100101 +001110111101 +001111101101 +111111010110 +101011110011 +110010111011 +101101101011 +101100011000 +000010100101 +010000010001 +010101001110 +011100111001 +010010000001 +010111010101 +101110001110 +000100111110 +011110100010 +001010110111 +100010000010 +110010100111 +011111001010 +111000110011 +011000010100 +110011000100 +010010100110 +011110110111 +011001010110 +000111001111 +000111000011 +110110011001 +011110001000 +011110100111 +101001100101 +001101010000 +000111101101 +001001010000 +001100110000 +111001001000 +111110010101 +001001011100 +111111011110 +010110101110 +101001110110 +000000110110 +001011110111 +011111010111 +111100111101 +111010001111 +001111111010 +110001010101 +110000011000 +000001011001 +000010101001 +010100101100 +011101010111 +110100111000 +001101000110 +001101011010 +010000011100 +110101011101 +010110011010 +101011011001 +001111111101 +100011101100 +010011010100 +101011101010 +011000110101 +010001001001 +101110111101 +001010001000 +110101010000 +010101000010 +101101001010 +101000001000 +010011100011 +100100111000 +100010110110 +011100101011 +000010110111 +111000010010 +011011111011 +101000010001 +001010110010 +110100110000 +010111000000 +001011101011 +001000010101 +000110110111 +111001010101 +000111001100 +011110010011 +110010010101 +100000000101 +110100001010 +100000010100 +100001010011 +100110011101 +111100001101 +111011111001 +101110111110 +001000100111 +100000010010 +011110000110 +010101010001 +101101100111 +010100011000 +100110111101 +001000001011 +100111101001 +101100100110 +000100010100 +010011111101 +010001100010 +011111111110 +001011111000 +011110110100 +100101101111 +110111110001 +111000110001 +010110101001 +010110011001 +001010111100 +011110000010 +100001100010 +010011001110 +101101011100 +011100100110 +101000001010 +111110111101 +111101001000 +000010110101 +110110001010 +100011101101 +110111101011 +111111100111 +101110101010 +011010110000 +100011111110 +101110101111 +101001101101 +001011001000 +010010101011 +011100000111 +001011111110 +001001000110 +111000101000 +011011000111 +111110110011 +110010110001 +100001000100 +000011010100 +000101010111 +001011000010 +010110010011 +010111110011 +010011100000 +100011110001 +000100101110 +001010010110 +011100111011 +001101100001 +000001000100 +111010101100 +010001011101 +001011010110 +011011000100 +110000101011 +111100000000 +111110010100 +010010010011 +001110000011 +110101000011 +110101101101 +110101000110 +010011011100 +101101000001 +100001001010 +101111011111 +110111011110 +101110001100 +001111010101 +010110101100 +011101001011 +101000010000 +111000101001 +011001100010 +111011110100 +111101111000 +110011100010 +010000111011 +001101101000 +111000000100 +011000001001 +101110000100 +101100011010 +011011010101 +111000001101 +101000111111 +100010100101 +111000011010 +010110001111 +010011000011 +100011101000 +100001000001 +101111100100 +011000100010 +010000101110 +011101101100 +000011010001 +100001110101 +010101111110 +000011110101 +110101110011 +011101101001 +010000000110 +001000111111 +011101110010 +001011011111 +010001100101 +011001000111 +001010011111 +100000110100 +010111011010 +001110111110 +000101101100 +111000101110 +001010110011 +000100101010 +010111100111 +000110101100 +010010111101 +110110101110 +010010100001 +111001011111 +001100011011 +111000011101 +111000010110 +000000000100 +000010110100 +010011110000 +011001011000 +111110001101 +000100000011 +001100010100 +111110000110 +000010111101 +111010001101 +110011011110 +101001111101 +110100111110 +011010000011 +000010000100 +111101110100 +010000101001 +111001010000 +110011100111 +010111010011 +000010101011 +010001110001 +100010000100 +100000001001 +011111101001 +101010001111 +001101001100 +111110011010 +001101001010 +101000010111 +011010111000 +011001101000 +101000111001 +100111110011 +000000000001 +100111011001 +011101110110 +100001111000 +010110101101 +011111000000 +101010100100 +100010101000 +001000011111 +010110000010 +000100000100 +001001000010 +111000010111 +110010101101 +101000101101 +001110110101 +110010011011 +011011001111 +101010001000 +011001110101 +101000000101 +010010111111 +110100110001 +000100110001 +000000110011 +111011100101 +111000100010 +100100100010 +011100010100 +010010001110 +000010011000 +111110111000 +100101010010 +000001110111 +101111101011 +100011001001 +110110101010 +111100100001 +000100110000 +001111001101 +100000010000 +011111000001 +001111101110 +100111101000 +000111111011 +000001011010 +010100110101 +001111010000 +111011000110 +101000001110 +000101011000 +101011001010 +100101101000 +110101011011 +111000100101 +100100101110 +111100101000 +100110101110 +110001111000 +111010111011 +011011000000 +000001101110 +110110010110 +111100010010 +111111011010 +101110010100 +111010110000 +011101000010 +111010011001 +101001011101 +101100010010 +010010111011 +011110010100 +100000101000 +000101101001 +001000100000 +101000101100 +011011100100 +011100100010 +111110000000 +011011010001 +010110111100 +110110101011 +111111000010 +111101001101 +110101001111 +111110001110 +100001011110 +101111100110 +011110111111 +011011111101 +001000010010 +110111100000 +110001110000 +100001000111 +000010100010 +100000100010 +100010001011 +000100001100 +000000001000 +111101010001 +010100010001 +111001101011 +011010001000 +010001011100 +010101001001 +000110101001 +001001100001 +101000000100 +000100000101 +100011011000 +101100101101 +100110100000 +010100000111 +110100101110 +001111100000 +011110110110 +001100111100 +001111100011 +100111111010 +110011111110 +110010011111 +110111111101 +110000011100 +101011000110 +100110011111 +000011110011 +111000111101 +101011000100 +010111011111 +000111011011 +111010111100 +001110111100 +100010110011 +010000000010 +010000011000 +001111000001 +100100001001 +110101010110 +101110001001 +010011001100 +101100000101 +001010111010 +001000001100 +111100010001 +111110100001 +101010110101 +111100001111 +110001110001 +000110110100 +100100101010 +111110101010 +110111101010 +000111101111 +111000101100 +000100011101 +001110001010 +011110011001 +110001001011 +000111001000 +010001001011 +000100011100 +100000101110 +010111111000 +111011110010 +010011101101 +011010000110 +010100001111 +100100001000 +100001011010 +100111111011 +100000101011 +011101011010 +111100111001 +110010110111 +001010000101 +101000100000 +001111100100 +001100111011 +011000101101 +001110101101 +100011000111 +001010001101 +100110111110 +001001101000 +111000011000 +011001011101 +000110100101 +101000110010 +110110010000 +110100001100 +000001111110 +000111010110 +110101000000 +110011110001 +110100110101 +011111100011 +111011011110 +111111001100 +110111100110 +011101010010 +010001110101 +001001101110 +010110100011 +101101110001 +000111101100 +000010111111 +111001101001 +000101111110 +000000011110 +110011001011 +010101010010 +111101001010 +001010101110 +111010100001 +101110000010 +001101010011 +001101101100 +000110000110 +000010111001 +110100100011 +011001110111 +100001110100 +011001101001 +000100011011 +111001100000 +101110101000 +000001000001 +010111001000 +101101110011 +111111011000 +000001111111 +101111110101 +000101101111 +010111111010 +111010100110 +110011000010 +001110110010 +011100000010 +001010101010 +110110001000 +100011111000 +110101011000 +011001100111 +000101110000 +010110110000 +011010010100 +000101100110 +001011000100 +011100110000 +111100011011 +110000101100 +101110100000 +011110000111 +100010101111 +110111000111 +100010110000 +110010001111 +000001011110 +111110000111 +101101100110 +011001010100 +011011011110 +111001100101 +110101100011 +010100111111 +001010011001 +101101001011 +000011100000 +000100001001 +001010010101 +111100100101 +111101001100 +010111110110 +100011110111 +100101001000 +011011100111 +010110000011 +101001101011 +001101001101 +101101011000 +011100000011 +100101001110 +110001000110 +101111100111 +011111110001 +001111001000 +001101010010 +101110101011 +001111011111 +001000010000 +011011101001 +010101100010 +111000000110 +000100100000 +110000000100 +011100000110 +010100100110 +011001001010 +111010101011 +111001011011 +101101011111 +010111110101 +100101110000 +000101011100 +001010011011 +110110111111 +110001001001 +000001100101 +111110010010 +100110110101 +010101100001 +000001010000 +111100111100 +111011001100 +101100101111 +111111001111 +111100110100 +011010011100 +010000001010 +010010110010 +101110110111 +010000100000 +100101101100 +111001110001 +001110011000 +101010000111 +110011001000 +101100111111 +010110010010 +110011111001 +000111001110 +011101011011 +111011111101 +101100010011 +010000100101 +111110110101 +110101011010 +010110110101 +111011000000 +010001110111 +101111001100 +000100111000 +001011010001 +010011111100 +110011110111 +001100010111 +000010001110 +011001001110 +111101101001 +001000011000 diff --git a/inputs/test_input04_1_1 b/inputs/test_input04_1_1 new file mode 100644 index 0000000..26358a9 --- /dev/null +++ b/inputs/test_input04_1_1 @@ -0,0 +1,601 @@ +26,38,2,15,36,8,12,46,88,72,32,35,64,19,5,66,20,52,74,3,59,94,45,56,0,6,67,24,97,50,92,93,84,65,71,90,96,21,87,75,58,82,14,53,95,27,49,69,16,89,37,13,1,81,60,79,51,18,48,33,42,63,39,34,62,55,47,54,23,83,77,9,70,68,85,86,91,41,4,61,78,31,22,76,40,17,30,98,44,25,80,73,11,28,7,99,29,57,43,10 + +57 12 60 96 93 +73 87 63 70 91 +74 32 43 67 46 +59 34 5 35 82 +53 40 55 29 1 + +48 71 59 45 63 +13 42 23 95 39 +84 82 10 29 4 +16 91 32 92 62 +99 33 20 21 3 + +51 20 32 30 90 +86 88 89 1 73 + 5 64 78 81 22 +95 50 7 27 17 +39 82 46 35 92 + + 2 65 21 77 97 +50 46 38 99 82 +22 1 24 63 70 + 8 32 80 98 35 +57 67 25 81 18 + +64 7 26 44 14 +42 71 19 22 0 + 4 36 51 25 6 +69 59 90 15 88 +85 65 32 76 70 + + 8 69 75 42 44 +64 25 72 71 34 + 2 94 81 14 38 +97 89 59 23 88 +57 70 13 1 51 + +93 94 26 11 35 +63 57 84 10 92 +12 29 78 65 64 +54 75 61 50 81 +13 90 2 66 99 + +10 21 39 24 56 +90 49 25 80 59 +41 72 47 74 79 + 9 89 42 92 31 +20 1 32 58 83 + +81 11 58 2 69 +79 23 60 8 63 +94 9 0 45 34 +36 31 61 71 74 +51 48 59 99 70 + +66 47 88 16 18 +35 75 54 26 77 +23 55 33 3 19 +82 71 57 80 45 +22 8 40 76 20 + + 8 5 95 86 76 +49 21 82 78 77 +12 38 61 85 4 +14 54 42 40 39 +69 66 1 0 7 + +85 66 96 45 64 +25 55 36 76 37 +82 61 29 47 54 +73 94 3 59 24 +71 62 31 98 79 + +84 10 60 61 97 +75 90 95 6 8 +93 89 65 70 80 +35 15 46 55 77 +52 3 74 39 36 + +80 24 59 71 52 +17 43 45 8 6 +58 22 32 46 98 +48 3 56 31 77 +97 28 55 0 76 + +51 98 12 49 19 +28 94 9 97 85 + 5 78 47 93 24 +67 0 37 81 76 +77 48 15 69 50 + +34 45 5 80 14 +82 42 63 2 86 + 3 95 54 74 69 +46 27 49 92 66 + 0 85 98 83 17 + +41 99 93 62 96 +90 30 10 5 94 +98 32 83 78 25 +76 27 29 19 35 +58 91 34 31 3 + +31 1 24 96 36 +58 12 59 57 92 +84 5 55 49 41 +54 72 70 95 88 +66 50 22 35 15 + +35 57 69 13 93 +34 62 28 26 36 + 6 64 47 74 45 + 0 32 19 33 44 +65 25 90 91 1 + +57 96 70 15 89 + 7 65 29 12 34 +40 25 36 81 86 +58 39 27 79 59 +19 91 47 6 11 + +60 74 67 87 68 +80 53 42 91 89 +11 19 8 78 31 + 4 6 30 10 90 +64 41 27 59 12 + +45 0 86 81 34 + 8 29 53 12 32 +89 74 64 26 96 +60 13 87 35 73 +52 69 23 46 40 + +43 35 1 59 40 +63 74 7 53 94 +39 42 8 84 27 +66 65 46 82 80 +61 76 13 31 45 + +38 4 51 76 5 +36 57 3 86 84 +83 37 60 67 52 + 0 70 7 19 72 +62 99 9 75 58 + +95 47 78 27 14 +50 82 17 15 22 + 1 76 64 73 71 +24 26 42 79 55 +36 40 43 81 59 + +13 7 60 49 87 +30 31 99 19 82 +91 88 53 96 97 +37 11 47 32 81 +86 94 45 71 38 + +64 42 19 6 69 +33 2 61 98 55 +20 48 5 82 56 +78 11 65 59 74 +85 72 1 54 29 + +76 56 84 34 83 +16 26 33 50 3 +85 20 87 31 51 +62 7 28 96 8 +81 57 89 44 58 + +92 49 58 8 45 +47 89 48 91 71 +53 67 37 59 88 +24 69 96 61 16 + 2 6 68 95 60 + +99 60 39 96 0 +62 14 77 70 47 +72 98 66 42 58 +85 19 12 23 44 +68 28 51 94 82 + +59 32 45 99 92 +96 36 30 87 9 +61 54 71 94 22 +76 4 62 20 2 +40 18 43 70 44 + +22 54 77 12 3 + 5 11 41 19 58 +49 51 75 24 63 +42 20 43 92 69 +62 36 15 25 80 + +93 40 48 21 10 + 0 83 86 31 65 +52 7 17 67 72 +95 28 63 99 47 +51 22 85 55 44 + +43 26 86 80 94 +93 66 84 90 61 +91 58 71 73 89 + 9 72 81 48 54 +11 60 36 25 70 + +33 42 73 20 69 +15 12 27 72 14 +93 30 89 86 22 +77 25 80 85 74 +66 78 0 49 82 + +37 84 46 86 39 +55 31 96 17 43 +12 33 45 97 9 +44 57 25 77 78 + 5 73 81 35 58 + +19 41 87 94 59 +97 84 78 52 77 +70 15 91 53 1 +71 47 82 35 99 +25 55 58 39 29 + +29 74 31 73 72 +23 10 83 63 25 +18 26 79 35 65 +59 44 98 45 20 +67 7 87 28 11 + +83 89 92 55 72 +32 6 78 93 49 +66 77 5 60 61 +85 57 29 97 65 +86 84 48 20 75 + +85 82 83 66 86 +64 61 77 38 84 + 1 68 4 18 72 +56 97 37 98 74 +44 14 78 52 93 + +30 73 72 24 51 +78 3 97 39 5 +90 42 58 96 17 +33 95 44 27 1 +80 16 84 54 99 + +92 88 79 14 10 +24 52 80 46 51 +11 31 35 53 25 +44 54 63 33 93 +87 38 15 64 4 + +14 25 61 40 95 +34 17 97 38 26 +64 90 45 91 65 + 8 50 23 11 74 +32 33 22 88 28 + + 8 32 94 72 74 +27 29 22 2 76 +58 54 80 5 35 +36 24 83 59 25 +21 31 48 39 4 + +56 13 22 53 72 +61 60 81 87 86 + 7 74 98 28 11 +67 38 91 23 0 +42 84 24 3 47 + +29 98 43 45 30 +86 50 15 60 11 +18 34 8 67 24 +36 97 69 27 79 +35 87 52 55 61 + +40 50 30 75 72 + 1 62 85 21 11 +80 10 91 7 2 +27 31 73 25 29 +63 65 55 87 23 + +12 68 47 77 76 +98 30 6 51 80 +22 85 88 99 24 +35 90 82 18 37 +17 27 34 54 43 + +85 46 35 16 45 + 4 6 96 9 61 +44 90 64 29 50 +76 38 69 80 28 +27 23 51 8 7 + +72 8 62 61 83 + 0 30 92 29 7 +86 28 54 52 5 +32 97 82 68 31 +76 69 22 12 13 + +66 67 1 36 94 +80 99 49 47 38 +76 95 30 13 19 +83 21 45 44 43 +29 91 14 20 98 + + 8 80 3 82 99 +62 41 47 6 27 +12 72 76 81 36 +30 7 67 90 5 +85 31 83 49 19 + +25 91 86 47 27 +69 74 20 17 97 +59 45 87 28 75 +49 94 63 33 9 + 8 66 2 30 32 + +69 58 41 84 5 +27 2 22 65 88 +63 96 90 17 85 +26 52 86 20 8 + 3 9 59 50 57 + +80 85 90 5 56 +66 57 76 65 62 +81 74 15 38 32 + 0 75 61 16 79 +96 50 8 86 1 + +52 21 98 54 94 +73 90 87 58 50 +38 39 30 69 82 +55 12 81 48 29 +93 23 91 47 28 + +92 14 3 1 19 +18 27 91 62 86 +61 80 49 53 97 +77 98 52 0 8 +17 54 85 59 51 + +49 45 38 70 33 +96 18 63 5 99 +65 58 29 91 19 +78 7 98 39 17 +31 15 13 35 75 + +55 50 58 96 94 +67 72 4 40 90 +59 31 15 78 81 + 1 80 56 34 20 +27 52 88 75 53 + + 0 5 91 65 72 +53 42 4 50 25 +13 52 81 79 92 +46 89 55 58 95 +19 77 30 36 18 + +38 97 86 69 44 +70 52 14 19 29 + 9 36 96 24 80 +84 22 32 72 48 +28 3 46 42 87 + +94 93 31 33 38 +21 30 34 69 35 + 1 10 55 79 57 +54 28 44 78 73 + 8 20 45 41 23 + +32 13 49 80 68 +41 95 84 74 57 +15 61 5 77 67 +53 54 29 51 75 +24 66 36 88 90 + +74 49 19 2 66 +94 45 30 84 37 + 7 24 22 87 60 +13 40 57 9 1 +56 42 92 67 27 + +29 7 97 22 36 +80 77 92 3 67 +48 54 73 51 41 +28 8 55 24 4 +13 11 66 5 86 + +76 16 8 71 92 +23 61 53 27 43 +25 6 17 32 64 +40 69 21 84 93 +89 30 55 90 41 + +86 22 81 13 33 +35 87 82 77 71 +96 65 37 62 51 +16 72 36 93 23 +84 44 26 66 27 + + 4 73 52 35 43 +39 9 96 34 70 +19 67 38 10 54 +21 7 36 13 90 +84 28 59 57 75 + +55 7 32 68 97 +10 56 46 28 66 +74 81 18 73 26 +44 76 13 35 61 +90 36 45 64 58 + +96 62 97 87 95 +45 78 38 84 41 +91 19 88 25 22 +12 27 31 92 5 +15 83 7 53 71 + +31 17 96 6 47 + 3 90 27 89 75 +53 39 62 82 13 +52 34 23 83 87 +19 67 50 98 84 + +96 3 70 17 42 +50 74 65 53 31 +52 80 18 26 77 +29 57 95 25 81 +88 92 55 13 28 + +63 34 56 1 4 +40 97 10 5 50 +96 55 15 68 37 +43 33 89 72 3 +11 88 44 86 2 + +65 44 24 34 41 + 1 68 67 6 26 +27 88 73 25 9 +55 56 16 48 29 +33 18 77 3 94 + +91 75 35 33 56 +96 19 69 81 53 +25 14 32 74 22 +24 6 89 42 90 + 9 2 77 67 20 + +19 97 36 78 71 +16 26 99 23 92 +10 68 74 90 88 +30 60 96 11 34 + 8 76 35 53 22 + +84 15 76 31 63 + 1 34 96 70 35 +66 57 71 26 61 +83 41 74 85 60 +16 28 30 23 49 + +72 88 56 92 86 +12 44 71 47 30 +39 53 4 46 45 +38 5 9 35 25 + 8 61 13 50 82 + +62 92 49 21 95 +70 47 73 74 56 +17 89 0 39 60 +42 99 13 63 67 +43 16 11 20 84 + +13 30 59 84 12 +52 88 79 62 29 +99 39 95 55 70 +80 46 31 89 69 +74 71 65 3 38 + +47 86 21 24 22 + 0 62 69 38 59 +27 10 41 81 92 +14 51 35 13 17 +30 15 7 71 70 + +25 26 29 66 32 +68 46 77 45 86 +14 15 90 40 22 + 6 36 17 76 1 +80 55 83 98 79 + +98 76 58 27 39 +45 90 56 46 69 +10 41 54 82 25 +94 86 89 33 79 +16 30 87 24 83 + +66 28 93 91 68 +71 51 22 10 42 +29 20 77 17 8 +55 39 89 72 12 +98 78 65 48 41 + +49 25 80 64 99 +90 9 40 76 63 +60 93 46 4 27 +17 0 42 33 28 +59 26 18 69 75 + +35 0 76 58 31 +87 17 42 13 33 +70 67 61 52 12 +59 85 64 80 1 + 4 73 99 55 48 + +40 73 94 80 90 + 9 93 17 51 62 +96 0 57 82 47 +86 27 64 95 84 +16 99 37 41 44 + + 8 96 31 26 50 +20 69 75 82 89 +94 42 38 78 35 +83 13 45 62 43 +97 14 34 17 47 + +35 88 38 7 97 + 8 79 51 74 26 +60 22 53 5 33 +63 23 69 0 83 +21 44 91 95 18 + +64 77 4 0 15 +80 66 9 16 5 +75 8 18 40 91 +72 1 49 60 97 +14 24 34 65 92 + +84 75 31 56 55 +17 92 48 45 89 +88 52 10 90 47 +91 97 6 39 79 +99 65 11 42 93 + + 7 82 10 88 49 +11 66 54 3 53 + 4 73 71 42 92 +22 75 84 16 48 + 5 94 79 96 45 + +20 87 16 25 9 +15 70 19 72 56 +71 37 69 2 62 +76 97 41 8 92 +40 65 86 0 32 + +81 48 14 75 4 +70 30 6 74 62 +15 28 55 22 63 +36 32 35 86 71 +29 47 59 18 78 + +10 35 27 14 64 +43 19 86 71 36 +32 79 9 51 91 +17 67 26 41 56 +15 1 95 13 65 + +74 79 22 30 46 +80 55 57 14 37 +59 88 40 83 56 +63 10 97 64 7 +77 61 53 91 20 + +53 81 13 72 67 +79 10 71 11 8 + 0 99 60 20 4 + 7 45 89 66 98 +50 36 80 57 5 + + 5 7 35 4 29 +28 65 31 86 33 +66 98 75 13 92 +38 67 80 46 11 + 9 15 57 71 32 + +21 33 22 77 5 + 0 6 59 37 69 +50 45 32 60 96 + 9 39 28 56 57 +34 46 43 52 25 + +67 11 21 53 60 +52 58 54 94 47 +84 46 72 81 16 +31 51 23 36 97 +80 43 75 99 79 diff --git a/inputs/test_input04_2_1 b/inputs/test_input04_2_1 new file mode 100644 index 0000000..26358a9 --- /dev/null +++ b/inputs/test_input04_2_1 @@ -0,0 +1,601 @@ +26,38,2,15,36,8,12,46,88,72,32,35,64,19,5,66,20,52,74,3,59,94,45,56,0,6,67,24,97,50,92,93,84,65,71,90,96,21,87,75,58,82,14,53,95,27,49,69,16,89,37,13,1,81,60,79,51,18,48,33,42,63,39,34,62,55,47,54,23,83,77,9,70,68,85,86,91,41,4,61,78,31,22,76,40,17,30,98,44,25,80,73,11,28,7,99,29,57,43,10 + +57 12 60 96 93 +73 87 63 70 91 +74 32 43 67 46 +59 34 5 35 82 +53 40 55 29 1 + +48 71 59 45 63 +13 42 23 95 39 +84 82 10 29 4 +16 91 32 92 62 +99 33 20 21 3 + +51 20 32 30 90 +86 88 89 1 73 + 5 64 78 81 22 +95 50 7 27 17 +39 82 46 35 92 + + 2 65 21 77 97 +50 46 38 99 82 +22 1 24 63 70 + 8 32 80 98 35 +57 67 25 81 18 + +64 7 26 44 14 +42 71 19 22 0 + 4 36 51 25 6 +69 59 90 15 88 +85 65 32 76 70 + + 8 69 75 42 44 +64 25 72 71 34 + 2 94 81 14 38 +97 89 59 23 88 +57 70 13 1 51 + +93 94 26 11 35 +63 57 84 10 92 +12 29 78 65 64 +54 75 61 50 81 +13 90 2 66 99 + +10 21 39 24 56 +90 49 25 80 59 +41 72 47 74 79 + 9 89 42 92 31 +20 1 32 58 83 + +81 11 58 2 69 +79 23 60 8 63 +94 9 0 45 34 +36 31 61 71 74 +51 48 59 99 70 + +66 47 88 16 18 +35 75 54 26 77 +23 55 33 3 19 +82 71 57 80 45 +22 8 40 76 20 + + 8 5 95 86 76 +49 21 82 78 77 +12 38 61 85 4 +14 54 42 40 39 +69 66 1 0 7 + +85 66 96 45 64 +25 55 36 76 37 +82 61 29 47 54 +73 94 3 59 24 +71 62 31 98 79 + +84 10 60 61 97 +75 90 95 6 8 +93 89 65 70 80 +35 15 46 55 77 +52 3 74 39 36 + +80 24 59 71 52 +17 43 45 8 6 +58 22 32 46 98 +48 3 56 31 77 +97 28 55 0 76 + +51 98 12 49 19 +28 94 9 97 85 + 5 78 47 93 24 +67 0 37 81 76 +77 48 15 69 50 + +34 45 5 80 14 +82 42 63 2 86 + 3 95 54 74 69 +46 27 49 92 66 + 0 85 98 83 17 + +41 99 93 62 96 +90 30 10 5 94 +98 32 83 78 25 +76 27 29 19 35 +58 91 34 31 3 + +31 1 24 96 36 +58 12 59 57 92 +84 5 55 49 41 +54 72 70 95 88 +66 50 22 35 15 + +35 57 69 13 93 +34 62 28 26 36 + 6 64 47 74 45 + 0 32 19 33 44 +65 25 90 91 1 + +57 96 70 15 89 + 7 65 29 12 34 +40 25 36 81 86 +58 39 27 79 59 +19 91 47 6 11 + +60 74 67 87 68 +80 53 42 91 89 +11 19 8 78 31 + 4 6 30 10 90 +64 41 27 59 12 + +45 0 86 81 34 + 8 29 53 12 32 +89 74 64 26 96 +60 13 87 35 73 +52 69 23 46 40 + +43 35 1 59 40 +63 74 7 53 94 +39 42 8 84 27 +66 65 46 82 80 +61 76 13 31 45 + +38 4 51 76 5 +36 57 3 86 84 +83 37 60 67 52 + 0 70 7 19 72 +62 99 9 75 58 + +95 47 78 27 14 +50 82 17 15 22 + 1 76 64 73 71 +24 26 42 79 55 +36 40 43 81 59 + +13 7 60 49 87 +30 31 99 19 82 +91 88 53 96 97 +37 11 47 32 81 +86 94 45 71 38 + +64 42 19 6 69 +33 2 61 98 55 +20 48 5 82 56 +78 11 65 59 74 +85 72 1 54 29 + +76 56 84 34 83 +16 26 33 50 3 +85 20 87 31 51 +62 7 28 96 8 +81 57 89 44 58 + +92 49 58 8 45 +47 89 48 91 71 +53 67 37 59 88 +24 69 96 61 16 + 2 6 68 95 60 + +99 60 39 96 0 +62 14 77 70 47 +72 98 66 42 58 +85 19 12 23 44 +68 28 51 94 82 + +59 32 45 99 92 +96 36 30 87 9 +61 54 71 94 22 +76 4 62 20 2 +40 18 43 70 44 + +22 54 77 12 3 + 5 11 41 19 58 +49 51 75 24 63 +42 20 43 92 69 +62 36 15 25 80 + +93 40 48 21 10 + 0 83 86 31 65 +52 7 17 67 72 +95 28 63 99 47 +51 22 85 55 44 + +43 26 86 80 94 +93 66 84 90 61 +91 58 71 73 89 + 9 72 81 48 54 +11 60 36 25 70 + +33 42 73 20 69 +15 12 27 72 14 +93 30 89 86 22 +77 25 80 85 74 +66 78 0 49 82 + +37 84 46 86 39 +55 31 96 17 43 +12 33 45 97 9 +44 57 25 77 78 + 5 73 81 35 58 + +19 41 87 94 59 +97 84 78 52 77 +70 15 91 53 1 +71 47 82 35 99 +25 55 58 39 29 + +29 74 31 73 72 +23 10 83 63 25 +18 26 79 35 65 +59 44 98 45 20 +67 7 87 28 11 + +83 89 92 55 72 +32 6 78 93 49 +66 77 5 60 61 +85 57 29 97 65 +86 84 48 20 75 + +85 82 83 66 86 +64 61 77 38 84 + 1 68 4 18 72 +56 97 37 98 74 +44 14 78 52 93 + +30 73 72 24 51 +78 3 97 39 5 +90 42 58 96 17 +33 95 44 27 1 +80 16 84 54 99 + +92 88 79 14 10 +24 52 80 46 51 +11 31 35 53 25 +44 54 63 33 93 +87 38 15 64 4 + +14 25 61 40 95 +34 17 97 38 26 +64 90 45 91 65 + 8 50 23 11 74 +32 33 22 88 28 + + 8 32 94 72 74 +27 29 22 2 76 +58 54 80 5 35 +36 24 83 59 25 +21 31 48 39 4 + +56 13 22 53 72 +61 60 81 87 86 + 7 74 98 28 11 +67 38 91 23 0 +42 84 24 3 47 + +29 98 43 45 30 +86 50 15 60 11 +18 34 8 67 24 +36 97 69 27 79 +35 87 52 55 61 + +40 50 30 75 72 + 1 62 85 21 11 +80 10 91 7 2 +27 31 73 25 29 +63 65 55 87 23 + +12 68 47 77 76 +98 30 6 51 80 +22 85 88 99 24 +35 90 82 18 37 +17 27 34 54 43 + +85 46 35 16 45 + 4 6 96 9 61 +44 90 64 29 50 +76 38 69 80 28 +27 23 51 8 7 + +72 8 62 61 83 + 0 30 92 29 7 +86 28 54 52 5 +32 97 82 68 31 +76 69 22 12 13 + +66 67 1 36 94 +80 99 49 47 38 +76 95 30 13 19 +83 21 45 44 43 +29 91 14 20 98 + + 8 80 3 82 99 +62 41 47 6 27 +12 72 76 81 36 +30 7 67 90 5 +85 31 83 49 19 + +25 91 86 47 27 +69 74 20 17 97 +59 45 87 28 75 +49 94 63 33 9 + 8 66 2 30 32 + +69 58 41 84 5 +27 2 22 65 88 +63 96 90 17 85 +26 52 86 20 8 + 3 9 59 50 57 + +80 85 90 5 56 +66 57 76 65 62 +81 74 15 38 32 + 0 75 61 16 79 +96 50 8 86 1 + +52 21 98 54 94 +73 90 87 58 50 +38 39 30 69 82 +55 12 81 48 29 +93 23 91 47 28 + +92 14 3 1 19 +18 27 91 62 86 +61 80 49 53 97 +77 98 52 0 8 +17 54 85 59 51 + +49 45 38 70 33 +96 18 63 5 99 +65 58 29 91 19 +78 7 98 39 17 +31 15 13 35 75 + +55 50 58 96 94 +67 72 4 40 90 +59 31 15 78 81 + 1 80 56 34 20 +27 52 88 75 53 + + 0 5 91 65 72 +53 42 4 50 25 +13 52 81 79 92 +46 89 55 58 95 +19 77 30 36 18 + +38 97 86 69 44 +70 52 14 19 29 + 9 36 96 24 80 +84 22 32 72 48 +28 3 46 42 87 + +94 93 31 33 38 +21 30 34 69 35 + 1 10 55 79 57 +54 28 44 78 73 + 8 20 45 41 23 + +32 13 49 80 68 +41 95 84 74 57 +15 61 5 77 67 +53 54 29 51 75 +24 66 36 88 90 + +74 49 19 2 66 +94 45 30 84 37 + 7 24 22 87 60 +13 40 57 9 1 +56 42 92 67 27 + +29 7 97 22 36 +80 77 92 3 67 +48 54 73 51 41 +28 8 55 24 4 +13 11 66 5 86 + +76 16 8 71 92 +23 61 53 27 43 +25 6 17 32 64 +40 69 21 84 93 +89 30 55 90 41 + +86 22 81 13 33 +35 87 82 77 71 +96 65 37 62 51 +16 72 36 93 23 +84 44 26 66 27 + + 4 73 52 35 43 +39 9 96 34 70 +19 67 38 10 54 +21 7 36 13 90 +84 28 59 57 75 + +55 7 32 68 97 +10 56 46 28 66 +74 81 18 73 26 +44 76 13 35 61 +90 36 45 64 58 + +96 62 97 87 95 +45 78 38 84 41 +91 19 88 25 22 +12 27 31 92 5 +15 83 7 53 71 + +31 17 96 6 47 + 3 90 27 89 75 +53 39 62 82 13 +52 34 23 83 87 +19 67 50 98 84 + +96 3 70 17 42 +50 74 65 53 31 +52 80 18 26 77 +29 57 95 25 81 +88 92 55 13 28 + +63 34 56 1 4 +40 97 10 5 50 +96 55 15 68 37 +43 33 89 72 3 +11 88 44 86 2 + +65 44 24 34 41 + 1 68 67 6 26 +27 88 73 25 9 +55 56 16 48 29 +33 18 77 3 94 + +91 75 35 33 56 +96 19 69 81 53 +25 14 32 74 22 +24 6 89 42 90 + 9 2 77 67 20 + +19 97 36 78 71 +16 26 99 23 92 +10 68 74 90 88 +30 60 96 11 34 + 8 76 35 53 22 + +84 15 76 31 63 + 1 34 96 70 35 +66 57 71 26 61 +83 41 74 85 60 +16 28 30 23 49 + +72 88 56 92 86 +12 44 71 47 30 +39 53 4 46 45 +38 5 9 35 25 + 8 61 13 50 82 + +62 92 49 21 95 +70 47 73 74 56 +17 89 0 39 60 +42 99 13 63 67 +43 16 11 20 84 + +13 30 59 84 12 +52 88 79 62 29 +99 39 95 55 70 +80 46 31 89 69 +74 71 65 3 38 + +47 86 21 24 22 + 0 62 69 38 59 +27 10 41 81 92 +14 51 35 13 17 +30 15 7 71 70 + +25 26 29 66 32 +68 46 77 45 86 +14 15 90 40 22 + 6 36 17 76 1 +80 55 83 98 79 + +98 76 58 27 39 +45 90 56 46 69 +10 41 54 82 25 +94 86 89 33 79 +16 30 87 24 83 + +66 28 93 91 68 +71 51 22 10 42 +29 20 77 17 8 +55 39 89 72 12 +98 78 65 48 41 + +49 25 80 64 99 +90 9 40 76 63 +60 93 46 4 27 +17 0 42 33 28 +59 26 18 69 75 + +35 0 76 58 31 +87 17 42 13 33 +70 67 61 52 12 +59 85 64 80 1 + 4 73 99 55 48 + +40 73 94 80 90 + 9 93 17 51 62 +96 0 57 82 47 +86 27 64 95 84 +16 99 37 41 44 + + 8 96 31 26 50 +20 69 75 82 89 +94 42 38 78 35 +83 13 45 62 43 +97 14 34 17 47 + +35 88 38 7 97 + 8 79 51 74 26 +60 22 53 5 33 +63 23 69 0 83 +21 44 91 95 18 + +64 77 4 0 15 +80 66 9 16 5 +75 8 18 40 91 +72 1 49 60 97 +14 24 34 65 92 + +84 75 31 56 55 +17 92 48 45 89 +88 52 10 90 47 +91 97 6 39 79 +99 65 11 42 93 + + 7 82 10 88 49 +11 66 54 3 53 + 4 73 71 42 92 +22 75 84 16 48 + 5 94 79 96 45 + +20 87 16 25 9 +15 70 19 72 56 +71 37 69 2 62 +76 97 41 8 92 +40 65 86 0 32 + +81 48 14 75 4 +70 30 6 74 62 +15 28 55 22 63 +36 32 35 86 71 +29 47 59 18 78 + +10 35 27 14 64 +43 19 86 71 36 +32 79 9 51 91 +17 67 26 41 56 +15 1 95 13 65 + +74 79 22 30 46 +80 55 57 14 37 +59 88 40 83 56 +63 10 97 64 7 +77 61 53 91 20 + +53 81 13 72 67 +79 10 71 11 8 + 0 99 60 20 4 + 7 45 89 66 98 +50 36 80 57 5 + + 5 7 35 4 29 +28 65 31 86 33 +66 98 75 13 92 +38 67 80 46 11 + 9 15 57 71 32 + +21 33 22 77 5 + 0 6 59 37 69 +50 45 32 60 96 + 9 39 28 56 57 +34 46 43 52 25 + +67 11 21 53 60 +52 58 54 94 47 +84 46 72 81 16 +31 51 23 36 97 +80 43 75 99 79 diff --git a/inputs/test_input05_1_1 b/inputs/test_input05_1_1 new file mode 100644 index 0000000..69f6044 --- /dev/null +++ b/inputs/test_input05_1_1 @@ -0,0 +1,500 @@ +365,809 -> 365,271 +899,814 -> 899,921 +967,913 -> 434,913 +971,362 -> 631,362 +597,422 -> 597,575 +722,82 -> 722,365 +98,891 -> 972,17 +361,534 -> 361,52 +958,858 -> 958,612 +261,683 -> 261,477 +859,381 -> 850,372 +773,305 -> 703,305 +527,318 -> 281,72 +29,119 -> 863,953 +428,723 -> 428,971 +582,787 -> 582,326 +795,495 -> 795,525 +920,548 -> 920,718 +421,264 -> 714,557 +635,310 -> 635,983 +751,479 -> 534,696 +121,768 -> 121,129 +679,858 -> 737,858 +499,549 -> 603,653 +398,95 -> 398,537 +459,626 -> 473,626 +611,905 -> 854,662 +139,124 -> 568,124 +230,921 -> 960,191 +550,258 -> 883,258 +866,830 -> 681,645 +501,840 -> 774,840 +383,900 -> 383,536 +635,690 -> 868,690 +37,948 -> 954,31 +785,598 -> 785,955 +844,957 -> 130,243 +395,307 -> 562,307 +463,286 -> 374,286 +798,351 -> 52,351 +549,79 -> 549,300 +153,847 -> 977,23 +499,976 -> 499,576 +687,281 -> 621,215 +765,640 -> 794,640 +776,287 -> 906,157 +879,108 -> 333,108 +340,565 -> 340,521 +706,809 -> 159,262 +725,896 -> 941,896 +673,470 -> 792,470 +446,562 -> 638,754 +315,626 -> 189,500 +816,637 -> 77,637 +171,313 -> 171,82 +941,19 -> 150,810 +885,854 -> 513,854 +864,177 -> 864,213 +156,150 -> 544,538 +810,20 -> 344,486 +651,757 -> 623,729 +567,475 -> 126,475 +436,975 -> 707,975 +948,977 -> 138,167 +498,186 -> 601,289 +532,900 -> 532,515 +12,809 -> 60,761 +561,344 -> 453,452 +241,600 -> 780,61 +600,574 -> 258,232 +53,661 -> 224,490 +735,134 -> 735,707 +850,14 -> 398,14 +472,489 -> 472,22 +949,196 -> 492,196 +220,30 -> 959,769 +354,889 -> 632,889 +779,537 -> 397,919 +136,876 -> 896,116 +12,983 -> 930,65 +716,856 -> 716,516 +595,604 -> 595,97 +863,70 -> 946,70 +13,988 -> 988,13 +595,955 -> 978,955 +138,300 -> 138,452 +801,883 -> 830,854 +189,13 -> 110,13 +315,68 -> 147,68 +594,977 -> 594,707 +424,726 -> 836,314 +596,790 -> 842,790 +135,135 -> 823,823 +257,639 -> 718,178 +462,859 -> 965,859 +935,29 -> 18,946 +308,841 -> 676,473 +372,607 -> 946,607 +518,806 -> 201,489 +620,689 -> 620,480 +376,378 -> 376,900 +86,675 -> 179,768 +509,790 -> 509,501 +778,143 -> 778,474 +965,140 -> 194,911 +621,458 -> 316,153 +83,931 -> 959,55 +533,647 -> 402,778 +957,336 -> 397,336 +929,788 -> 929,587 +642,978 -> 647,978 +429,275 -> 276,275 +662,821 -> 120,279 +137,208 -> 85,260 +815,641 -> 763,589 +222,510 -> 881,510 +892,930 -> 845,930 +288,268 -> 288,509 +900,13 -> 79,13 +438,764 -> 248,764 +391,495 -> 391,771 +868,713 -> 223,68 +680,180 -> 680,553 +911,389 -> 911,578 +107,182 -> 107,555 +944,787 -> 944,25 +405,193 -> 569,193 +341,182 -> 952,182 +497,197 -> 820,197 +204,224 -> 693,224 +342,290 -> 342,479 +881,281 -> 881,899 +971,987 -> 11,27 +389,729 -> 501,729 +638,939 -> 316,617 +923,799 -> 923,84 +17,744 -> 17,47 +305,163 -> 305,506 +703,414 -> 74,414 +572,537 -> 122,987 +385,364 -> 385,403 +667,825 -> 667,607 +466,86 -> 842,86 +591,209 -> 151,649 +329,526 -> 329,772 +756,769 -> 122,135 +638,454 -> 380,454 +316,98 -> 654,98 +273,740 -> 627,386 +88,982 -> 963,107 +913,710 -> 913,157 +530,410 -> 129,410 +660,237 -> 256,641 +865,149 -> 865,934 +769,47 -> 76,740 +520,876 -> 520,630 +101,839 -> 394,546 +422,874 -> 330,874 +987,19 -> 20,986 +398,771 -> 174,771 +574,546 -> 582,546 +896,52 -> 11,937 +927,927 -> 927,923 +111,822 -> 953,822 +633,130 -> 76,130 +193,74 -> 193,400 +887,828 -> 887,160 +284,313 -> 500,97 +813,500 -> 839,500 +312,534 -> 129,534 +202,34 -> 202,196 +740,597 -> 681,597 +37,979 -> 892,124 +494,235 -> 494,426 +334,892 -> 334,788 +679,728 -> 947,728 +635,557 -> 242,950 +301,713 -> 326,738 +261,867 -> 986,867 +959,344 -> 412,891 +605,659 -> 647,701 +806,931 -> 270,395 +546,107 -> 150,107 +836,793 -> 131,88 +231,572 -> 99,572 +257,580 -> 257,459 +254,669 -> 254,52 +105,26 -> 973,894 +101,532 -> 339,770 +854,695 -> 319,160 +599,190 -> 227,562 +783,816 -> 370,816 +505,638 -> 889,638 +742,615 -> 742,399 +984,750 -> 984,662 +295,736 -> 937,94 +762,435 -> 239,958 +876,89 -> 758,89 +178,964 -> 651,964 +385,389 -> 67,71 +514,967 -> 462,915 +819,758 -> 819,978 +541,109 -> 767,109 +137,262 -> 137,815 +720,591 -> 934,805 +56,79 -> 752,775 +493,519 -> 493,278 +202,718 -> 202,344 +665,24 -> 446,24 +426,845 -> 426,193 +116,930 -> 982,64 +625,587 -> 625,908 +13,965 -> 919,59 +124,466 -> 124,194 +793,249 -> 480,562 +20,174 -> 359,174 +982,988 -> 25,31 +71,416 -> 586,416 +157,122 -> 363,122 +31,453 -> 344,453 +435,284 -> 387,284 +389,446 -> 379,446 +913,536 -> 32,536 +505,952 -> 505,495 +489,159 -> 222,426 +267,118 -> 954,805 +15,833 -> 15,323 +77,197 -> 946,197 +955,22 -> 955,798 +620,707 -> 620,915 +740,495 -> 740,334 +770,735 -> 770,184 +420,524 -> 420,108 +382,982 -> 556,982 +111,777 -> 867,21 +280,105 -> 915,740 +235,23 -> 863,651 +679,402 -> 197,884 +72,77 -> 829,834 +858,486 -> 443,486 +403,115 -> 403,342 +489,547 -> 489,53 +404,280 -> 950,826 +680,458 -> 260,458 +10,610 -> 315,915 +386,630 -> 128,888 +293,732 -> 293,861 +204,378 -> 116,378 +90,269 -> 90,173 +893,869 -> 92,68 +741,694 -> 741,136 +620,449 -> 620,62 +866,678 -> 441,253 +885,212 -> 167,930 +868,853 -> 868,852 +392,926 -> 982,336 +252,930 -> 829,930 +758,606 -> 949,606 +79,895 -> 798,176 +394,688 -> 901,688 +355,217 -> 355,732 +43,23 -> 903,883 +426,691 -> 695,422 +970,416 -> 970,950 +317,334 -> 957,974 +198,160 -> 198,195 +610,191 -> 852,191 +388,569 -> 899,58 +490,662 -> 517,689 +691,627 -> 643,627 +404,564 -> 539,564 +946,623 -> 478,155 +686,608 -> 686,213 +573,508 -> 47,508 +610,262 -> 610,905 +782,602 -> 581,602 +987,378 -> 987,391 +443,243 -> 447,243 +710,493 -> 54,493 +564,179 -> 564,966 +828,673 -> 828,691 +761,869 -> 260,869 +810,949 -> 192,331 +674,263 -> 467,263 +481,81 -> 940,540 +779,301 -> 159,301 +763,457 -> 574,646 +794,770 -> 784,780 +19,964 -> 973,10 +809,720 -> 809,142 +822,324 -> 822,112 +120,980 -> 354,980 +238,277 -> 636,675 +747,647 -> 550,450 +419,205 -> 419,494 +34,968 -> 719,283 +306,591 -> 401,496 +648,673 -> 526,795 +486,426 -> 44,426 +441,642 -> 137,338 +396,740 -> 585,740 +741,227 -> 117,851 +620,263 -> 319,263 +421,321 -> 300,321 +732,387 -> 732,784 +445,59 -> 445,273 +151,910 -> 220,841 +836,599 -> 274,599 +598,193 -> 95,193 +718,765 -> 884,931 +403,165 -> 591,165 +241,441 -> 736,441 +902,986 -> 190,274 +190,671 -> 190,342 +887,301 -> 887,216 +878,747 -> 244,113 +93,747 -> 814,26 +764,604 -> 764,444 +510,852 -> 175,852 +50,718 -> 132,718 +791,436 -> 95,436 +751,122 -> 751,146 +953,162 -> 953,168 +113,546 -> 113,828 +752,407 -> 482,407 +398,412 -> 305,412 +912,630 -> 830,630 +699,155 -> 354,155 +842,874 -> 451,483 +18,83 -> 580,645 +63,594 -> 945,594 +557,286 -> 557,773 +21,448 -> 21,11 +955,724 -> 955,353 +857,411 -> 857,41 +605,932 -> 605,159 +985,64 -> 216,833 +34,673 -> 610,97 +888,764 -> 888,415 +574,801 -> 646,801 +290,593 -> 290,694 +151,72 -> 887,808 +632,53 -> 632,98 +346,686 -> 963,69 +258,129 -> 582,453 +189,205 -> 646,662 +272,821 -> 946,147 +409,531 -> 462,478 +725,575 -> 894,575 +885,888 -> 885,878 +475,210 -> 763,210 +42,963 -> 920,85 +985,213 -> 271,213 +538,842 -> 482,842 +175,529 -> 662,529 +853,670 -> 259,76 +656,364 -> 373,647 +114,134 -> 827,134 +58,878 -> 58,569 +45,340 -> 684,979 +35,829 -> 611,829 +625,166 -> 625,898 +849,980 -> 143,980 +720,92 -> 330,92 +689,255 -> 689,389 +842,526 -> 867,526 +834,399 -> 395,838 +325,212 -> 786,673 +934,941 -> 31,38 +211,640 -> 812,39 +449,896 -> 82,896 +795,757 -> 630,592 +894,691 -> 894,11 +639,839 -> 639,360 +941,862 -> 676,862 +480,757 -> 480,123 +425,734 -> 425,332 +391,704 -> 350,745 +173,352 -> 131,352 +814,703 -> 814,150 +347,156 -> 609,156 +427,520 -> 862,520 +787,724 -> 206,724 +313,587 -> 312,587 +743,491 -> 743,580 +277,964 -> 845,396 +132,65 -> 864,797 +227,619 -> 227,365 +360,484 -> 299,484 +717,790 -> 875,790 +798,480 -> 413,95 +643,518 -> 643,407 +939,530 -> 440,31 +241,44 -> 241,82 +362,49 -> 316,49 +160,98 -> 382,98 +67,593 -> 508,593 +363,456 -> 470,456 +644,63 -> 273,63 +341,696 -> 72,696 +270,303 -> 270,60 +716,391 -> 716,983 +678,904 -> 756,826 +480,487 -> 290,487 +762,316 -> 762,969 +380,735 -> 380,652 +223,922 -> 436,709 +690,733 -> 815,733 +185,130 -> 555,130 +10,931 -> 924,17 +678,940 -> 891,940 +702,112 -> 702,673 +554,559 -> 812,301 +406,758 -> 377,758 +361,119 -> 96,384 +787,356 -> 787,963 +957,54 -> 23,988 +636,650 -> 34,48 +170,21 -> 170,541 +955,103 -> 85,973 +144,698 -> 381,698 +85,55 -> 925,895 +12,15 -> 978,981 +32,954 -> 32,301 +438,234 -> 195,477 +121,438 -> 121,542 +353,607 -> 919,607 +978,646 -> 978,643 +925,112 -> 925,646 +447,120 -> 447,104 +332,398 -> 568,162 +399,841 -> 276,841 +923,853 -> 923,820 +890,202 -> 964,202 +306,782 -> 871,217 +547,558 -> 21,32 +893,164 -> 508,549 +485,76 -> 361,76 +713,768 -> 570,768 +314,18 -> 461,18 +618,281 -> 715,281 +374,787 -> 374,209 +324,97 -> 405,97 +890,729 -> 566,729 +762,438 -> 762,978 +274,49 -> 274,525 +905,34 -> 905,741 +799,384 -> 799,742 +378,358 -> 378,17 +805,131 -> 31,905 +640,453 -> 640,800 +563,305 -> 563,945 +898,590 -> 57,590 +513,187 -> 513,76 +706,407 -> 500,407 +235,69 -> 861,695 +408,259 -> 624,43 +327,308 -> 722,308 +109,247 -> 183,247 +487,493 -> 619,625 +769,452 -> 899,452 +727,765 -> 524,968 +887,472 -> 801,472 +157,100 -> 936,879 +584,658 -> 584,582 +557,488 -> 557,510 +790,35 -> 28,797 +458,920 -> 350,812 +54,797 -> 790,61 +59,387 -> 59,334 +565,368 -> 268,368 +70,146 -> 70,525 +681,451 -> 242,890 +869,831 -> 869,272 +276,184 -> 276,517 +984,922 -> 984,426 +616,572 -> 307,881 +323,806 -> 700,806 +595,547 -> 595,651 +731,638 -> 731,582 +760,836 -> 31,107 +768,377 -> 347,798 +847,765 -> 431,765 +777,95 -> 777,837 +832,330 -> 460,330 +423,213 -> 423,110 +937,549 -> 937,882 +529,735 -> 570,735 +436,343 -> 771,343 +965,833 -> 965,143 +518,484 -> 65,31 +940,989 -> 940,293 +983,63 -> 63,983 +237,733 -> 237,735 +624,281 -> 624,330 +473,719 -> 633,719 +312,489 -> 872,489 +369,520 -> 539,520 +80,705 -> 133,652 +659,289 -> 163,785 diff --git a/inputs/test_input05_2_1 b/inputs/test_input05_2_1 new file mode 100644 index 0000000..69f6044 --- /dev/null +++ b/inputs/test_input05_2_1 @@ -0,0 +1,500 @@ +365,809 -> 365,271 +899,814 -> 899,921 +967,913 -> 434,913 +971,362 -> 631,362 +597,422 -> 597,575 +722,82 -> 722,365 +98,891 -> 972,17 +361,534 -> 361,52 +958,858 -> 958,612 +261,683 -> 261,477 +859,381 -> 850,372 +773,305 -> 703,305 +527,318 -> 281,72 +29,119 -> 863,953 +428,723 -> 428,971 +582,787 -> 582,326 +795,495 -> 795,525 +920,548 -> 920,718 +421,264 -> 714,557 +635,310 -> 635,983 +751,479 -> 534,696 +121,768 -> 121,129 +679,858 -> 737,858 +499,549 -> 603,653 +398,95 -> 398,537 +459,626 -> 473,626 +611,905 -> 854,662 +139,124 -> 568,124 +230,921 -> 960,191 +550,258 -> 883,258 +866,830 -> 681,645 +501,840 -> 774,840 +383,900 -> 383,536 +635,690 -> 868,690 +37,948 -> 954,31 +785,598 -> 785,955 +844,957 -> 130,243 +395,307 -> 562,307 +463,286 -> 374,286 +798,351 -> 52,351 +549,79 -> 549,300 +153,847 -> 977,23 +499,976 -> 499,576 +687,281 -> 621,215 +765,640 -> 794,640 +776,287 -> 906,157 +879,108 -> 333,108 +340,565 -> 340,521 +706,809 -> 159,262 +725,896 -> 941,896 +673,470 -> 792,470 +446,562 -> 638,754 +315,626 -> 189,500 +816,637 -> 77,637 +171,313 -> 171,82 +941,19 -> 150,810 +885,854 -> 513,854 +864,177 -> 864,213 +156,150 -> 544,538 +810,20 -> 344,486 +651,757 -> 623,729 +567,475 -> 126,475 +436,975 -> 707,975 +948,977 -> 138,167 +498,186 -> 601,289 +532,900 -> 532,515 +12,809 -> 60,761 +561,344 -> 453,452 +241,600 -> 780,61 +600,574 -> 258,232 +53,661 -> 224,490 +735,134 -> 735,707 +850,14 -> 398,14 +472,489 -> 472,22 +949,196 -> 492,196 +220,30 -> 959,769 +354,889 -> 632,889 +779,537 -> 397,919 +136,876 -> 896,116 +12,983 -> 930,65 +716,856 -> 716,516 +595,604 -> 595,97 +863,70 -> 946,70 +13,988 -> 988,13 +595,955 -> 978,955 +138,300 -> 138,452 +801,883 -> 830,854 +189,13 -> 110,13 +315,68 -> 147,68 +594,977 -> 594,707 +424,726 -> 836,314 +596,790 -> 842,790 +135,135 -> 823,823 +257,639 -> 718,178 +462,859 -> 965,859 +935,29 -> 18,946 +308,841 -> 676,473 +372,607 -> 946,607 +518,806 -> 201,489 +620,689 -> 620,480 +376,378 -> 376,900 +86,675 -> 179,768 +509,790 -> 509,501 +778,143 -> 778,474 +965,140 -> 194,911 +621,458 -> 316,153 +83,931 -> 959,55 +533,647 -> 402,778 +957,336 -> 397,336 +929,788 -> 929,587 +642,978 -> 647,978 +429,275 -> 276,275 +662,821 -> 120,279 +137,208 -> 85,260 +815,641 -> 763,589 +222,510 -> 881,510 +892,930 -> 845,930 +288,268 -> 288,509 +900,13 -> 79,13 +438,764 -> 248,764 +391,495 -> 391,771 +868,713 -> 223,68 +680,180 -> 680,553 +911,389 -> 911,578 +107,182 -> 107,555 +944,787 -> 944,25 +405,193 -> 569,193 +341,182 -> 952,182 +497,197 -> 820,197 +204,224 -> 693,224 +342,290 -> 342,479 +881,281 -> 881,899 +971,987 -> 11,27 +389,729 -> 501,729 +638,939 -> 316,617 +923,799 -> 923,84 +17,744 -> 17,47 +305,163 -> 305,506 +703,414 -> 74,414 +572,537 -> 122,987 +385,364 -> 385,403 +667,825 -> 667,607 +466,86 -> 842,86 +591,209 -> 151,649 +329,526 -> 329,772 +756,769 -> 122,135 +638,454 -> 380,454 +316,98 -> 654,98 +273,740 -> 627,386 +88,982 -> 963,107 +913,710 -> 913,157 +530,410 -> 129,410 +660,237 -> 256,641 +865,149 -> 865,934 +769,47 -> 76,740 +520,876 -> 520,630 +101,839 -> 394,546 +422,874 -> 330,874 +987,19 -> 20,986 +398,771 -> 174,771 +574,546 -> 582,546 +896,52 -> 11,937 +927,927 -> 927,923 +111,822 -> 953,822 +633,130 -> 76,130 +193,74 -> 193,400 +887,828 -> 887,160 +284,313 -> 500,97 +813,500 -> 839,500 +312,534 -> 129,534 +202,34 -> 202,196 +740,597 -> 681,597 +37,979 -> 892,124 +494,235 -> 494,426 +334,892 -> 334,788 +679,728 -> 947,728 +635,557 -> 242,950 +301,713 -> 326,738 +261,867 -> 986,867 +959,344 -> 412,891 +605,659 -> 647,701 +806,931 -> 270,395 +546,107 -> 150,107 +836,793 -> 131,88 +231,572 -> 99,572 +257,580 -> 257,459 +254,669 -> 254,52 +105,26 -> 973,894 +101,532 -> 339,770 +854,695 -> 319,160 +599,190 -> 227,562 +783,816 -> 370,816 +505,638 -> 889,638 +742,615 -> 742,399 +984,750 -> 984,662 +295,736 -> 937,94 +762,435 -> 239,958 +876,89 -> 758,89 +178,964 -> 651,964 +385,389 -> 67,71 +514,967 -> 462,915 +819,758 -> 819,978 +541,109 -> 767,109 +137,262 -> 137,815 +720,591 -> 934,805 +56,79 -> 752,775 +493,519 -> 493,278 +202,718 -> 202,344 +665,24 -> 446,24 +426,845 -> 426,193 +116,930 -> 982,64 +625,587 -> 625,908 +13,965 -> 919,59 +124,466 -> 124,194 +793,249 -> 480,562 +20,174 -> 359,174 +982,988 -> 25,31 +71,416 -> 586,416 +157,122 -> 363,122 +31,453 -> 344,453 +435,284 -> 387,284 +389,446 -> 379,446 +913,536 -> 32,536 +505,952 -> 505,495 +489,159 -> 222,426 +267,118 -> 954,805 +15,833 -> 15,323 +77,197 -> 946,197 +955,22 -> 955,798 +620,707 -> 620,915 +740,495 -> 740,334 +770,735 -> 770,184 +420,524 -> 420,108 +382,982 -> 556,982 +111,777 -> 867,21 +280,105 -> 915,740 +235,23 -> 863,651 +679,402 -> 197,884 +72,77 -> 829,834 +858,486 -> 443,486 +403,115 -> 403,342 +489,547 -> 489,53 +404,280 -> 950,826 +680,458 -> 260,458 +10,610 -> 315,915 +386,630 -> 128,888 +293,732 -> 293,861 +204,378 -> 116,378 +90,269 -> 90,173 +893,869 -> 92,68 +741,694 -> 741,136 +620,449 -> 620,62 +866,678 -> 441,253 +885,212 -> 167,930 +868,853 -> 868,852 +392,926 -> 982,336 +252,930 -> 829,930 +758,606 -> 949,606 +79,895 -> 798,176 +394,688 -> 901,688 +355,217 -> 355,732 +43,23 -> 903,883 +426,691 -> 695,422 +970,416 -> 970,950 +317,334 -> 957,974 +198,160 -> 198,195 +610,191 -> 852,191 +388,569 -> 899,58 +490,662 -> 517,689 +691,627 -> 643,627 +404,564 -> 539,564 +946,623 -> 478,155 +686,608 -> 686,213 +573,508 -> 47,508 +610,262 -> 610,905 +782,602 -> 581,602 +987,378 -> 987,391 +443,243 -> 447,243 +710,493 -> 54,493 +564,179 -> 564,966 +828,673 -> 828,691 +761,869 -> 260,869 +810,949 -> 192,331 +674,263 -> 467,263 +481,81 -> 940,540 +779,301 -> 159,301 +763,457 -> 574,646 +794,770 -> 784,780 +19,964 -> 973,10 +809,720 -> 809,142 +822,324 -> 822,112 +120,980 -> 354,980 +238,277 -> 636,675 +747,647 -> 550,450 +419,205 -> 419,494 +34,968 -> 719,283 +306,591 -> 401,496 +648,673 -> 526,795 +486,426 -> 44,426 +441,642 -> 137,338 +396,740 -> 585,740 +741,227 -> 117,851 +620,263 -> 319,263 +421,321 -> 300,321 +732,387 -> 732,784 +445,59 -> 445,273 +151,910 -> 220,841 +836,599 -> 274,599 +598,193 -> 95,193 +718,765 -> 884,931 +403,165 -> 591,165 +241,441 -> 736,441 +902,986 -> 190,274 +190,671 -> 190,342 +887,301 -> 887,216 +878,747 -> 244,113 +93,747 -> 814,26 +764,604 -> 764,444 +510,852 -> 175,852 +50,718 -> 132,718 +791,436 -> 95,436 +751,122 -> 751,146 +953,162 -> 953,168 +113,546 -> 113,828 +752,407 -> 482,407 +398,412 -> 305,412 +912,630 -> 830,630 +699,155 -> 354,155 +842,874 -> 451,483 +18,83 -> 580,645 +63,594 -> 945,594 +557,286 -> 557,773 +21,448 -> 21,11 +955,724 -> 955,353 +857,411 -> 857,41 +605,932 -> 605,159 +985,64 -> 216,833 +34,673 -> 610,97 +888,764 -> 888,415 +574,801 -> 646,801 +290,593 -> 290,694 +151,72 -> 887,808 +632,53 -> 632,98 +346,686 -> 963,69 +258,129 -> 582,453 +189,205 -> 646,662 +272,821 -> 946,147 +409,531 -> 462,478 +725,575 -> 894,575 +885,888 -> 885,878 +475,210 -> 763,210 +42,963 -> 920,85 +985,213 -> 271,213 +538,842 -> 482,842 +175,529 -> 662,529 +853,670 -> 259,76 +656,364 -> 373,647 +114,134 -> 827,134 +58,878 -> 58,569 +45,340 -> 684,979 +35,829 -> 611,829 +625,166 -> 625,898 +849,980 -> 143,980 +720,92 -> 330,92 +689,255 -> 689,389 +842,526 -> 867,526 +834,399 -> 395,838 +325,212 -> 786,673 +934,941 -> 31,38 +211,640 -> 812,39 +449,896 -> 82,896 +795,757 -> 630,592 +894,691 -> 894,11 +639,839 -> 639,360 +941,862 -> 676,862 +480,757 -> 480,123 +425,734 -> 425,332 +391,704 -> 350,745 +173,352 -> 131,352 +814,703 -> 814,150 +347,156 -> 609,156 +427,520 -> 862,520 +787,724 -> 206,724 +313,587 -> 312,587 +743,491 -> 743,580 +277,964 -> 845,396 +132,65 -> 864,797 +227,619 -> 227,365 +360,484 -> 299,484 +717,790 -> 875,790 +798,480 -> 413,95 +643,518 -> 643,407 +939,530 -> 440,31 +241,44 -> 241,82 +362,49 -> 316,49 +160,98 -> 382,98 +67,593 -> 508,593 +363,456 -> 470,456 +644,63 -> 273,63 +341,696 -> 72,696 +270,303 -> 270,60 +716,391 -> 716,983 +678,904 -> 756,826 +480,487 -> 290,487 +762,316 -> 762,969 +380,735 -> 380,652 +223,922 -> 436,709 +690,733 -> 815,733 +185,130 -> 555,130 +10,931 -> 924,17 +678,940 -> 891,940 +702,112 -> 702,673 +554,559 -> 812,301 +406,758 -> 377,758 +361,119 -> 96,384 +787,356 -> 787,963 +957,54 -> 23,988 +636,650 -> 34,48 +170,21 -> 170,541 +955,103 -> 85,973 +144,698 -> 381,698 +85,55 -> 925,895 +12,15 -> 978,981 +32,954 -> 32,301 +438,234 -> 195,477 +121,438 -> 121,542 +353,607 -> 919,607 +978,646 -> 978,643 +925,112 -> 925,646 +447,120 -> 447,104 +332,398 -> 568,162 +399,841 -> 276,841 +923,853 -> 923,820 +890,202 -> 964,202 +306,782 -> 871,217 +547,558 -> 21,32 +893,164 -> 508,549 +485,76 -> 361,76 +713,768 -> 570,768 +314,18 -> 461,18 +618,281 -> 715,281 +374,787 -> 374,209 +324,97 -> 405,97 +890,729 -> 566,729 +762,438 -> 762,978 +274,49 -> 274,525 +905,34 -> 905,741 +799,384 -> 799,742 +378,358 -> 378,17 +805,131 -> 31,905 +640,453 -> 640,800 +563,305 -> 563,945 +898,590 -> 57,590 +513,187 -> 513,76 +706,407 -> 500,407 +235,69 -> 861,695 +408,259 -> 624,43 +327,308 -> 722,308 +109,247 -> 183,247 +487,493 -> 619,625 +769,452 -> 899,452 +727,765 -> 524,968 +887,472 -> 801,472 +157,100 -> 936,879 +584,658 -> 584,582 +557,488 -> 557,510 +790,35 -> 28,797 +458,920 -> 350,812 +54,797 -> 790,61 +59,387 -> 59,334 +565,368 -> 268,368 +70,146 -> 70,525 +681,451 -> 242,890 +869,831 -> 869,272 +276,184 -> 276,517 +984,922 -> 984,426 +616,572 -> 307,881 +323,806 -> 700,806 +595,547 -> 595,651 +731,638 -> 731,582 +760,836 -> 31,107 +768,377 -> 347,798 +847,765 -> 431,765 +777,95 -> 777,837 +832,330 -> 460,330 +423,213 -> 423,110 +937,549 -> 937,882 +529,735 -> 570,735 +436,343 -> 771,343 +965,833 -> 965,143 +518,484 -> 65,31 +940,989 -> 940,293 +983,63 -> 63,983 +237,733 -> 237,735 +624,281 -> 624,330 +473,719 -> 633,719 +312,489 -> 872,489 +369,520 -> 539,520 +80,705 -> 133,652 +659,289 -> 163,785 diff --git a/inputs/test_input06_1_1 b/inputs/test_input06_1_1 new file mode 100644 index 0000000..b800e1c --- /dev/null +++ b/inputs/test_input06_1_1 @@ -0,0 +1 @@ +1,5,5,1,5,1,5,3,1,3,2,4,3,4,1,1,3,5,4,4,2,1,2,1,2,1,2,1,5,2,1,5,1,2,2,1,5,5,5,1,1,1,5,1,3,4,5,1,2,2,5,5,3,4,5,4,4,1,4,5,3,4,4,5,2,4,2,2,1,3,4,3,2,3,4,1,4,4,4,5,1,3,4,2,5,4,5,3,1,4,1,1,1,2,4,2,1,5,1,4,5,3,3,4,1,1,4,3,4,1,1,1,5,4,3,5,2,4,1,1,2,3,2,4,4,3,3,5,3,1,4,5,5,4,3,3,5,1,5,3,5,2,5,1,5,5,2,3,3,1,1,2,2,4,3,1,5,1,1,3,1,4,1,2,3,5,5,1,2,3,4,3,4,1,1,5,5,3,3,4,5,1,1,4,1,4,1,3,5,5,1,4,3,1,3,5,5,5,5,5,2,2,1,2,4,1,5,3,3,5,4,5,4,1,5,1,5,1,2,5,4,5,5,3,2,2,2,5,4,4,3,3,1,4,1,2,3,1,5,4,5,3,4,1,1,2,2,1,2,5,1,1,1,5,4,5,2,1,4,4,1,1,3,3,1,3,2,1,5,2,3,4,5,3,5,4,3,1,3,5,5,5,5,2,1,1,4,2,5,1,5,1,3,4,3,5,5,1,4,3 diff --git a/inputs/test_input06_2_1 b/inputs/test_input06_2_1 new file mode 100644 index 0000000..b800e1c --- /dev/null +++ b/inputs/test_input06_2_1 @@ -0,0 +1 @@ +1,5,5,1,5,1,5,3,1,3,2,4,3,4,1,1,3,5,4,4,2,1,2,1,2,1,2,1,5,2,1,5,1,2,2,1,5,5,5,1,1,1,5,1,3,4,5,1,2,2,5,5,3,4,5,4,4,1,4,5,3,4,4,5,2,4,2,2,1,3,4,3,2,3,4,1,4,4,4,5,1,3,4,2,5,4,5,3,1,4,1,1,1,2,4,2,1,5,1,4,5,3,3,4,1,1,4,3,4,1,1,1,5,4,3,5,2,4,1,1,2,3,2,4,4,3,3,5,3,1,4,5,5,4,3,3,5,1,5,3,5,2,5,1,5,5,2,3,3,1,1,2,2,4,3,1,5,1,1,3,1,4,1,2,3,5,5,1,2,3,4,3,4,1,1,5,5,3,3,4,5,1,1,4,1,4,1,3,5,5,1,4,3,1,3,5,5,5,5,5,2,2,1,2,4,1,5,3,3,5,4,5,4,1,5,1,5,1,2,5,4,5,5,3,2,2,2,5,4,4,3,3,1,4,1,2,3,1,5,4,5,3,4,1,1,2,2,1,2,5,1,1,1,5,4,5,2,1,4,4,1,1,3,3,1,3,2,1,5,2,3,4,5,3,5,4,3,1,3,5,5,5,5,2,1,1,4,2,5,1,5,1,3,4,3,5,5,1,4,3 diff --git a/inputs/test_input07_1_1 b/inputs/test_input07_1_1 new file mode 100644 index 0000000..9aa04a5 --- /dev/null +++ b/inputs/test_input07_1_1 @@ -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,424,1266,45,208,326,65,221,2,303,309,514,471,608,104,640,236,187,1074,1043,120,1226,7,364,85,863,476,453,13,416,28,304,1,542,401,1089,646,301,263,979,126,178,1046,169,174,1604,9,99,858,1610,470,1003,336,1009,295,312,291,226,317,398,642,532,55,834,459,69,662,22,241,1235,243,413,42,64,100,415,240,149,301,147,454,26,289,129,157,639,337,683,71,285,141,141,63,824,199,16,1601,418,1102,146,1012,1648,2,1445,113,103,570,421,1241,37,1007,544,40,251,57,388,522,417,211,650,186,88,21,848,1150,16,926,332,76,913,436,804,86,80,7,25,464,334,552,30,566,748,174,28,56,747,1697,551,996,864,57,165,1111,113,405,301,273,1458,1724,186,846,272,553,647,6,210,231,920,581,105,846,1158,258,617,231,157,99,240,577,726,5,357,1226,1175,74,926,310,269,199,447,8,180,1010,933,980,5,190,188,96,3,641,124,140,625,901,136,75,225,461,1219,465,166,18,533,393,528,252,841,466,308,235,530,417,155,812,61,712,484,315,443,352,397,619,297,767,1691,377,1197,1738,356,696,450,162,809,42,17,490,265,13,30,650,212,220,1520,231,949,1158,270,568,1038,687,8,15,476,958,565,543,1440,1700,1439,36,69,64,1347,885,78,78,972,184,36,106,106,984,324,968,264,131,655,508,110,1279,1690,105,608,1100,309,708,250,194,163,383,302,64,145,448,465,691,73,489,44,783,443,241,182,519,45,129,556,47,168,646,454,601,990,655,856,445,454,140,314,71,566,595,16,1504,100,306,556,960,42,638,594,761,164,1001,180,1135,124,157,433,326,1078,1234,403,920,559,65,151,307,1348,557,283,233,1196,100,145,84,494,1094,248,964,34,178,294,76,236,294,907,123,135,43,739,67,2,1040,511,470,565,1638,121,46,912,186,1281,1017,891,679,1128,207,347,194,1035,38,195,1080,74,157,1522,471,469,238,1207,965,72,865,687,254,769,876,222,453,29,250,188,182,897,799,213,305,509,109,463,625,11,36,1227,139,709,548,332,1376,334,538,496,112,1081,9,676,309,178,686,64,122,713,1126,864,1613,1913,443,829,258,205,678,255,617,685,347,229,1251,708,654,179,514,256,63,48,872,442,83,797,259,289,865,104,475,503,535,1210,290,55,451,208,460,128,257,306,369,966,1462,206,215,1645,333,16,1122,216,655,818,488,363,951,26,1040,103,351,253,317,942,989,1161,538,995,544,783,56,281,1711,199,71,100,66,1289,218,1854,658,34,630,111,232,763,530,1692,422,1599,288,661,575,286,15,31,801,1776,1068,871,659,269,559,39,1633,488,107,638,40,299,383,989,483,569,61,157,1204,1028,114,140,1560,54,121,77,611,260,695,1370,9,356,469,1126,203,27,79,309,246,467,1199,67,302,28,584,551,1273,373,61,1008,9,590,71,77,2,74,515,796,156,350,860,0,146,1091,97,550,135,119,1636,27,349,1327,182,1466,172,685,481,421,258,210,139,690,424,540,198,1010,687,87,22,85,499,127,74,155,631,1771,145,1025,362,776,137,422,579,100,1919,865,257,7,272,42,489,11,739,800,246,47,23,17,1320,1717,180,879,47,335,97,236,1376,23,1574,97,489,656,459,1215,116,299,312,18,502,11,82,0,309,7,616,56,303,386,1864,387,9,128,324,523,1055,92,1321,747,411,108,168,614,960,1418,1687,493,118,83,9,112,475,392,7,549,377,224,257,473,281,1065,156,578,179,1276,130,62,50,407,226,1096,1060,795,234,677,1127,672,520,501,474,825,118,320,1329,107,260,39,114,390,319,304,49,528,634,77,336,137,289,56,778,262,1440,91,33,83,199,13,1153,54,157,620,183,303,702,474,269,31,391,294,1388,15,104,461,251,132,1145,337,197,95,37,563,87,19,740,58,201,168,175,169,40,46,230,21,58,616,325,566,87,53,909,905,309,302,425,448,1615,641,1327,10,463,293,323,2,189,91,1236,410,808,1182,288,150,544,304,33,26,1214,335,430,1,751,79,145,1397,1727,38,741,977,229,74,273,578,53,233,272,3,98,885,735,678,130,518,298,337,228,270,32,800,51,1901,919,1689,113,556,355,710,6,1221,219,1731,318,1216,164,76,88,149,230,5,1000,1112,49,486,1139,21,850,597,71,1619,655,71,1309,1300,1904,189,344,434,53,1229,1176,17,165,613,66,71,866,208,225,112,1202,558,2,731,665,245,519,250 diff --git a/inputs/test_input07_2_1 b/inputs/test_input07_2_1 new file mode 100644 index 0000000..9aa04a5 --- /dev/null +++ b/inputs/test_input07_2_1 @@ -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,424,1266,45,208,326,65,221,2,303,309,514,471,608,104,640,236,187,1074,1043,120,1226,7,364,85,863,476,453,13,416,28,304,1,542,401,1089,646,301,263,979,126,178,1046,169,174,1604,9,99,858,1610,470,1003,336,1009,295,312,291,226,317,398,642,532,55,834,459,69,662,22,241,1235,243,413,42,64,100,415,240,149,301,147,454,26,289,129,157,639,337,683,71,285,141,141,63,824,199,16,1601,418,1102,146,1012,1648,2,1445,113,103,570,421,1241,37,1007,544,40,251,57,388,522,417,211,650,186,88,21,848,1150,16,926,332,76,913,436,804,86,80,7,25,464,334,552,30,566,748,174,28,56,747,1697,551,996,864,57,165,1111,113,405,301,273,1458,1724,186,846,272,553,647,6,210,231,920,581,105,846,1158,258,617,231,157,99,240,577,726,5,357,1226,1175,74,926,310,269,199,447,8,180,1010,933,980,5,190,188,96,3,641,124,140,625,901,136,75,225,461,1219,465,166,18,533,393,528,252,841,466,308,235,530,417,155,812,61,712,484,315,443,352,397,619,297,767,1691,377,1197,1738,356,696,450,162,809,42,17,490,265,13,30,650,212,220,1520,231,949,1158,270,568,1038,687,8,15,476,958,565,543,1440,1700,1439,36,69,64,1347,885,78,78,972,184,36,106,106,984,324,968,264,131,655,508,110,1279,1690,105,608,1100,309,708,250,194,163,383,302,64,145,448,465,691,73,489,44,783,443,241,182,519,45,129,556,47,168,646,454,601,990,655,856,445,454,140,314,71,566,595,16,1504,100,306,556,960,42,638,594,761,164,1001,180,1135,124,157,433,326,1078,1234,403,920,559,65,151,307,1348,557,283,233,1196,100,145,84,494,1094,248,964,34,178,294,76,236,294,907,123,135,43,739,67,2,1040,511,470,565,1638,121,46,912,186,1281,1017,891,679,1128,207,347,194,1035,38,195,1080,74,157,1522,471,469,238,1207,965,72,865,687,254,769,876,222,453,29,250,188,182,897,799,213,305,509,109,463,625,11,36,1227,139,709,548,332,1376,334,538,496,112,1081,9,676,309,178,686,64,122,713,1126,864,1613,1913,443,829,258,205,678,255,617,685,347,229,1251,708,654,179,514,256,63,48,872,442,83,797,259,289,865,104,475,503,535,1210,290,55,451,208,460,128,257,306,369,966,1462,206,215,1645,333,16,1122,216,655,818,488,363,951,26,1040,103,351,253,317,942,989,1161,538,995,544,783,56,281,1711,199,71,100,66,1289,218,1854,658,34,630,111,232,763,530,1692,422,1599,288,661,575,286,15,31,801,1776,1068,871,659,269,559,39,1633,488,107,638,40,299,383,989,483,569,61,157,1204,1028,114,140,1560,54,121,77,611,260,695,1370,9,356,469,1126,203,27,79,309,246,467,1199,67,302,28,584,551,1273,373,61,1008,9,590,71,77,2,74,515,796,156,350,860,0,146,1091,97,550,135,119,1636,27,349,1327,182,1466,172,685,481,421,258,210,139,690,424,540,198,1010,687,87,22,85,499,127,74,155,631,1771,145,1025,362,776,137,422,579,100,1919,865,257,7,272,42,489,11,739,800,246,47,23,17,1320,1717,180,879,47,335,97,236,1376,23,1574,97,489,656,459,1215,116,299,312,18,502,11,82,0,309,7,616,56,303,386,1864,387,9,128,324,523,1055,92,1321,747,411,108,168,614,960,1418,1687,493,118,83,9,112,475,392,7,549,377,224,257,473,281,1065,156,578,179,1276,130,62,50,407,226,1096,1060,795,234,677,1127,672,520,501,474,825,118,320,1329,107,260,39,114,390,319,304,49,528,634,77,336,137,289,56,778,262,1440,91,33,83,199,13,1153,54,157,620,183,303,702,474,269,31,391,294,1388,15,104,461,251,132,1145,337,197,95,37,563,87,19,740,58,201,168,175,169,40,46,230,21,58,616,325,566,87,53,909,905,309,302,425,448,1615,641,1327,10,463,293,323,2,189,91,1236,410,808,1182,288,150,544,304,33,26,1214,335,430,1,751,79,145,1397,1727,38,741,977,229,74,273,578,53,233,272,3,98,885,735,678,130,518,298,337,228,270,32,800,51,1901,919,1689,113,556,355,710,6,1221,219,1731,318,1216,164,76,88,149,230,5,1000,1112,49,486,1139,21,850,597,71,1619,655,71,1309,1300,1904,189,344,434,53,1229,1176,17,165,613,66,71,866,208,225,112,1202,558,2,731,665,245,519,250 diff --git a/inputs/test_input08_1_1 b/inputs/test_input08_1_1 new file mode 100644 index 0000000..4d2de7b --- /dev/null +++ b/inputs/test_input08_1_1 @@ -0,0 +1,200 @@ +gabfed acbdfg cd gebcd gdfecb bgfdcae ecdf dcb gdbfe gaceb | dcb dgfceab cbfdeg edcf +cdbeagf df bfcgd bfed cfd fgcbed gcedb cfeadg cegabd fbacg | acbfedg acbfg dfcaeg bfgca +ag agf fbaceg beag acgfe efdcgba afcgbd afced gfecbd bcfge | bcfeg bcdgfae fga egacf +gdfcea edb acefgbd bgcad gabed cdbfea adgef ebgf dabfge be | gdbca be egfacdb adcefbg +dbefg ba edfca fdebga abf ageb fdcagb fbdae cfeagbd dfbcge | ecfda bfa fdgeab fadbcg +cfbage be daecf cedbfag dcafeb eabd ebc dcefb dcgbf gefdca | deafc fbdec gecdfa dfgcb +bdcaeg gde fdeb gadfe ed gfdca febag begadf aedgcbf gcfeba | fbgecad egbcafd fdcag ed +cg gbfad gebc fbdec bdfcg efbgcd efbdca cgfdabe cfg adgfec | befdcag dcbfg bcedf cfg +gefc faedgc adegf fea gcbade fe dgafb fdecab cadeg cfaedgb | dbafg gdebca dbcaeg bdacfe +gdfebc abcefd bcged dgcf efdgb gbfcaed adcgbe bfgae efd df | agfbe cgebd agcedb feagb +fgadec egbf fegdab ef agecdfb baecd fbdae bfadg gdfacb dfe | cebda ebcad dfe efd +acfdge cebgf fbag aegbcf gfc cebgd fg abdcef dcfabeg bcfae | gfba eadbfc efcabg dcgaef +cdfeba bcdage gbcef cdbaf cfadebg dcgbf fgda dg bgfcad dcg | edafgcb gebdca gd cegbdfa +cb cebadf ecbadgf dbgfa cfb cgefd dcfagb dfbcg fdebag acgb | decfg dbgcf fcb adefcb +baedg eafdgb af gfcbd abf bfagd egaf gbecdfa eadcgb dcfbea | gbedfca af gcfbd baf +cg cag gacbe eabgfdc egcbda dgce gdabfe begad agdcfb ceabf | gbfcad bgaced febdag debgca +dabg fdgbc efabc ag afgcbd bcfag fag dbfgaec cfegdb facdge | cfagb fcdbga gaf fag +feabd cgfadbe gdebcf adecb bf fdb abfg dgaefc gefad badefg | bedgacf bfag gdeaf gafb +edfcb becgf eg cbagdfe gfcab egf febcda gfeabd dfebcg cegd | gef ebfdgc gbecf efg +dcgbae fegbac ecg abgcdf bgdca eg gbed cegfdba daecg dfcea | dbge decfa gecad cdfabg +bdg cabdge edagb cgde bgaedcf bdace gbacdf egfab bfdeac dg | acedb gbdeca daebc gdec +gcdab fbacdg fbca edcbag fb cabdgef cfbdg cfedg fgb fabdeg | bafc bacf gfbaedc cgedab +gacedf fcadg agd dgbfea ad gcabf acbfedg fgdec edca cgdefb | adgfc deagcf ecgafd fbcag +defgba cedagb cbgadfe gfcdae faeb fbegd feg geadb dbcgf ef | cbfdg feg ef gef +abgdef fgcbda cafbd gbfc bf bacde bfadegc degafc cgadf fba | bf bcgf ceadfg decba +bfgcad efcag cgdaf dfaegc cgadeb eg egdf gae dfcbgae cabef | fabec feadgcb edcbag ega +bdfea fcab ac eadbcf egdabc bdagfe dcegf dfaec ace gcbafed | egbdaf ca bcaf dafbe +ba gafb adbeg acdfeg dfgae begdc eab dgacfbe eagfbd ebfdac | dgcbe eabcdf eba bcafgde +gfaceb dgfae ca dcfgab dgbcfe fcage bgecf fgacedb cbae fca | bgcfda cafgeb afegc fgace +gfcda egfcda cdabeg gabfe db dfbc dbg bcfadg dfabg bfdagce | abgced db dfbc bd +gdafce bafde cbdfa fea bcgdae bgacfde adbefg bedag efbg ef | ebcgafd gdafbe cegabdf cgfaebd +adfgc bcge acdfbeg bac cb cgfab ebfga adfbeg fcgeba dbcfea | abfgc dgbafe fcdag fcagd +ce gdbfcae bcgadf cegfad facbe bdce bdcfa aec aefgb afecdb | fedbac egdfabc bdaecfg eabdfgc +bfeda fa geafbd bdgef fda cegbdf bgdface gaef cebad cgadfb | adegbcf efag dfeabcg edbgcf +def gcbfd ed ecgbdfa gdefc gbed cadebf cgfae cgdfbe fadcgb | ed fed cbfgda fbceagd +gec agced agef edbca cfdbga dacegf ge baedcgf cafgd cgdefb | fbgcda bcgaedf cgead gce +eabcgd gecbadf bge ge acgbd egad fagcbe fcdbe ebcdg dcgbfa | cebdf geb fedbc geb +gaecfd gaf cfge cbefad fgcdaeb bgefda dbgac dacef cdfga fg | deafcb aedcbgf fg fdcae +acbgef dcbgaf caegfdb be afbcg gafbe bfe ebcfad gbce dfega | bfe decfab fcabde cbegdaf +eafcdg dbgac efgd fcdae eg gadce ecbagf eag efdcba becfagd | gdfe ge acfed aebcfdg +dacegf cbae ac gfbdaec agc gbdfc gbcaed bgead acbgd efdgab | ca ac ac gca +fcd cafe bcade efdcb fc bedfca fgbcdae egbfd cbadfg gadbec | bdgef cf aecf cdf +abgcf bcgafd ge abgdecf edcfa cge cgafe gbae bgcafe ecbfgd | gabe adcbgf gce fcabg +ebfcgd bdeagfc dgbefa fegcd fa ceaf fga dbgca adcfg adecgf | gfceda acgbd af ecgdbf +gabec cgefda efbacd egabfcd bf fba agdfc bfdg bcgfa bdgcaf | afbgc afcdbg acbgf ebcag +begdc gecfd cbgfad cfgda egabcdf fe aefc eadgbf cgefad dfe | afce fe cefa egdbc +efdcag bgcad dbeg dbfgaec ebadc fgabc gd aedbcf dcg cbadge | gd ceabd agbdec gebd +aegb bfcag agcbfe agfcbed bcdfa fagce gcb gb bcfdeg dagcef | bcfedg bgae acefgd cefga +dcfagbe adg ebacgf dfbeag ad fcagd abdc afcgbd cfbag cfedg | dfabgce da cafgbe ad +ead degcb eacgf fbecda adbg febdcag ad bcgdae cgdebf egacd | cefag cdgae fbdgec agcfe +cgbaef bagecfd adbgcf adfeg faedcb fcabe cegfa bgce fcg cg | gacef bgface bdgafc fbaec +acfgd gacbfd bdegfac fcgedb da cadb efgdab agefc fdgcb adg | adg ad aecgf bcgfd +fgdcea fbacdeg cefda dag fedg dg gacbed fbagc gfcad fcedba | gd dcfebag cdafbge gebfdac +bcafeg gaefcd cae gcade ecdf ce dgafc degba gabfdce gbafcd | bafgec gacfdb gdcebaf cdfgab +fcgb afgdec bdecf fg dfbaec cgbfdea dcfgeb dfg ebfgd abdeg | dbega eadcgf febdc cbdgeaf +adcf agdecf dgeac gfcdbe faceg gfceba begdcaf gcd daebg cd | fadc dgcefa ecgdbf acegf +gedfa gbdea bfgade ebcfdg gcedab eabgcdf ef fge bfae cfdag | baef gfe egf degcafb +aedbcf beadg dcgfbea gaecb aedgcf bagefd bed fdgb db degaf | bgfd fegadb bgdea acbfed +fbgca da defbga cebdg bdcga efcbag fgdebca bda fcad bafcdg | ad gcbaf dabgc gbedc +cgeb cfgda eg fcbedga acfebd badegf gea daecbg eabdc caged | ebdac gae bceda dcageb +ge bcdfga cbaedgf gfe gcdfb efgbda febgcd cgfbe gdec afbec | dcge cdge ecdg gbdcf +dcabe ebfgd gda dcfaegb afecdg dageb gbac ag dbcgea acefdb | gda dag gbeacdf ag +gadf fd baedgc gdcba efcab fdb fbdceg gbfcad adbfc daebcfg | dfb fgda bdf cdbgea +bcdfge dbfaec gb bcdef gdeb gcb bfcage fdcgb gafbecd dcgaf | bg bgcdef dbge befgdc +acdb gecbdf cgafb dgbfae dcbafg ab dbgcf adbfegc fab acegf | dcbfg bdca cbgdf dgfcb +acbdfe cabe acdbf badcefg cdbgf ba afb gfcade gedafb fcaed | bfa gbdaecf ba adecf +ae bdafc bceaf gdbafec bfgec eab dabfge fgbdca daecbf eacd | ae becgf cead bfcea +bcged dec bfceg acbd faecgdb daebg dacbge dfaebg gfadce cd | ecd dc gfcbe adbfeg +ecadfg bfdge fe fde bagcfd fcbe bgfdc geabd bfcegd dgbcaef | fcadgb bgade fe fegadc +degabf face fcd cf bfdegc adcefg cdgfa cdagebf afdeg bcgda | fcdebga fc caegdfb feadg +dfage dfec df gabced eacfdg fdg fgbecad cadeg gfcabd aefgb | cdef fegdac fd agfeb +da bfgac adf gefdc cabfgd bgfeac afebgd cgfaebd cgdaf adbc | fda dfgce gfabce faedbg +dgfba gadefc acegdfb bgd bg cgba facdg bgdfca febdgc eadbf | gdb dagecf fbdgac dafgb +ab gecaf ebfadcg bagfc cbgfd dcfgea cab efabcd eagbcf abeg | acb fbdeac abc agfebc +gc eagfb gec aegcbd acfed gdbceaf cgfea dcgf cgefad cdbfea | dfgc gefba cg aedcfb +deafc gbcf bfdeg dcafgeb efdcb acbged fgedcb cbe bc gefbda | cdfea fbgc fedcb ebfcdg +cd dfaeg dgceba gdcebfa gcfde gbdfce dcg fbgce ceabfg bdcf | cd dc fcgbe deafg +fd cfeab bdecf abdgec fdbecg dbfg def faegdc fagcdbe bcged | edcgb fd fegbdac dcebf +gcfbd fa fbadc abgedc cadfbeg fda afbe bcead dcafge ebfdca | fdgace gefadbc acbfd befa +bgcedaf afbegc eg dfbeac ceg fgcdae efcda ecgdf gcfbd daeg | decfa deag gcdfe ge +cgabdf af abfe agedbc ecfdg bgdea fagbecd fadbge dfa dgeaf | fa dbagce af af +egdabfc dgbac gefdca bcef gcfbed cf dbgef dcfgb fdc afbedg | becf gdeabfc dbfgcea efbgd +feb abegfd agfedc cbfge fagec bf gcbde afcb aefgbc gfbecda | bcfa bf fb egfacb +fage cgbfd gcfde gedfca fce fe adcge dafbceg aecdbg cdebfa | fgae gaef cfeabd cfdbg +gdcfe ed eagdfb dcfgbe bagcefd ebcd fdbgc deg gecaf gbdafc | gebdcf efgdba gcfebd de +debfga dcbe bcaeg aecbgf acedg ed dbgcae dgecfba cagdf ade | geacd ecbga de becadg +abegc fe efbdca aecfg adfgce efa bgafcd gdef gfadcbe fdcga | ef dcgbeaf fgcad faceg +adgfeb fbcge fbacgd acb abdcef ca ebcaf faedb caed gcbeadf | afecb acbdfe efadgb cbgfead +cefa daefbc fdecb aefdb gfbceda bgdafc debfga bgedc fc cbf | bfc ecfdba adefb ecaf +debc dfbage caedg cafedgb fbacg gbd agbdc gdafec db deagbc | bd bdg befdag dcfage +gacefb edbac gdef gfbeacd gfecb gacbdf fd dcfeb bgefcd cfd | cgbedaf gdfe gecfb cfd +geacd eb ebg gfbcade egfcdb daeb dfacge eabcg fabcg cdabeg | gdcaef ebg beg daeb +gadbfce gfda abcgfe gd bacgf abdce dgb dacfbg dbagc fbegdc | ecbafg bfgac gcbfa cbgfde +aedgcb cdaef efg egcba fcage fgbeac daefgb bfgc gf gcbeadf | fecga edagbc gf bdefagc +db cgebd efbgdc egfcda ebdf gecfd fdebcag dbc abfdcg gabce | db cedgbf aecfgd debf +ecfadg efbagc feg cgde fbcdag ge gadef bcgadfe cafgd aefbd | fbgcae afcdebg edfab eg +gebfad bgeca fdce bdgceaf cd debgc bcd dbgfe bdfcag bfgdec | abgec cbage facdgb dc +dbfgcea eacg edacf dfgec bgdcfa daefb fedbcg cad ca eacdfg | cad ebgdcaf cage eafdc +decafg abdcg bgdcfae fa daf bedfcg cfdba cfdaeb abef fbecd | dbafgce afd fa caedfg +dfcbgae fgecb abegdc beafdg ecd efdgc cfeagd cdfa eadgf cd | egdaf cdfa decgaf cdaf +gbafed cegfadb cage efcabg cgabf gfebc dacfb bdefcg ag gaf | fgcab fbdgce bgacf agbfcde +badgc bea be adcfbe dgbecaf ecgb cdgbfa dbega gdfae daegcb | cebg adgcbf bcdga agbcd +gbaced fadcb ag dfebgca gac bdgfec acgbd gdceb aegd gcbefa | adge gaed gca ecbdg +bgdce gbdcfe ge badec gacfbd egb fdcbg fgaecbd fcbeag dfge | gfed cefgbda ebdgc gcbdf +aedfc cgde cgfaed bgfad ge bcfaed ecgabf gae egbfacd geadf | fdeag febcda cedg cafdbe +agf fegad fdgcae fcead fg abcfed cfeg agdbe fcbdga degbfac | adebg ecfda afg fg +bdfegc aefg bacged fegdbac fgcad cbfad ag agd fegdca fcedg | feabcdg bdcefg gbfacde edgfac +aec cefbag dabfgce dgcae degacb ae bgced dbea fedcgb fdacg | ecgbda ebcgd daceg cedgb +dcbfgea decba fadegb ebfag cef fagbec fc bcgf ecdgfa febca | bgeadf fgebda gcdafe abcde +bfcgd degfbac afebc def cfdega ebgd ed bfced cedbgf fdcgba | dgbcef fdcbe gafcdb gbfdec +fge abfcdeg dfega fg eabgd fdgc fgaedc ecadf becgaf befcda | edgaf fcdg dbfcea bcefdga +bgcafe bdfecg acedf dcfbe agcdfb be bfcegad fbe ebgd gcdbf | fbe feb bedcgfa fdbce +be cabdfe adgce fbcda cfeb aeb acfbegd abgfed ebdca adgbcf | egadc eb fcadeb bcedaf +gfbea ecbf gcefa ec cdfag fdgeba aec eagbcd bcfgae afdgcbe | gbadcef afcbegd acgef dfgbea +gb dgbf cegfda bfcgae dceba afcgd cagbd afdebgc gcbdfa cbg | bg fbdg cbg bacgfe +efgdcb cgefabd fc abedc bgefd deagfc cbfed cbfg ebafdg fce | febdc fgedcab bcdae fdcbe +cafbdg gdebc beadf dca acebd ac fgdeba ecfabd gdefcab ceaf | efdcgab gabefd dcgbe gdecb +fbd adgbe fegcb afdcbg dcfgbea egfdb fdce fd fdbgec caefbg | edfc afbdcg abfegc fdbeg +cbgdaef eabdg afdb cbdeag ecfgb fd edfgba fcdage efbdg def | dgfcae dgebf bcadge fd +eb dfcge deb cbgdfa abef baefdg abdgf fbdeg fbcgade agbcde | afeb dfgba agebcd dbeagc +gcbde eadfbc gbeda edcbfg ae aedbcg afcgbed afgbd dae agce | cbegd bafdg bdega gbadf +faegc adbcfg bgfaec edgcb geadc dafgebc ad dfae ecfdga cad | acd da fcbgea gdceb +ga daecfb afgbdc dcaef gcfbe gedafbc edafgc cgafe agf gaed | ga fcbadge fdebgac egacf +cdgfab gaedb egfbc ebdfag dgc dc ecad eacgdb dfegcab bcdge | efgbc dc gcd gcebad +edcfg befacd cdgae bcgfed dae gfad agebc bdcfeag da fcgeda | fgad edbcaf fcadeg ceagb +ba afegcd edcfb cba baefcg fgba acdgbe bgafedc ebacf ecfag | gcadfe cfdbe cgaebd beafcg +cegfa edcb be cafeb fagdbec fbecda cdfab dagbcf dgeabf feb | aebdfgc eb bdec cbaef +efdba bacde dce dc beagc dcfb dagbef adgfce afedbc dgafebc | dce deacbf dbaec dcbf +fcdebg ce caef dabef eacbd gaebcfd ecb dbfcae cdgab defgab | dabgc ceb cafe bfdea +ebdcagf gefcb bafe aecgdb be fgeac geadcf cbe dcgfb gbacfe | bce be gdfcb eb +bfgead deacb fae fbcdag fe defgbac baefd bgfda gdef bacgef | aef fdgab fgcabed dabgcfe +bg fgadec debg fbg cadfb dgafebc eagfd dabfg fbegad gfecba | bacfge egcabf gafdb dacgfe +bgdce ecba abcdfg gbe bafged cfdeg eb becfdag bgadce cabdg | egb bace fedgc facdegb +gbade agf efac fgdaecb gcfabd bfecg bcfgea gdbfce fa gfaeb | gdfeabc febagc fa afce +bfcegd fbdeag ga dcabeg egfa dagfb efdgb dbcagef dag fcbad | bcfgaed edcbgf dga dacgeb +bdcfga db gadcfe bgdcf gfceb cadbge adfb cbgdfae bgd dfagc | gefbc dgfaec cgfeb db +degabf gbea ecfbd gdfbac aed fcegda gdbaf ebfda ae edfabcg | bcfed ae dgfecba dgcfae +begaf agdbfc fagcb be edgfbca efcb afgde bae gfbcae agcedb | be efbc afbgdc begdac +afebg ecfab becfd gbaefc cgfa ac edacgb bedgfa febcgda aec | fecbd cbfeag efabg gbdeaf +cfdage ef dceagb feda fce ecadgfb ecgad gcfde gfbdc ecfbga | dbfgc efad fead bgdcaef +agdbef fb bcedfag cgdba bdegcf fgead fbd gfadce befa bfadg | dgabc fb dfb bf +cfebgd cabdf dgcaeb egcbaf ae cea eadbc fedbagc aedg cedgb | gecdb ace aec ae +cbe bgaced cgfba baef fgabcd fgcde fgabce eb efbcgda bgfec | abgfdec bgafc badefcg ebc +ecagb dfce cf fbc dcagbf befca acedfb gdeacfb eadbf dgafeb | fedgba dfcabe cegab ecagb +fa agbdc cgdaf aedf efgcd efdacgb gbcfde afg acdgfe gfabce | fa gaf fead fgecd +egacb cgbdaef ce bec gbafc dgcfab egbda dfebac fceg ebacfg | gbcea acbdef caebgf efdgcab +dafeg cd febadg acefb agcd bfcgdea dcfgae ecdfa ecd dbfegc | becaf dgac becaf egcdfa +badc bc cfaed ceb dbgfeac gadefc fgeab fgbedc acbfde abcfe | afegb efbdca cdfbea bdegcf +bafedg dgbceaf gcdef dfeabc abfdgc gcab cfb cdfgb dgabf cb | bc cb fgdba bcf +dfabg dfgbca cd bagdefc afbce gdacef bdcg dca bafcd efadgb | dca bcadf bdgfca adfecg +acgbd acfgde fbgedc fbgcdae fdcabe fdcge fcb fb fbge cdbfg | cbf gfdec fbc acfdeg +eafbdg eadbgc bde gcdbaef gdceaf ecdag fgecb cgbed bd adbc | aecgdfb bd cgaed dbe +dg fcaebg gbeaf gcdfea fgd fgdab cfabd ebdg fcdgbae gbedaf | fagbce dcegaf afecbg cegbfa +gbd efcagd gb bgeda fbade bfecgd eabdgc daceg gfecbda acbg | egbfcd fegcbd egdba aedgc +bag efbgad ecgdab edabc adbcg agec ag feabdc dgfcb efbgacd | febdcag cgdfb agb gdcab +fegdabc becafd dcefa eagdc bcfae fd fde dafb febcag befcgd | cbdfea fbda edf fed +gdcbf cafbeg bgdface ad eadf eafbdg fdgab gdbcea egbfa dba | gbfeac ebagf bdacge gbecad +ebfcag ecfgadb efbagd egb dbfagc cbfe be agebc bfacg agdce | beg becf gcbaf bafgc +bgedca eacgf dec afebcd dc bedag adgbef ebcgdfa dgbc cdgea | agbdfe ebagd dce bgdc +adecgb bdeaf gdefa gdbfeca fgbe aedcbf egd eg cfdga afdbge | dcfeabg cfgad gefad gfbaed +cafe ce abecdg edc bdcfg afcdgeb beagfd ecdfb bfcdea fdeba | ce face ce ecd +gf efadc gafcde cfagd cgf deafbc dgef bcefag gbacd dagbefc | efacd fgc cedaf agdcf +dgfebc bad ba eadgb agecdb gadfe abcg cgfaedb gbecd ebcdfa | ab cfegbd ebdgac bcfegd +baegf gdafe gedb edafgb gfaecd ceabfd eb abe gedbacf fagcb | fabgc fgdae egfad eb +dbfeac bcegaf cabfdg fbcga abgedcf dbgc aegfd db fbd afbgd | dcbg afgdcb dcbafe dabgf +df dfa fbdae becda agbfe gfabde gcefad gdfb fgcbea abfegdc | daf dgfb fdgb aebcd +adebf ec cfeda aec gefdca gdcaf dgfaecb fgdbac cegf bdcega | ecgf cae faedc edbgcaf +de efcdgab gcdabf deaf gbfad bdecgf dbe bgaec gabed ebdgfa | cfdbgae bcgfda de bfadg +gdefca fedacbg fc abecgd bafgd febdca cbaed acdbf ebfc dfc | fbcad dfbacge baedgfc feagdbc +gfdce fecdgb ac daceg fdac beafcg ebcfdga gbdae agc fgceda | cga efdgc gaecdf bcgfea +agebdfc ebgfad deacb eab edgfca cbfa afced ba cfdeab ebdgc | ab bdcge aecfd aeb +gbaf gadecbf gbcad bdcfa gcfbad bf cfade bfd dagcbe cbgdfe | dbafc bf fbacd bfacd +dbegc dfecbg cfd geadcb cgfe gbdaf fc abefcd aefgdcb fdgcb | cdgbf cf fadbg dfc +gdfea cgbfd bfca cedbga bfadcge fecdbg cgfabd ab bgafd dba | fecdagb agdcbf bgcedf cfebgd +gbacfd de ecgbfad gedabf ecadbg dea dagcb badec edgc efabc | ed ed gdce gdfeba +fgdeb bgc gcdaf daegbf aegfcbd baefcg gcdfbe bc fgbdc cedb | gacfd gcadf gbfdc gcdaf +daefbcg de cgadfb aebfg cfeadg edac efagd afdgc dfe ecfbdg | geafb cdgaf ed fde +ega cbgda dfbea afgbed bedafc febdgca ge cfgbea dgabe fgde | dfge gae egdba agcdb +gfdcb fdbe be aefdgcb ceb abdgec fbgdce ecgaf gcdbfa gecbf | cgeaf cgfae bec gdcaeb +dafeg bead fad cfgea da dgbfe acfbdg fdebga bdgecf fbdgaec | gaefc cdebafg ad gcafe +fbdca ec agebf ecf edac febgcd bgfadce fabcgd debfac cebfa | cadbfg fec fedcagb bacfgd +afbdge bgfadc adgfce fdega cd cbaef decfa dbacgef edcg dac | edabgf gedc cfdega dca +bagecf fecdab aecbg cf efgbdac ebdgac fegda fbgc cfe gceaf | fc cf gcbea cef +fcadbe aedbfg afdbc dfegcb acfe fbgedca bcdag fc edfab bcf | edfcagb cfdab fedcgb acfbd +daecb dgab dbgceaf feacb cgdeab da acd adecfg bedgc efdbgc | fgeabdc eacbd da ad +efd adefcb ed fagced dbagfc bafgcde fedag cegd faebg gcdfa | eadgcbf gfcda fbadec fagdc +edbgc cbagfed cgbdfa ae baged dgfba bfea fegadc ega fgaedb | dgafebc dcgbaf gdebc cebdg +gcd cg fecg bgead bdecg fgcbad fgbdce decbgaf bceadf dbfce | bgeda dgbea bfcdag fecg +bcaged fgcbed ecaf bae cgfebda fbacde ea eafdb bdafg dfecb | acbdgef dcefb dbfaec fadgb +cdb defc abgfc faegbd dbacfge cdbfea gbceda dc bafcd afbde | fadecbg cd cd fbadc +dgfce eafdcgb fcgae gabdcf gde ed cbgfd baecdg efbd cdgebf | ed baegfcd dfgcb dgbcf +fgedba fageb cgeabf cabgf fgc fcae aebfdgc fc badgc decgbf | cfg abgfc cfbga fc +abegd cdg gfbadce debgc cg cdfgeb ecfdba cdbgaf bcedf egcf | gfec egcdb fceg ecfg +gefcb eacfg dcebgf ag fceda cgdfab cga gbea gbecfda fegcab | ga egba gdafbec cafeg +efgdacb gfaed gfeba faegcd deabgc debafg ba fbceg dbfa agb | egfcb begfacd gab cfbaegd +abgcfde dgebf decfb efg fabedc eg gebc cgfebd faegdc fdgab | bdefc cegb fbedg eg +ebacdg dcbge cgab gc dfbgae adcfeg edbcf gcd beadg bfcdgea | acbgde gc gc ecbgd +af acbegd fadc bfdge gedfa gebcaf aef baecfgd cegda cegdfa | dgeac cagbef cdgfeba dfegb +cgdbef dcebf cdgeaf egcfabd bfge ebfcad fdgbc fg dfg adgcb | ecfdb fgeb fg gf +decfb bc gfedc fcagbd bgec ecgdabf degfcb ebafd afcdeg bcd | aefbd fdceg dcb efgcbd diff --git a/inputs/test_input08_2_1 b/inputs/test_input08_2_1 new file mode 100644 index 0000000..4d2de7b --- /dev/null +++ b/inputs/test_input08_2_1 @@ -0,0 +1,200 @@ +gabfed acbdfg cd gebcd gdfecb bgfdcae ecdf dcb gdbfe gaceb | dcb dgfceab cbfdeg edcf +cdbeagf df bfcgd bfed cfd fgcbed gcedb cfeadg cegabd fbacg | acbfedg acbfg dfcaeg bfgca +ag agf fbaceg beag acgfe efdcgba afcgbd afced gfecbd bcfge | bcfeg bcdgfae fga egacf +gdfcea edb acefgbd bgcad gabed cdbfea adgef ebgf dabfge be | gdbca be egfacdb adcefbg +dbefg ba edfca fdebga abf ageb fdcagb fbdae cfeagbd dfbcge | ecfda bfa fdgeab fadbcg +cfbage be daecf cedbfag dcafeb eabd ebc dcefb dcgbf gefdca | deafc fbdec gecdfa dfgcb +bdcaeg gde fdeb gadfe ed gfdca febag begadf aedgcbf gcfeba | fbgecad egbcafd fdcag ed +cg gbfad gebc fbdec bdfcg efbgcd efbdca cgfdabe cfg adgfec | befdcag dcbfg bcedf cfg +gefc faedgc adegf fea gcbade fe dgafb fdecab cadeg cfaedgb | dbafg gdebca dbcaeg bdacfe +gdfebc abcefd bcged dgcf efdgb gbfcaed adcgbe bfgae efd df | agfbe cgebd agcedb feagb +fgadec egbf fegdab ef agecdfb baecd fbdae bfadg gdfacb dfe | cebda ebcad dfe efd +acfdge cebgf fbag aegbcf gfc cebgd fg abdcef dcfabeg bcfae | gfba eadbfc efcabg dcgaef +cdfeba bcdage gbcef cdbaf cfadebg dcgbf fgda dg bgfcad dcg | edafgcb gebdca gd cegbdfa +cb cebadf ecbadgf dbgfa cfb cgefd dcfagb dfbcg fdebag acgb | decfg dbgcf fcb adefcb +baedg eafdgb af gfcbd abf bfagd egaf gbecdfa eadcgb dcfbea | gbedfca af gcfbd baf +cg cag gacbe eabgfdc egcbda dgce gdabfe begad agdcfb ceabf | gbfcad bgaced febdag debgca +dabg fdgbc efabc ag afgcbd bcfag fag dbfgaec cfegdb facdge | cfagb fcdbga gaf fag +feabd cgfadbe gdebcf adecb bf fdb abfg dgaefc gefad badefg | bedgacf bfag gdeaf gafb +edfcb becgf eg cbagdfe gfcab egf febcda gfeabd dfebcg cegd | gef ebfdgc gbecf efg +dcgbae fegbac ecg abgcdf bgdca eg gbed cegfdba daecg dfcea | dbge decfa gecad cdfabg +bdg cabdge edagb cgde bgaedcf bdace gbacdf egfab bfdeac dg | acedb gbdeca daebc gdec +gcdab fbacdg fbca edcbag fb cabdgef cfbdg cfedg fgb fabdeg | bafc bacf gfbaedc cgedab +gacedf fcadg agd dgbfea ad gcabf acbfedg fgdec edca cgdefb | adgfc deagcf ecgafd fbcag +defgba cedagb cbgadfe gfcdae faeb fbegd feg geadb dbcgf ef | cbfdg feg ef gef +abgdef fgcbda cafbd gbfc bf bacde bfadegc degafc cgadf fba | bf bcgf ceadfg decba +bfgcad efcag cgdaf dfaegc cgadeb eg egdf gae dfcbgae cabef | fabec feadgcb edcbag ega +bdfea fcab ac eadbcf egdabc bdagfe dcegf dfaec ace gcbafed | egbdaf ca bcaf dafbe +ba gafb adbeg acdfeg dfgae begdc eab dgacfbe eagfbd ebfdac | dgcbe eabcdf eba bcafgde +gfaceb dgfae ca dcfgab dgbcfe fcage bgecf fgacedb cbae fca | bgcfda cafgeb afegc fgace +gfcda egfcda cdabeg gabfe db dfbc dbg bcfadg dfabg bfdagce | abgced db dfbc bd +gdafce bafde cbdfa fea bcgdae bgacfde adbefg bedag efbg ef | ebcgafd gdafbe cegabdf cgfaebd +adfgc bcge acdfbeg bac cb cgfab ebfga adfbeg fcgeba dbcfea | abfgc dgbafe fcdag fcagd +ce gdbfcae bcgadf cegfad facbe bdce bdcfa aec aefgb afecdb | fedbac egdfabc bdaecfg eabdfgc +bfeda fa geafbd bdgef fda cegbdf bgdface gaef cebad cgadfb | adegbcf efag dfeabcg edbgcf +def gcbfd ed ecgbdfa gdefc gbed cadebf cgfae cgdfbe fadcgb | ed fed cbfgda fbceagd +gec agced agef edbca cfdbga dacegf ge baedcgf cafgd cgdefb | fbgcda bcgaedf cgead gce +eabcgd gecbadf bge ge acgbd egad fagcbe fcdbe ebcdg dcgbfa | cebdf geb fedbc geb +gaecfd gaf cfge cbefad fgcdaeb bgefda dbgac dacef cdfga fg | deafcb aedcbgf fg fdcae +acbgef dcbgaf caegfdb be afbcg gafbe bfe ebcfad gbce dfega | bfe decfab fcabde cbegdaf +eafcdg dbgac efgd fcdae eg gadce ecbagf eag efdcba becfagd | gdfe ge acfed aebcfdg +dacegf cbae ac gfbdaec agc gbdfc gbcaed bgead acbgd efdgab | ca ac ac gca +fcd cafe bcade efdcb fc bedfca fgbcdae egbfd cbadfg gadbec | bdgef cf aecf cdf +abgcf bcgafd ge abgdecf edcfa cge cgafe gbae bgcafe ecbfgd | gabe adcbgf gce fcabg +ebfcgd bdeagfc dgbefa fegcd fa ceaf fga dbgca adcfg adecgf | gfceda acgbd af ecgdbf +gabec cgefda efbacd egabfcd bf fba agdfc bfdg bcgfa bdgcaf | afbgc afcdbg acbgf ebcag +begdc gecfd cbgfad cfgda egabcdf fe aefc eadgbf cgefad dfe | afce fe cefa egdbc +efdcag bgcad dbeg dbfgaec ebadc fgabc gd aedbcf dcg cbadge | gd ceabd agbdec gebd +aegb bfcag agcbfe agfcbed bcdfa fagce gcb gb bcfdeg dagcef | bcfedg bgae acefgd cefga +dcfagbe adg ebacgf dfbeag ad fcagd abdc afcgbd cfbag cfedg | dfabgce da cafgbe ad +ead degcb eacgf fbecda adbg febdcag ad bcgdae cgdebf egacd | cefag cdgae fbdgec agcfe +cgbaef bagecfd adbgcf adfeg faedcb fcabe cegfa bgce fcg cg | gacef bgface bdgafc fbaec +acfgd gacbfd bdegfac fcgedb da cadb efgdab agefc fdgcb adg | adg ad aecgf bcgfd +fgdcea fbacdeg cefda dag fedg dg gacbed fbagc gfcad fcedba | gd dcfebag cdafbge gebfdac +bcafeg gaefcd cae gcade ecdf ce dgafc degba gabfdce gbafcd | bafgec gacfdb gdcebaf cdfgab +fcgb afgdec bdecf fg dfbaec cgbfdea dcfgeb dfg ebfgd abdeg | dbega eadcgf febdc cbdgeaf +adcf agdecf dgeac gfcdbe faceg gfceba begdcaf gcd daebg cd | fadc dgcefa ecgdbf acegf +gedfa gbdea bfgade ebcfdg gcedab eabgcdf ef fge bfae cfdag | baef gfe egf degcafb +aedbcf beadg dcgfbea gaecb aedgcf bagefd bed fdgb db degaf | bgfd fegadb bgdea acbfed +fbgca da defbga cebdg bdcga efcbag fgdebca bda fcad bafcdg | ad gcbaf dabgc gbedc +cgeb cfgda eg fcbedga acfebd badegf gea daecbg eabdc caged | ebdac gae bceda dcageb +ge bcdfga cbaedgf gfe gcdfb efgbda febgcd cgfbe gdec afbec | dcge cdge ecdg gbdcf +dcabe ebfgd gda dcfaegb afecdg dageb gbac ag dbcgea acefdb | gda dag gbeacdf ag +gadf fd baedgc gdcba efcab fdb fbdceg gbfcad adbfc daebcfg | dfb fgda bdf cdbgea +bcdfge dbfaec gb bcdef gdeb gcb bfcage fdcgb gafbecd dcgaf | bg bgcdef dbge befgdc +acdb gecbdf cgafb dgbfae dcbafg ab dbgcf adbfegc fab acegf | dcbfg bdca cbgdf dgfcb +acbdfe cabe acdbf badcefg cdbgf ba afb gfcade gedafb fcaed | bfa gbdaecf ba adecf +ae bdafc bceaf gdbafec bfgec eab dabfge fgbdca daecbf eacd | ae becgf cead bfcea +bcged dec bfceg acbd faecgdb daebg dacbge dfaebg gfadce cd | ecd dc gfcbe adbfeg +ecadfg bfdge fe fde bagcfd fcbe bgfdc geabd bfcegd dgbcaef | fcadgb bgade fe fegadc +degabf face fcd cf bfdegc adcefg cdgfa cdagebf afdeg bcgda | fcdebga fc caegdfb feadg +dfage dfec df gabced eacfdg fdg fgbecad cadeg gfcabd aefgb | cdef fegdac fd agfeb +da bfgac adf gefdc cabfgd bgfeac afebgd cgfaebd cgdaf adbc | fda dfgce gfabce faedbg +dgfba gadefc acegdfb bgd bg cgba facdg bgdfca febdgc eadbf | gdb dagecf fbdgac dafgb +ab gecaf ebfadcg bagfc cbgfd dcfgea cab efabcd eagbcf abeg | acb fbdeac abc agfebc +gc eagfb gec aegcbd acfed gdbceaf cgfea dcgf cgefad cdbfea | dfgc gefba cg aedcfb +deafc gbcf bfdeg dcafgeb efdcb acbged fgedcb cbe bc gefbda | cdfea fbgc fedcb ebfcdg +cd dfaeg dgceba gdcebfa gcfde gbdfce dcg fbgce ceabfg bdcf | cd dc fcgbe deafg +fd cfeab bdecf abdgec fdbecg dbfg def faegdc fagcdbe bcged | edcgb fd fegbdac dcebf +gcfbd fa fbadc abgedc cadfbeg fda afbe bcead dcafge ebfdca | fdgace gefadbc acbfd befa +bgcedaf afbegc eg dfbeac ceg fgcdae efcda ecgdf gcfbd daeg | decfa deag gcdfe ge +cgabdf af abfe agedbc ecfdg bgdea fagbecd fadbge dfa dgeaf | fa dbagce af af +egdabfc dgbac gefdca bcef gcfbed cf dbgef dcfgb fdc afbedg | becf gdeabfc dbfgcea efbgd +feb abegfd agfedc cbfge fagec bf gcbde afcb aefgbc gfbecda | bcfa bf fb egfacb +fage cgbfd gcfde gedfca fce fe adcge dafbceg aecdbg cdebfa | fgae gaef cfeabd cfdbg +gdcfe ed eagdfb dcfgbe bagcefd ebcd fdbgc deg gecaf gbdafc | gebdcf efgdba gcfebd de +debfga dcbe bcaeg aecbgf acedg ed dbgcae dgecfba cagdf ade | geacd ecbga de becadg +abegc fe efbdca aecfg adfgce efa bgafcd gdef gfadcbe fdcga | ef dcgbeaf fgcad faceg +adgfeb fbcge fbacgd acb abdcef ca ebcaf faedb caed gcbeadf | afecb acbdfe efadgb cbgfead +cefa daefbc fdecb aefdb gfbceda bgdafc debfga bgedc fc cbf | bfc ecfdba adefb ecaf +debc dfbage caedg cafedgb fbacg gbd agbdc gdafec db deagbc | bd bdg befdag dcfage +gacefb edbac gdef gfbeacd gfecb gacbdf fd dcfeb bgefcd cfd | cgbedaf gdfe gecfb cfd +geacd eb ebg gfbcade egfcdb daeb dfacge eabcg fabcg cdabeg | gdcaef ebg beg daeb +gadbfce gfda abcgfe gd bacgf abdce dgb dacfbg dbagc fbegdc | ecbafg bfgac gcbfa cbgfde +aedgcb cdaef efg egcba fcage fgbeac daefgb bfgc gf gcbeadf | fecga edagbc gf bdefagc +db cgebd efbgdc egfcda ebdf gecfd fdebcag dbc abfdcg gabce | db cedgbf aecfgd debf +ecfadg efbagc feg cgde fbcdag ge gadef bcgadfe cafgd aefbd | fbgcae afcdebg edfab eg +gebfad bgeca fdce bdgceaf cd debgc bcd dbgfe bdfcag bfgdec | abgec cbage facdgb dc +dbfgcea eacg edacf dfgec bgdcfa daefb fedbcg cad ca eacdfg | cad ebgdcaf cage eafdc +decafg abdcg bgdcfae fa daf bedfcg cfdba cfdaeb abef fbecd | dbafgce afd fa caedfg +dfcbgae fgecb abegdc beafdg ecd efdgc cfeagd cdfa eadgf cd | egdaf cdfa decgaf cdaf +gbafed cegfadb cage efcabg cgabf gfebc dacfb bdefcg ag gaf | fgcab fbdgce bgacf agbfcde +badgc bea be adcfbe dgbecaf ecgb cdgbfa dbega gdfae daegcb | cebg adgcbf bcdga agbcd +gbaced fadcb ag dfebgca gac bdgfec acgbd gdceb aegd gcbefa | adge gaed gca ecbdg +bgdce gbdcfe ge badec gacfbd egb fdcbg fgaecbd fcbeag dfge | gfed cefgbda ebdgc gcbdf +aedfc cgde cgfaed bgfad ge bcfaed ecgabf gae egbfacd geadf | fdeag febcda cedg cafdbe +agf fegad fdgcae fcead fg abcfed cfeg agdbe fcbdga degbfac | adebg ecfda afg fg +bdfegc aefg bacged fegdbac fgcad cbfad ag agd fegdca fcedg | feabcdg bdcefg gbfacde edgfac +aec cefbag dabfgce dgcae degacb ae bgced dbea fedcgb fdacg | ecgbda ebcgd daceg cedgb +dcbfgea decba fadegb ebfag cef fagbec fc bcgf ecdgfa febca | bgeadf fgebda gcdafe abcde +bfcgd degfbac afebc def cfdega ebgd ed bfced cedbgf fdcgba | dgbcef fdcbe gafcdb gbfdec +fge abfcdeg dfega fg eabgd fdgc fgaedc ecadf becgaf befcda | edgaf fcdg dbfcea bcefdga +bgcafe bdfecg acedf dcfbe agcdfb be bfcegad fbe ebgd gcdbf | fbe feb bedcgfa fdbce +be cabdfe adgce fbcda cfeb aeb acfbegd abgfed ebdca adgbcf | egadc eb fcadeb bcedaf +gfbea ecbf gcefa ec cdfag fdgeba aec eagbcd bcfgae afdgcbe | gbadcef afcbegd acgef dfgbea +gb dgbf cegfda bfcgae dceba afcgd cagbd afdebgc gcbdfa cbg | bg fbdg cbg bacgfe +efgdcb cgefabd fc abedc bgefd deagfc cbfed cbfg ebafdg fce | febdc fgedcab bcdae fdcbe +cafbdg gdebc beadf dca acebd ac fgdeba ecfabd gdefcab ceaf | efdcgab gabefd dcgbe gdecb +fbd adgbe fegcb afdcbg dcfgbea egfdb fdce fd fdbgec caefbg | edfc afbdcg abfegc fdbeg +cbgdaef eabdg afdb cbdeag ecfgb fd edfgba fcdage efbdg def | dgfcae dgebf bcadge fd +eb dfcge deb cbgdfa abef baefdg abdgf fbdeg fbcgade agbcde | afeb dfgba agebcd dbeagc +gcbde eadfbc gbeda edcbfg ae aedbcg afcgbed afgbd dae agce | cbegd bafdg bdega gbadf +faegc adbcfg bgfaec edgcb geadc dafgebc ad dfae ecfdga cad | acd da fcbgea gdceb +ga daecfb afgbdc dcaef gcfbe gedafbc edafgc cgafe agf gaed | ga fcbadge fdebgac egacf +cdgfab gaedb egfbc ebdfag dgc dc ecad eacgdb dfegcab bcdge | efgbc dc gcd gcebad +edcfg befacd cdgae bcgfed dae gfad agebc bdcfeag da fcgeda | fgad edbcaf fcadeg ceagb +ba afegcd edcfb cba baefcg fgba acdgbe bgafedc ebacf ecfag | gcadfe cfdbe cgaebd beafcg +cegfa edcb be cafeb fagdbec fbecda cdfab dagbcf dgeabf feb | aebdfgc eb bdec cbaef +efdba bacde dce dc beagc dcfb dagbef adgfce afedbc dgafebc | dce deacbf dbaec dcbf +fcdebg ce caef dabef eacbd gaebcfd ecb dbfcae cdgab defgab | dabgc ceb cafe bfdea +ebdcagf gefcb bafe aecgdb be fgeac geadcf cbe dcgfb gbacfe | bce be gdfcb eb +bfgead deacb fae fbcdag fe defgbac baefd bgfda gdef bacgef | aef fdgab fgcabed dabgcfe +bg fgadec debg fbg cadfb dgafebc eagfd dabfg fbegad gfecba | bacfge egcabf gafdb dacgfe +bgdce ecba abcdfg gbe bafged cfdeg eb becfdag bgadce cabdg | egb bace fedgc facdegb +gbade agf efac fgdaecb gcfabd bfecg bcfgea gdbfce fa gfaeb | gdfeabc febagc fa afce +bfcegd fbdeag ga dcabeg egfa dagfb efdgb dbcagef dag fcbad | bcfgaed edcbgf dga dacgeb +bdcfga db gadcfe bgdcf gfceb cadbge adfb cbgdfae bgd dfagc | gefbc dgfaec cgfeb db +degabf gbea ecfbd gdfbac aed fcegda gdbaf ebfda ae edfabcg | bcfed ae dgfecba dgcfae +begaf agdbfc fagcb be edgfbca efcb afgde bae gfbcae agcedb | be efbc afbgdc begdac +afebg ecfab becfd gbaefc cgfa ac edacgb bedgfa febcgda aec | fecbd cbfeag efabg gbdeaf +cfdage ef dceagb feda fce ecadgfb ecgad gcfde gfbdc ecfbga | dbfgc efad fead bgdcaef +agdbef fb bcedfag cgdba bdegcf fgead fbd gfadce befa bfadg | dgabc fb dfb bf +cfebgd cabdf dgcaeb egcbaf ae cea eadbc fedbagc aedg cedgb | gecdb ace aec ae +cbe bgaced cgfba baef fgabcd fgcde fgabce eb efbcgda bgfec | abgfdec bgafc badefcg ebc +ecagb dfce cf fbc dcagbf befca acedfb gdeacfb eadbf dgafeb | fedgba dfcabe cegab ecagb +fa agbdc cgdaf aedf efgcd efdacgb gbcfde afg acdgfe gfabce | fa gaf fead fgecd +egacb cgbdaef ce bec gbafc dgcfab egbda dfebac fceg ebacfg | gbcea acbdef caebgf efdgcab +dafeg cd febadg acefb agcd bfcgdea dcfgae ecdfa ecd dbfegc | becaf dgac becaf egcdfa +badc bc cfaed ceb dbgfeac gadefc fgeab fgbedc acbfde abcfe | afegb efbdca cdfbea bdegcf +bafedg dgbceaf gcdef dfeabc abfdgc gcab cfb cdfgb dgabf cb | bc cb fgdba bcf +dfabg dfgbca cd bagdefc afbce gdacef bdcg dca bafcd efadgb | dca bcadf bdgfca adfecg +acgbd acfgde fbgedc fbgcdae fdcabe fdcge fcb fb fbge cdbfg | cbf gfdec fbc acfdeg +eafbdg eadbgc bde gcdbaef gdceaf ecdag fgecb cgbed bd adbc | aecgdfb bd cgaed dbe +dg fcaebg gbeaf gcdfea fgd fgdab cfabd ebdg fcdgbae gbedaf | fagbce dcegaf afecbg cegbfa +gbd efcagd gb bgeda fbade bfecgd eabdgc daceg gfecbda acbg | egbfcd fegcbd egdba aedgc +bag efbgad ecgdab edabc adbcg agec ag feabdc dgfcb efbgacd | febdcag cgdfb agb gdcab +fegdabc becafd dcefa eagdc bcfae fd fde dafb febcag befcgd | cbdfea fbda edf fed +gdcbf cafbeg bgdface ad eadf eafbdg fdgab gdbcea egbfa dba | gbfeac ebagf bdacge gbecad +ebfcag ecfgadb efbagd egb dbfagc cbfe be agebc bfacg agdce | beg becf gcbaf bafgc +bgedca eacgf dec afebcd dc bedag adgbef ebcgdfa dgbc cdgea | agbdfe ebagd dce bgdc +adecgb bdeaf gdefa gdbfeca fgbe aedcbf egd eg cfdga afdbge | dcfeabg cfgad gefad gfbaed +cafe ce abecdg edc bdcfg afcdgeb beagfd ecdfb bfcdea fdeba | ce face ce ecd +gf efadc gafcde cfagd cgf deafbc dgef bcefag gbacd dagbefc | efacd fgc cedaf agdcf +dgfebc bad ba eadgb agecdb gadfe abcg cgfaedb gbecd ebcdfa | ab cfegbd ebdgac bcfegd +baegf gdafe gedb edafgb gfaecd ceabfd eb abe gedbacf fagcb | fabgc fgdae egfad eb +dbfeac bcegaf cabfdg fbcga abgedcf dbgc aegfd db fbd afbgd | dcbg afgdcb dcbafe dabgf +df dfa fbdae becda agbfe gfabde gcefad gdfb fgcbea abfegdc | daf dgfb fdgb aebcd +adebf ec cfeda aec gefdca gdcaf dgfaecb fgdbac cegf bdcega | ecgf cae faedc edbgcaf +de efcdgab gcdabf deaf gbfad bdecgf dbe bgaec gabed ebdgfa | cfdbgae bcgfda de bfadg +gdefca fedacbg fc abecgd bafgd febdca cbaed acdbf ebfc dfc | fbcad dfbacge baedgfc feagdbc +gfdce fecdgb ac daceg fdac beafcg ebcfdga gbdae agc fgceda | cga efdgc gaecdf bcgfea +agebdfc ebgfad deacb eab edgfca cbfa afced ba cfdeab ebdgc | ab bdcge aecfd aeb +gbaf gadecbf gbcad bdcfa gcfbad bf cfade bfd dagcbe cbgdfe | dbafc bf fbacd bfacd +dbegc dfecbg cfd geadcb cgfe gbdaf fc abefcd aefgdcb fdgcb | cdgbf cf fadbg dfc +gdfea cgbfd bfca cedbga bfadcge fecdbg cgfabd ab bgafd dba | fecdagb agdcbf bgcedf cfebgd +gbacfd de ecgbfad gedabf ecadbg dea dagcb badec edgc efabc | ed ed gdce gdfeba +fgdeb bgc gcdaf daegbf aegfcbd baefcg gcdfbe bc fgbdc cedb | gacfd gcadf gbfdc gcdaf +daefbcg de cgadfb aebfg cfeadg edac efagd afdgc dfe ecfbdg | geafb cdgaf ed fde +ega cbgda dfbea afgbed bedafc febdgca ge cfgbea dgabe fgde | dfge gae egdba agcdb +gfdcb fdbe be aefdgcb ceb abdgec fbgdce ecgaf gcdbfa gecbf | cgeaf cgfae bec gdcaeb +dafeg bead fad cfgea da dgbfe acfbdg fdebga bdgecf fbdgaec | gaefc cdebafg ad gcafe +fbdca ec agebf ecf edac febgcd bgfadce fabcgd debfac cebfa | cadbfg fec fedcagb bacfgd +afbdge bgfadc adgfce fdega cd cbaef decfa dbacgef edcg dac | edabgf gedc cfdega dca +bagecf fecdab aecbg cf efgbdac ebdgac fegda fbgc cfe gceaf | fc cf gcbea cef +fcadbe aedbfg afdbc dfegcb acfe fbgedca bcdag fc edfab bcf | edfcagb cfdab fedcgb acfbd +daecb dgab dbgceaf feacb cgdeab da acd adecfg bedgc efdbgc | fgeabdc eacbd da ad +efd adefcb ed fagced dbagfc bafgcde fedag cegd faebg gcdfa | eadgcbf gfcda fbadec fagdc +edbgc cbagfed cgbdfa ae baged dgfba bfea fegadc ega fgaedb | dgafebc dcgbaf gdebc cebdg +gcd cg fecg bgead bdecg fgcbad fgbdce decbgaf bceadf dbfce | bgeda dgbea bfcdag fecg +bcaged fgcbed ecaf bae cgfebda fbacde ea eafdb bdafg dfecb | acbdgef dcefb dbfaec fadgb +cdb defc abgfc faegbd dbacfge cdbfea gbceda dc bafcd afbde | fadecbg cd cd fbadc +dgfce eafdcgb fcgae gabdcf gde ed cbgfd baecdg efbd cdgebf | ed baegfcd dfgcb dgbcf +fgedba fageb cgeabf cabgf fgc fcae aebfdgc fc badgc decgbf | cfg abgfc cfbga fc +abegd cdg gfbadce debgc cg cdfgeb ecfdba cdbgaf bcedf egcf | gfec egcdb fceg ecfg +gefcb eacfg dcebgf ag fceda cgdfab cga gbea gbecfda fegcab | ga egba gdafbec cafeg +efgdacb gfaed gfeba faegcd deabgc debafg ba fbceg dbfa agb | egfcb begfacd gab cfbaegd +abgcfde dgebf decfb efg fabedc eg gebc cgfebd faegdc fdgab | bdefc cegb fbedg eg +ebacdg dcbge cgab gc dfbgae adcfeg edbcf gcd beadg bfcdgea | acbgde gc gc ecbgd +af acbegd fadc bfdge gedfa gebcaf aef baecfgd cegda cegdfa | dgeac cagbef cdgfeba dfegb +cgdbef dcebf cdgeaf egcfabd bfge ebfcad fdgbc fg dfg adgcb | ecfdb fgeb fg gf +decfb bc gfedc fcagbd bgec ecgdabf degfcb ebafd afcdeg bcd | aefbd fdceg dcb efgcbd diff --git a/inputs/test_input09_1_1 b/inputs/test_input09_1_1 new file mode 100644 index 0000000..c1cb27b --- /dev/null +++ b/inputs/test_input09_1_1 @@ -0,0 +1,100 @@ +9865456792345678921298765421012345678934995432127995456789987662134568999876534567895456999123983210 +2994359890156789992989896532929456799219876949246789349999876541023467899988727678976567898939874322 +3989298991238999989878989659898967895403989898999891298878965432123456789543214567897678987899965453 +9878987889347899878767879798767898943212498767988910197869896543264967899954323478998889376789876664 +8766856678956998767456767999656799995689987659877899976756789655456898998768636789879993245678998775 +6545344588967999854345458998545689989799976543456798865445678966597979459876545699765432156789329989 +7432123457898999966212347897634599878999895432345697654324567977998965346988676789896574237895498899 +8943234568999789984324556799547698767898789543486798865534678989999843215699789899989694356789987678 +9654448799987659875485669898956789656798678954587999976645789599798754334789899999878989456789886567 +8786569893498543976876789987967896741234567895698989998767993498679865645689999898769878997898765456 +9887678912987656987989899976899965430456689986789678999878992989569876856790198789653457789999854345 +7998789904599799798992999865678977321234789899894567987989789873456988767899986578942245699998765234 +6549897895678988659990986654569986532345699765903469876595678964597899898998765456990124568999952123 +7432956789789977546789874323467999654476789893212998765454578975989910999429974356889435979899843014 +8510346999898765434598753212346898965587894989329899854312368989878939899912965245678949898798767925 +4321245899999654329999862101234567897678943878999789765434457898768998769899854345789998789679879896 +5434556789898765698897543214345678998789532367987679876576568967956899856798766456799998664567989797 +6545787896789976987798654365769789999898721259876543987678679456346679643899876567899876543456797689 +7656898945899989876549775878878997899987654345987432198788789327234578954988987978943998666567986574 +8788929534789999987433989989989456789898765996954321019899893210145678969877898999995998777699875423 +9899219645678999876522397896594345789799979879895432534976989321235689998766779878989899889987764512 +8989398796789998982101236789989457998678998768779948549875378942476789987655568969876789994986542104 +7678999989990987654212945678979968987567987654567897698986568943567899988543459757654569895987673323 +2456988679891299865329896799567899999678992123456789987798779657798998777632469943212356799998765434 +1369876567789498765456789895466789898999987012357998976549989769979987654321367892101234598999879875 +0198985456667999876569999964345698767889996433767987895421299896567898865432456789233395997899989989 +1987654327456789997778998943236987656469876545678976989210378987678999876546567896546789876789999898 +9898954312347995398989567899197986543212989856789345678931267898789875987657689998658999765678999767 +8759865523456789199795456798989997672101298768990234789542456789898764598798999999899109754599987658 +8649876434568999987671237987878998783213499979321365679663477892949943679899879899978998743489998743 +9432987678678968097532348976567899654324689989452376889764598901239874699923469789467987654568989932 +8631098789789842198643469765456998785465678996543487999875678992398765789015998679323598795678979891 +6542359899897654349799598976567899987589789987976568921989999879459876789239897598909999987899356789 +7853457979998765456988987997678954198799891098998679930998798768969987894398765457898899998910245678 +8964568964329976879877535998789543239899943989649789799787649879998999965987654346797698899432349789 +9875678975439799998764424899899959445998959876439895698685434997987976799998765127896546789654678994 +2996789998598678939893212698999898956987898764321934987565423456896545678999877898987634899878899543 +3987897987696589323976104567898767899876529895210129896432101567997434567895998949999895689989978992 +4998986498989695474985323489987656789767312976821298789543212356789323489954589432978976789597656789 +9899894329878976569876765678998545678954324987942989678954323467891014567895678949869987993498767890 +8789789498967997678987886789298758989765434598969876569975434568932325789976989298757498921019889921 +7645678997656789789898999892129867999876546689878997879876545879545434678989899109843349432923997899 +8756789987545678998769456989234998910988687899989898989998786798756645989998778998732235949895986678 +9869898765434567987654345678945679999999798979998789999959897929767856799896565679641019899799875567 +3978959977756689798963233457899789987859899567989656998845998939878978999765434569852199787678954345 +2989543298987897679892101556998999876545999879876549876734349798989989998986323498963987697567893234 +1097432109598923598783242345987899965436799989995421965621234567992398967895404987654996546456789345 +2976543413459919679654653569876989875429988999986590954210156789101987856789512399869886431345898976 +9898865524567898999965775789965678976598767898997979875663247893219876745999423567989767210124567897 +4769986678978987689896989899876789987987656567899868986754356789498765535898994678998654323234788998 +3456798789989876576789998943989899999876548489989654398869767899599854524657789989129769834545678959 +2135699892598765465678987632399998932985432345678968239979878998987643212345699893298998765696889434 +4396989901459854323456896543989897891096521234567892101989999767896532101237998765987999876787998923 +5989878912398764212348998799876776789987430123979963312399989945987643212456789879876799987898967894 +6975567893987653105479999987654545678995321239899654323998767896798965434767899998765789998969556789 +9864348999876543235567899999643234989876542398788969439865449797899987645898998999654567899654345798 +7943239898997864346778998998767367899998653997677898949654338689910297656999567987743578999543102987 +6521098787698765489899987899976456789459769876566567898784213578954398997894329876542347898683219876 +6432987654569896579978996432987678996569898765433478989832102459768569698989013989421456999795339865 +7843499869678987678967987563598789987878987657321389569943212369877679549678929898732345689896949654 +7654987998789798989655987689989899998989876543210123498954534678998798934569999789654556798989898643 +8765976539895699996544398798879998999694989987321784567896645689899987897678987678966667987876789532 +9876987421934789987431239987668687896593999876534567898998756789789896789789876567898779876545678901 +7989873210125678998763459876544456798989891987545698969999867895698784898999975479989899996434799412 +6599965322334589439654568988632345679878790198657789657899978954987673457899867365678998987645689323 +5439986437645678998965679999741235698765689249878894545989989543499452349999954234567997898876898934 +6598997598786789346896799876432346987654578998989943239879996532598321298987632123459876769987897895 +7987698679897991249997989976545469876553456897699532198767897921987532457996543234567965457998956789 +9876598799989892398789978898656798765432567989578956987656799890197643568919755365778994356789345991 +4965429899876789987679856789987899887543569876456799876545678789987654578909979876799986467991234892 +3989999998785678976598768993099989997678678989567898765432345678999765699698989989893599878910126789 +2199878987654568968459899772134678999989789399878919874321234569329876789597696799931298989321345899 +3298967898123978957345989654545789999799891265989109783210237789539987899986545678920987599865456789 +5987656799357889543213478987679899987688910234594298654341546789998999998765434567939875476996768891 +9876545678968997657302367898998999654567891345896498765656756789897932359654325899898764345987899992 +0987858799878999898212456999897987653687992556789989898789867898776899498763216789799897657898956789 +1298878892989789949323789899656899432456789968999876989893978986565778999865397997679998767939345899 +2459999921094694339875698798645999754867999899998765678932989985434668999986468997544349898921234589 +3456796539123989210976988659534678967989656789999754569321299876323456889987989985431239979310125679 +4577987698999877921989876547623899978996545698789543998954398765412345678998999874310198765432457789 +5699898987987656799999965432105678989998634987678959897899459898937856789239910965621349976653567897 +6988769876576545678999876543212389997898745696599998756978999987656787890129899899435698999768678946 +9876556997432434567989987655424678976789896985489999545658789899867898991998798778945997898979989236 +7654445698521015998979899876435789435689987976567899431345698789878999989899654567899876777899896345 +9943236997732129879767789976545678923567898987689998910123597698989998976778943456798765656789765456 +8895349876545299765656687987676899212345999898789997893234986567999987755667892538569654545678996867 +6699656987856987664335496798787932101398987789899986789359975436899876544459931023498763235678989978 +4578967998967976543213345679898943214567986679998775678998765325798765432368892254797654357799678989 +3456798959878987654101277893999654323678974567987654999469965434697654321236794345698765689897577991 +1346789341989798794212368974698768634569765678996543894349987545698776450125689456799876799998456910 +0256893210395679887533457965899977545678986899987654789498987656789986543234678967987989899329967891 +2347894321234567997646567899934988678789398921098765699997898767893499767455789879976794978919878989 +7658999459495678999857678998923598789891239999239879797896409898931239876566791998765623769901989878 +8768998998989789999969899567899699897990198978999998986789212999540123987679890987654104457892398767 +9979987997678998979878943457968987956789987866789876765678923987321234599989999996543212398943987658 +0989876789567897569989632123459876545698896745998765653589899876595445678997898987985323689956988734 +1998954453456789498996545234678995434987654235987654212456789987986556799656987799876434567899879823 +9876543212345679357987654345789986524499875123598764343457897898997677897649876653987895678989954312 +2998754523456789267999865856892987612398765435679875654667976549098788985434995432198976789679875324 +1239895434579890178923988767921098201239976576799986765679989632129999876545986543249987893498765435 diff --git a/inputs/test_input09_2_1 b/inputs/test_input09_2_1 new file mode 100644 index 0000000..c1cb27b --- /dev/null +++ b/inputs/test_input09_2_1 @@ -0,0 +1,100 @@ +9865456792345678921298765421012345678934995432127995456789987662134568999876534567895456999123983210 +2994359890156789992989896532929456799219876949246789349999876541023467899988727678976567898939874322 +3989298991238999989878989659898967895403989898999891298878965432123456789543214567897678987899965453 +9878987889347899878767879798767898943212498767988910197869896543264967899954323478998889376789876664 +8766856678956998767456767999656799995689987659877899976756789655456898998768636789879993245678998775 +6545344588967999854345458998545689989799976543456798865445678966597979459876545699765432156789329989 +7432123457898999966212347897634599878999895432345697654324567977998965346988676789896574237895498899 +8943234568999789984324556799547698767898789543486798865534678989999843215699789899989694356789987678 +9654448799987659875485669898956789656798678954587999976645789599798754334789899999878989456789886567 +8786569893498543976876789987967896741234567895698989998767993498679865645689999898769878997898765456 +9887678912987656987989899976899965430456689986789678999878992989569876856790198789653457789999854345 +7998789904599799798992999865678977321234789899894567987989789873456988767899986578942245699998765234 +6549897895678988659990986654569986532345699765903469876595678964597899898998765456990124568999952123 +7432956789789977546789874323467999654476789893212998765454578975989910999429974356889435979899843014 +8510346999898765434598753212346898965587894989329899854312368989878939899912965245678949898798767925 +4321245899999654329999862101234567897678943878999789765434457898768998769899854345789998789679879896 +5434556789898765698897543214345678998789532367987679876576568967956899856798766456799998664567989797 +6545787896789976987798654365769789999898721259876543987678679456346679643899876567899876543456797689 +7656898945899989876549775878878997899987654345987432198788789327234578954988987978943998666567986574 +8788929534789999987433989989989456789898765996954321019899893210145678969877898999995998777699875423 +9899219645678999876522397896594345789799979879895432534976989321235689998766779878989899889987764512 +8989398796789998982101236789989457998678998768779948549875378942476789987655568969876789994986542104 +7678999989990987654212945678979968987567987654567897698986568943567899988543459757654569895987673323 +2456988679891299865329896799567899999678992123456789987798779657798998777632469943212356799998765434 +1369876567789498765456789895466789898999987012357998976549989769979987654321367892101234598999879875 +0198985456667999876569999964345698767889996433767987895421299896567898865432456789233395997899989989 +1987654327456789997778998943236987656469876545678976989210378987678999876546567896546789876789999898 +9898954312347995398989567899197986543212989856789345678931267898789875987657689998658999765678999767 +8759865523456789199795456798989997672101298768990234789542456789898764598798999999899109754599987658 +8649876434568999987671237987878998783213499979321365679663477892949943679899879899978998743489998743 +9432987678678968097532348976567899654324689989452376889764598901239874699923469789467987654568989932 +8631098789789842198643469765456998785465678996543487999875678992398765789015998679323598795678979891 +6542359899897654349799598976567899987589789987976568921989999879459876789239897598909999987899356789 +7853457979998765456988987997678954198799891098998679930998798768969987894398765457898899998910245678 +8964568964329976879877535998789543239899943989649789799787649879998999965987654346797698899432349789 +9875678975439799998764424899899959445998959876439895698685434997987976799998765127896546789654678994 +2996789998598678939893212698999898956987898764321934987565423456896545678999877898987634899878899543 +3987897987696589323976104567898767899876529895210129896432101567997434567895998949999895689989978992 +4998986498989695474985323489987656789767312976821298789543212356789323489954589432978976789597656789 +9899894329878976569876765678998545678954324987942989678954323467891014567895678949869987993498767890 +8789789498967997678987886789298758989765434598969876569975434568932325789976989298757498921019889921 +7645678997656789789898999892129867999876546689878997879876545879545434678989899109843349432923997899 +8756789987545678998769456989234998910988687899989898989998786798756645989998778998732235949895986678 +9869898765434567987654345678945679999999798979998789999959897929767856799896565679641019899799875567 +3978959977756689798963233457899789987859899567989656998845998939878978999765434569852199787678954345 +2989543298987897679892101556998999876545999879876549876734349798989989998986323498963987697567893234 +1097432109598923598783242345987899965436799989995421965621234567992398967895404987654996546456789345 +2976543413459919679654653569876989875429988999986590954210156789101987856789512399869886431345898976 +9898865524567898999965775789965678976598767898997979875663247893219876745999423567989767210124567897 +4769986678978987689896989899876789987987656567899868986754356789498765535898994678998654323234788998 +3456798789989876576789998943989899999876548489989654398869767899599854524657789989129769834545678959 +2135699892598765465678987632399998932985432345678968239979878998987643212345699893298998765696889434 +4396989901459854323456896543989897891096521234567892101989999767896532101237998765987999876787998923 +5989878912398764212348998799876776789987430123979963312399989945987643212456789879876799987898967894 +6975567893987653105479999987654545678995321239899654323998767896798965434767899998765789998969556789 +9864348999876543235567899999643234989876542398788969439865449797899987645898998999654567899654345798 +7943239898997864346778998998767367899998653997677898949654338689910297656999567987743578999543102987 +6521098787698765489899987899976456789459769876566567898784213578954398997894329876542347898683219876 +6432987654569896579978996432987678996569898765433478989832102459768569698989013989421456999795339865 +7843499869678987678967987563598789987878987657321389569943212369877679549678929898732345689896949654 +7654987998789798989655987689989899998989876543210123498954534678998798934569999789654556798989898643 +8765976539895699996544398798879998999694989987321784567896645689899987897678987678966667987876789532 +9876987421934789987431239987668687896593999876534567898998756789789896789789876567898779876545678901 +7989873210125678998763459876544456798989891987545698969999867895698784898999975479989899996434799412 +6599965322334589439654568988632345679878790198657789657899978954987673457899867365678998987645689323 +5439986437645678998965679999741235698765689249878894545989989543499452349999954234567997898876898934 +6598997598786789346896799876432346987654578998989943239879996532598321298987632123459876769987897895 +7987698679897991249997989976545469876553456897699532198767897921987532457996543234567965457998956789 +9876598799989892398789978898656798765432567989578956987656799890197643568919755365778994356789345991 +4965429899876789987679856789987899887543569876456799876545678789987654578909979876799986467991234892 +3989999998785678976598768993099989997678678989567898765432345678999765699698989989893599878910126789 +2199878987654568968459899772134678999989789399878919874321234569329876789597696799931298989321345899 +3298967898123978957345989654545789999799891265989109783210237789539987899986545678920987599865456789 +5987656799357889543213478987679899987688910234594298654341546789998999998765434567939875476996768891 +9876545678968997657302367898998999654567891345896498765656756789897932359654325899898764345987899992 +0987858799878999898212456999897987653687992556789989898789867898776899498763216789799897657898956789 +1298878892989789949323789899656899432456789968999876989893978986565778999865397997679998767939345899 +2459999921094694339875698798645999754867999899998765678932989985434668999986468997544349898921234589 +3456796539123989210976988659534678967989656789999754569321299876323456889987989985431239979310125679 +4577987698999877921989876547623899978996545698789543998954398765412345678998999874310198765432457789 +5699898987987656799999965432105678989998634987678959897899459898937856789239910965621349976653567897 +6988769876576545678999876543212389997898745696599998756978999987656787890129899899435698999768678946 +9876556997432434567989987655424678976789896985489999545658789899867898991998798778945997898979989236 +7654445698521015998979899876435789435689987976567899431345698789878999989899654567899876777899896345 +9943236997732129879767789976545678923567898987689998910123597698989998976778943456798765656789765456 +8895349876545299765656687987676899212345999898789997893234986567999987755667892538569654545678996867 +6699656987856987664335496798787932101398987789899986789359975436899876544459931023498763235678989978 +4578967998967976543213345679898943214567986679998775678998765325798765432368892254797654357799678989 +3456798959878987654101277893999654323678974567987654999469965434697654321236794345698765689897577991 +1346789341989798794212368974698768634569765678996543894349987545698776450125689456799876799998456910 +0256893210395679887533457965899977545678986899987654789498987656789986543234678967987989899329967891 +2347894321234567997646567899934988678789398921098765699997898767893499767455789879976794978919878989 +7658999459495678999857678998923598789891239999239879797896409898931239876566791998765623769901989878 +8768998998989789999969899567899699897990198978999998986789212999540123987679890987654104457892398767 +9979987997678998979878943457968987956789987866789876765678923987321234599989999996543212398943987658 +0989876789567897569989632123459876545698896745998765653589899876595445678997898987985323689956988734 +1998954453456789498996545234678995434987654235987654212456789987986556799656987799876434567899879823 +9876543212345679357987654345789986524499875123598764343457897898997677897649876653987895678989954312 +2998754523456789267999865856892987612398765435679875654667976549098788985434995432198976789679875324 +1239895434579890178923988767921098201239976576799986765679989632129999876545986543249987893498765435 diff --git a/inputs/test_input10_1_1 b/inputs/test_input10_1_1 new file mode 100644 index 0000000..f8b31ed --- /dev/null +++ b/inputs/test_input10_1_1 @@ -0,0 +1,94 @@ +(<[<[((<[<([<<[]()>{{}()}>({<>[]}<[][]>)])<<[{{}[]}[{}<>]]([()<>][()()])>>>]((<{{([]{})<[]<>>}(<[ +<[{({[[<{[{{{<<><>><{}>}<([]()){()[]}>}({(()()){{}<>}})}{([<()()>[<><>]><<{}[]>({}<>)>)}]{{[((<>()){<>[] +[[{[[(<((<[<<{{}()}<()[]>>(<<>{}>{{}()})>]<<[[{}()](()<>)][<<>{}><[]()>]>{((<>()){{}()))}>>[{[<[<>{} +{{((({({(<[({<<>()>([]<>)}({()[]}(<>{}))}[({{}{}}([]()))<({}[])[[]()]>]](<{([]<>)(<><>)}{[[]] +[[({[{(((<(<{({}[])}((()<>)([]<>))>({{[]<>}{{}[]}}{[<>[]][()()]})){(<{{}[]}{{}[]}><([][])[<>{}]>)}><<{{{()}[ +(<{([{<[([(<({{}{}}{<>()})[<{}<>>{()()}]><((<>}(()<>))>){<[[()[]](()[])]>[{<{}[]>(<>())}]}](<[({( +<{{{<({[{<<[<({}()){[][]}>[<{}{}>[{}<>]]][[(()<>)([][])]]>><{<[(<><>)]>{(<()[]><[]{}>)<<<><>>(<>[] +({{{{<<[{([(({{}{}})<[[]<>]>)])}]>>}[(<[<<<{[{{}()}]<[{}{}]>}>>{(({(<>())<()()>}(<[][]>{()()})))}){[<<([() +<(([{(<{{{{([({}{})(<>[])][[()[]][<>{}]])<[<()[]>]}}{<<{{}<>}><{<>}([][])>>{<{{}{}}<{}<>>><((){}) +<(<<[([<[<({{{<>[]}<()[]>}}[([()<>]([]()))(({}<>){[]{}})])>]{({[([<>()])]})}]{[[<(<{()<>}[{}<>]>{[()[]][<><>] +{[[[((<(<[<(<[()()]>)<<<{}<>><<>[]>>(<(){}>)>>](<([<(){}><[]()>](([])))[<{{}{}}{<><>}>{<<>>{<> +[<{([{<[<<<[({[][]}<{}[]>){(()<>)<{}<>>}]><{{{[]<>}<()<>>}[(()[])[{}<>]]}(({<>[]}<{}()>)(<{}[]>([]{})) +{<[<[<<[<[{[{(()<>)}(<<>{}>[<>()])](([<>[]](<>[]))[[[]<>]([]<>)])}]><{{<{{[]<>}{{}[]]}<[<><> +[((<<{<[{<{(<[[]{}]>)}<<({()[]}[[]])<(()<>)[(){}]>>(<[{}<>]{<>[]}>)>>{[<<{()<>}]<[[]<>]({}{})>>[<[( +<<<<{[<(<[[<<{()[]}({}<>)>{{[]<>}{[]()}}>](([{()}]([(){}][<>[]])))]{[(<(()[])[<>[]]>{([]())}){( +({<[({([{[(<[{<>{}}(<>[])][<()()><()<>>]>)]}({<<<{[]{}}[<><>]>>><{((<><>))<<<>[]>{<>[]}}}([(()<>)<<>{ +<(<({{[<[{<[[{()[]}]((<>()))]<[[()[]](<><>)][[{}{}]<()>]>>}]>]{<(({<((())[<>{}])[<[]<>>{<>{}}]>}<<{[<>[]] +{[([{((<({<{[{[][]}<[]{}>]{{<>{}}<{}[]>}}>[<{(<>[]){[]{}}}<{[][]}{{}}>>]}{((<[[]()]<[]>>)[[<()[]> +(<{(({[(<{{(({<>[]}[{}])[[()()][[]()]])}[{(<()()>{[]<>})(<(){}><[]()})}[(([]{})<<><>>)<(<>())<<> +<(<{<({<((<{(({}{})><(<>[])>}>[<{<<>{}>([]{})}{[<>{}]([]())}>([[()[]]<{}<>>]({[][]}<()[]>))]){<[(<{}<> +([{({([({([[[{[]{}}({}<>)]]((<{}()><<>{}>){({}[])<{}<>>})]>}{[({{(()<>){<>[]}}[<()[]>[()<>]]}<<<< +{(<<[{(<<<(<<{[]<>}<[]()>><(<>)(()[])>><{(()<>){{}<>}}>)({{(<>())[<>[]]}}<[[{}{}](()())]<{{}()}( +<<(<<{[{([{([[<>()][[]()]](<()<>>[[][]])))<(<<[]<>>>)[({<>[]})]>][<<<(<><>)(<>)>[([]{})]>>])[[{(<(<>()){[] +<<<{[(<(<[(([{{}}]((<><>)[{}<>])))<({{<>{}}[{}<>]})>]{<[<(<><>)[{}{}]>[[{}[]]({}{})]]{<[[]<> +<{(({{{[[[<([{{}[]}]({(){}}((){})))>]]<(({[{<>()}({}{})]})(((<(){}>[(){}])[{[]{}}(<><>)])) +<[[{((<{([(<<{()<>}(()[])><<[][]>>>{(<{}[]>({}<>))})<<<<()()>{[]()}>(<<>()>)>>])}>))}[<<{[<{{{{<[]<>> +({(<{<(([[({{{[]{}}[()<>])}{(((){})<()[]>)})[<([[][]][[]()]){{<>()}[[][]]}>(<(<>)<<>[]>>{[<>[]]{[]( +((({(<<({<[[[{<>}[<>()]]<<{}<>>({}[])>]]<({<{}{}>[()[]]}{<{}<>>{<>()}}){[(()())<{}[]>][([]{})[[]<>]]}>>[{[<(( +{[[<[([{{<[<[[<>()][{}[]]]{<<>()>{[]()}}>]{[<[<><>]<<>{}>><{<><>}<<>{}>>)[{<{}<>><<>[]>}{{<><>}}]}>{ +<(<{(({([<[([([][])(()<>)]{[<><>](()<>)})((([]{})[[]()]))]([({[]()}{<>{}}){{{}})])>]{<<({<<>[] +<<{([{<[{{(({{{}()}{[][]}}<{[]()}{<><>}>){{<()[])<<><>>}[<{}[]><{}[]>]}){<<{[]()}<<><>>>{<{}{}>({}( +<[[<<(<({<([((()<>){()[]})[([][])<{}[]>]]({<<>()>((){})}([[]()]({}<>})))>})[<<{({([]())<<>{}>}{{() +<{(<[[<(<<({(<[][]><<>{}>)[<{}{}>[()<>]]}(({()[]}<{}[]>)))>[<[{(<>{}){()<>]}<[{}[]][<><>]>]>]>[<[({< +(<(([{{[<(<[<{()}{[][]}>]>{(((<>())[{}{}])<[[]]<(){}>))})>](<[(<(<[][]><<>()>){<{}[]>([]{})}>{(([]))<([]<>)[( +{((<{(({({<[{<{}<>><<>[]>}((<>{})[[][]]]]{([()[]](()()))([[]<>]{{}()})}>})(<[<<<[]{}><()[]>><<{}<>><< +{<{(<[<{[[{{{[{}()]}({()()})}((([]<>){()<>})(<<><>>))}<[{{()()}{[]()}}]>]<[((<[]()>((){}))([()()][<> +([({((([<({[[[[]()](()<>)][({}())<<><>>]]}<{<[{}<>][{}{}]>(([]<>){[]()})}[<<[]()>[{}()]>]>)<([([() +<<{({<<[{[<{<(<><>)([])>({{}[]}{[][]})}<([()()])(([]{}))>>([(<[][]>{{}<>})[[<>{}]<()<>>}]{[{{}[]}({}<>)]<[[]< +([<{[[[([[<[(((){})[{}()]){{[]<>}(()<>}}][({(){}}{<>[]})]>]])({<[{<(()<>)>({[]{}}<{}()>)}(([()()]<<><>> +([({{[<([[{<[{()[]}[<>]]({<>()})><{({}[])(()<>)}{(<>{}){{}<>}}>}]])>]<([([[{[[<>{}]{[]{}}]{<[][]]{{}[]} +[[{(({[{{[[[<(()[])[[]<>]>]{<{()[]}{()()}>{(<>[])({}[])}}](<((<><>)[<><>])([<><>])))][[[(<( +[{(<<{(((([[<<{}<>>({}())><<<>[]>[{}{}]>][<(<>[])<{}>>[<[][]>{{}[]}]]]<<(<[][]>{[]()})({{}()}<{}<>>)><([< +{<[[<{{<[[(<{{()()}<[]<>>}><<{<>}<{}{}>><<[][]>>>)<{{[()<>]{{}{}}}<({}[])[(){}]>}>]]>}<<(({{(((){} +((<([[<{{<(<([<>()]{(){}}]({[]()}<()()>)>(([{}[]]((){}))))<[{[<>{}]({}<>)}]>>}[[<({(<>())(<><>)}){([<><>][[][ +<[([<(({<(([<({}<>)[()]><<[][]><<>()>>]<{([]{})}<{<>{}}{[]()}>>)){[[{[<>{}][[][]]}]<[[<>()][{}[]]]>][<[[() +((({({[[[[{{<(<><>)((){})>}}]{{[[[<>[]][<>[]]]{{()<>}[[][]]}]{{{{}{}}{<>[]}}([{}][<><>])}}({( +<<<{[<(<({[{[({}[]){()()}]}]}{[(({{}()}[[]<>])[([]<>)(<>)])]{{({()<>}{<><>})<<{}()>>}<[<[]{}>]{([]< +(({[(<<<<{((((<>{}){[]<>})[{[]<>}])(([[][]]<()<>>)<[{}<>]<[]{}>>)){(({()[]}<[][]>)[[<>[]]{()<>}])([[()[]]]< +<([<<[<<[{[[<<[][]>>{((){})[<>[]]}]((<{}{}>[[]<>]){<{}()>(()<>]})]({[(<>{})(<><>)](<(){}>[ +((<{[{[[{<<((<<>{}>{<>()}){{[]()}((){})})((([]<>)<<>[]>)<(()){<>[]}>}><[<(<>[])<{}()>>]{<< +[(<[{([{<{([[(()){(){}>]{{{}<>}<[]()>}][(<()<>>[(){}])<[()](()<>)>])}({([[[]{}]({}())]({()<>}{ +[<[{[<[{[[<[{([]){{}{}}}]>][[<<(<>{})<<>{}]><{{}()}>>(([{}<>]({}))[(<>{})<[][]>])]]]}]<[(({ +(([{{<<{<[[(((<>())<[]{}>)([()()}(()())))[((<>()))<[{}()]({}[])>]](<{{<>}{{}<>}}>)]>[{<{{[ +<<[[{<([<<<<{({}<>]([]())}({{}()}<()<>>)>[<<()()>{()()}>({()<>}[{}()])]>{<(<[][]>)>[<[{}{}]>((<>() +(<{[<[({{[[([<[]{}>[[]()]]{{{}[]}(<><>)})]<[([<>{}]<{}[]>)[<{}<>>{[]()}]]<(<<><>>(()()))<[<><>}{{}{}}>>>]( +[<((<{{[(<(((<[]()>([][]))(<()<>>{{}[]}))((<{}{}><{}[]>)({{}[]}[[]{}])))<{(<[][]>)<{<>()}>}{{[()<>]}{{<>( +{((([{{((<<<<[()()][(){}]>{[[][]](()<>)}>>{{{{<><>}[[]<>]}[{<><>}({}()]]}([[<>]{(){}}][[(){}](()<>)])}>[([([[ +[(({<<{([{(<[<()[]><[]()>]((<>[])[<>()])>([<(){}><<>()>]{[<>()][(){}]}))}[<[{[{}()]{()()}}(<<>>{[]})]{[<<>()> +<[{[<<({<<<[((<>()){()()})[(<>[])([]{})]]><[<([][])([]<>)>(<[]{}>(()()))][{[()[]]{[]<>}}[(<>{})<<> +((<[<[(({[{[[<<>[]]{[]()}]({()<>})]{[<<>()><{}()>]}}(<(([]{}){(){}})>{<{{}()}(()())>})]}([(<{[[][] +{(((((<({[<[{<<><>>{<>[]}}(<(){}><[]()>)]<{<{}()>(<>())}[[[]<>]{{}<>}]>>{[{<()()>[[]()]}[<{}>]]}]{ +(({([{<([<{{<<[]{}>[[]{}]>({{}{}}({}<>))}<[{<>{}}{()<>}][<<>{}>]>}>{({(<(){}>[{}()])[{()<>}[()<>]]}<[{[ +[[{{[<<[<((<{{{}()}<[]>}{[{}<>]<()[]>}>({[[]{}]}[([]())<[]{}>])){(<<()()>>{[{}[]]<{}{}>})})>]>>]<([<[< +{({{{{[[<{<[{[{}<>]}([[]{}][{}<>])][((()()){[]()}){[<>()](<>())}]>}>[{<[{{<>{}}({}())}[<<>{}>(( +({[((<{{<<<({[{}{}][(){}]})((<[]><()()>)<{<>()}[[]<>]>)>(({<{}[]>([][])}(({}{})<<>()>))<{<[ +[<<[<{[[{{(<{[[]<>)({}[])}>)}}(({{((<>[])<<><>>)}{[[[]<>]]{{[][]}<{}{}>}}}){[[((<><>)[{}<>]) +(({<(<([({<(<<()<>>([]<>)>[([]()><()[]>])<[<()[]>[()()]]{[[][]]{{}[]}}>>{{<<[][]><[]{}>>{[{}[]]<<>>}}{{<[]{ +([{{({({{{<([({}[])[()<>]][[[]{}]([]())])>([[[()()][<>()]]([{}[]]{{}()})]<{{[]<>}({}[])}{<()[ +(<{(({(<{{[<[[()<>]{<>()}][<(){}><()<>>]>{<<<>[]>[<><>]><({}<>>>}](<<{<>[]}[[]<>]>[[[]<>](()[])]>{{{[] +[[[<[([([(({{<<><>>([][])}})[([[{}()]<<><>>])<({{}<>})<{{}}({}{})>>])])<([((<[[]<>]{(){}}>{[[]<>]<[]<>>})( +(({(<({[[<{<([{}<>]{<>()})([()()](()<>))>(((()())[{}()])({()[]}{{}<>}))}>([({<(){}>([]<>)}{[<>()]<<>>} +({{[<<{<<[<<{[()()]<<>[]>}({[]}<<>{}>)>[<<{}{}>[<>[]]><({}<>)<[]()>>]>({(<()[]>(<>[]))}[([()()][{}]){{()()}{ +(<({{([{<[{(([()]<<><>>))}<<<[()][{}{}]><([][])(()())>>[[<<>[]><[]>]{[<>{}]<[][]>}]>](<(<<[]>({}()) +(<{<([[[<<((([<>{}]{()[]})([(){}]{{}<>}))[[[{}<>](()[])][[<>[]](<>())]])>>([{([{<><>}<{}[]>] +<{[{[{<{{({<<({}[])><{()()]<[]<>>>><[({}[])[()()]]<[{}<>]{<>{}}>>}((({()[]}{[]<>}){[[]()]([]<>)}))) +[(([[[[<<<[<{{<><>}{[]()}}[({}[])<(){}>]>(([[][]]([]{}))<{{}}(()<>)>)]({<<[]{}>{[]<>}>{[()<>}{{}}}}{{[(){}]} +{(([<{<(<{<{{<()><[]{}>}}({{{}<>}}<{<>[]}<{}<>>>)>[<([{}[]]<()<>>)(<{}{}>{()[]})><<{<>[]}(()[])>>]}( +(<((<{[[{({[([()[]]<()<>>)[<<>{}>({}[])]][<[<>[]]><{(){}}>]}[<(({})({}()))(<[]{}>(<><>))>[[([]{})[{}[ +{({([[[[{<([<{{}<>}[[][]]><<<>[]><<>{}>>]{{<{}<>><[][]>}({[]{}}<{}[]>)})>{{{{[[][]]}}}}}[<[[{[{}[]][()()] +[{(<([{{{<{<({{}[]}<()<>>){<<>())[{}[]]}>{{{[][]}}[[(){}]{<>()}]}}([(<<>()><[]()>)]{({[]<>} +[<[([{<((({<{{<>{}}}<<(){}><()()>>><({()}[[]{}])(([]())[<>[]])>}))){<[{{{(()[])({}())}{{()()}{{}<>}}}[(<{} +<([({({{(({{({<>}(<><>))}{([{}[]]{{}<>})}}[{({[]<>}([]<>))[<[]>([]{})]}({[[]{}]({}())}{<{}<> +[{(({(({<[[{<[(){}](<>[])>}[[[<>()]][([][])<<>()>]]](((<<><>>[(){}])([[][]]<{}{}>))[<(<>()){[]{}}>[[()[ +<<{{<[(([{[{[[<><>][[]()]]<(<>[])[[]<>]>}]<([<()[]>((){})][<{}>(<>())])>}][{(<([()()][<><>])(({ +({(<({([(<[<{[{}()]({}{})}<<{}{}>(()<>)>>]>{([<[<><>]<(){}>><({}[])((){})>]{{<[]()>[{}[]]}(({}{})< +<[{<{((<{((<[([]<>)]<{{}()}{()[]}>>(((())){<[]{}>[{}[]]}))<[<<{}[]>((){})>[<()()>{()()}]]<[[( +{{{((<(([{({(({}{})({}{}))}[<{()<>}[{}()]><([]()){[][]}}])[([[()[]][[]{}]])<{({}())[<>{}]}{(<>[])} +<({[{[[{(({<(<<>>[(){}])({[]{}}<[]()>)>}<{[([]())<<>{})]{(()[])<[]>}}(<[{}{}]>(((){}){{}{}}))>) +<{[[({[{[{[([[<>{}]((){})][[[][]]{()<>}])<[<{}()>(<>{})]<<<><>>[<>()]>>][[[<[]<>>{{}<>}]<{[]{}}<[]{}>>] +(({(<((({({{<<{}()>(()<>)><<<>{}>[{}{}]>}(((()<>)(()()))(<{}<>>))}[<[[[]<>]]({[][]}[<>{}])>]){[(({{}{}}){([][ +[{{<({<<{(<({<{}<>>[[]<>]}<[{}[]](()()]>)>([{{<>[]}}{([][])([][])}]))({(<{[]{}}{()<>}>([<>()]{[]{}})) +[<({[(<{{{[((<[]<>>(<>[]))([[]<>]<()<>>))(<((){})>)]}}}>{{<([<[<()[]>{{}<>}](([]())[[]<>))>]{(({[][]}<<>( +([(({<([{({<(([]<>)(()[])){<()()>{<>()}}><([[][]]<()<>>)[[[][]]<()<>>]>}[{[{()[]}(<>[])]([<>[]]<<>()>)}]) +{{{([<[([{(<[{[]()}<[]{}>]>)}])<<<<({(<>())<{}()>})[{({}[]}{<>[]}}<<[]<>><{}[]>>]><(<[()<> diff --git a/inputs/test_input10_2_1 b/inputs/test_input10_2_1 new file mode 100644 index 0000000..f8b31ed --- /dev/null +++ b/inputs/test_input10_2_1 @@ -0,0 +1,94 @@ +(<[<[((<[<([<<[]()>{{}()}>({<>[]}<[][]>)])<<[{{}[]}[{}<>]]([()<>][()()])>>>]((<{{([]{})<[]<>>}(<[ +<[{({[[<{[{{{<<><>><{}>}<([]()){()[]}>}({(()()){{}<>}})}{([<()()>[<><>]><<{}[]>({}<>)>)}]{{[((<>()){<>[] +[[{[[(<((<[<<{{}()}<()[]>>(<<>{}>{{}()})>]<<[[{}()](()<>)][<<>{}><[]()>]>{((<>()){{}()))}>>[{[<[<>{} +{{((({({(<[({<<>()>([]<>)}({()[]}(<>{}))}[({{}{}}([]()))<({}[])[[]()]>]](<{([]<>)(<><>)}{[[]] +[[({[{(((<(<{({}[])}((()<>)([]<>))>({{[]<>}{{}[]}}{[<>[]][()()]})){(<{{}[]}{{}[]}><([][])[<>{}]>)}><<{{{()}[ +(<{([{<[([(<({{}{}}{<>()})[<{}<>>{()()}]><((<>}(()<>))>){<[[()[]](()[])]>[{<{}[]>(<>())}]}](<[({( +<{{{<({[{<<[<({}()){[][]}>[<{}{}>[{}<>]]][[(()<>)([][])]]>><{<[(<><>)]>{(<()[]><[]{}>)<<<><>>(<>[] +({{{{<<[{([(({{}{}})<[[]<>]>)])}]>>}[(<[<<<{[{{}()}]<[{}{}]>}>>{(({(<>())<()()>}(<[][]>{()()})))}){[<<([() +<(([{(<{{{{([({}{})(<>[])][[()[]][<>{}]])<[<()[]>]}}{<<{{}<>}><{<>}([][])>>{<{{}{}}<{}<>>><((){}) +<(<<[([<[<({{{<>[]}<()[]>}}[([()<>]([]()))(({}<>){[]{}})])>]{({[([<>()])]})}]{[[<(<{()<>}[{}<>]>{[()[]][<><>] +{[[[((<(<[<(<[()()]>)<<<{}<>><<>[]>>(<(){}>)>>](<([<(){}><[]()>](([])))[<{{}{}}{<><>}>{<<>>{<> +[<{([{<[<<<[({[][]}<{}[]>){(()<>)<{}<>>}]><{{{[]<>}<()<>>}[(()[])[{}<>]]}(({<>[]}<{}()>)(<{}[]>([]{})) +{<[<[<<[<[{[{(()<>)}(<<>{}>[<>()])](([<>[]](<>[]))[[[]<>]([]<>)])}]><{{<{{[]<>}{{}[]]}<[<><> +[((<<{<[{<{(<[[]{}]>)}<<({()[]}[[]])<(()<>)[(){}]>>(<[{}<>]{<>[]}>)>>{[<<{()<>}]<[[]<>]({}{})>>[<[( +<<<<{[<(<[[<<{()[]}({}<>)>{{[]<>}{[]()}}>](([{()}]([(){}][<>[]])))]{[(<(()[])[<>[]]>{([]())}){( +({<[({([{[(<[{<>{}}(<>[])][<()()><()<>>]>)]}({<<<{[]{}}[<><>]>>><{((<><>))<<<>[]>{<>[]}}}([(()<>)<<>{ +<(<({{[<[{<[[{()[]}]((<>()))]<[[()[]](<><>)][[{}{}]<()>]>>}]>]{<(({<((())[<>{}])[<[]<>>{<>{}}]>}<<{[<>[]] +{[([{((<({<{[{[][]}<[]{}>]{{<>{}}<{}[]>}}>[<{(<>[]){[]{}}}<{[][]}{{}}>>]}{((<[[]()]<[]>>)[[<()[]> +(<{(({[(<{{(({<>[]}[{}])[[()()][[]()]])}[{(<()()>{[]<>})(<(){}><[]()})}[(([]{})<<><>>)<(<>())<<> +<(<{<({<((<{(({}{})><(<>[])>}>[<{<<>{}>([]{})}{[<>{}]([]())}>([[()[]]<{}<>>]({[][]}<()[]>))]){<[(<{}<> +([{({([({([[[{[]{}}({}<>)]]((<{}()><<>{}>){({}[])<{}<>>})]>}{[({{(()<>){<>[]}}[<()[]>[()<>]]}<<<< +{(<<[{(<<<(<<{[]<>}<[]()>><(<>)(()[])>><{(()<>){{}<>}}>)({{(<>())[<>[]]}}<[[{}{}](()())]<{{}()}( +<<(<<{[{([{([[<>()][[]()]](<()<>>[[][]])))<(<<[]<>>>)[({<>[]})]>][<<<(<><>)(<>)>[([]{})]>>])[[{(<(<>()){[] +<<<{[(<(<[(([{{}}]((<><>)[{}<>])))<({{<>{}}[{}<>]})>]{<[<(<><>)[{}{}]>[[{}[]]({}{})]]{<[[]<> +<{(({{{[[[<([{{}[]}]({(){}}((){})))>]]<(({[{<>()}({}{})]})(((<(){}>[(){}])[{[]{}}(<><>)])) +<[[{((<{([(<<{()<>}(()[])><<[][]>>>{(<{}[]>({}<>))})<<<<()()>{[]()}>(<<>()>)>>])}>))}[<<{[<{{{{<[]<>> +({(<{<(([[({{{[]{}}[()<>])}{(((){})<()[]>)})[<([[][]][[]()]){{<>()}[[][]]}>(<(<>)<<>[]>>{[<>[]]{[]( +((({(<<({<[[[{<>}[<>()]]<<{}<>>({}[])>]]<({<{}{}>[()[]]}{<{}<>>{<>()}}){[(()())<{}[]>][([]{})[[]<>]]}>>[{[<(( +{[[<[([{{<[<[[<>()][{}[]]]{<<>()>{[]()}}>]{[<[<><>]<<>{}>><{<><>}<<>{}>>)[{<{}<>><<>[]>}{{<><>}}]}>{ +<(<{(({([<[([([][])(()<>)]{[<><>](()<>)})((([]{})[[]()]))]([({[]()}{<>{}}){{{}})])>]{<<({<<>[] +<<{([{<[{{(({{{}()}{[][]}}<{[]()}{<><>}>){{<()[])<<><>>}[<{}[]><{}[]>]}){<<{[]()}<<><>>>{<{}{}>({}( +<[[<<(<({<([((()<>){()[]})[([][])<{}[]>]]({<<>()>((){})}([[]()]({}<>})))>})[<<{({([]())<<>{}>}{{() +<{(<[[<(<<({(<[][]><<>{}>)[<{}{}>[()<>]]}(({()[]}<{}[]>)))>[<[{(<>{}){()<>]}<[{}[]][<><>]>]>]>[<[({< +(<(([{{[<(<[<{()}{[][]}>]>{(((<>())[{}{}])<[[]]<(){}>))})>](<[(<(<[][]><<>()>){<{}[]>([]{})}>{(([]))<([]<>)[( +{((<{(({({<[{<{}<>><<>[]>}((<>{})[[][]]]]{([()[]](()()))([[]<>]{{}()})}>})(<[<<<[]{}><()[]>><<{}<>><< +{<{(<[<{[[{{{[{}()]}({()()})}((([]<>){()<>})(<<><>>))}<[{{()()}{[]()}}]>]<[((<[]()>((){}))([()()][<> +([({((([<({[[[[]()](()<>)][({}())<<><>>]]}<{<[{}<>][{}{}]>(([]<>){[]()})}[<<[]()>[{}()]>]>)<([([() +<<{({<<[{[<{<(<><>)([])>({{}[]}{[][]})}<([()()])(([]{}))>>([(<[][]>{{}<>})[[<>{}]<()<>>}]{[{{}[]}({}<>)]<[[]< +([<{[[[([[<[(((){})[{}()]){{[]<>}(()<>}}][({(){}}{<>[]})]>]])({<[{<(()<>)>({[]{}}<{}()>)}(([()()]<<><>> +([({{[<([[{<[{()[]}[<>]]({<>()})><{({}[])(()<>)}{(<>{}){{}<>}}>}]])>]<([([[{[[<>{}]{[]{}}]{<[][]]{{}[]} +[[{(({[{{[[[<(()[])[[]<>]>]{<{()[]}{()()}>{(<>[])({}[])}}](<((<><>)[<><>])([<><>])))][[[(<( +[{(<<{(((([[<<{}<>>({}())><<<>[]>[{}{}]>][<(<>[])<{}>>[<[][]>{{}[]}]]]<<(<[][]>{[]()})({{}()}<{}<>>)><([< +{<[[<{{<[[(<{{()()}<[]<>>}><<{<>}<{}{}>><<[][]>>>)<{{[()<>]{{}{}}}<({}[])[(){}]>}>]]>}<<(({{(((){} +((<([[<{{<(<([<>()]{(){}}]({[]()}<()()>)>(([{}[]]((){}))))<[{[<>{}]({}<>)}]>>}[[<({(<>())(<><>)}){([<><>][[][ +<[([<(({<(([<({}<>)[()]><<[][]><<>()>>]<{([]{})}<{<>{}}{[]()}>>)){[[{[<>{}][[][]]}]<[[<>()][{}[]]]>][<[[() +((({({[[[[{{<(<><>)((){})>}}]{{[[[<>[]][<>[]]]{{()<>}[[][]]}]{{{{}{}}{<>[]}}([{}][<><>])}}({( +<<<{[<(<({[{[({}[]){()()}]}]}{[(({{}()}[[]<>])[([]<>)(<>)])]{{({()<>}{<><>})<<{}()>>}<[<[]{}>]{([]< +(({[(<<<<{((((<>{}){[]<>})[{[]<>}])(([[][]]<()<>>)<[{}<>]<[]{}>>)){(({()[]}<[][]>)[[<>[]]{()<>}])([[()[]]]< +<([<<[<<[{[[<<[][]>>{((){})[<>[]]}]((<{}{}>[[]<>]){<{}()>(()<>]})]({[(<>{})(<><>)](<(){}>[ +((<{[{[[{<<((<<>{}>{<>()}){{[]()}((){})})((([]<>)<<>[]>)<(()){<>[]}>}><[<(<>[])<{}()>>]{<< +[(<[{([{<{([[(()){(){}>]{{{}<>}<[]()>}][(<()<>>[(){}])<[()](()<>)>])}({([[[]{}]({}())]({()<>}{ +[<[{[<[{[[<[{([]){{}{}}}]>][[<<(<>{})<<>{}]><{{}()}>>(([{}<>]({}))[(<>{})<[][]>])]]]}]<[(({ +(([{{<<{<[[(((<>())<[]{}>)([()()}(()())))[((<>()))<[{}()]({}[])>]](<{{<>}{{}<>}}>)]>[{<{{[ +<<[[{<([<<<<{({}<>]([]())}({{}()}<()<>>)>[<<()()>{()()}>({()<>}[{}()])]>{<(<[][]>)>[<[{}{}]>((<>() +(<{[<[({{[[([<[]{}>[[]()]]{{{}[]}(<><>)})]<[([<>{}]<{}[]>)[<{}<>>{[]()}]]<(<<><>>(()()))<[<><>}{{}{}}>>>]( +[<((<{{[(<(((<[]()>([][]))(<()<>>{{}[]}))((<{}{}><{}[]>)({{}[]}[[]{}])))<{(<[][]>)<{<>()}>}{{[()<>]}{{<>( +{((([{{((<<<<[()()][(){}]>{[[][]](()<>)}>>{{{{<><>}[[]<>]}[{<><>}({}()]]}([[<>]{(){}}][[(){}](()<>)])}>[([([[ +[(({<<{([{(<[<()[]><[]()>]((<>[])[<>()])>([<(){}><<>()>]{[<>()][(){}]}))}[<[{[{}()]{()()}}(<<>>{[]})]{[<<>()> +<[{[<<({<<<[((<>()){()()})[(<>[])([]{})]]><[<([][])([]<>)>(<[]{}>(()()))][{[()[]]{[]<>}}[(<>{})<<> +((<[<[(({[{[[<<>[]]{[]()}]({()<>})]{[<<>()><{}()>]}}(<(([]{}){(){}})>{<{{}()}(()())>})]}([(<{[[][] +{(((((<({[<[{<<><>>{<>[]}}(<(){}><[]()>)]<{<{}()>(<>())}[[[]<>]{{}<>}]>>{[{<()()>[[]()]}[<{}>]]}]{ +(({([{<([<{{<<[]{}>[[]{}]>({{}{}}({}<>))}<[{<>{}}{()<>}][<<>{}>]>}>{({(<(){}>[{}()])[{()<>}[()<>]]}<[{[ +[[{{[<<[<((<{{{}()}<[]>}{[{}<>]<()[]>}>({[[]{}]}[([]())<[]{}>])){(<<()()>>{[{}[]]<{}{}>})})>]>>]<([<[< +{({{{{[[<{<[{[{}<>]}([[]{}][{}<>])][((()()){[]()}){[<>()](<>())}]>}>[{<[{{<>{}}({}())}[<<>{}>(( +({[((<{{<<<({[{}{}][(){}]})((<[]><()()>)<{<>()}[[]<>]>)>(({<{}[]>([][])}(({}{})<<>()>))<{<[ +[<<[<{[[{{(<{[[]<>)({}[])}>)}}(({{((<>[])<<><>>)}{[[[]<>]]{{[][]}<{}{}>}}}){[[((<><>)[{}<>]) +(({<(<([({<(<<()<>>([]<>)>[([]()><()[]>])<[<()[]>[()()]]{[[][]]{{}[]}}>>{{<<[][]><[]{}>>{[{}[]]<<>>}}{{<[]{ +([{{({({{{<([({}[])[()<>]][[[]{}]([]())])>([[[()()][<>()]]([{}[]]{{}()})]<{{[]<>}({}[])}{<()[ +(<{(({(<{{[<[[()<>]{<>()}][<(){}><()<>>]>{<<<>[]>[<><>]><({}<>>>}](<<{<>[]}[[]<>]>[[[]<>](()[])]>{{{[] +[[[<[([([(({{<<><>>([][])}})[([[{}()]<<><>>])<({{}<>})<{{}}({}{})>>])])<([((<[[]<>]{(){}}>{[[]<>]<[]<>>})( +(({(<({[[<{<([{}<>]{<>()})([()()](()<>))>(((()())[{}()])({()[]}{{}<>}))}>([({<(){}>([]<>)}{[<>()]<<>>} +({{[<<{<<[<<{[()()]<<>[]>}({[]}<<>{}>)>[<<{}{}>[<>[]]><({}<>)<[]()>>]>({(<()[]>(<>[]))}[([()()][{}]){{()()}{ +(<({{([{<[{(([()]<<><>>))}<<<[()][{}{}]><([][])(()())>>[[<<>[]><[]>]{[<>{}]<[][]>}]>](<(<<[]>({}()) +(<{<([[[<<((([<>{}]{()[]})([(){}]{{}<>}))[[[{}<>](()[])][[<>[]](<>())]])>>([{([{<><>}<{}[]>] +<{[{[{<{{({<<({}[])><{()()]<[]<>>>><[({}[])[()()]]<[{}<>]{<>{}}>>}((({()[]}{[]<>}){[[]()]([]<>)}))) +[(([[[[<<<[<{{<><>}{[]()}}[({}[])<(){}>]>(([[][]]([]{}))<{{}}(()<>)>)]({<<[]{}>{[]<>}>{[()<>}{{}}}}{{[(){}]} +{(([<{<(<{<{{<()><[]{}>}}({{{}<>}}<{<>[]}<{}<>>>)>[<([{}[]]<()<>>)(<{}{}>{()[]})><<{<>[]}(()[])>>]}( +(<((<{[[{({[([()[]]<()<>>)[<<>{}>({}[])]][<[<>[]]><{(){}}>]}[<(({})({}()))(<[]{}>(<><>))>[[([]{})[{}[ +{({([[[[{<([<{{}<>}[[][]]><<<>[]><<>{}>>]{{<{}<>><[][]>}({[]{}}<{}[]>)})>{{{{[[][]]}}}}}[<[[{[{}[]][()()] +[{(<([{{{<{<({{}[]}<()<>>){<<>())[{}[]]}>{{{[][]}}[[(){}]{<>()}]}}([(<<>()><[]()>)]{({[]<>} +[<[([{<((({<{{<>{}}}<<(){}><()()>>><({()}[[]{}])(([]())[<>[]])>}))){<[{{{(()[])({}())}{{()()}{{}<>}}}[(<{} +<([({({{(({{({<>}(<><>))}{([{}[]]{{}<>})}}[{({[]<>}([]<>))[<[]>([]{})]}({[[]{}]({}())}{<{}<> +[{(({(({<[[{<[(){}](<>[])>}[[[<>()]][([][])<<>()>]]](((<<><>>[(){}])([[][]]<{}{}>))[<(<>()){[]{}}>[[()[ +<<{{<[(([{[{[[<><>][[]()]]<(<>[])[[]<>]>}]<([<()[]>((){})][<{}>(<>())])>}][{(<([()()][<><>])(({ +({(<({([(<[<{[{}()]({}{})}<<{}{}>(()<>)>>]>{([<[<><>]<(){}>><({}[])((){})>]{{<[]()>[{}[]]}(({}{})< +<[{<{((<{((<[([]<>)]<{{}()}{()[]}>>(((())){<[]{}>[{}[]]}))<[<<{}[]>((){})>[<()()>{()()}]]<[[( +{{{((<(([{({(({}{})({}{}))}[<{()<>}[{}()]><([]()){[][]}}])[([[()[]][[]{}]])<{({}())[<>{}]}{(<>[])} +<({[{[[{(({<(<<>>[(){}])({[]{}}<[]()>)>}<{[([]())<<>{})]{(()[])<[]>}}(<[{}{}]>(((){}){{}{}}))>) +<{[[({[{[{[([[<>{}]((){})][[[][]]{()<>}])<[<{}()>(<>{})]<<<><>>[<>()]>>][[[<[]<>>{{}<>}]<{[]{}}<[]{}>>] +(({(<((({({{<<{}()>(()<>)><<<>{}>[{}{}]>}(((()<>)(()()))(<{}<>>))}[<[[[]<>]]({[][]}[<>{}])>]){[(({{}{}}){([][ +[{{<({<<{(<({<{}<>>[[]<>]}<[{}[]](()()]>)>([{{<>[]}}{([][])([][])}]))({(<{[]{}}{()<>}>([<>()]{[]{}})) +[<({[(<{{{[((<[]<>>(<>[]))([[]<>]<()<>>))(<((){})>)]}}}>{{<([<[<()[]>{{}<>}](([]())[[]<>))>]{(({[][]}<<>( +([(({<([{({<(([]<>)(()[])){<()()>{<>()}}><([[][]]<()<>>)[[[][]]<()<>>]>}[{[{()[]}(<>[])]([<>[]]<<>()>)}]) +{{{([<[([{(<[{[]()}<[]{}>]>)}])<<<<({(<>())<{}()>})[{({}[]}{<>[]}}<<[]<>><{}[]>>]><(<[()<> diff --git a/inputs/test_input11_1_1 b/inputs/test_input11_1_1 new file mode 100644 index 0000000..03eceda --- /dev/null +++ b/inputs/test_input11_1_1 @@ -0,0 +1,10 @@ +8548335644 +6576521782 +1223677762 +1284713113 +6125654778 +6435726842 +5664175556 +1445736556 +2248473568 +6451473526 diff --git a/inputs/test_input11_2_1 b/inputs/test_input11_2_1 new file mode 100644 index 0000000..03eceda --- /dev/null +++ b/inputs/test_input11_2_1 @@ -0,0 +1,10 @@ +8548335644 +6576521782 +1223677762 +1284713113 +6125654778 +6435726842 +5664175556 +1445736556 +2248473568 +6451473526