commit 5c5cbb98f2cc93e4f3fde4a54c0ab36bcbb7a8c0 Author: Der Teufel Date: Sun Dec 12 13:39:56 2021 +0100 Days 1, 2; Preparation, compilation and run scripts; Project structure; Empty sources and data files for other days diff --git a/compile.sh b/compile.sh new file mode 100755 index 0000000..8721b1b --- /dev/null +++ b/compile.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -xe + +marst src/$1.a60 -o c/$1.c + +gcc -O3 -lalgol -lm c/$1.c obj/util.o -o exe/$1.exe diff --git a/data/day01.txt b/data/day01.txt new file mode 100644 index 0000000..a12f387 --- /dev/null +++ b/data/day01.txt @@ -0,0 +1,2000 @@ +195 +197 +201 +204 +203 +216 +213 +215 +216 +185 +188 +190 +205 +218 +237 +243 +248 +278 +289 +292 +304 +313 +314 +317 +329 +328 +329 +328 +329 +330 +331 +329 +333 +337 +338 +345 +352 +354 +355 +359 +360 +363 +365 +364 +370 +371 +367 +387 +403 +407 +409 +411 +416 +425 +435 +444 +445 +446 +460 +449 +454 +458 +459 +463 +464 +445 +447 +448 +450 +452 +463 +464 +475 +459 +460 +465 +477 +484 +485 +486 +498 +500 +501 +502 +516 +515 +531 +534 +560 +576 +583 +586 +587 +575 +588 +587 +591 +595 +599 +607 +608 +609 +610 +616 +612 +601 +603 +621 +624 +623 +630 +639 +633 +628 +629 +630 +631 +632 +646 +650 +654 +650 +654 +659 +660 +663 +669 +670 +673 +702 +709 +715 +739 +734 +750 +756 +762 +775 +773 +784 +785 +784 +789 +790 +785 +784 +798 +814 +815 +816 +817 +818 +826 +827 +841 +835 +836 +839 +841 +843 +835 +839 +819 +838 +837 +831 +847 +845 +847 +848 +853 +854 +883 +884 +883 +884 +885 +887 +888 +889 +896 +902 +920 +922 +923 +924 +928 +930 +962 +958 +985 +979 +980 +979 +986 +1019 +1016 +1017 +1022 +1032 +1035 +1037 +1040 +1038 +1045 +1056 +1065 +1090 +1104 +1084 +1082 +1084 +1097 +1115 +1118 +1128 +1123 +1133 +1143 +1144 +1133 +1134 +1135 +1136 +1144 +1135 +1136 +1145 +1157 +1168 +1172 +1173 +1176 +1194 +1213 +1191 +1192 +1194 +1197 +1200 +1193 +1196 +1198 +1201 +1194 +1196 +1225 +1224 +1230 +1232 +1239 +1240 +1243 +1239 +1217 +1218 +1220 +1224 +1232 +1225 +1223 +1224 +1227 +1219 +1220 +1219 +1227 +1237 +1250 +1259 +1263 +1264 +1274 +1275 +1280 +1300 +1288 +1291 +1293 +1278 +1279 +1280 +1277 +1293 +1297 +1309 +1308 +1315 +1339 +1345 +1343 +1341 +1344 +1348 +1360 +1366 +1369 +1386 +1389 +1419 +1418 +1419 +1414 +1420 +1447 +1453 +1460 +1454 +1477 +1485 +1492 +1500 +1501 +1494 +1484 +1487 +1496 +1497 +1499 +1503 +1505 +1507 +1515 +1522 +1525 +1527 +1539 +1541 +1569 +1571 +1562 +1568 +1556 +1563 +1542 +1547 +1548 +1542 +1551 +1549 +1559 +1562 +1564 +1560 +1562 +1563 +1564 +1563 +1564 +1565 +1595 +1607 +1613 +1616 +1618 +1617 +1619 +1621 +1622 +1624 +1637 +1631 +1627 +1630 +1635 +1639 +1675 +1677 +1681 +1683 +1685 +1684 +1689 +1700 +1701 +1699 +1702 +1704 +1718 +1713 +1689 +1690 +1689 +1667 +1668 +1697 +1700 +1694 +1697 +1715 +1719 +1725 +1726 +1713 +1714 +1720 +1723 +1725 +1728 +1731 +1749 +1746 +1748 +1766 +1767 +1771 +1770 +1779 +1783 +1801 +1790 +1773 +1775 +1777 +1791 +1794 +1795 +1804 +1787 +1792 +1793 +1798 +1816 +1818 +1820 +1812 +1816 +1817 +1818 +1820 +1833 +1850 +1847 +1851 +1866 +1868 +1871 +1875 +1883 +1884 +1886 +1895 +1899 +1901 +1902 +1940 +1944 +1966 +1969 +1979 +1974 +1977 +1982 +1983 +2012 +2027 +2031 +2044 +2040 +2058 +2062 +2060 +2061 +2063 +2067 +2068 +2091 +2093 +2069 +2083 +2084 +2083 +2085 +2083 +2087 +2095 +2088 +2090 +2093 +2097 +2096 +2097 +2099 +2098 +2108 +2112 +2115 +2116 +2117 +2121 +2123 +2158 +2140 +2143 +2134 +2159 +2161 +2162 +2177 +2179 +2186 +2190 +2189 +2171 +2174 +2178 +2174 +2176 +2178 +2166 +2168 +2169 +2170 +2177 +2203 +2212 +2213 +2214 +2223 +2227 +2228 +2237 +2232 +2239 +2269 +2268 +2271 +2283 +2290 +2294 +2296 +2301 +2303 +2307 +2304 +2315 +2317 +2325 +2326 +2328 +2329 +2351 +2361 +2330 +2342 +2343 +2346 +2354 +2357 +2375 +2364 +2365 +2361 +2365 +2364 +2367 +2368 +2370 +2366 +2367 +2371 +2376 +2382 +2383 +2394 +2398 +2389 +2393 +2400 +2402 +2413 +2429 +2431 +2447 +2449 +2481 +2487 +2488 +2507 +2496 +2495 +2511 +2526 +2544 +2545 +2534 +2549 +2550 +2540 +2542 +2555 +2558 +2546 +2559 +2577 +2578 +2582 +2585 +2605 +2620 +2625 +2630 +2633 +2639 +2647 +2654 +2658 +2662 +2661 +2682 +2708 +2746 +2733 +2738 +2756 +2763 +2766 +2769 +2770 +2773 +2770 +2781 +2782 +2784 +2785 +2783 +2781 +2778 +2804 +2793 +2795 +2796 +2797 +2798 +2797 +2798 +2797 +2798 +2799 +2807 +2808 +2814 +2816 +2817 +2795 +2798 +2799 +2801 +2807 +2808 +2807 +2826 +2817 +2818 +2820 +2824 +2841 +2840 +2846 +2847 +2836 +2839 +2842 +2845 +2849 +2853 +2857 +2856 +2875 +2893 +2913 +2921 +2927 +2911 +2912 +2914 +2919 +2923 +2921 +2934 +2932 +2935 +2941 +2951 +2952 +2959 +2965 +2970 +2975 +2991 +2993 +2994 +3000 +3002 +3004 +3019 +3024 +3029 +3030 +3031 +3032 +3031 +3034 +3039 +3042 +3052 +3053 +3055 +3056 +3089 +3107 +3112 +3113 +3111 +3112 +3113 +3117 +3116 +3108 +3112 +3110 +3111 +3117 +3120 +3112 +3113 +3118 +3106 +3107 +3105 +3108 +3107 +3108 +3118 +3127 +3125 +3134 +3137 +3138 +3144 +3159 +3172 +3178 +3185 +3191 +3197 +3193 +3192 +3203 +3209 +3216 +3213 +3215 +3226 +3228 +3225 +3227 +3214 +3217 +3226 +3264 +3265 +3270 +3273 +3271 +3265 +3262 +3284 +3287 +3289 +3297 +3315 +3324 +3279 +3285 +3289 +3298 +3299 +3313 +3314 +3315 +3353 +3340 +3338 +3339 +3340 +3342 +3356 +3355 +3356 +3362 +3377 +3385 +3391 +3394 +3401 +3411 +3409 +3425 +3426 +3427 +3436 +3442 +3443 +3447 +3448 +3449 +3450 +3456 +3463 +3471 +3489 +3502 +3485 +3490 +3469 +3471 +3474 +3481 +3488 +3495 +3490 +3497 +3518 +3530 +3531 +3533 +3535 +3540 +3552 +3555 +3558 +3566 +3571 +3587 +3604 +3605 +3608 +3632 +3638 +3650 +3643 +3634 +3635 +3666 +3667 +3670 +3668 +3674 +3678 +3688 +3687 +3685 +3686 +3704 +3709 +3710 +3717 +3719 +3730 +3735 +3733 +3756 +3757 +3783 +3784 +3786 +3788 +3789 +3794 +3799 +3803 +3824 +3827 +3793 +3794 +3796 +3786 +3787 +3788 +3791 +3789 +3804 +3805 +3823 +3833 +3816 +3814 +3815 +3821 +3820 +3823 +3824 +3826 +3825 +3836 +3839 +3843 +3844 +3845 +3846 +3867 +3887 +3891 +3898 +3915 +3917 +3915 +3919 +3926 +3924 +3926 +3928 +3938 +3947 +3952 +3953 +3960 +3961 +3970 +3971 +3977 +4002 +4008 +4034 +4035 +4044 +4054 +4078 +4079 +4081 +4086 +4083 +4086 +4088 +4081 +4091 +4094 +4090 +4091 +4100 +4115 +4117 +4120 +4108 +4150 +4151 +4132 +4134 +4138 +4145 +4153 +4155 +4156 +4135 +4146 +4128 +4155 +4170 +4172 +4171 +4183 +4184 +4191 +4214 +4221 +4228 +4238 +4240 +4241 +4210 +4214 +4217 +4221 +4210 +4229 +4235 +4243 +4247 +4263 +4264 +4263 +4277 +4281 +4285 +4288 +4304 +4310 +4312 +4323 +4326 +4331 +4329 +4351 +4348 +4350 +4354 +4357 +4359 +4360 +4368 +4380 +4364 +4348 +4352 +4353 +4368 +4379 +4383 +4386 +4372 +4373 +4380 +4379 +4381 +4382 +4412 +4419 +4402 +4403 +4404 +4423 +4415 +4416 +4418 +4419 +4425 +4437 +4439 +4438 +4439 +4451 +4459 +4460 +4461 +4462 +4465 +4479 +4508 +4504 +4506 +4508 +4516 +4510 +4498 +4511 +4506 +4523 +4528 +4542 +4563 +4574 +4588 +4587 +4588 +4590 +4591 +4592 +4594 +4599 +4592 +4594 +4615 +4613 +4615 +4616 +4625 +4619 +4620 +4623 +4628 +4629 +4630 +4633 +4639 +4638 +4640 +4655 +4656 +4657 +4679 +4681 +4680 +4681 +4696 +4692 +4700 +4704 +4706 +4715 +4721 +4722 +4734 +4712 +4716 +4715 +4721 +4722 +4724 +4736 +4741 +4755 +4756 +4754 +4747 +4759 +4768 +4772 +4778 +4782 +4812 +4806 +4808 +4809 +4806 +4811 +4806 +4807 +4818 +4826 +4827 +4828 +4830 +4836 +4837 +4855 +4856 +4863 +4851 +4852 +4853 +4854 +4860 +4861 +4862 +4865 +4868 +4854 +4857 +4856 +4875 +4876 +4882 +4883 +4884 +4883 +4896 +4901 +4912 +4922 +4930 +4912 +4920 +4921 +4930 +4935 +4934 +4936 +4939 +4941 +4950 +4953 +4958 +4972 +4975 +4976 +4994 +4995 +4998 +5001 +5008 +5013 +5014 +5016 +5026 +5025 +5031 +5039 +5052 +5053 +5059 +5064 +5065 +5082 +5083 +5084 +5085 +5090 +5092 +5099 +5136 +5145 +5167 +5160 +5133 +5135 +5113 +5117 +5140 +5129 +5131 +5124 +5123 +5124 +5137 +5148 +5153 +5157 +5171 +5179 +5204 +5206 +5210 +5212 +5215 +5225 +5229 +5232 +5229 +5220 +5224 +5235 +5250 +5249 +5257 +5258 +5260 +5265 +5289 +5288 +5290 +5292 +5293 +5262 +5264 +5265 +5263 +5265 +5270 +5279 +5284 +5285 +5291 +5290 +5295 +5299 +5318 +5331 +5345 +5347 +5341 +5347 +5348 +5349 +5355 +5345 +5350 +5357 +5358 +5364 +5365 +5377 +5378 +5405 +5408 +5407 +5417 +5425 +5428 +5432 +5431 +5438 +5439 +5445 +5451 +5453 +5446 +5449 +5451 +5461 +5467 +5475 +5497 +5513 +5514 +5535 +5536 +5537 +5565 +5575 +5579 +5580 +5600 +5609 +5592 +5610 +5609 +5614 +5622 +5621 +5622 +5647 +5649 +5660 +5661 +5668 +5665 +5666 +5684 +5687 +5688 +5692 +5691 +5697 +5698 +5678 +5686 +5687 +5686 +5687 +5688 +5681 +5690 +5691 +5696 +5701 +5702 +5693 +5686 +5690 +5693 +5697 +5694 +5699 +5700 +5713 +5700 +5709 +5711 +5719 +5720 +5721 +5723 +5726 +5727 +5728 +5723 +5728 +5735 +5741 +5728 +5733 +5741 +5747 +5751 +5747 +5756 +5757 +5758 +5753 +5752 +5753 +5756 +5754 +5755 +5766 +5768 +5780 +5778 +5777 +5778 +5784 +5788 +5790 +5801 +5802 +5816 +5832 +5833 +5821 +5824 +5837 +5830 +5804 +5830 +5831 +5840 +5850 +5862 +5863 +5864 +5869 +5862 +5861 +5862 +5866 +5865 +5866 +5906 +5907 +5908 +5909 +5918 +5917 +5921 +5920 +5921 +5919 +5938 +5939 +5915 +5936 +5938 +5943 +5961 +5972 +5982 +5987 +5991 +5994 +6010 +6013 +6017 +6018 +6021 +6017 +6022 +6023 +6013 +6014 +6027 +6056 +6061 +6067 +6056 +6057 +6071 +6074 +6077 +6068 +6092 +6098 +6106 +6118 +6133 +6140 +6141 +6179 +6185 +6186 +6201 +6203 +6204 +6214 +6215 +6221 +6230 +6240 +6241 +6252 +6253 +6268 +6270 +6277 +6280 +6282 +6281 +6282 +6293 +6263 +6248 +6249 +6250 +6270 +6280 +6276 +6278 +6291 +6292 +6294 +6295 +6302 +6311 +6341 +6335 +6336 +6337 +6336 +6337 +6339 +6342 +6347 +6341 +6342 +6343 +6353 +6355 +6379 +6366 +6370 +6371 +6378 +6379 +6384 +6404 +6402 +6415 +6414 +6417 +6416 +6417 +6410 +6428 +6443 +6445 +6450 +6448 +6456 +6477 +6479 +6486 +6493 +6495 +6496 +6522 +6523 +6524 +6525 +6526 +6527 +6529 +6537 +6532 +6550 +6565 +6566 +6571 +6598 +6614 +6620 +6621 +6622 +6620 +6586 +6592 +6596 +6624 +6619 +6618 +6610 +6611 +6618 +6619 +6622 +6630 +6627 +6633 +6611 +6614 +6617 +6612 +6622 +6623 +6626 +6645 +6646 +6645 +6658 +6661 +6664 +6666 +6673 +6683 +6686 +6688 +6685 +6718 +6719 +6720 +6721 +6718 +6720 +6749 +6755 +6752 +6755 +6756 +6768 +6771 +6773 +6776 +6816 +6830 +6831 +6843 +6844 +6845 +6851 +6873 +6875 +6876 +6878 +6879 +6880 +6873 +6874 +6857 +6856 +6857 +6856 +6858 +6855 +6856 +6857 +6855 +6859 +6860 +6862 +6864 +6874 +6876 +6862 +6865 +6874 +6893 +6899 +6900 +6903 +6908 +6909 +6937 +6939 +6942 +6954 +6958 +6962 +6972 +6968 +6979 +6983 +6982 +6983 +6989 +6988 +6999 +6992 +6996 +7000 +6998 +6974 +6977 +6996 +6997 +6998 +6999 +7005 +6990 +6992 +6993 +7016 +7023 +7000 +7002 +7022 +7035 +7042 +7052 +7065 +7069 +7076 +7066 +7080 +7084 +7083 +7082 +7083 +7084 +7089 +7094 +7093 +7102 +7105 +7106 +7107 +7110 +7111 +7112 +7119 +7120 +7107 +7106 +7105 +7094 +7105 +7106 +7107 +7109 +7116 +7117 +7121 +7143 +7145 +7161 +7170 +7171 +7178 +7149 +7145 +7146 +7147 +7148 +7149 +7162 +7163 +7168 +7175 +7176 +7189 +7187 +7172 +7183 +7190 +7191 +7201 +7209 +7211 +7212 +7254 +7255 +7261 +7269 +7278 +7298 +7307 +7304 +7305 +7327 +7329 +7339 +7335 +7331 +7335 +7336 +7338 +7351 +7349 +7355 +7360 +7370 +7371 +7402 +7415 +7414 +7413 +7426 +7429 +7430 +7432 +7433 +7419 +7420 +7421 +7424 +7427 +7432 +7424 +7433 +7440 +7441 +7464 +7468 +7469 +7482 +7487 +7492 +7494 +7495 +7498 +7504 +7505 +7506 +7513 +7517 +7520 +7526 +7543 +7531 +7537 +7538 +7543 +7534 +7539 +7544 +7551 +7555 +7554 +7559 +7567 +7572 +7580 +7600 +7602 +7592 +7597 +7601 +7602 +7604 +7607 +7630 +7633 +7640 +7641 +7642 +7631 +7640 +7642 +7626 +7609 +7615 +7623 +7625 +7602 +7600 +7604 +7606 +7617 +7620 +7621 +7632 +7628 +7650 +7652 +7654 +7657 +7666 +7667 +7678 +7679 +7674 +7678 +7679 +7678 +7679 +7681 +7675 +7673 +7664 +7686 +7684 +7680 +7681 +7682 +7681 +7687 +7693 +7690 +7694 +7710 +7711 +7710 +7712 +7720 +7710 +7711 +7718 +7730 +7732 +7734 +7735 +7736 +7737 +7756 +7766 +7768 +7769 +7776 +7788 +7792 +7793 +7807 +7808 +7826 +7831 +7838 +7839 +7872 +7875 +7877 +7879 +7890 +7895 +7893 +7896 +7903 +7908 +7904 +7917 +7918 +7930 +7961 +7957 +7960 +7950 +7968 +7969 +7973 +7996 +7999 +7993 +8001 +8005 +8006 +8045 +8058 +8064 +8063 +8077 +8080 +8081 +8098 +8102 +8109 +8110 +8121 +8123 +8122 +8129 +8132 +8154 +8159 +8171 +8190 +8192 +8199 +8202 +8240 +8241 +8243 +8261 +8262 +8256 +8260 +8257 +8258 +8270 +8274 +8276 +8260 +8257 +8258 +8261 +8297 +8305 +8308 +8309 +8310 +8335 +8338 +8352 +8362 +8363 +8348 +8346 +8349 +8343 +8333 +8335 +8336 +8337 +8346 +8338 +8366 +8391 +8388 +8402 +8413 +8439 +8440 +8443 +8444 +8451 +8459 +8460 +8472 +8468 +8469 +8474 +8478 +8487 +8511 +8530 +8531 +8537 +8536 +8537 +8544 +8549 +8562 +8563 +8562 diff --git a/data/day02.txt b/data/day02.txt new file mode 100644 index 0000000..d61291a --- /dev/null +++ b/data/day02.txt @@ -0,0 +1,1000 @@ +forward 2 +down 9 +up 6 +forward 1 +down 5 +down 7 +down 9 +forward 9 +down 8 +up 7 +forward 2 +up 6 +forward 4 +down 5 +down 9 +up 1 +down 9 +forward 8 +forward 6 +forward 6 +forward 5 +forward 9 +up 3 +up 5 +forward 1 +down 4 +down 7 +forward 2 +up 3 +down 8 +forward 1 +down 2 +forward 3 +up 1 +up 1 +up 7 +forward 5 +up 8 +forward 8 +forward 8 +down 6 +forward 1 +forward 5 +forward 4 +forward 6 +forward 5 +down 6 +down 9 +forward 9 +down 8 +forward 6 +down 5 +forward 9 +up 3 +up 1 +down 8 +down 7 +down 9 +forward 7 +down 8 +down 9 +down 5 +down 3 +forward 1 +forward 6 +down 1 +forward 9 +down 5 +forward 7 +up 2 +down 8 +forward 1 +down 4 +down 9 +down 4 +up 5 +forward 4 +forward 6 +forward 1 +down 3 +forward 1 +down 6 +up 5 +up 4 +forward 6 +forward 1 +forward 1 +down 2 +up 4 +up 3 +up 2 +up 6 +down 6 +forward 1 +down 8 +forward 1 +up 6 +forward 7 +down 5 +forward 4 +forward 6 +down 4 +forward 4 +down 4 +down 4 +forward 2 +forward 8 +down 5 +down 1 +down 8 +up 5 +up 8 +down 5 +forward 4 +down 6 +up 7 +forward 2 +down 3 +forward 2 +forward 2 +down 9 +down 3 +up 6 +forward 8 +up 2 +up 9 +forward 4 +down 1 +down 5 +forward 4 +down 2 +down 3 +forward 5 +down 4 +forward 7 +up 4 +forward 6 +up 8 +forward 1 +up 9 +down 4 +forward 2 +down 1 +forward 7 +down 3 +down 2 +forward 5 +down 3 +down 9 +down 9 +up 5 +forward 2 +down 8 +up 9 +forward 4 +down 3 +forward 3 +forward 6 +up 2 +forward 3 +down 1 +down 1 +down 1 +forward 7 +forward 4 +forward 7 +down 5 +down 6 +down 2 +forward 6 +down 3 +up 6 +forward 4 +down 8 +up 1 +forward 8 +down 2 +down 5 +forward 4 +down 9 +forward 2 +forward 2 +down 3 +forward 3 +down 1 +forward 2 +down 7 +forward 3 +forward 9 +up 9 +forward 6 +forward 2 +down 1 +down 5 +forward 6 +forward 6 +down 3 +up 3 +forward 9 +down 7 +down 2 +down 4 +down 7 +forward 5 +up 4 +forward 8 +down 5 +forward 7 +down 7 +up 7 +down 8 +forward 9 +up 5 +forward 1 +down 2 +forward 5 +down 9 +forward 3 +down 5 +forward 8 +forward 3 +up 5 +down 2 +up 3 +forward 2 +up 1 +up 5 +down 8 +forward 2 +down 5 +up 4 +up 5 +up 2 +forward 9 +forward 6 +down 9 +up 9 +forward 6 +forward 4 +forward 3 +forward 7 +up 1 +down 2 +down 6 +down 1 +forward 8 +down 1 +forward 6 +down 8 +forward 8 +down 7 +down 6 +down 5 +forward 2 +up 8 +up 6 +up 5 +down 1 +forward 1 +down 1 +down 5 +forward 7 +forward 3 +down 1 +forward 5 +forward 5 +forward 8 +down 1 +up 2 +down 6 +up 6 +forward 6 +forward 6 +down 3 +forward 9 +up 4 +forward 4 +down 6 +up 1 +forward 6 +down 2 +down 5 +down 2 +down 6 +up 5 +down 1 +down 1 +forward 3 +forward 7 +forward 3 +up 2 +down 8 +down 4 +down 1 +down 5 +down 1 +down 9 +forward 6 +down 6 +down 4 +down 6 +down 8 +forward 4 +down 6 +down 7 +forward 8 +down 4 +up 4 +down 1 +forward 1 +forward 4 +forward 1 +up 9 +down 7 +forward 7 +down 4 +forward 1 +up 4 +forward 4 +down 5 +down 7 +forward 5 +forward 7 +forward 1 +forward 1 +forward 9 +forward 9 +up 3 +forward 4 +down 2 +forward 9 +up 8 +forward 3 +up 5 +down 3 +down 8 +forward 8 +down 6 +forward 1 +down 6 +down 6 +up 9 +down 2 +forward 8 +up 9 +down 7 +up 9 +up 8 +up 1 +forward 6 +forward 9 +down 2 +forward 8 +down 1 +up 4 +forward 4 +forward 7 +up 2 +forward 4 +down 5 +forward 3 +down 2 +down 7 +down 4 +down 2 +up 5 +down 5 +down 5 +down 4 +up 1 +forward 7 +down 6 +forward 5 +forward 1 +down 4 +up 9 +down 5 +forward 7 +forward 5 +down 6 +down 3 +down 9 +down 1 +forward 6 +up 2 +down 7 +down 3 +down 6 +up 3 +down 4 +down 4 +forward 9 +down 3 +forward 2 +down 9 +down 8 +up 4 +down 2 +forward 2 +down 5 +down 4 +down 4 +down 2 +forward 6 +down 3 +forward 1 +down 4 +forward 7 +down 5 +up 4 +down 6 +forward 8 +down 6 +forward 2 +forward 4 +forward 5 +forward 7 +forward 4 +forward 5 +down 8 +down 7 +forward 3 +forward 5 +up 7 +forward 1 +down 4 +forward 5 +forward 4 +forward 4 +down 5 +down 8 +forward 8 +down 1 +down 1 +down 5 +up 5 +forward 6 +down 6 +forward 3 +forward 4 +forward 7 +forward 4 +down 8 +forward 2 +down 4 +forward 4 +down 1 +up 2 +forward 6 +up 1 +down 7 +down 9 +forward 7 +forward 2 +up 3 +down 2 +down 9 +down 5 +up 7 +forward 1 +forward 8 +down 8 +up 3 +down 3 +forward 9 +up 4 +down 5 +up 5 +down 1 +up 8 +forward 9 +down 3 +up 6 +forward 6 +forward 1 +down 1 +forward 9 +down 8 +forward 8 +down 6 +up 9 +down 4 +up 3 +up 9 +forward 2 +down 2 +down 2 +forward 3 +down 2 +forward 5 +forward 4 +up 8 +forward 9 +up 7 +forward 2 +down 5 +down 6 +forward 8 +up 7 +forward 4 +forward 3 +up 5 +down 8 +forward 3 +up 2 +down 3 +forward 6 +down 9 +down 2 +down 6 +down 2 +forward 7 +forward 5 +forward 7 +down 8 +forward 2 +down 2 +forward 8 +up 8 +forward 4 +forward 3 +up 5 +down 3 +forward 3 +up 8 +up 7 +down 4 +down 1 +forward 2 +down 1 +up 6 +up 4 +down 3 +up 1 +forward 7 +forward 7 +forward 7 +forward 8 +down 1 +forward 5 +down 6 +forward 9 +forward 7 +forward 7 +down 4 +up 4 +down 6 +down 9 +up 4 +up 2 +up 6 +forward 4 +up 4 +up 6 +down 2 +forward 4 +down 9 +forward 9 +forward 9 +down 1 +forward 7 +down 2 +down 7 +down 8 +down 8 +down 9 +up 9 +down 5 +forward 5 +forward 7 +forward 4 +down 7 +forward 8 +forward 1 +down 8 +up 9 +down 7 +forward 9 +forward 4 +forward 8 +down 9 +forward 4 +down 3 +forward 3 +down 1 +down 1 +down 2 +up 5 +down 2 +down 1 +down 8 +forward 3 +up 2 +forward 7 +down 3 +down 8 +down 1 +forward 4 +forward 7 +down 5 +forward 6 +down 6 +down 2 +forward 6 +down 3 +up 4 +down 7 +forward 7 +up 1 +up 9 +down 1 +down 2 +down 8 +down 7 +up 1 +forward 7 +down 2 +forward 4 +forward 6 +forward 9 +down 6 +forward 2 +up 8 +down 2 +up 2 +up 5 +down 8 +up 6 +down 9 +forward 6 +down 8 +down 6 +down 1 +up 7 +up 6 +down 8 +forward 2 +up 7 +forward 5 +forward 7 +forward 7 +up 5 +forward 2 +down 9 +up 2 +up 8 +up 2 +down 3 +down 7 +forward 9 +down 3 +up 9 +forward 8 +up 8 +forward 4 +forward 8 +forward 6 +up 1 +down 3 +up 1 +down 1 +forward 2 +forward 1 +forward 4 +forward 7 +up 8 +down 9 +up 2 +down 7 +forward 4 +down 3 +forward 4 +forward 2 +down 9 +forward 8 +forward 5 +forward 3 +down 6 +forward 4 +forward 4 +forward 9 +forward 4 +up 5 +down 7 +up 6 +forward 5 +down 5 +forward 4 +down 5 +forward 7 +forward 3 +forward 5 +down 5 +forward 4 +down 5 +up 4 +down 8 +up 3 +down 3 +up 5 +forward 4 +forward 5 +down 6 +forward 6 +forward 1 +forward 8 +down 6 +down 9 +up 5 +forward 2 +forward 8 +up 6 +down 6 +forward 2 +down 8 +forward 7 +forward 7 +down 5 +forward 5 +forward 8 +forward 1 +down 4 +down 2 +down 5 +up 4 +forward 3 +forward 5 +down 4 +down 7 +down 4 +up 9 +up 6 +forward 1 +down 8 +up 8 +up 9 +forward 2 +forward 1 +down 6 +forward 6 +down 4 +forward 7 +up 2 +up 1 +forward 4 +down 1 +forward 8 +forward 3 +up 7 +up 5 +down 1 +forward 8 +forward 6 +up 6 +forward 9 +down 5 +down 9 +forward 2 +down 3 +up 1 +up 7 +down 1 +forward 8 +up 9 +down 1 +down 5 +down 7 +down 5 +down 5 +down 5 +up 9 +forward 9 +forward 7 +forward 4 +forward 6 +down 5 +down 3 +forward 9 +forward 1 +down 1 +down 8 +up 4 +down 9 +forward 9 +up 1 +down 5 +forward 8 +up 6 +forward 3 +down 6 +up 8 +down 7 +forward 3 +forward 6 +down 7 +forward 6 +forward 4 +forward 4 +down 4 +forward 6 +forward 5 +down 6 +forward 6 +down 7 +forward 6 +forward 3 +up 4 +up 2 +up 6 +down 2 +down 8 +forward 5 +forward 1 +up 4 +forward 7 +forward 9 +up 6 +down 7 +down 3 +up 5 +forward 5 +down 8 +up 1 +down 1 +down 3 +down 2 +down 1 +forward 5 +down 3 +down 5 +forward 7 +forward 9 +down 3 +forward 7 +forward 5 +forward 4 +forward 2 +forward 7 +forward 8 +forward 6 +down 8 +forward 5 +forward 6 +forward 6 +down 8 +down 2 +forward 4 +down 7 +forward 6 +down 7 +down 4 +forward 6 +up 6 +forward 4 +forward 9 +forward 2 +forward 3 +forward 1 +down 8 +down 3 +forward 4 +up 3 +forward 7 +forward 1 +down 7 +down 8 +forward 1 +up 8 +forward 8 +up 8 +down 5 +forward 6 +down 8 +down 4 +down 9 +up 1 +down 3 +forward 6 +down 6 +forward 7 +forward 3 +down 6 +down 6 +forward 4 +down 4 +down 1 +down 8 +forward 2 +forward 8 +forward 8 +down 6 +forward 9 +down 9 +down 5 +down 5 +forward 7 +down 1 +forward 1 +down 1 +down 6 +down 1 +forward 1 +up 6 +up 9 +forward 5 +down 6 +forward 8 +forward 6 +down 7 +forward 1 +forward 4 +forward 9 +forward 2 +forward 4 +down 2 +forward 1 +forward 8 +down 1 +down 1 +forward 4 +down 5 +down 3 +down 9 +down 2 +up 8 +down 7 +down 1 +down 9 +forward 2 +forward 2 +up 3 +forward 3 +down 3 +forward 5 +forward 9 +down 7 +up 7 +down 9 +forward 3 +forward 7 +down 1 +forward 8 +down 8 +forward 1 +down 8 +down 6 +forward 2 +down 3 +down 1 +down 8 +forward 3 +up 5 +down 7 +up 2 +up 8 +forward 5 +up 7 +down 6 +up 7 +down 9 +forward 5 +up 4 +forward 9 +down 5 +up 7 +down 2 +up 2 +up 7 +forward 5 +down 6 +forward 4 +down 4 +down 3 +forward 2 +up 2 +down 5 +forward 8 +down 3 +up 7 +down 1 +down 7 +forward 7 +forward 4 +forward 7 +down 2 +down 9 +down 6 +down 9 +down 2 +down 9 +down 7 +down 5 +forward 4 +up 5 +up 7 +forward 2 +forward 7 +down 3 +down 3 +forward 4 diff --git a/data/day03.txt b/data/day03.txt new file mode 100644 index 0000000..c95ddb3 --- /dev/null +++ b/data/day03.txt @@ -0,0 +1,1000 @@ +010100110111 +101001010000 +101011110010 +100100011101 +101000011000 +110011011110 +111010010100 +001111100000 +111101100001 +100010101110 +101101110101 +010010101110 +111001110100 +000101111000 +111101111100 +000010001100 +101010111101 +001010011011 +001101101101 +000000110100 +001100101011 +110110110010 +001110000011 +011001111001 +110100110011 +011000110001 +111100100010 +101011000000 +011101000111 +011111000111 +111011001110 +011111010100 +001110110001 +010110110001 +100111011011 +100110100100 +110010111000 +101111001100 +101111111001 +000001000110 +100010010110 +110111100101 +001001010101 +001110001011 +101111001011 +111011110010 +101001001100 +101010100001 +000000111101 +100000000111 +111010111101 +000110110111 +100100101111 +110101100101 +011010110010 +110100001110 +001011011010 +010101010101 +011110000100 +010000000010 +010111010111 +011010011100 +101101001011 +000111100101 +101111001000 +000100010000 +111000011111 +100001010101 +011101111110 +001111011110 +001100111111 +000011000100 +001011101010 +001011010111 +101001001110 +010101011001 +110101001011 +011110011110 +001000110010 +011101110001 +101110000000 +000001100111 +110111000011 +001001111010 +100100000000 +000000011101 +111110111011 +101001111100 +110110100010 +101011011000 +000111100010 +011000110100 +111100100100 +010010100000 +111101001011 +111001000000 +001001000001 +010010100001 +110110001100 +001101100001 +011110010110 +100111011101 +001001110110 +001001100011 +011001111010 +110110010111 +110100111010 +111110011100 +100000100111 +010001101101 +110100110101 +101111101001 +100110010000 +100011001111 +101111001010 +001110111001 +111101001101 +001010111101 +010010011010 +100101101111 +100000011110 +011111010001 +000010001101 +010100101100 +001010001100 +100111011100 +011110000000 +100000011111 +000010010100 +000001001101 +011111011111 +100101001101 +000100010110 +011011111100 +000111000011 +010100101011 +011000101111 +001001100111 +110111110100 +111101111011 +110011010101 +100111111111 +010100010000 +001111110101 +010011010001 +101000111111 +000001110100 +010010010000 +100010000101 +110111100111 +001011111101 +101100101101 +001010110100 +000100110001 +111101110110 +111110101110 +100011100110 +011001001010 +001000010111 +010001110110 +011110000010 +101010101111 +110100100100 +010001100101 +001011111110 +100111100000 +111101000010 +101101011110 +101100111100 +001110011100 +110110100101 +000110111010 +011001010111 +010001000011 +100010010111 +000110110000 +001000010101 +010011010010 +110000100010 +010000101110 +010110111000 +011101001000 +011110000111 +100110100011 +110011001001 +001110000111 +000001101110 +001000100110 +011101111000 +101100000101 +110001100000 +101000100101 +110101110101 +111000101111 +101000101001 +101000100000 +101011010110 +000010111100 +011101101000 +000110101001 +000110110110 +100111001011 +100010001101 +101111000111 +100100111000 +100100111100 +000000100010 +100110000111 +101110001100 +110010010010 +100110010011 +100100000011 +000001011111 +110100100000 +000000111100 +110110010001 +001101111110 +010011010011 +001000111110 +100010010100 +000111110101 +111111101001 +100110001110 +101011011101 +110100100010 +010100001000 +100111101001 +010111010001 +001110101000 +100111101111 +100010101011 +101111100111 +111001100110 +111100110101 +001101001111 +111011011111 +011011100110 +101111011000 +100110110001 +100010011101 +000111010101 +101101011100 +111010100100 +001101000100 +101111100101 +010110001010 +111101010000 +100111110100 +100000000011 +010001111110 +011010001110 +110100010100 +010100111100 +011001101100 +110101001001 +000011100111 +011000000000 +110001000011 +101011001101 +001010110000 +010000011010 +101110101010 +001010011111 +011101000101 +110011101010 +101110001110 +100111110000 +100100010100 +010011101000 +100110000110 +111100010011 +011101101011 +100110010100 +011011100001 +011111100110 +111100101111 +000111101001 +100101011101 +010101001110 +110011110011 +111011011100 +101001101111 +100001010111 +110010111001 +011011101011 +111110001010 +000010111110 +011010000101 +011011000111 +110000000101 +010110111011 +010110110000 +011000110110 +100101001000 +000111110001 +011110000101 +001000010000 +011011000011 +100101100011 +010000100000 +100010011000 +001011100001 +000110100010 +011000111010 +100011001011 +101111111010 +001100110101 +101100111111 +010011100111 +001110110010 +000100100110 +010100010001 +100100011011 +110110100100 +100011011001 +110001000110 +110110100000 +101110001010 +000100101010 +000000100110 +110110111110 +011000111101 +001101111000 +110001100001 +101011011100 +101100001000 +100000111011 +011110010100 +010000101111 +100011100101 +100111010100 +000011010110 +111010110011 +010101000001 +001101010100 +010001010011 +100011000101 +011100011111 +100101100010 +011111011100 +011010010000 +011011011110 +101000000100 +110111111100 +100111110011 +110100010010 +100100011111 +000100001101 +001101100010 +000001010110 +110110010010 +001110000110 +101100110101 +111000110011 +111110111111 +001000111000 +010101111010 +010011101010 +010010100100 +000101001011 +010011011010 +100110111011 +100011110111 +111001001011 +011000000111 +000101101101 +001000011100 +110111111010 +011010101001 +110000010101 +011001110010 +001001001011 +111010110110 +101010000110 +110111010011 +101110011010 +011111110101 +010100110011 +010000100111 +010100001011 +011111010110 +110011111110 +100100111101 +000100111001 +011011101111 +111010001101 +100000110101 +110000000010 +111110101011 +011000010110 +001011101100 +010001110011 +111010111010 +100010011110 +001100000011 +000101110000 +111011101111 +111000000111 +100101011100 +010111000010 +010010111010 +001111111100 +101001000000 +000010111111 +001110011000 +111110011110 +101101000110 +101110100110 +100011011100 +101100000001 +111001111011 +101010101000 +010111101110 +000010100101 +100010111000 +101111000100 +000010011101 +011000111011 +010110011011 +010101100010 +100101010111 +011010101110 +110011011011 +110100101011 +110110111100 +000101110011 +011001110101 +111000100100 +101010000001 +110111100011 +100001000110 +001101011111 +101010000101 +011111111000 +000111011110 +100001111101 +011010010010 +101010011100 +101110101100 +000001010100 +101010100110 +001100101010 +101110100100 +100100111001 +110010100111 +000100001110 +111001110101 +110000101110 +000010011000 +010001110010 +000100010011 +011110100001 +001010111010 +010010111001 +010001001011 +101101001110 +011001000110 +110110011001 +110111000000 +011010111001 +001000010001 +010110011100 +000111110010 +101110000010 +000101001100 +110010111101 +001101010000 +010010011001 +010000010111 +011110011100 +111000100011 +110101011000 +101100100010 +111111100110 +010011111110 +111110000100 +100010100100 +101110111100 +110000010010 +011010000110 +000101100101 +001011001000 +111000110001 +000010001011 +111000010000 +100000101000 +001101011101 +101000101100 +010100111010 +101100000110 +001111010011 +011111110011 +101000100010 +111000001111 +111000111010 +001110000101 +110001010011 +011101011010 +101001000101 +111111001110 +111110110101 +110001110100 +101101010101 +000100011111 +101100100110 +000111011000 +101010110001 +000100110110 +101101110111 +100011101000 +010011110101 +110101111001 +110001110011 +000100111100 +010011010110 +101100000100 +011011101000 +101110000100 +100100010110 +111011100100 +011010110000 +100111011010 +110100011010 +101111111111 +110110011100 +110011100101 +100001111100 +111101100110 +110010001010 +010001001101 +101110100001 +111101001100 +110101000100 +011001110000 +010110100011 +111111000001 +110010100000 +101100110000 +110000000000 +001101110111 +001100001000 +001101101000 +101100100011 +001001011011 +011011101110 +010011111000 +110100111000 +011001101010 +111011111010 +100011111010 +001011011110 +111101100101 +100011100100 +101110101000 +000111110110 +100111010001 +110000011100 +111111111110 +110100010101 +101001110011 +000010001110 +000010001001 +110000110000 +001001000110 +110111110000 +010101010010 +111101110001 +110101101101 +010111000111 +111010110111 +001011011011 +001001100001 +101000101110 +101100110010 +100100100100 +011110111001 +011100000110 +100110110111 +111010001110 +110111111011 +011010111000 +011101100001 +011110001111 +110101011011 +000000001111 +101000001110 +111010101110 +001100001110 +010111000101 +111100111110 +001110101110 +011101111010 +011100001111 +000000000101 +111111000100 +000110010101 +001101000010 +111001111100 +101100010100 +001011001001 +010110000010 +010001101000 +001111101111 +011011011011 +111110000001 +100111011000 +011000000110 +100111101110 +101100000000 +101011000100 +111000011101 +100001101001 +100001101000 +011110001001 +110110011011 +011100010111 +000100111000 +000110000001 +000111001100 +000111111010 +110110000001 +000010011010 +100000101001 +101110001011 +100010110101 +110011010000 +111101111111 +100101011110 +101110011111 +111111011111 +011010010110 +010100101010 +001010100001 +000000110110 +110000111101 +010101101011 +110100100001 +011110001110 +111001010011 +001000001000 +000011111110 +111000100110 +100100101000 +011011000110 +111001100011 +111100101000 +110001100010 +011000000001 +111101010010 +001011000100 +010100110110 +000001111101 +001010000011 +010010100110 +100000011101 +101011010011 +000111110000 +101001001011 +100000001000 +010000111100 +000100101011 +011101010000 +101101010010 +100010011001 +001101100101 +101010010100 +111011111001 +101000010001 +001111000000 +011001000010 +100101010110 +000100001100 +010000101000 +110001111111 +000101010111 +110100101110 +111100110001 +101011000001 +101100101110 +110000101100 +101100111110 +111000010110 +010110101110 +001010100110 +110011010010 +111001100000 +100100100001 +000011011001 +111011011110 +011110000011 +101000100001 +101010010001 +101001100001 +100011001010 +100000000110 +010000100001 +001011011001 +110111010100 +111001000111 +111111110010 +101010100101 +100110001011 +010110011001 +110001111110 +100100000111 +110001110111 +101110010101 +010010111000 +000000011001 +101110000011 +100001010000 +001100001011 +111111001100 +111010010010 +010011100001 +100001111000 +000010000110 +010100011100 +101111101010 +100110010101 +101001101001 +100110101001 +001001011100 +001100011101 +001100011001 +000100100100 +100011010100 +000100001011 +111101100011 +011010001011 +111000101101 +101000010000 +010110001111 +111100010110 +000111111101 +100100111011 +101011000010 +011001100010 +101111011100 +101001110101 +101111101100 +110101001111 +111101100000 +101110011011 +100101110000 +001100111110 +010010101010 +001100100100 +001010101100 +001101100111 +110010011100 +010000001001 +011011110001 +100101110001 +101111100100 +110101101000 +110000100000 +101010011101 +111000010011 +100001010100 +000101101010 +101111001001 +000110101101 +101011010111 +000001001100 +100100111110 +000010111011 +000100000100 +100100001110 +011010000001 +010101110011 +111101101101 +101110101111 +100010100011 +110001011101 +110001011011 +100011110011 +111000011011 +110101110010 +000110010100 +101000001010 +011001011010 +111000001101 +101001101101 +111001000001 +000100000110 +110000000110 +010011001110 +011101000001 +010000101101 +010011011001 +010101001111 +011110110001 +100111110001 +101111011101 +111001000010 +111111111000 +001011101011 +001010100111 +111110111101 +011111011101 +000100111101 +010010000101 +001111101011 +110010100100 +110001011001 +010111111000 +100100101110 +110111011101 +100100000110 +111111011011 +101101111001 +111011010001 +000000011100 +011011101001 +100010111101 +110111000110 +001100110010 +111100111100 +111111000010 +100111010111 +100011001100 +110101011100 +001111001100 +101010000010 +110011010111 +110011010001 +001110110110 +000011011100 +001011001011 +100000000001 +110000100011 +011011110011 +100101100100 +011100100011 +100001110111 +011101001001 +011101100011 +011001001101 +011001000100 +010111001111 +100001001111 +101001100000 +110010001011 +010101011100 +011110110010 +111010000110 +000010100100 +110111000111 +001011010110 +010001000100 +110100010111 +010101100110 +010011101111 +101000001000 +011011001011 +100001000001 +101111110011 +100110110011 +100011100000 +101101000010 +000101011000 +111101110010 +110111010110 +101110000110 +110010110001 +000001101111 +110101101111 +000010111010 +100010010001 +111010011001 +011110011011 +000110101010 +010100001111 +010111011000 +000011110100 +010001010101 +110111011001 +010001111001 +111010111111 +010010010001 +010001100011 +111110001001 +101000010111 +001101110101 +111011000000 +001100110100 +000110001001 +110111101001 +010100110000 +101110111110 +100000000010 +110011010011 +010101100101 +110100110001 +100010100010 +101111111000 +111111100100 +011100001101 +000000100001 +100110100110 +010100100011 +000000001000 +101010110100 +100010001111 +111000001011 +010101000111 +001111110001 +000000111011 +111111101100 +001110110000 +011110111011 +001110100011 +100110000010 +010110110011 +001001101110 +110011101110 +111001100010 +111100010000 +000001010111 +001110001100 +110000101000 +100101111010 +001011001110 +100111101100 +111001101100 +110111110010 +101000110100 +100011100011 +100000100101 +100001111011 +011110101001 +000111000100 +010111100001 +111111010001 +100100001100 +111111010111 +001101111101 +000110001101 +010110000001 +111011010110 +011110110110 +011111001001 +001101011010 +010101110101 +110001100100 +101101011101 +011011010110 +001011001101 +101110110101 +001101010010 +101010001101 +100111000000 +110110101100 +001011111000 +000100111011 +000111110111 +101000111100 +110000110011 +000001000011 +000111111110 +001010010010 +100000111001 +010101111100 +001100010100 +010101110111 +110101010010 +000001001111 +101101111100 +011110111101 +111001010001 +000100101101 +011100100100 +110101000111 +011111100011 +110001001101 +100001100111 +101101100111 +000100110000 +101001100010 +001101101111 +100011000100 +011100101111 +011001100100 +011010011110 +010011001010 +011110101000 +111101111010 +110001010100 +000110010001 +001111011011 +110000111011 +000001111001 +010011001100 +100110101011 +111011001011 +001100110011 +010010011101 +100011110000 +110011110111 diff --git a/data/day04.txt b/data/day04.txt new file mode 100644 index 0000000..1732155 --- /dev/null +++ b/data/day04.txt @@ -0,0 +1,602 @@ +79,9,13,43,53,51,40,47,56,27,0,14,33,60,61,36,72,48,83,42,10,86,41,75,16,80,15,93,95,45,68,96,84,11,85,63,18,31,35,74,71,91,39,88,55,6,21,12,58,29,69,37,44,98,89,78,17,64,59,76,54,30,65,82,28,50,32,77,66,24,1,70,92,23,8,49,38,73,94,26,22,34,97,25,87,19,57,7,2,3,46,67,90,62,20,5,52,99,81,4 + + 7 42 22 92 60 + 8 88 99 13 12 +16 62 86 24 77 +20 57 19 67 46 +36 83 54 63 82 + + 7 86 50 78 16 +83 45 67 94 58 +21 98 99 85 43 +71 19 31 22 4 +70 51 34 11 61 + + 4 95 84 51 36 +43 40 37 23 85 +14 90 8 59 99 + 0 88 68 93 81 +25 6 55 19 48 + +15 39 78 6 13 +71 3 81 95 62 +22 46 67 72 40 +89 69 0 37 41 +68 79 58 16 42 + +63 50 77 34 12 +29 42 20 17 47 +80 10 30 72 66 + 5 89 64 25 21 +91 88 45 44 37 + +78 89 32 26 56 + 8 40 54 25 49 +36 30 21 23 3 +12 58 2 29 7 +33 99 15 84 44 + +96 68 56 49 43 +55 22 16 91 32 + 2 17 61 12 37 +25 72 1 31 88 +57 34 42 8 71 + +18 39 86 94 60 +96 85 64 51 28 +48 14 23 36 35 + 6 84 99 90 81 +43 41 74 68 32 + + 9 58 60 7 61 +96 33 67 0 19 +77 2 14 99 79 +13 36 90 95 29 +86 91 49 72 20 + + 3 79 24 37 97 +86 10 77 31 32 +48 89 35 73 94 +65 21 23 82 36 +26 51 69 12 99 + +66 28 73 6 32 +11 30 35 42 76 +33 40 25 89 52 +46 88 55 50 64 +86 71 75 36 80 + +36 34 35 68 49 +61 3 24 84 71 +47 42 91 39 80 +25 51 38 59 62 +90 21 28 52 8 + +19 93 45 40 55 +41 11 79 9 70 +16 87 32 22 94 +12 4 72 60 0 +36 77 78 33 83 + +43 44 7 39 96 +30 75 62 63 8 +19 12 40 68 45 +50 27 3 52 57 +85 67 33 16 36 + +33 16 66 9 7 +93 34 52 31 13 + 3 49 94 39 37 +76 59 78 51 83 +40 47 22 42 73 + +44 60 52 7 38 +36 53 79 11 93 +46 65 40 68 58 +67 73 99 31 87 +22 49 33 59 75 + +83 61 17 60 86 +38 33 96 75 22 +19 42 76 55 97 +93 94 29 50 88 +34 16 91 3 40 + +92 48 40 69 98 +12 46 37 25 78 +43 11 34 22 32 + 0 18 17 86 1 +89 26 65 76 96 + +66 48 43 99 98 +68 2 51 87 38 +72 77 47 20 97 +36 18 80 10 96 +88 53 30 65 91 + +10 3 65 38 56 +40 14 64 45 23 +42 88 31 85 17 +19 83 46 51 5 +35 47 28 0 50 + +75 53 9 1 29 +92 94 41 82 38 +39 70 80 11 56 +64 28 27 22 60 +66 97 48 65 71 + +91 17 37 49 83 +66 1 79 87 60 +78 46 32 30 57 +50 56 23 6 24 +13 89 42 70 77 + +59 28 58 56 73 +22 4 53 91 23 + 8 41 36 52 80 +30 68 34 70 63 +90 3 61 98 1 + +50 76 99 74 81 +57 25 59 69 96 +26 15 43 64 44 +73 18 61 91 23 +87 13 46 90 60 + +63 1 77 93 47 +12 90 56 46 0 +57 73 79 87 43 +32 13 53 37 14 +22 3 23 78 69 + +49 55 93 57 2 +67 12 81 70 79 +60 44 94 23 54 +48 92 99 1 82 +76 36 62 32 98 + +94 15 97 55 17 +39 40 84 92 49 +72 45 52 95 96 +61 58 88 23 78 +80 48 37 35 66 + +86 88 20 12 7 +72 52 95 34 11 + 1 47 83 63 18 +25 35 76 15 92 +96 64 82 54 31 + +61 83 5 24 36 +88 80 48 26 85 + 2 42 70 98 45 +27 6 65 94 15 +71 73 3 47 38 + +85 49 19 41 53 + 4 99 43 93 60 +34 28 78 23 50 +54 79 35 25 94 +27 63 16 51 39 + +89 49 13 1 32 +85 87 8 38 64 +14 5 63 16 27 +23 76 43 59 94 +78 80 83 15 54 + +26 66 73 74 64 + 9 81 62 75 25 +46 13 55 43 1 + 0 2 10 58 34 +76 11 82 42 16 + +68 93 18 99 84 +96 25 44 69 97 +24 80 74 27 6 +33 14 54 17 28 +10 47 2 63 59 + +12 56 29 63 0 +30 94 5 19 18 + 9 13 24 72 60 +91 46 49 47 51 + 8 54 26 7 21 + +36 16 26 97 56 +22 86 58 94 89 +66 84 50 82 53 +87 29 45 95 33 +49 61 46 2 52 + +87 35 65 27 69 +12 98 94 18 26 +22 79 1 74 84 + 0 72 29 70 19 +96 28 95 25 77 + +79 95 3 91 44 +57 61 77 80 29 + 6 49 37 62 16 +71 73 21 52 48 +92 17 32 2 43 + +29 78 6 94 47 +83 63 68 16 56 +38 85 92 60 35 +81 57 75 79 7 +69 22 93 49 4 + +93 21 2 17 22 +76 70 3 80 51 + 7 88 14 0 61 +18 16 29 86 74 +65 47 8 45 46 + + 1 20 23 79 14 +27 76 3 90 85 +88 35 7 10 92 +67 97 59 41 8 +56 57 65 45 81 + +57 14 41 89 55 +47 75 90 23 94 +26 3 40 17 97 +65 44 12 4 30 +16 81 64 79 13 + +63 3 22 7 10 +36 76 14 77 38 +48 27 40 9 60 +31 56 75 74 78 +86 64 71 90 67 + +52 28 9 19 66 +15 86 61 2 89 +93 3 44 46 91 +11 7 5 32 72 +60 10 92 29 88 + +88 86 59 8 68 +10 48 12 61 21 +54 97 45 55 11 +67 9 22 64 5 + 7 34 32 69 44 + +69 45 14 6 3 +16 32 33 26 73 +79 30 5 1 72 +64 9 60 59 22 +23 56 37 41 2 + +25 65 60 87 39 +41 53 24 91 93 +43 59 26 78 96 +16 33 88 18 7 +74 63 34 30 20 + +38 23 97 73 35 +51 31 90 98 80 +56 44 60 8 7 +71 10 87 0 99 +64 30 20 22 18 + +61 57 31 69 74 +94 0 96 90 59 +21 3 72 81 4 +43 41 58 45 2 +62 7 65 71 19 + +60 20 19 48 11 + 2 68 58 91 76 +57 12 52 29 13 +42 53 38 64 81 +26 70 16 32 54 + +15 93 68 77 49 +80 64 45 10 94 +30 62 5 66 40 +46 51 52 22 56 + 7 90 14 6 47 + +75 87 31 24 11 +47 61 14 69 50 +33 44 12 26 58 +91 10 35 5 29 +99 81 16 92 53 + +50 37 47 13 83 +63 96 30 36 86 +72 66 93 73 74 +98 60 3 84 28 +52 14 70 21 55 + +65 19 32 28 92 + 9 8 51 0 98 +56 26 53 13 86 + 2 70 16 52 4 +69 10 97 38 79 + +34 48 46 66 44 +59 19 18 20 13 +99 26 62 16 2 +91 25 11 84 4 +52 31 70 71 14 + +92 1 49 65 77 +85 8 27 87 84 +41 73 81 15 58 +14 93 33 17 52 +35 90 37 38 0 + +11 46 2 20 31 +97 50 12 79 96 +89 77 57 61 40 +65 75 4 33 17 +66 81 47 83 98 + +34 57 44 0 99 +32 25 17 48 90 +27 73 63 61 81 +50 22 4 28 41 + 6 24 70 13 45 + +96 18 36 16 10 +37 11 50 56 88 +80 40 75 90 12 +19 43 33 61 58 +30 59 99 69 98 + +31 77 98 90 51 +34 10 80 73 97 + 2 37 33 17 0 +59 78 91 87 45 +86 7 44 64 1 + +26 49 66 13 16 +95 89 52 88 55 +77 60 3 93 73 +64 45 98 38 42 +34 86 1 71 68 + +59 71 24 18 99 +23 28 88 54 26 +90 37 6 76 4 +41 64 27 89 67 +29 95 82 83 60 + + 8 0 90 41 61 +29 66 2 35 13 +12 9 5 36 93 +67 94 82 77 37 +30 42 32 80 78 + +53 6 23 57 38 + 8 25 76 18 15 +19 17 20 48 72 +26 54 64 7 40 +50 94 82 67 99 + +93 5 67 10 4 +77 80 97 14 2 +34 9 61 24 21 +63 89 28 76 62 +54 29 38 68 69 + +72 48 66 89 22 +63 39 71 59 68 + 2 95 94 21 92 + 6 28 44 62 15 +35 78 80 11 91 + +82 8 59 66 25 +84 87 95 60 12 + 9 52 83 28 49 +23 34 85 94 96 +43 41 39 2 73 + +81 56 55 29 70 +94 96 7 90 2 +95 45 28 75 12 +48 83 65 22 91 +68 98 5 41 73 + +36 22 45 14 74 +35 60 54 15 30 +86 49 27 82 4 +87 2 52 50 21 +39 62 40 1 19 + +99 7 85 24 65 +26 17 36 35 1 + 2 62 38 45 48 +72 68 32 59 11 +28 53 64 21 76 + +61 63 94 50 55 +34 42 39 66 37 +22 72 18 89 12 +16 23 4 0 41 +75 64 3 44 5 + +87 82 53 5 19 +26 54 36 1 38 +28 30 48 97 95 +34 91 99 23 8 +46 35 33 29 66 + +76 89 94 77 58 +24 31 1 40 25 +44 71 42 61 8 +16 41 28 33 50 + 6 85 66 43 51 + +91 28 70 89 43 + 1 76 26 90 45 +24 2 6 82 23 +77 68 16 51 81 +58 86 52 29 18 + +95 0 25 19 91 +10 65 30 72 42 +41 8 77 58 23 +94 60 34 11 67 +24 1 64 78 44 + +40 76 21 37 15 +44 26 80 77 88 +25 72 38 34 9 +75 81 43 86 68 +59 30 87 61 73 + + 0 63 62 82 93 +70 61 14 56 3 +54 43 92 78 27 +26 7 99 77 73 +21 30 44 50 40 + + 2 60 45 17 73 +75 67 68 20 18 +16 30 24 37 12 +79 50 8 65 19 +85 95 54 90 47 + +69 68 54 66 17 +39 19 20 33 44 +12 27 50 60 36 +53 81 8 7 87 +82 97 18 4 74 + +58 63 8 42 28 +70 95 39 54 61 +30 56 79 37 82 +15 32 83 27 45 +52 13 90 97 62 + +11 50 56 66 84 +96 94 57 17 49 +68 58 90 34 59 +81 36 91 8 45 +62 35 6 93 48 + +82 89 54 87 80 +94 6 45 53 62 +31 34 58 85 77 +24 25 91 99 26 +41 0 59 37 23 + +93 41 53 31 87 + 7 22 39 86 73 +71 34 60 57 6 +52 64 48 99 90 +66 76 62 45 40 + + 5 84 85 67 26 +11 1 0 95 21 +48 59 43 94 62 +22 74 40 49 89 +51 20 90 78 96 + + 0 45 43 79 25 +41 10 95 86 80 + 4 60 82 33 75 +44 46 38 17 76 +22 58 27 73 66 + +54 50 7 92 79 +11 43 38 94 5 +63 80 33 58 4 +12 91 28 70 97 +26 99 41 52 90 + +23 26 95 8 17 +73 77 61 89 82 +78 80 64 19 96 +81 92 47 44 59 +54 24 63 74 32 + +86 85 37 80 45 +47 44 92 29 49 +67 48 95 51 88 +36 8 56 16 30 + 0 97 84 24 13 + +81 61 42 87 92 +30 75 17 67 2 +83 44 96 52 1 +37 78 31 15 19 +40 9 72 7 28 + +10 85 17 38 22 +46 35 90 12 27 +76 42 7 2 30 +55 57 60 9 49 +79 73 97 1 21 + +52 36 11 82 91 +22 7 46 21 12 +62 42 66 68 10 +31 18 76 20 84 +28 79 61 39 86 + +73 99 34 54 45 +43 28 18 76 40 +57 58 63 9 11 +89 65 2 12 90 +38 97 49 15 27 + +28 84 24 17 49 +33 69 75 53 92 +81 48 89 19 34 +59 1 18 72 79 + 6 22 2 86 85 + +72 78 30 40 19 +54 16 25 81 28 +41 99 7 79 14 +83 76 29 8 91 + 5 60 11 51 37 + +77 78 34 59 29 +62 69 54 8 97 +80 53 25 66 85 +81 90 31 51 52 +63 41 57 68 18 + +43 62 11 41 7 +37 44 34 10 51 +67 36 61 77 70 +59 1 25 42 88 +29 71 60 15 24 + +30 65 57 35 84 +34 33 72 73 28 +38 51 4 52 14 +58 59 85 87 39 +88 81 11 93 71 + +19 5 23 71 75 +70 9 57 69 14 +49 29 22 28 10 +42 48 63 73 6 +79 18 4 39 88 + +16 27 31 88 86 +29 40 65 68 39 +15 95 93 69 22 +66 48 18 84 11 + 7 51 92 96 99 + + 0 69 51 12 82 + 4 81 62 2 49 +27 66 95 83 70 +94 97 99 63 19 +87 75 77 73 44 + +82 83 75 95 53 +46 47 31 14 64 +71 70 11 51 87 + 7 16 63 38 29 +89 13 33 41 0 + diff --git a/data/day05.txt b/data/day05.txt new file mode 100644 index 0000000..302b42d --- /dev/null +++ b/data/day05.txt @@ -0,0 +1,500 @@ +503,977 -> 843,637 +437,518 -> 437,225 +269,250 -> 625,250 +846,751 -> 646,751 +18,731 -> 402,731 +749,923 -> 749,986 +557,758 -> 557,797 +589,54 -> 589,616 +20,136 -> 819,935 +123,983 -> 12,983 +802,624 -> 709,624 +600,458 -> 128,458 +209,703 -> 459,703 +944,415 -> 742,415 +270,718 -> 656,332 +168,339 -> 283,339 +558,172 -> 695,309 +519,524 -> 480,524 +456,400 -> 134,722 +355,961 -> 352,961 +757,158 -> 49,866 +300,254 -> 618,254 +554,275 -> 859,275 +47,612 -> 622,37 +696,885 -> 696,856 +342,803 -> 342,429 +830,649 -> 254,73 +54,921 -> 958,17 +72,691 -> 818,691 +80,72 -> 80,546 +762,649 -> 762,371 +117,39 -> 605,39 +778,605 -> 610,773 +159,25 -> 67,25 +462,825 -> 766,825 +295,167 -> 357,167 +741,379 -> 11,379 +942,230 -> 942,26 +802,672 -> 802,311 +672,759 -> 330,759 +419,97 -> 848,526 +244,262 -> 938,956 +281,988 -> 281,879 +471,451 -> 471,907 +238,387 -> 238,665 +907,129 -> 907,368 +119,734 -> 155,770 +306,119 -> 306,568 +166,175 -> 166,277 +591,32 -> 591,855 +779,324 -> 916,324 +785,245 -> 884,245 +504,884 -> 781,884 +405,967 -> 664,967 +17,16 -> 989,988 +429,944 -> 729,944 +15,31 -> 918,934 +22,963 -> 971,14 +199,280 -> 481,562 +792,550 -> 792,485 +215,141 -> 215,58 +511,560 -> 511,224 +940,134 -> 166,908 +666,212 -> 666,193 +881,514 -> 117,514 +271,416 -> 614,73 +354,784 -> 354,41 +866,152 -> 866,969 +75,924 -> 868,131 +944,507 -> 944,556 +726,315 -> 624,315 +195,122 -> 593,520 +463,311 -> 946,794 +734,698 -> 734,953 +520,98 -> 915,98 +125,139 -> 616,139 +570,841 -> 206,477 +430,442 -> 430,893 +653,59 -> 653,155 +906,883 -> 314,291 +932,157 -> 100,989 +526,244 -> 362,244 +28,837 -> 792,73 +386,426 -> 386,673 +121,66 -> 203,66 +747,121 -> 392,476 +590,989 -> 230,989 +795,83 -> 795,398 +741,522 -> 741,677 +142,166 -> 470,166 +13,645 -> 493,165 +418,567 -> 418,970 +94,877 -> 782,189 +603,426 -> 603,916 +364,304 -> 191,304 +754,146 -> 754,507 +294,678 -> 438,678 +641,633 -> 217,633 +31,133 -> 831,933 +250,976 -> 250,355 +274,558 -> 899,558 +818,507 -> 693,507 +414,465 -> 924,975 +116,729 -> 116,951 +960,843 -> 149,32 +724,127 -> 498,353 +552,43 -> 964,43 +224,853 -> 224,363 +768,214 -> 768,88 +518,414 -> 518,119 +917,824 -> 948,824 +37,81 -> 882,926 +333,390 -> 967,390 +175,453 -> 388,240 +960,395 -> 960,697 +468,37 -> 468,275 +745,318 -> 425,318 +676,425 -> 903,198 +531,663 -> 86,663 +557,834 -> 557,967 +650,931 -> 383,664 +906,197 -> 906,567 +675,637 -> 326,288 +227,977 -> 51,977 +347,524 -> 793,970 +778,850 -> 778,342 +343,155 -> 343,739 +970,167 -> 161,976 +800,127 -> 800,667 +531,533 -> 193,533 +222,776 -> 222,873 +922,29 -> 13,938 +452,808 -> 452,793 +926,142 -> 926,198 +940,93 -> 55,978 +335,51 -> 938,654 +789,352 -> 307,352 +457,419 -> 469,419 +463,12 -> 463,132 +881,95 -> 431,95 +531,57 -> 531,40 +179,308 -> 516,308 +767,907 -> 629,907 +362,457 -> 362,262 +774,896 -> 154,276 +549,243 -> 247,243 +130,933 -> 202,933 +266,639 -> 189,716 +209,717 -> 209,844 +625,296 -> 625,575 +739,785 -> 873,785 +713,857 -> 94,238 +97,28 -> 937,868 +876,734 -> 344,202 +180,608 -> 557,608 +669,566 -> 669,389 +112,779 -> 267,624 +325,669 -> 449,669 +102,915 -> 357,915 +882,839 -> 882,512 +330,699 -> 330,858 +773,851 -> 773,429 +171,187 -> 450,187 +166,726 -> 166,74 +15,134 -> 750,869 +245,126 -> 245,518 +919,484 -> 919,602 +918,900 -> 918,372 +736,515 -> 708,487 +790,777 -> 790,303 +479,541 -> 381,541 +85,243 -> 317,475 +619,441 -> 619,823 +688,658 -> 688,404 +381,475 -> 891,985 +461,529 -> 145,213 +833,885 -> 404,885 +315,502 -> 315,770 +450,934 -> 740,934 +634,334 -> 634,202 +785,866 -> 785,913 +976,627 -> 976,102 +65,491 -> 570,491 +974,257 -> 503,728 +662,938 -> 720,938 +232,472 -> 215,472 +805,504 -> 805,476 +99,909 -> 99,399 +64,947 -> 926,85 +123,645 -> 153,615 +908,10 -> 92,826 +49,174 -> 819,944 +115,136 -> 863,884 +695,91 -> 695,612 +715,527 -> 550,362 +914,125 -> 914,86 +14,980 -> 981,13 +14,308 -> 14,355 +356,895 -> 766,485 +989,10 -> 10,989 +833,292 -> 833,184 +786,785 -> 733,785 +824,53 -> 116,53 +349,547 -> 349,66 +594,189 -> 636,189 +359,399 -> 769,809 +600,751 -> 600,46 +520,236 -> 228,528 +978,610 -> 978,832 +689,575 -> 258,575 +664,734 -> 850,920 +245,672 -> 245,878 +337,509 -> 578,509 +893,613 -> 380,613 +875,608 -> 875,444 +264,701 -> 946,19 +358,267 -> 358,648 +926,61 -> 926,378 +46,885 -> 190,885 +662,131 -> 82,131 +301,53 -> 301,533 +21,839 -> 915,839 +92,174 -> 113,174 +145,680 -> 294,680 +268,773 -> 268,193 +698,893 -> 809,893 +300,512 -> 807,512 +749,408 -> 279,408 +439,214 -> 439,172 +622,740 -> 339,740 +400,253 -> 400,486 +859,686 -> 387,214 +974,485 -> 974,486 +70,987 -> 951,106 +630,449 -> 630,544 +796,212 -> 608,24 +835,959 -> 835,725 +779,755 -> 96,72 +582,778 -> 440,636 +350,479 -> 827,479 +924,40 -> 605,40 +918,832 -> 918,617 +669,590 -> 191,112 +748,214 -> 748,462 +350,703 -> 163,703 +393,791 -> 393,240 +569,857 -> 569,939 +412,375 -> 412,603 +488,975 -> 22,509 +100,372 -> 100,685 +170,669 -> 212,669 +546,734 -> 546,274 +492,172 -> 492,354 +36,134 -> 801,899 +501,773 -> 582,773 +287,694 -> 287,939 +381,988 -> 367,988 +609,360 -> 609,478 +310,158 -> 25,443 +409,716 -> 409,27 +655,959 -> 383,687 +16,697 -> 611,102 +184,290 -> 930,290 +580,79 -> 598,97 +950,65 -> 777,65 +144,288 -> 821,965 +986,685 -> 986,412 +549,702 -> 549,369 +841,148 -> 259,730 +958,31 -> 958,810 +12,908 -> 856,64 +264,793 -> 264,960 +249,115 -> 249,935 +707,714 -> 108,714 +527,192 -> 982,647 +703,883 -> 703,580 +535,346 -> 543,346 +851,185 -> 83,953 +984,586 -> 984,681 +913,574 -> 350,11 +317,221 -> 405,221 +398,673 -> 160,435 +953,264 -> 547,670 +790,115 -> 538,367 +943,236 -> 295,884 +571,746 -> 571,231 +286,318 -> 131,318 +143,251 -> 436,544 +838,435 -> 793,435 +732,782 -> 732,407 +244,287 -> 244,335 +376,29 -> 75,29 +604,732 -> 738,732 +730,30 -> 533,30 +891,474 -> 891,25 +786,140 -> 368,140 +951,583 -> 828,460 +665,897 -> 44,276 +217,905 -> 742,905 +745,583 -> 256,583 +923,22 -> 23,922 +763,336 -> 943,516 +755,678 -> 755,101 +35,790 -> 706,119 +841,658 -> 841,634 +986,66 -> 986,412 +740,69 -> 740,878 +852,733 -> 453,733 +657,273 -> 215,715 +239,824 -> 239,79 +340,482 -> 340,238 +969,834 -> 303,168 +238,718 -> 931,718 +603,63 -> 603,363 +596,135 -> 367,135 +184,474 -> 184,612 +39,60 -> 920,941 +456,103 -> 894,541 +929,35 -> 738,35 +199,528 -> 707,528 +649,251 -> 134,766 +969,209 -> 719,459 +568,45 -> 306,307 +259,703 -> 426,536 +964,737 -> 342,115 +101,890 -> 604,890 +57,223 -> 812,978 +939,99 -> 167,871 +920,438 -> 920,247 +185,384 -> 643,384 +489,783 -> 121,415 +837,938 -> 250,351 +63,920 -> 945,38 +475,45 -> 510,10 +881,872 -> 141,132 +24,238 -> 24,468 +409,523 -> 409,706 +200,309 -> 631,740 +586,385 -> 900,385 +219,250 -> 219,327 +854,526 -> 854,725 +946,343 -> 946,267 +847,746 -> 717,616 +172,203 -> 346,29 +693,652 -> 545,652 +824,115 -> 192,115 +843,908 -> 333,908 +769,784 -> 662,784 +490,535 -> 490,524 +545,699 -> 11,699 +792,544 -> 287,39 +895,712 -> 895,41 +887,350 -> 624,350 +614,475 -> 924,165 +93,961 -> 265,789 +57,71 -> 852,866 +282,738 -> 844,176 +898,251 -> 898,669 +949,872 -> 866,872 +765,408 -> 545,408 +691,503 -> 235,959 +198,491 -> 227,462 +973,40 -> 56,957 +802,402 -> 752,402 +911,60 -> 911,932 +545,244 -> 110,244 +461,26 -> 461,18 +916,308 -> 161,308 +368,476 -> 515,476 +656,916 -> 409,669 +118,950 -> 118,135 +963,294 -> 365,294 +855,713 -> 323,713 +849,930 -> 48,129 +36,337 -> 588,889 +941,394 -> 941,697 +685,170 -> 323,170 +423,683 -> 423,152 +81,522 -> 121,522 +357,598 -> 159,796 +211,192 -> 211,50 +615,607 -> 270,952 +687,384 -> 687,128 +81,896 -> 925,52 +591,988 -> 20,988 +950,740 -> 605,740 +818,772 -> 623,772 +790,405 -> 790,775 +483,34 -> 718,34 +309,190 -> 309,894 +391,83 -> 483,83 +721,201 -> 721,843 +990,464 -> 990,171 +479,707 -> 688,707 +23,775 -> 510,775 +783,863 -> 867,779 +594,151 -> 208,151 +416,936 -> 416,720 +981,972 -> 120,111 +773,476 -> 138,476 +604,900 -> 604,395 +824,437 -> 531,437 +621,948 -> 32,948 +802,26 -> 887,26 +836,335 -> 836,784 +134,585 -> 634,85 +649,87 -> 649,263 +756,804 -> 638,804 +982,26 -> 21,987 +134,976 -> 914,196 +612,539 -> 612,141 +977,11 -> 22,966 +40,80 -> 40,644 +725,562 -> 604,562 +377,649 -> 352,624 +418,146 -> 130,434 +848,927 -> 848,970 +243,350 -> 342,449 +46,10 -> 46,112 +800,654 -> 272,126 +910,633 -> 910,426 +296,619 -> 882,33 +75,922 -> 497,500 +267,616 -> 864,616 +884,694 -> 624,694 +13,656 -> 831,656 +389,390 -> 389,316 +26,24 -> 987,985 +193,557 -> 589,161 +18,13 -> 978,973 +43,951 -> 614,951 +581,398 -> 885,94 +943,525 -> 279,525 +787,83 -> 137,83 +729,271 -> 729,18 +100,383 -> 100,690 +337,266 -> 102,266 +106,640 -> 298,832 +83,65 -> 543,65 +102,872 -> 663,872 +921,765 -> 921,782 +764,392 -> 471,685 +325,987 -> 802,987 +983,43 -> 983,852 +833,475 -> 416,58 +25,270 -> 686,931 +145,433 -> 151,433 +132,329 -> 973,329 +611,494 -> 98,494 +401,633 -> 866,168 +532,126 -> 532,448 +988,894 -> 361,894 +249,177 -> 249,133 +832,71 -> 832,245 +263,70 -> 263,152 +548,333 -> 548,748 +98,570 -> 438,910 +954,41 -> 41,954 +336,199 -> 336,843 +117,974 -> 845,246 +831,456 -> 890,515 +690,114 -> 804,114 +94,108 -> 94,672 +289,104 -> 107,286 +248,580 -> 229,580 +11,284 -> 885,284 +401,802 -> 186,802 +359,245 -> 558,46 +310,85 -> 310,714 +920,577 -> 979,577 +492,236 -> 276,452 +650,961 -> 49,360 +118,705 -> 118,794 +970,24 -> 80,914 +943,454 -> 943,30 +875,935 -> 716,776 +241,717 -> 392,717 +694,345 -> 620,345 +533,435 -> 467,435 +827,166 -> 374,166 +633,849 -> 884,849 +414,640 -> 875,179 +240,790 -> 709,321 +48,222 -> 104,222 +889,897 -> 44,52 +980,438 -> 455,963 +469,875 -> 469,706 +572,869 -> 250,547 +834,11 -> 834,188 +395,966 -> 395,547 +12,681 -> 567,681 +268,957 -> 947,957 +450,478 -> 893,921 +418,707 -> 602,891 +404,303 -> 218,489 +657,232 -> 657,945 +518,392 -> 518,621 +268,959 -> 896,331 +886,616 -> 841,616 +375,503 -> 375,387 diff --git a/data/day06.txt b/data/day06.txt new file mode 100644 index 0000000..52d28e3 --- /dev/null +++ b/data/day06.txt @@ -0,0 +1 @@ +3,5,3,5,1,3,1,1,5,5,1,1,1,2,2,2,3,1,1,5,1,1,5,5,3,2,2,5,4,4,1,5,1,4,4,5,2,4,1,1,5,3,1,1,4,1,1,1,1,4,1,1,1,1,2,1,1,4,1,1,1,2,3,5,5,1,1,3,1,4,1,3,4,5,1,4,5,1,1,4,1,3,1,5,1,2,1,1,2,1,4,1,1,1,4,4,3,1,1,1,1,1,4,1,4,5,2,1,4,5,4,1,1,1,2,2,1,4,4,1,1,4,1,1,1,2,3,4,2,4,1,1,5,4,2,1,5,1,1,5,1,2,1,1,1,5,5,2,1,4,3,1,2,2,4,1,2,1,1,5,1,3,2,4,3,1,4,3,1,2,1,1,1,1,1,4,3,3,1,3,1,1,5,1,1,1,1,3,3,1,3,5,1,5,5,2,1,2,1,4,2,3,4,1,4,2,4,2,5,3,4,3,5,1,2,1,1,4,1,3,5,1,4,1,2,4,3,1,5,1,1,2,2,4,2,3,1,1,1,5,2,1,4,1,1,1,4,1,3,3,2,4,1,4,2,5,1,5,2,1,4,1,3,1,2,5,5,4,1,2,3,3,2,2,1,3,3,1,4,4,1,1,4,1,1,5,1,2,4,2,1,4,1,1,4,3,5,1,2,1 diff --git a/data/day07.txt b/data/day07.txt new file mode 100644 index 0000000..9abdb6a --- /dev/null +++ b/data/day07.txt @@ -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,106,684,36,657,427,156,197,56,205,1104,170,307,291,88,330,12,24,1128,440,1099,1523,936,198,266,1257,874,196,912,335,46,320,666,132,1035,145,877,1484,222,690,479,386,59,101,765,506,27,250,478,609,807,1566,317,138,1390,245,1178,211,64,714,510,256,430,371,182,464,398,1749,57,1023,4,891,1177,459,171,236,1,34,106,744,1766,51,8,256,571,290,462,852,56,372,612,2,688,33,452,1182,739,696,123,469,583,77,40,191,416,1470,1153,459,848,228,677,1203,8,70,1302,207,21,913,9,855,47,81,188,354,700,1169,1199,620,197,41,138,1825,466,387,1124,595,457,1231,3,61,292,120,98,846,893,97,142,673,429,797,139,193,83,586,1726,201,365,415,63,525,277,335,1347,304,995,378,1884,185,331,69,351,134,972,262,208,21,108,1385,143,264,287,625,657,90,345,578,569,280,604,335,453,773,39,79,13,431,245,760,433,167,608,409,655,796,611,45,1167,312,439,1106,420,365,431,169,147,567,20,401,699,356,56,35,1233,975,105,29,787,618,404,179,469,284,304,140,50,283,774,957,455,1651,1,308,936,502,313,218,62,51,1,255,224,64,299,546,4,23,100,868,641,331,1810,399,272,105,156,1031,894,783,775,1823,211,209,1375,64,897,1083,367,14,516,311,86,50,716,1671,515,755,83,490,386,1015,359,620,192,921,1257,606,853,1196,1304,92,1442,89,33,689,832,139,308,140,424,300,97,67,1102,138,1166,753,53,274,236,245,567,205,368,1108,253,893,151,211,736,194,779,344,152,533,869,849,259,794,93,1092,301,51,350,909,499,349,242,1014,55,813,613,75,211,1039,1310,626,1440,381,904,25,1625,491,54,584,465,79,1146,60,476,476,111,1350,721,283,1102,276,41,1111,221,890,223,639,571,346,150,399,400,140,720,0,196,128,1125,610,339,1034,490,979,1328,32,505,567,92,76,377,239,62,12,19,1265,857,182,781,834,682,802,201,313,20,165,71,21,108,961,1190,1257,434,1223,208,488,93,19,96,29,205,264,1586,142,818,569,42,79,475,42,1079,303,117,1569,4,422,750,142,454,116,3,1628,933,1408,274,200,393,544,717,382,65,53,522,71,842,971,1288,128,590,46,882,1568,811,134,23,6,562,450,43,821,96,12,771,23,232,720,134,188,1394,4,1365,134,44,1896,1,194,83,474,101,11,429,309,825,80,322,295,1009,142,198,58,13,647,334,382,334,1364,106,206,479,282,683,379,86,381,1407,146,1470,93,465,588,110,750,1118,744,171,103,594,79,1075,0,501,63,792,293,18,1316,1510,143,406,344,453,28,341,178,11,76,1366,1085,32,1536,1722,190,17,378,166,531,818,921,211,130,171,689,170,478,278,587,335,135,652,41,155,715,109,144,867,847,1072,335,537,50,94,168,51,327,78,182,372,115,70,798,473,470,523,271,1028,1048,607,469,40,91,1064,209,1759,38,994,781,602,80,31,387,356,494,373,44,10,379,62,174,96,1628,875,911,6,692,502,161,329,595,368,1697,42,179,987,65,1091,343,657,84,184,98,926,208,728,698,269,165,99,856,410,167,339,884,258,502,50,158,252,331,1653,107,32,382,1140,105,19,1433,32,827,5,826,1,1000,95,562,153,431,158,550,39,294,91,95,165,8,51,243,1087,1290,597,688,839,332,61,41,321,11,217,150,1282,596,577,590,398,383,1875,88,111,1357,315,28,1344,179,1072,161,613,393,222,421,492,445,1090,234,154,78,440,856,492,1517,351,1162,48,220,8,72,597,350,127,562,1510,488,177,547,32,82,111,47,0,137,264,14,327,46,908,505,518,30,866,16,315,58,708,1776,233,604,1364,630,215,1684,1949,628,118,626,33,150,4,1183,533,50,501,942,43,345,52,473,684,69,608,32,38,992,6,751,1106,523,93,418,297,608,378,1846,32,597,1341,89,412,552,265,143,164,113,48,1181,1352,1066,1128,686,670,639,159,177,120,761,632,129,7,1098,623,2,442,276,595,39,314,959,114,1990,235,1025,50,1547,196,23,476,822,365,430,31,759,2,95,27,615,395,814,131,63,79,503,248,261,40,369,1673,53,130,910,573,28,237,1073,133,107,509,222,1517,441,528,727,408,234,216,549,7,345,1557,1194,372,271,219,268,243,478,253,2,209,278,1200,1272,779,8,161,417,263,131,798,791,58,566,464,1109,370,448,1166,452,1248,379,848,1212,280,444,139,145 diff --git a/data/day08.txt b/data/day08.txt new file mode 100644 index 0000000..6382829 --- /dev/null +++ b/data/day08.txt @@ -0,0 +1,200 @@ +dbc gfecab afcdg dfebcag bd dgbe bcaeg dcefab ecgadb agcbd | acdgb gbcda gdecfba bacge +bacdegf aefbdc ebf fdbcag edbfa gdaeb acfdb cdegbf face fe | ebf ecdabf fcbad afcdbg +cabgde gd becgfd dgfe cebgf gfdeacb fdbac bcgaef bgdfc gdc | cbfad dg dgef ecfbdg +adecgf egfdc cgeadb adbfce dafg bcfeg dge dg fadec dcbegaf | dg dcegf cdgafe gbacfed +badeg gdbfcea acgef fgdc bgcaef cd ebcfda gadce edcgaf edc | dce efcga dbgea dc +bgfec dbfgec ebgafc afegcdb fca af cgdabf aegf badce cfabe | caf ebacf bafgec cbfeag +begacd bd cfadbeg fbecg begfd bgd cdfeag gbaedf fdba agefd | cbgfe fdab efbdg bd +bg gfdebc beg gabd fcbae fgaeb afegd gafdce dacbfge efgbda | gdba dfgae dgba gb +cfd edcfbg abfcg gfdcb gbcefda dgcbe defg df acebfd caedbg | agedcbf dgbfaec gbfecd cdf +bdcag acgebfd eac ae bade abcdgf bdacge bcgea aedgcf efcbg | cfdagb degacb eac edab +ga ebcadgf gdaf bga fgecb dfabcg adcfb gadecb fecdab gbacf | fgda gdaf agb gfda +gbcdaf fabdceg gbe ebfgad bfdga eg cefabg fdge adegb cedba | ge fcaedbg ebg aecbdfg +ab bdeag gbdefc cgafdb fgedb agb befa bagfdec ecgda agfedb | ab aefb abg ab +fgceab fcgdb fdcebg cbf gafbd cegfd bced cb cadfge cbdgafe | ecbagf cbfdeg cb bc +fgb eafdgcb cefg ebdgac fcbged fbade fg gbfed gbecd fcabdg | fg eadfcgb fgcbda gedcb +ecgfda faebc cb fadeb adecbg edfgabc bfgc cab gecaf ecbfag | fcgb bca gbcf cgbf +gfaed cg cgab abdcf fabcgd gcfda fgc fdgacbe cbdaef fcebdg | fgc cfdageb cbfgad degfa +fbacd gedfac fadegbc gbf degb ecgdf gb bdecfg gcdbf efbcag | cgedfb gb bcdfa cfdagbe +dceg deacbg acfbeg egdafbc ebfda dc bcd cgabe gbdafc dbace | cged fabegc febad ebgcfa +gbdcae cfgade dc dgbface fdage cbgfa adc gdafc dcfe gbdaef | fedc adgcf fcde dgacbfe +afdgbe cgfabe dcgeab aef feacb fbgcade bgace cgef bcafd fe | ebacf abfdegc dbfac facgeb +fbeg dgfecba cfgabd eafcb gb edacg gecfab aebcdf ebcag gcb | cfadeb gecda bg gb +bfcaeg gd fbagc fgad fgcaedb fdgbac cdaeb dgfecb cagdb bdg | cbfgda dg afcedgb egfacb +gd dcafgb dacfbe edbgacf gfbdc fbceg dbg dfag bdfca begdac | aecfdb eagdcfb fdcbgea fgdbc +gf dfgc ebfgac bfdace gabfd adgfbc acbfd ecfagbd bgf aedgb | dfgc fdcg gfb gbf +gbdae ebadf dbcfag acfdb dfec feacdbg geafcb dcbafe fe fae | efa bdcfa eaf debacgf +deafgc fbgedca gfd dcga dcgbef aecfg dg agfebc adgfe dfabe | dgf badgcef fgace cabefgd +badcg bagdce bdafgce efgbc df cbgfda cfdbg edgfac fgd adbf | dfcbg df cgbdae bdfgc +dgabe beagc gbd gfcbdae gd bdegfa bgfedc fbcdae bafde fagd | bcdfge bgd bcage dfga +adgf adgfce aecfg cdega dbgaecf abcgfe egd egcdfb dg deabc | cdgae dafg dfag afdg +fbadec afcbg begac be ebcgda dceag edgb efdcga ebdacgf cbe | adfcebg ecafbd debgac edcafg +cbd dcga cagbf dcafb cd cdebfg dgafcb baefd cbfaeg cfdgeab | fcdab geacbf gfbdce dgcafb +becd abfdc cgbaf efcda bd ebdcaf gdfaceb bdf bdgeaf cedfga | ebdc fbd bdf fbgdae +gefacd adcg fedbc cdgfe egd dg dbfega cgbfeda aecfg bcefga | defbcga efcga afgced gdecf +gfacbd fbcgde cefba efdcga bfgcead egcdf gfb gcfbe bg edgb | gb fdegc gfb fgb +ag agfdcb egfad fag adefb fdgec bdfgcae acfegd gebfdc aecg | fga ag egafd fcgebd +cadgbf cd gefbac cdfba fbead cedagb gdcf adc gacbf fgebcda | gcbafd bdcaf gfcd abdfe +fgebda fd afceb fcdeb fcad cgbed gabfcde dcabfe def befagc | eacfb efd efagcb def +beaf gfcaebd fdeag dae acdgeb gcdfa dgabef gbedf ea dcbgef | ae aed ae ade +gb dgeca gecab gcdfaeb ceafb bgc fagb adfceb baegcf gebfdc | fgba bg fecgab bg +daf gbfda afcedg geadfb fbcdg fgaebc ad dbagefc dbae aebgf | aebd eadcbgf dfa beda +dcbaef cabfd efgcba cbdgfa aedfg abecfdg ace cbde dfcae ce | cbefag ebcd cdabgf cbfda +bcgefa bgfcead cd fcbadg bdcga dac gbaed gafdce cfbd bcagf | cbfag acd cfbd bdfc +dgfcb aebgd gadefc bgfdec cbafgd cgbad egbdafc ac acbf cga | ca ac cabf abcf +cgaed gafbdec fgaedc ba baegcd edfbg agcb bcdeaf ebdag bea | gfceda ecabfgd defgacb aeb +cbfag cgdaf dcefab bac ba bdfceg cfgeb eagb cbfgea abcfdge | ba bac gabe cfbeda +efcgd ecbafdg fgabed edb ebcg adcfb be efcdgb dfcgae dbefc | dcgef ebd becg gdfaebc +fgedabc dafeb eg ged aegfbd afbecd fbgdc edfgb egaf dacegb | gaecdb cbegad fega fega +bgfcdae fbcda df eafd gbcaed bdeca gfbac gfdbce bfadce bdf | afcbdeg gabfcde deaf cbeda +fcgebda fcga bgfcd ebdfcg degba baf bafgd dfagbc bfcade af | afb agfc af cfegabd +cbfg bfd eabfdg facbdg edfcgab bf fcabd aedcf ebgdac badcg | eafdc bdf bf fbcg +fbdgce eagbfd dbacfeg dagb geabf cdeaf ebd bd fgbcae afebd | defac bed edb db +aegcd bad gdaebcf cabfg db ecbd gafdce gcabd gbcade faebdg | dab dba dba cgfba +ecdba bedacfg cdgeba dagcb bdge gdbfac fcadeg ced de acfeb | ed badfgc beacf bcgdafe +fg abdeg fgebdca agdceb gfbd gdfae fga cdefa efagbc febgad | fg bgaefc gf bgafcde +beadc gcbfed fdc bacf fc cbadefg feadc dgfea dcbefa dcgeba | cdf gefda dfc fbca +bd bgcedf decafg gafcdb acgdf agbce bafd gaefbcd cdb acbdg | fcdga afbd cbfdeg cafdgb +dabe bgcda egcdb fcdage dcebga bcfge dafgebc gdafcb ed ecd | ebad deba de gcbde +ga gadcb ebcfdg egbcd agebdc eagb afcedg dbfca dfceagb dga | dabgc ga agd adbcg +cbfagde ecdgf eabgfc fbd egbdf fageb edba dacbgf bdaegf bd | beda deab abgfe cegfd +gcdfa gfea ef bdacfeg aedbc efc gfebdc adgbcf fecad aefcdg | feadc fe efc fgcad +gdcae fga af acegfb fbda gfead edfgbc agdfecb dbgafe fdbge | fabd gfaed efgbd dagce +afdebg febc cdbae abe eb dbfcea dabcfeg aecgdf dabgc dafce | cefb cedgaf eab acefd +fgc dcabg gbdefac dfeg ecfdgb bfgcd gebcaf beafdc fg edbfc | cdfeb fcagbe fgbdace febdc +aegfbd gacdeb fdeacgb dea dgcefb faeg bdfac dgefb ae debaf | debfg dea ea ead +acgedb cfgae egfcbda fdeac eacbfd fd bdagfe dabec def fdcb | fed fd fcbd fde +dba bgcfde da cdaf acfbgde fbgdc fgadeb dcbag agbec acgfdb | gacbdef adfgbe bgcad fcdabge +acdfe cfgdab cdgea afgcebd dcgbae daf gfea fa egdfac bedfc | fa fad fa cedga +caedg bafgde egcba dabegc agd fecdbga bcfeag fecdg ad abdc | gad cbeag dag cabd +adfebg fedcagb fagdc gda eadc degcf gdafec ad cdbfge facbg | da aedc cbfgdea ad +ecfdba dg dgafec gcabdfe fbadg fadcb gbdfca gfd bgefa dgbc | cgbd dbcaf cgdb dbgcfa +ebacg eb begd dcebaf cdgea gafdce ecb cagfb bfadcge egcdba | bgdaecf bedacg dbeg cbdgae +ebdagcf cgbea fe agefbc abgdf agfeb egafdc bcef feg deabcg | cegabd ecgafbd ef fe +cd cgebdfa fgeabd cbd cabed gfbdec adcf abgce eafbd fcebad | efabcdg bcefgd baedc abfde +acfg gbacfd edgfabc bdcaf dca caebdg dafbe gbcdf ac dfbgec | bgcfed cda dbgfc acd +agdbefc abdc ecd gfcae aedbf gbcdef ebafdg ecadbf efadc cd | afdeb cde dbafce bfadge +begad de fged gfbea dbe gbdac ebfgdac efgabd cadfbe fegabc | de dgfe cgfaeb gadbc +gefdc gdfb gdbcaef deb ebfcd gcebad bd dacefg gdcbef fabce | gfedabc deb gcfade fdgb +bdec dagcf cefbg bfgace bgedfc edacfbg fgdec fde adgefb de | dbfaegc cedb edfabcg fcdeg +eaf gabed cabegdf fe ecbgaf fadeg gadfc fcdega cfde cbgafd | adgef fced cgdbafe fae +fcbaedg gadce abcg ceb bgedf adfbec decagf bc dbceg eabdcg | ceb bgafecd cabg acefbd +dagb cfgde acgfeb fbgac fcgdb bd dbf cbfagd fcbeda bcefgad | db fegdbca dbceafg aedbfc +edagb da dab fbdge cgdfbe acegb adfe abdgfce dfgeab bfgcad | abd dab gfbead eagbc +bdfega dcbgf efcgabd ce fec fcegd agce fegad daebfc efdcga | ec ecf dgacef bfecad +cdabgef bgdfe aecgb gcfa fc acgebf dcaebf dcbgae cfgeb efc | fc fcga bfecga faecbdg +dfeac gdfcea fcg acdebf cdge cgefa bdcgaf cg fegbdac bfage | cfg cfg gfeca fegac +bfad bcf bedcga cadeb bf bceafd bcegfd dbaegfc ecfga cfbae | efacdb afbd bcf fb +aegfcd bcdeg abcefg gcfea bcgafed bga afbe bagec ab fbdgac | gceba gacbe gbacef gab +dca ebda bdfaceg acgdb gbcdea begcd efbdcg efacgd bfagc ad | adcbeg ad cbfga cfbgeda +fadebc gcfbea becgf gf fgc abfg ecgbd dfecabg fcedag eafcb | ebfgc gaedfc bgcef gedabfc +fadg eafgb gbead bdaec ecagbf dg gdb agfebd aedcgfb cfgbde | bfecdag bgd badce gd +egcd efadb gacbfd bcaeg ecadgb adc bacegf adecb dc agedcfb | fcgabe degc acd cd +bedfcag gc fagdec gfabce bfgec acgb befac gfc bgdef aecfbd | cg ebfdg cfg gc +aegbdf gfabced fadebc gfde ed bcaeg fbgda eadbg fgbacd bde | dbcefag bed afcbged aegdb +agd fagec cfbgda bfceagd fgeacb cdae gdbef dagef da efcdga | edbgf gda gedaf cdgfaeb +fgaec eb fcgbd agfdeb cedb fabcdeg egb febcg dfbgec cdfgab | fgbcde dbeafg egcfdba gcbfd +gfe fdbae ge bfgdc dgfaec cgeb dcfgbe dabfgc fdegb eabgcdf | gebc gceb defbcag afbcedg +dfce cgbed fbcagd bcdgf ged bdfgae ed bdfceg agebc fabdegc | fcde gde gecdbf de +dba dcafbg gcdefb fbged dgeab bfegad gaecd ba aebf egafdcb | beadg cfdbage bgafde acdge +bcgdef cbdgeaf ae fbdace afbde gcdabe gdbfa edbcf fcea bea | dgafb adbfce ea fbdecga +afdg fgebc fdeacbg fd gadcb fdcgb gfacbd gbeacd acdfeb dfc | fd bdcafeg caefbd dafg +dfebag defa bdgfa beafg agbcfd eab cbagefd cfgbe ea acbgde | abdcge abe ae fecbg +ef bgfdeac bdcefg cfdba ecf dgecba gfae abgefc ecbga acefb | debcag afge efag fe +cg gbfc gabcd bgade dgc gbecafd egdfac dfbac abdcfe gabfdc | gcbad degfabc cgafbd adbgcf +edbcgf acgbf fbaedc cbfae gfc agcdb dagecfb fg fcgbea eagf | fg adcbef fbeac fadcgeb +deacg daeb dagbce ecdbgf edc ed bgaefc gecba dagcf abdgecf | cdaeg abcge dec ecd +fcgadb caged bedc cdabeg dfaecbg befag db dgb eagbd gacdef | fecagdb begad dgb db +fbcdga fgcad fecdg gcedab bfca adc ac bfdga dbfega eafbcdg | adc cbgade fgcadb ceabgd +cefdbg gde bgfeac ed begcd cbefg bfde aedcgf cbafegd gacbd | fegbdac gcbefd cbgef bgedc +bfdagc afdc bagcf gbfdc begcd begdaf beafgc dbefgac gfd fd | fcda df dfac dcbfg +gcbfe bfeacg cedbf ge bfcga gfe gfecda ecbgdfa bgfadc bage | feg eagb gef abfgc +bgfec bac abecdfg ab gdcea ebgcfa fagb aebcg caebfd gfcbed | ab ab cba acgbe +gdbcf cbedg ce ceg abcgde adbeg efgcab bdfegac adec adfbeg | gaecdfb bedga cge cead +eafcb cfdbe aeb acfeg ab dcgbfe adfb fgacedb ecabgd fdbcae | fbcde aedfcbg bea edcbf +ebdca egc cgabe fbge cgbfda ge bacfg geacbf afdgec gebacfd | badce cge bgfcea ge +gdfecb bdge gdf dgbcaf aefbgc bfecg fgdec dg ecdbfga deacf | dgf fedcagb gd gcedf +agdeb cfdbag gcabd ed dacegbf gebfa eagbdc acde efcgbd edb | ed eagdb de de +feag cfgbed feacbdg cfgade efcdg fcgdab afd dfeac af abedc | cbagfde dbagfc faeg dgabcf +cdg efgbcd decgfa dcegb dgbf gd ebdcfga adebc gbcfe cefagb | bfecg dgbf gdbf dg +gab dfceag gdcb bg gbead agdefbc gcabef acged efdba agdceb | gdcb bgdc edbfa bag +bgafde afdgc gcafed efgdc ceda gdcebfa gdbacf de gbcef edg | edg gde eadfcbg cade +gdb egcfadb gdef abcfd dg ebfag gadbef abdgf aefbgc cbgaed | fedgba dbegfac bfeagd gefcdba +gad bdcag becdg gceabd dceafbg fgdeca fcgab ad baed dfcbge | cfaegdb gda ad gaedcfb +dafbeg eadgbfc fgd bagcf gedb abdfce gafdb fcdgea gd efbda | gebd fdg gaefcd deagcf +cdbe adefb ecfgbad bfcgad bacdf agcefd efd cdeafb aegfb de | gacebdf bdce fbcagd dcefab +cb acdgbe bce cdegabf bgdefa aegdb cdbg acbde fcebga fdace | ebc abfdecg ceb gbacdfe +cg fcedg edfbag ceag fdbec gdc faedcg bdcefag gbafcd dfeag | geca dgfacb cgd cg +bcafde defac dcage dgfbce gafc cgaedf cgd cg fgcedab gdeab | cdg ebadg aedgcf fagc +bdec dagbf ecagfb decbfa aefdc aeb dcegfa adefcbg ebadf be | cdbe gfadb eadfc dcbe +bcgeda fc badfe gbfdaec fcge cfd bedfc cedbg adfgbc dcgebf | cf ebacgfd fgce fdbceag +gd fgbdea dbg badce gdcab fcagedb fbacg beacfg cgfd dcafbg | fcdg gdcbfa dbg gdfc +cag cdfa cgade edgcbf fcebga begfcad gfdcae egabd defgc ac | ca agc fgbace gac +ecabf geacfb eabdcf dec cd bgecfda gfdbce edcba cdaf adgeb | ced aedfgbc dc gbeda +fbdac ea cadefg fae beag facbe bfgeacd cfdegb bgfec gfecba | agbe ea bafce egbdcf +bdc dbega abcdg gbcfa dc gcde cgbaefd cdfbae eagdbf ebgadc | adefcb agcfb cdb gced +ceb ce debfca abgdfe bdaeg cabegd caeg dbgec dcbfg bdecgfa | ce abegd gdfcb fcbdgae +cafedgb dgf bcfd cgdfbe acedfg gbfed agedb aecgfb bfgec fd | fdgbec feacdg df bgcfe +ef abgfc cagfeb gdebfc fbae bcadfg defgabc feg gefac gceda | degac gfbac gabfc gfcea +bfdeca bd eabfgc degbcfa cgdb gefbc dbf ecfbgd gaedf edgfb | dbfge bdf egbfca db +fac cbdfg eacfbg gaecfdb bacfd bfeda acgd ac gbfecd cgfadb | dagc ac dcga bedfa +egfbca aegcf gdcfab fdc adce fcedg cd cfgead fdebg cedagbf | dcgfe fdgbcea aedc cfebga +da bfged afedcb gcebdf gefda fedbga edgbfca gdba eagfc eda | ead dcfebg defcgb efgbcd +adefgb ecgf gcedb fedacb bec fbecdg cdfaebg gedfb gcbad ce | dcbfeag cfbged efgbad bcdfage +dfec gcd agdbe bdafgc afcbge bgecfad bgcde bgfce bgedfc cd | fbecag beagdfc cgd cedf +edbc agcfbe adefg cd defca gfabdc cad dgabefc dfebac bceaf | dbce ebdc febcdga cdgbefa +ecdb eb acgebdf ebf dcfebg bgdefa fcgbd gcdbaf feacg cfebg | bef ecfbg egdcbfa cdgfb +ebfcgd aefcb bfadge efd ed adfcgb fbgdc bfedagc fcebd dcge | gced fbcgd edgc ed +beagf cefbag ebafc gfce gdfeab fcaedbg ec dfcba ecb gbadec | ce acfdb dbgcafe ec +abegfc fbcged bgfea fecabdg gef ge abdgf gaec afecb cfbdea | cbfaedg bface gfe efabgc +bdg bacd edagb fbegac fgaed bdgcae cgbea dfbegc ecgafdb bd | gdeaf cfdgbe gbcaed bd +fbce fdegca egafb aef egdcfba eabgc fe ecdabg agfbd ecgbaf | fadgb cbage bcgdea abfgec +dbafge fedgcab efgdbc bc fbac fbdea gceda bfceda bdcea ebc | eadcb fcdeab cafb bdecgf +cbgae fec aefgcb acfeg fe efgcbd bgceafd fbea cagbed dcfga | edbagfc acefg gbdface ecf +cbfdga bae ebdf fbadge afdgb gfeac acbdge bdacfeg eb agfeb | edbf bea efdcbag aeb +efdcgab bedgaf aecbgf cgfe gfaeb cbgea ecbfad ec gdcab ecb | cgfe eabfg eabgf ec +bdefa dfebgca bfe eadfcb dcbage bfgad debca cgebaf ef cdfe | gacdbe eagcfbd afcgebd dfgbace +gca ebdcfa fdcgea acedb bdcgf eabg gbacde bcgdeaf ga gacdb | ebag abge gac aecdb +abcgf afgcbe baeg gbc ecdbgf gafce facbd cfgade bg egabdfc | aegb cgb bcdgef abcgf +ecagbf bdfgca ecgfd gbe fecgb dafgecb bacfg bgadec efba eb | geb cadfebg beaf be +agcdb bgcaf bf fadebgc daecbf gbdf fbc ebgcda afegc bgcafd | facgdeb dbfg fb bf +fdbeag cgd bdefcag afegd eacgdf dc dgefc ebcagd gfebc facd | geadf dc dc cdg +adcgfe cgebf acdbf abcedf dgfbaec edba cabef ea afe dfagcb | bfgec bfeca ae deba +adegb bgcd cbdfgea dc cedba cagefd dcbgae gebdaf faebc ced | egadb ced dcbg dc +fdeg gd fdbaec bfacg dgcfa ecfdga fadcegb fdcea dceabg gda | efgd eacdfb bcfadeg dag +af ebgfda ecagdb febgc afe dabce cfda febcda baecf becafdg | fa dbfega fa bfeagd +debagfc cbdgfe dcb fdbeg cegb fbced fcead cbdfga bc fabdeg | dcb efadgb dgcfeab ebafdg +cgfdae bdef becfg gcbefa ed abcdg gedcb cgbdef bdcgefa ecd | cde dec bfed bfcgdea +dcfegab becdg gcaedb egd bcdaef gcfdb eg eafcdg cdeab ageb | ged cegafbd egd eg +ba eafcd fcbegda acfgbd bedcgf ebgcfa fabdc dcgfb bagd baf | ba cafed efdbcag efdac +aebcdgf cd efbgac bfcgd cbfga gbefd bfdcga bcad geafcd dgc | fabcged fgaceb cbda dc +cgbaedf fbceg eafbcd degcf gfdcae gdcfa dbagcf dgae edf ed | fcgeb efd ed gdea +ac agfdcbe gcea dgecf fgdca efgcad dfbeac fca fdgba gcebfd | agbdf ca ac gbdfa +gbedaf dbgfc cbg abdfgc geadbc fecbd ebcgafd cafg gc dafbg | cdbfg gcfbad gcbdea fadcegb +bagfec efg bfcdga egac abfecdg afdbge dbefc ge cgbfe acfbg | fbdeag eg eg cbdfe +edbgcf dgbac bdceag dbagf cgd ecagb bceagf cd adce cgbafed | aecd egdbca gacbe gcd +bgfdc gdfbe afdbgc gc fbdac bacg gbafdec cdg cbdefa defagc | egdfb gcabdef cdbfa dgacfb +adgcfb gcd dfecgb cgebfa bgcaf adgcf cdbafeg dg ecafd adbg | bcgaf fadcgeb gd cgbaedf +bafgd cfaebg cefa cfbgead bcf bgcea defgcb bgacf ebcgda cf | fcbgae adfbg cdfgeb adgbf +becfa bcgdf gbceadf gebcfa defa adbcge de dec cebdf bdefac | faed fdcagbe edc bfacge +ebfgd gabd gd gfbcaed abgfec faegb dge aefdbg agdfec cfebd | faecdg cgaedf baefgd dcfeb +ecabd ged aebgfc ecagd dg fdcegb afgce dgaf dcaegf cedbgaf | edcga gfda gd dge +dfg fg eafdb aegdc faged gfba debafg ebgfcad gfbdce acedbf | fedagb edbfac gf fgd +dbgca fedca bfgcad adgcf agdecb dgf cefdgba bgaedf fcgb gf | acefdgb beafdg gfd cfbg +edgacf adegcb fd dbacgfe fabd dfbce egcfb edfbac cbeda fde | dafb bafd acefbd fd +bcefa gbfd eadcgb bgfdae gedcfa abefd efd df gedba fbdgeac | bfdae fgeacdb bacfe gdceba +bdcefg aefgcd gadcb gfb decbfag dfecg bfdgc defb cefagb fb | defb fbcged dbfegac egfdc +fe cedgab cbfe dacbfge cedba fed gafcd dfaec edbfac efdgab | abgedf efcb bedac gefbad +afcgbe cf fbc cegadb bfcdea fcgabed aebdc adfgb cedf cfadb | dafbc bfeagc bcf deacbgf +ebcafdg ecfbg bae dgcabf bcaedg dfbeca ae ebcag gdacb dage | cadbeg gbacd bfdegca eba +cadbe efgbc feacbg dgfecb bgd dg bgfcad ebdgc dgef gbdefca | aefcgb gd bfagced dgb +edgcfa dgbecfa bgedac dfbaec acgdf dg abfgc egdf adcef gdc | cgd cbgfa eacgdb gcafd +cad cfbead abceg edfa fadbcg becad edgfcb bgfaedc cdbfe da | egcab afde dcabfe ecfabd +fgbdc be egb bcdefag ceba gedbac egcda dcfgae debcg gbdaef | ceba edgac eadcfg bcdaeg +cg adcfgbe edbcga gbead cbdfa cga bgedaf faecdg dbacg cebg | gcdabfe fdacge cga bcgad +gacf gf bgeafd gef gefbc efbagc bdceag fdebc acfbedg gbaec | bcgaedf egf gcefb cafdegb +fgbadce cdbag agcfd faec acfegd fa fag cfged fdabeg dbfcge | agf bagefd edgfc gdbacef +agcdb gcadfb dgfcb gfdbec adebg adc ac cfab beagdcf daecfg | ac ca bedga ca +dfa abdcfg agbf cfabd dacgb dcebf eadgcb fa gbdafce ecfgad | af fa bcdaf bgaf +ebdfc cgbaed eg edabfc gefb adfgc gdfec deg ebdfgc debgcaf | abfcde bfge gde dge +dabfegc dfegb cbgf cf fdebgc dcbaef gcfed adecg fbdgea fce | cf gbfc fgcb begcadf diff --git a/data/day09.txt b/data/day09.txt new file mode 100644 index 0000000..ddc7d16 --- /dev/null +++ b/data/day09.txt @@ -0,0 +1,100 @@ +8679876423456789989987898954321012987899875434989895795442356997901987896535698998998765457891256789 +6457987567899894679986567895433129876789976549876734984310129886899876789423987797899879378932349892 +5356798778979923498998678997654998765678987956985429875421298765679765698909876676789998989545998990 +3235679899767939567899989659769878654589999897899319986632987643456984567898765445678987997659897679 +4123799998547898978999896539878965433689989789998998996543498788767893456797654326799976899798756567 +3249999876335667899998764321989876521599875678997897987654679899879942345679763214898765678987645459 +4598899994213456989899895210195998632478934567896456798775989934989321234567985423989654346895532348 +5987778965365569875788986791234987543569123459965345679896799129994320123459876439876543235694321257 +9896567896878678964597897989545987656789034598954234567989898998998531234667987545987432126789452356 +8765436997989989753456789978956799867894145987892135679878956897897692345778998956798974235696543467 +9989324989999895642345898867897987998943239876793245789954345976898989659889989767899865345789675598 +9998217679998743210156987956789875459654998765689356798765586895899978998999879898934975486998786789 +9886504567897654434569896745899976598769876784878969899876678964698869987898965939123986567899997992 +8754323456789765567798765634568987899898765443567899910987989643987658976987894321094598998998798993 +9865454587899876789899654325999998987999765312476999321998996432198747895436789632989989989987659789 +9876575679958989896998543212789879996797887102345678939869987843249656789325896549879867879999545678 +9989989789347999945987654104698769865986543215456899995456998967398797993214589697657653468965431734 +8990399893276789434598653245789859879897654356768999876329879878979898943203478986543232457894320123 +7921234921045678923987654346999943997698867497878987989998765989767999854512567965432101666789434534 +6899399763234799101298765677899894989429878998989276799839974399956798765423689876543212345896598765 +5678987654365678912349878989956789871012989019894345976729865459969899899434799987675423469998999878 +6789098765458989434459989796545898765123499198765566795410976567898910987645678999796564598789891999 +7999239876567896545698997654323498764254568999987877989321989989967891298957789234987676987676790123 +9898999987678999656997997543215987654366789989098999679452397897654989979968999129998797899545679234 +8767988998789998969876889654634598765477899879129988568943986689769878969878978998989899998434569395 +7659867899995977899765678995745679889698999768934977456999875567998768954989457897875989986545678979 +8543456987654656997643435789899789998789098656899765349889543467899879943399568976564579897756799567 +7651568999743249876532124678987993219892197545699983298776532346789989892198679765442456798969895489 +8798678999654345997643245679786989398964987636989932109654321236789996793239789654321399899878943298 +9999789498765656798655456798675979987979898929879893298743210545678945679959899793210988989989654567 +5899893209986769899878567987434567896899759899769789987654332456789434567899998989334977878998767678 +6798995349899878968989879876323878935789898798754578998865443767897323456789987678999865467899898989 +8987689498778989654399998765218767899894987659865679339876554569965435579899896566987654389996949296 +9896569579667899543298997654103656999923496543986789219987665678978557679998765465698766578985432145 +8789458998549678954987986543212345689913987332299894398799876789987668989999764324569987678976543034 +9698967997434567895976799764323459899899876210123995987645997897898789793987653213498998989988743123 +6567899876523498999885679898549568998797965421234579998434598986799895692199866323567939497899984235 +7678999887214589998764323987678979987656986432346889989545679965987934889012965459879421345999876346 +9889698754323678999896434598899989499869997556577999878987899873296321679229876569989545457899997959 +9996529765434567899997576699999992349998998769679876767898968994985442578939987978998676567899879898 +9875419889556878998698678789998901298987899898998765658999754329876543467898798989129797698998765767 +8954323997667989896569899899987892987695778987999874549698942101987656789923689993239898799249654456 +7899934598798996789699999999976799875534569876899943234567893292998967993212598994399969895398932345 +6987895789899445678989889998865689754323998765698764345678989989899098977333457989989452976987890156 +5456789999973334569976767897653798965419879554459875456989878976789129765444569978979321989876789767 +4345678998762123469865456789794987894323965433369986787898956965678998976755998659867990198965678978 +6456989999854034599876345679989965789435986521298987899987545894578987897899876545745789987654589989 +7598997799543129986989256898877894689949898310397998999875636789699876989999997634634692198995694393 +8789345678954298765432123987956943567898765421986329298764125678987545678989876520125891019989989212 +9893256989879349877547434976245892468999976539765410198643034599975434345678987434566789198879878901 +8932167897998998987656549765126789567899987679887421985432123488954321236789498567879890987764967892 +6543019956987987698787697654246897679967898789999439876543434567896543357894339978989991996543456789 +7674998969876546549899898775356789989356999899876545998987689678997689458932129899599989875432365692 +8989867899995432134989939889768993490245699946988656799998789799298796569549099789439878989821234910 +9898756789987543235678923999899912391236789999799767897999999892109987678998987678998964298752355891 +8789645699997656349889019761967899989347899987659878966788942943212398789997986569897654129543456789 +7673234578998797956992129853459998578998999896542989454567893954336799898786597456789973298757767895 +7532145789239989898973439964578987699659498765431094313478999895445899959656454345897654569868878944 +8743256992139876799965598765679998789943249876532986324578998789656789743943201235789775699879989432 +9854367893298875689876789878789999897893101997679876534689545678967897659853212356899989989991096541 +2967478999987654799987897989997896956789212989789989776795434567898998789764323478968999878992297790 +1297678998699875698798956992166964349994329878999899897896565678999469898965454589457898765989999989 +3398789987545986789679349854345793298789498767989767999987776899878999987899565694346789974767899878 +4569893596536598993578998765456789097678997656678979789998897987767789876798976789234599543456789756 +9679932987623459219989549986578998986545789547569995698999999876345698765787898892123987654567998746 +8989921098434678998898767897679876563235679423459954567899889995467987654386949921012399876789986535 +7698792199549789876789989929989765432124795312367893456997768889567898565234939993233456987898994424 +4597679987698998954567899939899876554256789423458932349886657678978987432129898989346767898967943212 +3976567899987876443456789898789988764345697634569321298795443589989996559998757979958898969349854101 +2987788998986543212467898785678999975656896547679490999644312678993987898766646767899999954298765212 +0198999987697654401238789654589899876787987769789989898732101289432198998754325456789999832109654323 +3239329876559964316345696572476789987898999878999876789543232398991099987656212345678987643219866444 +4568939876449876425456789421245789998969643989012965699865353456789987999942101234567898964429977865 +7678949767320987434667897910134578989655432397929894989976967898899876798763212347678999896798798987 +9899899654321299545878956891549699876543201256898753979989878959978965679854323567899999799897659598 +2965698765453987656789345692998989998653213345697642367899989543567894598769434588923987678998543469 +1978799876764598997993236989887569998754324457799843456789197654679943459898665678999876567899765978 +9899890999865679439874345978765457899979434769987655667994398786999432345999778799789985434569879899 +5789921998998789598765469864312356789898945678998769789965459899898764597899899894678954423456998799 +4578939896789898679977698753203467999767896789879978899876569988799875989998954923789653210199879689 +3457898785878989789988789954365788998956789997965989934989698878679989878987643213568954521989767578 +2346798674569878999999896795456899567899898765434599323498987654567899767898642102399767439876543467 +3578997523458967899876964987678943467942909876765678999987654532348954457899773213989898998765432457 +4679876312567956899985453498789321237891912987876789987698963101237893248999964349878989219984321248 +5679765403458946799876312349895430146789899898998899956459854235456799867998765498766578923987432359 +6789876564599435679932103468989541236897678789329999843398765346667999878939878987655467899876543767 +7899997765789324598965213589978959345999578689210197652139985457788988989123989996544345699989656899 +8997999876993212987654325678967998957895436578922398721012496669899777799034992986432234889998789999 +9785789987895433498785448789554767898965323467899599432124987898954656678949891093210145678929898989 +7644678998999994569876759894323456789984212345678987643245698997653234599769789987623468989212987878 +5433567899787889678987898965412356894693203576789999854367789986542123678997649876544567894349896567 +4312345789656778989998997986501245793984212456894878965459991098421014569865432997658789965498765456 +5323456896547867899989986899312457892975323569923669876567892197532127689998321298979899989987654345 +5434677976432356789875465678923578931096467678912456997978989989643234899876432399989999899998543247 +7646789984321345679876324789437689542987568989101567898989877878967846789987643987694598799876543056 +8769899875432487798765455997659797653497679898913498999598765667899987895699656986533989689965432125 +9878949876546798939977686789768898767969898757895989996469654345678998934598799876421264579876654534 +9989432987657899424988797892979909879954998768999879875398943234579999323679987653210123499989878679 +9894321298767894212599998943989212999863239899398765421267892123589987454567899787332245589991989889 +8765210129898965343456789654694329876542145910239865430356942012399876565688921986543345678920199999 diff --git a/data/day10.txt b/data/day10.txt new file mode 100644 index 0000000..899a010 --- /dev/null +++ b/data/day10.txt @@ -0,0 +1,102 @@ +([<{(<{(({<{{{[]<>}<<>()>}<<()()>[()()])}{({()[]}[<>{}])<(<><>)<[]{}>>}>{{((()<>)<[]()>)[{[]<>}(()[])] +<<[[<[(<[<[[[{()<>}(<>{})]]][{(<{}{}>(<>))[[<>](<><>)]}[({{}<>}<[]()>){<{}{}>[{}[]]}]]><{(<([][] +{<([[[({{(<[([{}<>]<{}{}>)[[<>[]]]]{{(()<>)[()]}}>){((([{}<>]{[]{}})<<[][]><<>{}>>){([[]{}]<<>()>){ +{{[{({{(({<[<{[]{}](<>)>][<(()[])(()[])>[[<>{}](<>())]]><<([{}]{{}{}})[{[]}{{}[]}]>[{<()<>><<>>}]> +(<<<[(({[[[{<[{}<>]{<><>}><({})>}{{{()}{(){}}}}][{[({}{})[<><>]]<({}[])[()()]>}(<([]<>)<[]( +<[{[((<<[[<[({[]()}{(){}})[{<>[]}<()()>]]>]]<[{{[[[][]]<[]()>][<<>{}><<><>>]}}({[<[]()><{}[]>]{<[] +(({((({{[[(([<[]<>>(())]{{()<>}<<>[]>}))]]([<([{{}()}(<>{})][({}<>)])>](({{<()<>>[{}())}{((){}){[]()}}}) +({{({(<<{<<([<{}>])(<[()<>][{}[])>{[()()][{}{}]})>[[[{{}[]}[(){}]][{<>{}}{()<>}]]({<<>[]>{{ +<[<<{[(<{[{({({}[])(()[])}[{{}<>}{{}<>}]){<{<>[]}[<>()]>{<{}()>}}}{{{{()()}}[{{}<>}({}<>)]}}}}>{{[[{<[ +[{([<{{<<<[([<[]()>])]([{{<>{}}}{(()[])[<>[]]}])><[(<{()<>}{<>}>[([]{})<<>{}>]}([{()<>}({}[])]<<{}[]>({}{} +<([<([{{<<{<(([]<>)<{}{}>)>({[(){}]}((<>[])<{}[]>))}<{<(()[])<[]>>({[][]}(()[]))}(<{()[]}{[]()}})>>[([({()[ +{{{[({(<[{[[{{()<>}[<>()]}{({}<>)<{}()>}]{{[()()][(){}]}[{<>()}]}]}]>)(({<<(({{}<>}([]<>))({<>[]}<[]{ +({{({<([{[{{[[[]()><{}[]>]({{}[]}[{}()])}}<{[{[]()}[<>]]<[{}<>]<()<>>>}>]{<<(((){}){<>()})[[[][]]]>[([<><>]{ +(<[[{{[(([{{<((){}){<>{}}>{<{}[]><<>[]>}}(({<>[]}<<><>>)({()[]}<()<>>))}<{(<()()>[{}{}]){{ +{{{[{<<(<<[{({(){}}[{}{}])}[{[<>[]]{()()}}{[()]{(){}}}]]>>)><{((<<{<[]{}>([]{})}{{{}{}}}><([{}[]](()()))> +[<(<<<[(([((<<<><>>>[<[]<>>(()[])])[{((){}){<><>}}<<{}{}>(()[])>]){(([[]<>]<[]>)<{[]}[[]<>]>)<<{{}{}}[[ +<(<<({(([[({[[[])(()[])][<[]()>{{}[]}]}{({{}}{(){}})(((){})([]<>))})([[([][])<{}<>>]<<()><<>()>>]( +[{[[<{<<{<{<{<()()><{}[]>}([(){}](<>()))>(<{<>[]}([])><[[][]](<>{})>)}(({<[]<>>{()()}}<<[][]>>){({()[] +<([<{((({({[<(()[])[{}]>({[]()})]<<[[]]>>}<[[{[]{}}[{}{}]]([{}[]]{(){}})]({(<>())})>)}({<[{{{} +({{([(<<{({(<(<><>)<{}<>>><<{}()>[()()]>){<{{}()}(<>[]>>}})}>>[<<<{(({{}<>}(()[])){<[][]><{}>}) +[<((<<{{<[[[[{[]()}][{[]{}}(<>())]]]]{<<{(()<>)((){})}<[<>[]]{[][]}>>(<(()())(()[])><{{}<>}({}())>)>[<<[( +[(<<(<<[(([{((()())<<><>>}[{()<>}({}<>)]}]{{<(<>[]){(){}}>([<>()]({}{}))}})<<(<[[][]][[][]]>[([][]){(){ +<[([[<<[{(<([([]{}){{}<>}][{()}([][])])>)({<({(){}}){[[]{}][()()]}>{{{[]()}({}{})}(<[]{}><<>()>)}}[{[<[]()>< +{<{<[[{({<[<<({})<()[]>>((<>{})<[]{}>)>]>})}((<[[(<<{}{}>{[][]}>)<<[()[]]{<>{}}>{{()[]}[()]}>]<({[ +[({({(<<<<<[[<[]{}>]{<<>{}><[]{}>}]><<<([]{})<{}[]>><[{}[]][()<>]>>[[<{}[]>{[]}](<{}()>[{}<>])]>>>>{<{([(( +<({[({<{[<({{<()[]]}[{()[]}[{}<>]]}{[{()<>}{<><>}]([[][]]<[]<>>)})>[[[(<()<>>({}[]))<[(){}]<<><>>>]][[<({}{} +{<(<<(([[{(<[[()[]]<()[]>]{<()<>><()[]>}><{<[]{}>{()()}}>)([([(){}]{<>{}})[{<>{}}[<>{}]]]<<[[]{}]{() +{[([[{[<[<{(<<[]{}]>({<><>}({})))([{{}<>}]<{()<>}[{}[]]>)}<([(()[])<()()>])<{{[]{}}[{}()]}(<<><>>[()()] +<<[{<[({((<<({{}()}{()[]})>[<<{}{}>{<><>}>]>){{<[{[]()}[[]()]]{[{}[]]}>[{<{}{}>{[]<>}}([{}[]]((){}))]}( +<<{((([[({<{[(()<>)<()[]>]({()[]}({}<>))}{{{[]<>}[{}[]]}[{<><>}]}>}<[[([{}()]{(){}})<({}<>)[[]() +{(([({{(([<{{{<>()}<<>()>}[{<>()}(()())]}>]{(<([()<>]{()<>}){{()<>}}><<{{}}{[][]}>(<(){}><{ +{<(({{[<([(<<([][])(<>()]>{{{}{}}{[]<>}}>)[{(<()[]>{<>{}})[{()[]}<[]<>>]}{<{{}[]}><<{}>[{}<> +(<{{([<[[{{[{[[]()][()()]}{<<>{}>}][{{<>()}<()()>}(((){}){<>{}})]}{<(({}()))<[(){}]<(){}>>>(<({}[]>[[][]]>)}} +(({({[({<{{{[[()()]({}())]}[([{}]<{}()>)([{}()]{{}{}})]}[((<{}<>><()()>))]}[{{{(<>{}){<><>)}[<()() +(<({{<([{[([[({}<>)][([]<>){[]{}]]][[<()[]>]])][<{[[{}[]](())]<<()[]>(())>}{<{{}[]}[<>{}]>{<[]<>> +(([[([([<[{[(({}[])<[]{}>)]}][[{({()<>}[{}[]])(([]())(()<>))}<[<[]{}>({}<>)]{{{}{}}{[][]}}>]{{{ +<[{[{<<{[[<{(({})(<>{}]){([]())[[]()]}}{(<()()>([]())){([]{})<[][]>}}>]{({[[<><>]{[]()}](<{}[]><[]<>>)} +([{<({{([([[{{()[]}}({(){}}[<>{}])>]({{(())([]<>)}<[()<>][[]()]>}([{()[]}{()()}])))](([[[{<>{}}[<>( +<[[[(<[{{[[{{{<>[]><<>>}[{()[]}({}())]}[<[{}<>]<[][]>>]]]}{{({{{<>()}{()<>}}<<{}[]>({}[])>}[[(<>< +[[<[<({<[({{[[<>{}][[]{}]]{<()()>{<>{}}}}[<<<>{}><[]<>>><<{}<>>(()[])>]}){<[(([]())[<>()))[({}[])< +<<(<<<<((([[<<{}[]>(<>())>]]<{{[[]<>]<[]>}{[{}()]{<>[]}}}<[[<>{}]({}())]>>)){{([(({}[])({}[] +([{<([<[[[{[[{<>[]}{[]()}>([[]])]<({{}{}}({}[])){(<>{})<()()>}>}<{(([]()){()<>})[{<>{}}{<>()}]}<(([] +<{[<(({([[((((<>[])[[]{}])({[][]}))(<[()<>]{<><>}>)){<<{<>[]}<<>()}>>{({{}{}}(()()))}}]][{ +({<{<<<{{{(((([]())[<>]){<(){}><{}[]>})<{([]<>)[<><>]}[{()<>}({}<>)]>){((<[]()>[<>{}]){<()<>>( +[{<(([(<[((([[(){}]{[]()}])))]>)[<{(<<[<<>[]><()()>]>>){[<{{(){}}({}[])}([{}()][<>])><((()<>)[[]])[[{}()](<> +{<<[<{[(<{<([{()[]}({}<>)]{[{}<>][{}()]})([{<>{}}<<>>])>{(<{{}())<{}()>>(({}[])<<>()>))[({<>()}[()[]])<<{}<> +[<([<<<[({([<<(){}><{}[]>>[[<>{}][{}<>]]]<[<()[]><(){}>]([<>{}][<>[]])>)<<{<[]<>>[[]{}]}<({}( +<[[(<[{[[({{{<<>[]][{}[]]}[[[]{}]]}}){{[[(<>{})(()<>)]({<>()})]({({}{})<[]{}>}[<()<>>])}{<{[()[]]}[< +<(<(<((<[((([[<>()]]){<[<>[]]><([]{})>})[<<{<>()}{{}<>}>(((){})[<>[]])>{[[<>()][{}[]]](([][])([]))}])(( +[(<{{<(((<<{[[<>[]]]{([]<>)<{}[]>}}[<{{}{}}[{}()]><{[]()}[{}]>]>{[<{{}[]}([]<>)>[[(){}][()()]]] +<(<(([[{[<<<(({}))[{[][]}]>[[([]{})({}[])]]>[<<(<>[]){<>[]}><[()<>]>)<[{{}<>}(<>{})]{[<>()]{{}{}}}>]>{[{<{ +({<({{{[[(([<<()[]><<><>>>])(<((<>()))(<<><>><[]<>>)>)){{({[[]()]{[]<>}}[[{}[]]<[]()>])}({({()()}<[]() +{{{<[<{<{[<(<{[]()}><[()[]]{[][]}>){<<[]>[<><>]>([<>()][<>()])}>)<<<(([]())[<>[]]){[[][]](<>{})}><([(){}]{{}{ +<[((<<<({<[((<{}<>>[[]{}})((<>[])))({<()()>{<><>}}{(<><>){(){}}})][[<<[]>>[{<>[]}{[]()}]]([{ +(((<<{<({<[[[{()()}(()<>))(<()[]>((){}))][{({}[])[{}()]}<<{}{}>{()()}>]]>})<<{{<[[<>{}]<[][]>]((<>< +[<[{[[{{<{[(<<<>[]><{}()>>)({[{}[]]}((<>())<()[]]))]{{({()[]}([]<>)){{<>[]}[[][]]}}}}{({(<<>[]>{[]})[[{} +<<[({[[[[([<(<<>[]>{()[]})>{<[()<>]>[[[]<>]({})]}]<(<{{}}([])>[<{}()>])[{{<>()}<(){}>}<<<>{}}[{}{}]>] +([(((([[<[{({<{}>})<([{}<>][(){}])<<[]()><()[]>>>]{[([<>[]](()()))[{{}[]}[{}<>]]]({({}<>)[<>()]}<{()<>}{[]{ +[[<{[{<{{(<(<[<>{}]><([]{})[{}<>]>)>{{[{<>[]}[{}()]]<<()>{[]}>}[[((){})([])]{<<>()>([][])}]}) +{<[{{{<{([<[<{{}{}}[[]{}]><{{}[]}>]{(<{}<>><{}[]>)(<(){}><()()>)}>]<<<({{}}(<>()))[<{}[]>(<>{})]>({<[]>{()< +{<[{[<(({[{{({{}[]}[()[]]}}<(([]())[()[]]){(()){<>()}}>}[<<{<><>}>[([]{}){{}<>}]>[{{<>{}}{()[]}} +<{[{([<{<((<[<()[]>{[][]}]<<()[]><<>{}>>><([<><>]<()()>)({{}()}<(){}>)>){<(([][]){[][]})(<[]><{}{}>)> +(([<((((({{{[<()[]]{{}<>}]{<()()>({}<>)}}([[{}()]<<>>][((){})<<>[]>])}}(<{{[(){}]{()()}}}{([{}() +<<<((<[[{[<([<{}<>>(<><>)]<{[]<>}<[]<>>>)>]{([{[[]<>][<>()]}({[]<>}<<>[]>)])[[{{<>[]}(()())} +{<(<<<(({{(((([]<>)(<>[]))))}[(([[[][]][{}()]])<<(<>{}><{}{}>>{(()[])([]())}>)]}([({((<>){[]<>}){<[][] +({(([[[[<{[{(<{}[]>[{}<>])(<[]<>>({}[]))}{([<><>]{{}{}}){{{}[]}[[][]]}}]<[((()[])([]<>))[{[][] +[<([[([[<({({<[]()>}<[[]()]([]<>)>)([[()[]]]{[<>{}][()()]})))>]<({{[{<{}{}>}{{()()}[<>[]]}]{([{ +({<<{{({[{[{{[[]<>]<(){}>}<<<>{}>({}{})>}<{[{}<>]}(<[]>[()[]]))]}]<<<<<{(){}}<<>[]>>{<[]{}>{(){}} +(({<([<((<((({{}[]}[[]()])){{[[]()]<[]{}>}(<[][]>{<>})})({{[()()]{{}<>}}(({}{})[<><>])}[[([]{})[ +({{[(<{{<<<<[{{}{}}{{}{}}][<[]()>[[]()]]>([{{}}<[]<>>][<[]{}>{()<>}])>[<{({}{})({}<>>}[<{}<>>[<>()]]>]><< +{[((({{(<(<{[{[]()}}<<[][]>(<>[])>}<(<[]()><()<>>){[<><>]<<>()>}>><[{<()[]>}{[{}[]](<>{})}]>)<({<{<><>}>}{ +[(([{([<<<([[(()())][([]{})[<>{}]]]({((){})((){})}(([][])[()<>])))[<((<>())[<>{}])>{{[[]<>]( +<(({<([(<<<{([{}[]]<[]>)}({{<>{}}[[]{}]}(<{}[]>(()<>)))>>({<{<<>()>((){})}((()())[<>{}])><[<[]()>]{< +[<[{({<[({[(<[{}[]]{[]<>}>(({}{}){{}[]}))(<{()[]}>)]{<([[][]][{}<>])<<<>{}>>>{{((){}){()()}}<{{}} +[<([{<(<(<<{([[]<>]{(){}})((()<>)[[]])}<[<{}()>]<{<><>}<{}{}>>>>([{({}<>){{}()}}]<((()()))<<[][]> +({[{((<{[{([<{()()}{<>()}>[[()[]]]])}[{([[{}]{<>{}}]({[]()}[{}[]]))<{<{}<>>}>}]][[[(<({}{}){{} +[[<{{<{[([(<([[]<>][()<>]))[[[<>[]]]({()()}([][]))])(([[[][]]([]())])<{{{}<>}([]{})}<{[][]}{ +<<({<[{[<{<<([<>()]({}<>))][([{}()][{}[]])]>}>]}{[<[[[[[[]{}]<{}>]<<{}()>{()[]}>]][<{({}()) +(<<[({[([([[(<<>{}>){[(){}][()]}][[[(){}]{[]<>}]]]<[([<>[]]([]))[{{}<>}{()()}]]<[<{}[]>(()())]<<<><>>{{}[] +{([[[<[(<({<{{{}{}}[[]<>]}<[()[]]{<>[]}>>}<<<(()())<{}[]>>[([][])<<><>>]>[(((){})(()[])){<{}()>(()[]) +{[<{[[[((<{[{[[]<>]{{}()}}[{{}<>}{<><>}]][<<()<>>{<>{}}>[{[]{}}((){})>]}(<[<[][]>({}())]<[<>[]](()[]) +{({(<<{({({([<(){}>[()()]](<[]><[]<>>))([{<>()}<{}<>>]{<[]<>>[[][]]})})({[(([]<>)[[]])]{([[]{}]{{}()} +{{[<{<<{<{({(({}()))[<<>{}]{()()}]}({{[]{}}([][])}[<<>()>{[]<>}]))}>(<<[{<[]()><<>{}>}]{((<>[]))<( +{{[<[{<(([({([{}{}]({}[]))<<()>(<>[])>})[<<{[][]}<[]()>><{{}[]}<<>{}>>>{{{{}{}}{<>{}}}([{} +[[([(<{{[{{{{{()()}[[][]]}([{}()](<>))}<{<<>[]>[{}[]]}<<{}()>>>}}]<<[{[<{}>({})](<()[]>)}](<<<[][]>( +{<[([{{{((<{((<>())){<[]<>>}}<<{<><>}[<>{}]>{{()[]}(()[])}>>{{{<()()>[[]{}]}[[<><>]<[]()>]}([{{}}{()()}][(<>[ +[{<{[([((<(<(((){})[<>]){({}[])<{}<>>}>(((()())([]{}))<[()()]{[]{}}>))([((()<>)<{}()})<{{}[]}<<> +{(({{{<[<({([<{}()>]{<<><>>{<><>}})}){<(((<>[])<[][]>)(<[]<>>{{}<>}))(<{<>{}}<()[]>>[[{}[]]({}())])> +{<([{(<{<<{(<{()}{<>[]}>)([[{}()]{<>{}}]<({}{})>)}[<<<()[]>({}<>)>[<[]>[<>{}]]><(<{}()>[<>{}])>] +<{{{{(({{{[{<[[][]]<()<>>>}[({{}[]}([]<>))({{}{}}{<>()>)]]}}}([{<{{<{}<>><<><>>}}{([{}<>]<<>{}>) +{<[<<{<([[[[[[<>[]](()[])]({{}[]}<{}>)][((()())({}()))<{{}[]}(<>())>]]([<[{}[]][<>[]]>]<{([]{})}{( +{<{[[([<([[[(<()()>({}[]))[{()[]}]]((({}[]><()()>)[({}){[]<>}])]]{<<{<()[]>}{<<>[]>{<>()}}>><[{(()<>)({}< +[[<[[<{{{{<<{{[][]}<(){}>}><{([]())[[]<>]}<<{}[]>(<>())>>>}<{{[[(){}]<<>()>]<{{}()}[[][]]>}}<(<<( +<[[(({({(({{{([]{}){<>{}}}{[<><>]{[]<>}}}}))[({[[({}<>){<><>}]{<<>{}><<><>>}]}[<{<{}<>>(<>{})}(([ +({<<([{[<[<([((){})([]())][(()<>)({}[])]){{[{}()]({}[])}[{{}()}{{}()}]}>{{({<>[]}{<>})[<(){}> +<(<{<[<{({{[<{{}[]}{[]<>)>][{[{}{}][()<>]}(<[]<>>[[]{}])]}(([[[]<>]{()()}]<[{}[]]{<>{}}>)((([][])) +<{<(<<((<<[[{<()()><<><>>}<(()<>)({}<>)>>[<<[][]>(<><>)>{(<>[])}]](<{<()[]>([]())}[{<><>}<{}[]>]>)>>{( +{(({(<(<<[[[{<<>()><{}()>}[[<><>]{()<>>]]{[{(){}}]}]]>>)(<<(<({([]())<<><>>}({[]()}({}<>)))> +<{<<[<<{[<([[(()())<<><>>][<<>[]>(<>())]]({<{}{}><<><>>}{[{}]<<>[]>})){[{{[]}<{}[]>}[[(){}]{[]<>}]] +({[[{<[([[[{[[(){}]{[][]}]<({}[])({}())>}{{<()[]>{<><>}}<{<>}>}]{<<<()<>]{<>{}}>[<[]<>>{{}()}]><[<< +<{{{([({<{{([{()}[()<>]][(<>())(())])([({}[])[{}{}]]({{}{})([]())))}{(<[<>()]{()<>}><[()<>][<>[]] +((<[(<[(({{(<<(){}>{(){}}>({()[]}[<>[]]))<(((){})({}()))<<[]{}><()[]>>>}})<[{([<<>{}>]){<{<>{}}{()<>}>}}{{( diff --git a/data/day11.txt b/data/day11.txt new file mode 100644 index 0000000..e83f347 --- /dev/null +++ b/data/day11.txt @@ -0,0 +1,10 @@ +3172537688 +4566483125 +6374512653 +8321148885 +4342747758 +1362188582 +7582213132 +6887875268 +7635112787 +7242787273 diff --git a/data/day12.txt b/data/day12.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day13.txt b/data/day13.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day14.txt b/data/day14.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day15.txt b/data/day15.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day16.txt b/data/day16.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day17.txt b/data/day17.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day18.txt b/data/day18.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day19.txt b/data/day19.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day20.txt b/data/day20.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day21.txt b/data/day21.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day22.txt b/data/day22.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day23.txt b/data/day23.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day24.txt b/data/day24.txt new file mode 100644 index 0000000..e69de29 diff --git a/data/day25.txt b/data/day25.txt new file mode 100644 index 0000000..e69de29 diff --git a/prepare.sh b/prepare.sh new file mode 100755 index 0000000..a5bdcfc --- /dev/null +++ b/prepare.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -xe + +mkdir -p c obj exe +marst src/util.a60 -o c/util.c +gcc -c -O3 c/util.c -o obj/util.o diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..e431bda --- /dev/null +++ b/run.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +set -xe + +cat ./data/$1.txt | ./exe/$1.exe diff --git a/src/day01.a60 b/src/day01.a60 new file mode 100644 index 0000000..a499b22 --- /dev/null +++ b/src/day01.a60 @@ -0,0 +1,31 @@ +procedure printresults(r1, r2); +integer r1, r2; +code; + +begin + integer result1, result2; + integer x, y, z, t; + integer i, NN; + NN := 1997; + result1 := 0; + result2 := 0; + ininteger(0, x); + ininteger(0, y); + ininteger(0, z); + if y > x then + result1 := result1 + 1; + if z > y then + result1 := result1 + 1; + for i := 1 step 1 until NN do + begin + ininteger(0, t); + if t > x then + result2 := result2 + 1; + if t > z then + result1 := result1 + 1; + x := y; + y := z; + z := t; + end; + printresults(result1, result2); +end diff --git a/src/day02.a60 b/src/day02.a60 new file mode 100644 index 0000000..6fabaf0 --- /dev/null +++ b/src/day02.a60 @@ -0,0 +1,42 @@ +procedure printresults(r1,r2); + integer r1, r2; +code; + +begin + integer result1, result2; + integer move, depth, depth2; + integer i, j, NN; + integer inp; + move := 0; depth := 0; depth2 := 0; + result1 := 0; result2 := 0; + NN := 1000; + for i := 1 step 1 until NN do + begin + inchar(0, "fdu", inp); + if inp = 1 then + begin + for j := 1 step 1 until 8 do + begin + inchar(0, "forward0123456789", inp); + end; + move := move + inp - 8; + depth2 := depth2 + depth * (inp - 8); + end move; + if inp = 2 then + begin + for j := 1 step 1 until 5 do + inchar(0, "down0123456789", inp); + depth := depth + inp - 5; + end down; + if inp = 3 then + begin + for j := 1 step 1 until 3 do + inchar(0, "up0123456789", inp); + depth := depth - inp + 3; + end up; + inchar(0, "\n", inp); + end mainloop; + result1 := move * depth; + result2 := move * depth2; + printresults(result1, result2); +end diff --git a/src/day03.a60 b/src/day03.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day04.a60 b/src/day04.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day05.a60 b/src/day05.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day06.a60 b/src/day06.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day07.a60 b/src/day07.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day08.a60 b/src/day08.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day09.a60 b/src/day09.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day10.a60 b/src/day10.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day11.a60 b/src/day11.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day12.a60 b/src/day12.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day13.a60 b/src/day13.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day14.a60 b/src/day14.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day15.a60 b/src/day15.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day16.a60 b/src/day16.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day17.a60 b/src/day17.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day18.a60 b/src/day18.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day19.a60 b/src/day19.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day20.a60 b/src/day20.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day21.a60 b/src/day21.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day22.a60 b/src/day22.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day23.a60 b/src/day23.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day24.a60 b/src/day24.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/day25.a60 b/src/day25.a60 new file mode 100644 index 0000000..e69de29 diff --git a/src/util.a60 b/src/util.a60 new file mode 100644 index 0000000..2488d03 --- /dev/null +++ b/src/util.a60 @@ -0,0 +1,9 @@ +procedure printresults(r1,r2); + integer r1, r2; +begin + outstring(1, "Results are:\nPart 1: "); + outinteger(1, r1); + outstring(1, "\nPart 2: "); + outinteger(1, r2); + outchar(1, "\n", 1); +end printresults;