diff --git a/Cargo.toml b/Cargo.toml index faa6f42..bd73bad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,9 +10,9 @@ chrono = "0.4.23" regex = "1.7.0" [features] -default = ["a", "b", "today"] -a = [] -b = [] +default = ["part1", "part2", "today"] +part1 = [] +part2 = [] today = [] 01 = [] 02 = [] diff --git a/input/01.txt b/input/01.txt index e69de29..9edd9dc 100644 --- a/input/01.txt +++ b/input/01.txt @@ -0,0 +1,2235 @@ +2000 +12013 +5489 +11485 +2430 +7722 +5456 + +6693 +3867 +1645 +3924 +1545 +1910 +5443 +6276 +4574 +4147 +3942 +6322 +2904 + +3455 +4347 +3569 +1871 +2198 +4525 +1367 +4290 +3608 +1105 +3788 +2669 +4095 +4539 +5643 + +2604 +2317 + +14469 +11148 +21992 + +10429 +10440 +1343 +4878 +2948 +9949 +11600 + +5441 +9456 +6912 +5164 +8648 +1303 +6552 +2352 +3902 + +8892 + +5874 +5476 +5816 +6062 +4749 +7295 +5274 +3757 +4919 +1381 +2456 + +5666 +5732 +2628 +3367 +1078 +4688 +9294 +2707 +7664 + +5401 +5514 +2397 +2682 +4270 +4617 +4239 +3388 +3777 +4618 +3126 +3569 +2170 +2255 +2016 + +5280 +3530 +4338 + +5903 +3387 +4212 +4947 +6546 +2273 +3289 +1591 +3206 + +8124 +13697 +5396 +4215 + +10125 +3806 +1106 +3350 +3431 +5926 +7847 + +5469 +5422 +2685 +5531 +4385 +4847 +2398 +3642 +2325 +1926 +3775 +3297 +5138 +1024 +2836 + +25034 +3503 +5769 + +1671 +8174 +11469 +9030 +7977 +3121 + +2292 +2384 +2367 +2859 +5515 +1402 +3983 +2785 +4189 +3664 +2638 + +8501 +5749 +4371 +7714 +3618 +8797 +7521 +4810 +5952 + +11970 +3818 +8416 +2058 +3409 +5663 +2814 + +69727 + +17674 +13729 +3317 +9347 + +3510 +2853 +1174 +8648 +3013 +3180 +5821 +8659 +2097 +1476 + +6002 +5173 +7120 +7164 +7458 +1809 +3670 +7347 +5794 + +4942 +1785 +4233 +2135 +1376 +2520 +1378 +2773 +3397 +2282 +1569 +6008 +5744 +1410 +1262 + +6555 +21542 + +5022 +2557 +2845 +3449 +4442 +1529 +3932 +3888 +5702 +5524 +1829 +2792 +4951 +4197 +5339 + +4528 +7367 +7203 +3805 +3022 +2283 +5165 +4720 + +2529 +7119 +5022 +4026 +6782 +7010 +2746 +4621 +6460 +6438 +3916 +6198 + +8188 +7839 +1230 +7053 +5874 +1743 +6466 +3943 +4229 +3021 + +1633 +5005 +3953 +4288 +5359 +7236 +6473 +7179 +4113 +2967 +1069 +5298 + +9328 +8969 +1533 +7921 +3957 +7449 +9265 + +7288 +13654 + +13363 +10444 +7624 +5247 +4751 +13837 + +3745 +3728 +5915 +4513 +3818 +1513 +4459 +3653 +5544 +1338 +1238 +3669 +5828 +1106 +5085 + +6206 +1598 +4359 +2383 +2149 +6053 +3484 +3172 +1510 +2699 +5494 +5774 +2974 +3283 + +4445 +3583 +6550 +9320 +6905 +9518 + +1672 +6088 +1641 +4253 +5059 +1842 +5265 +5001 +2769 +3991 +4020 +5489 +2967 +4002 + +3001 +4264 +6668 +6710 +5047 +8208 +2616 +8105 +8447 + +18600 +8322 + +6235 +7323 +7792 +8248 +4100 +7035 +8449 +1210 +1192 +8322 + +7343 + +2856 +5366 +4283 +3323 +6541 +4019 +2086 +7435 +4204 +6713 +7217 +3566 + +6811 +11637 +15098 +12874 +5395 + +2458 +1446 +9495 +4442 +4083 +10324 +8491 +5798 + +4799 +7993 +9479 +9826 +4574 +5683 +7240 +3448 + +6258 +8840 +7347 +3031 + +2579 +5140 +4185 +2888 +1014 +1179 +1638 +7703 +2204 +2228 +3762 + +6131 +4685 +3479 +5372 +1684 +5034 +5408 +1289 +1485 +3238 + +5495 +4133 +7093 +1907 +1426 +6798 +1580 +4938 +5403 +6920 +6581 +2688 + +10432 +6345 +1313 +9521 +2652 + +11713 + +14255 +13867 +15482 +7519 + +5819 +4070 +7290 +12708 +10815 +3499 + +4093 +5266 +4175 +3484 +1079 +7116 +5720 +2947 +1490 +5802 +5832 +4027 + +5302 +4837 +4475 +6506 +2261 +5930 +4607 +4285 +2439 +1585 +5288 +4918 +4018 +4777 + +3993 +5624 +11935 +7174 +5086 + +20487 +32607 + +1000 +4167 +1648 +4736 +4700 +4988 +5027 +2712 +4757 +3660 +5855 +4279 +5947 + +16263 + +5100 +2601 +4242 +4474 +2536 +4038 +2529 +3851 +2317 +5986 +1252 +5888 +6087 +1136 +2814 + +6120 +5103 +4874 +5071 +2853 +3825 +1176 +6443 +5622 +4532 +6640 +5708 +4638 + +5743 +7765 +7447 +5287 +5795 +10093 +3239 +6527 + +1428 +3994 +1836 +4892 +1438 +1435 +5189 +6019 +4158 +5205 +5136 +1204 +2092 +4873 +1218 + +17476 +3121 +18812 +17122 + +9187 +14591 +13655 +7065 +15792 + +2341 +1577 +2445 +4855 +2657 +5445 +4048 +4569 +5963 +5044 +2136 +1759 +4685 +2679 +4660 + +9542 +9113 +7941 +13631 +11441 + +6754 +4063 +2779 +1508 +1170 +4159 +8253 +2180 +4129 +7077 + +4446 +4590 +1493 +1078 +5821 +4667 +3183 +4552 +4455 +5375 +1928 +5735 +4996 +5378 +2824 + +1548 +1205 +6097 +3363 +1700 +3600 +3328 +2977 +6557 +4861 +5367 +4588 + +3697 +5237 +3158 +2554 +3247 +4739 +4681 +1545 +5120 +5068 +4503 +5976 +6310 +2543 + +6680 +10760 +6051 +10641 +3566 + +8220 +7876 +9232 +7095 +2648 +5501 +6612 +3274 +2457 + +2712 +4371 +5504 +5360 +2857 +2830 +4816 +1280 +1656 +1684 +1486 +4828 +6423 +1417 + +1045 +9577 +3208 +4431 +4123 +9169 +2461 +10148 + +3064 +5159 +4043 +8403 +5156 +3064 +3536 +3217 +3155 +4971 + +10095 +1648 +3386 +7769 +8939 +12452 + +4251 +3782 +6474 +7009 +7544 +7002 +7021 +7772 +3741 +6936 +6434 + +5581 +2307 +5266 +2754 +6806 +6256 +2913 +4808 +4584 +4004 +5546 +4708 +5767 + +4983 +2055 +3830 +6590 +6740 +3801 +2573 +5583 +2100 +5639 +7335 +7202 + +4832 +2801 +2596 +2966 +2341 +1578 +5677 +1669 +2803 +3575 +1217 +1076 +1420 +1083 +3243 + +16734 +16781 +12618 +19292 + +15489 +4607 + +7462 +1425 +7387 +1314 +1882 +7505 +5348 +7688 +2949 +7299 + +14078 +9935 +11384 +5818 +5623 + +6522 +19523 +15630 +13173 + +3537 +6139 +1118 +1589 +4968 +5038 +5280 +4373 +7962 +4267 +1323 + +2307 +5224 +4833 +4980 +5326 +1991 +1244 +4500 +4363 +2821 +4733 +4762 +2921 +3086 +1901 + +2103 +13127 +11788 +13781 +8246 + +4062 +19254 +19281 + +3726 +3172 +3545 +2096 +5260 +4609 +6360 +3044 +3542 +3442 +2884 +6213 +3982 +4176 + +5618 +7100 +4100 +4484 +10523 + +4578 +21767 +18797 + +5804 +2039 +4951 +6614 +6712 +6601 +6723 +3273 +4967 +4251 +2717 +6879 +1130 + +3748 +1778 +2441 +2167 +6478 +6513 +1402 +5897 +5320 +1759 +3821 +1165 +2703 + +7785 +5718 +7591 +7405 +5215 +4948 +5360 +3833 +6676 +5336 +2322 + +9384 +5082 +8330 +3388 +7562 +9846 +6428 +2567 + +9425 +7189 +8053 +6364 +6519 +6651 +2533 +7207 +5083 + +9249 +3223 +13585 +5668 +1615 +4607 + +2413 +6755 +7232 +8941 +8094 +7381 +5055 +4533 +5926 + +5443 +3258 +2216 +1140 +1564 +3022 +4633 +6005 +3551 +2090 +4581 +3599 +5918 +2745 +2474 + +7269 +29961 + +24014 +1656 +15112 + +7256 +5880 +7761 +6115 +6998 +9817 +3909 +10327 + +7111 +7151 +14411 +7103 +4379 + +5629 +6790 +3207 +8582 +5495 +5001 +5746 +6514 +3874 +3418 + +48033 + +55352 + +17712 + +26192 + +4502 +2348 +5398 +1460 +3537 +1146 +5091 +5345 +4306 +5842 +2507 +1451 +2670 +5451 +3388 + +11840 +12162 +12739 +10712 +3310 +5666 + +1451 +3213 +3751 +11454 +1752 +3636 +1806 + +7334 +4388 +5412 +6933 +2190 +4459 +3381 +6348 +6496 +7301 +5371 +6646 + +3921 +5752 +4586 +1587 +5277 +4372 +2656 +5566 +5056 +3704 +4211 +1753 +3995 +2165 +5532 + +1727 +6476 +2534 +2477 +1148 +5239 +5307 +7327 +4054 +7851 +6930 + +4697 +2696 +2428 +5596 +2876 +1746 +4079 +7306 +2440 +4911 +1710 + +10476 +3062 +5844 +5147 +1883 +3752 +9934 +6027 + +8015 +6689 +3160 +2887 +1665 +2601 +8194 +4085 +1697 +2469 + +1753 +2578 +4683 +2644 +3087 +2515 +6491 +5682 +3961 +3249 +5121 +1165 +1473 +4068 + +5397 +5486 +5855 +5154 +8269 +1508 +1032 +7519 + +7692 +5792 +4375 +1173 +3946 +5005 +8464 +2453 +1922 +1893 + +1927 +1188 +6132 +1822 +8085 +6417 +6684 + +5178 +2048 +8063 +3690 +4662 +1628 +6887 +5722 +7857 +8631 + +8993 + +2860 +6116 +6941 +2070 +7288 +5318 +2652 +4299 +6755 +1441 +3203 +1748 + +5917 +2853 +4440 +3392 +3644 +2393 +1085 +6051 +2565 +2631 +4641 +2518 +1824 +5642 +5924 + +4764 +1055 +2484 +1925 +2232 +5127 +3225 +2121 +2186 +5038 +2716 + +24479 +8643 + +2867 +3981 +3058 +4040 +6531 +5535 +1039 +3116 +5489 +5158 +5460 +3323 +3215 + +10545 +6549 +4412 +6210 +8343 +10374 +5154 + +4381 +3278 +3891 +2751 +5091 +4845 +4298 +6630 +2909 +7551 +3107 + +4872 +4965 +4496 +3070 +1645 +4932 +5065 +2171 +2624 +5784 +4419 +5578 +4642 +2713 + +4642 +2714 +10705 +9640 +1399 +6387 +5252 +7016 + +9541 +1249 +5048 +9289 +9480 +8837 +4909 +7487 +8353 + +3978 +5490 +2898 +5709 +3938 +1814 +3809 +4040 +2176 +5688 +1884 +6412 +6864 + +9996 +32317 + +7417 +7170 +7507 +3805 +7964 +7075 +3843 +3455 +2809 +2909 +7161 + +4252 +1443 +5292 +3287 +5288 +5457 +3209 +3415 +1072 +5708 +4588 +1235 +2811 +3625 +5214 + +6408 +30501 + +5289 +7718 +6475 +2989 +2558 +4973 +7907 +4475 +8002 +4285 +7517 + +1989 +2992 +6113 +5009 +5438 +5115 +5923 +1605 +5285 +3161 +6176 +4008 +3803 +2853 + +6837 +13946 +6830 +2191 +5305 +6818 + +4630 +5907 +8041 +6326 +6155 +2804 +4927 +1890 +4410 +2479 + +8616 +12042 +7557 +9302 +3550 +5145 +9512 + +7975 +8541 +8278 +1930 +10634 +7828 +9461 +7555 + +4903 +4483 +6828 +7556 +5002 +5388 +7594 +3786 +5510 +1435 +2937 + +1652 +13742 +12057 +2081 +1835 +10753 + +9583 +7784 +10572 +5049 + +1825 +1844 +6445 +4803 +6480 +1823 +5178 +1785 +1964 +3261 +3736 +6179 +1474 + +2338 +7208 +4272 +3162 +8804 +1105 +3199 +8775 +9596 + +55557 + +1794 +6972 +9252 +7528 +9889 +8781 +6211 +5404 + +16416 +1570 +12987 +4782 + +4131 +1557 +5866 +5478 +2687 +6055 +2566 +2679 +3358 +4278 +3811 +2651 +3102 +5967 +5162 + +6250 +9703 +5470 +11096 +10740 +9661 +3837 + +4924 +4366 +5433 +2194 +5479 +4948 +4856 +2106 +5388 +3078 +2212 +5433 +2587 +4454 +5515 + +11890 +9537 +7022 + +6178 +4820 +4718 +1506 +3796 +4091 +2414 +2632 +2549 +5416 +2436 +4825 +2468 +4289 + +7074 +5761 +14281 +3437 +2925 + +2075 +4353 +4461 +9670 +8279 +8520 +4298 +6878 +8073 + +6162 +6378 +2835 +1313 +1321 +10490 +2249 +8191 + +6256 +3604 +2093 +3574 +5930 +2602 +1803 +8513 +6114 +3344 + +1430 +13233 +1690 +3032 +5910 +2246 + +6165 +2502 +5932 +6907 +7367 +6034 +1371 +2079 +5468 +4296 +6170 +1078 + +23178 +3808 + +27854 +19375 + +5861 +5506 +4757 +6075 +5432 +1111 +5629 +3145 +3755 +5346 +5442 +4707 +5765 +4569 +2783 + +2961 +3499 +6107 +2519 +1666 +1039 +4124 +1691 +6572 +3737 +1100 +5706 +3136 + +2962 + +15411 +6154 +8790 +12518 +7791 + +2242 +6736 +4039 +8306 +4600 +5255 +3039 +3580 +7944 +4855 + +3937 +2432 +2846 +2014 +3969 +4660 +2019 +2586 +3541 +5566 +5674 +4183 +2974 +5856 +1958 + +7021 +11044 +3687 + +6217 +2789 +6810 +4867 +7357 +5889 +6412 +7377 +3079 +1662 +5227 +6301 + +4362 +5552 +4927 +8808 +3339 +5795 +7918 +7131 +9104 + +11573 +21000 + +20018 +11773 +4418 +4415 + +4464 +3642 +5289 +4341 +3270 +3263 +3555 +1005 +5012 +4993 +6055 +7101 + +9336 +1496 +8827 +6642 +5093 +4205 +6397 +4493 +6916 + +6773 +4955 +5473 +4893 +3357 +7459 +3591 +7272 +3718 +6528 +6807 +2867 + +59816 + +6075 +1639 +15157 + +1665 +1561 +6003 +5483 +1795 +6164 +3933 +6998 +5216 +5136 +5143 +7065 + +4855 +5076 +2777 +1203 +6902 +2405 +3796 +8673 +6574 +6254 + +16039 +6855 +11922 + +18026 +8052 +16434 +14954 + +11381 +2762 +5314 +13850 +5874 +4704 + +2628 +1783 +2991 +7589 +7261 +8961 +8368 +4071 +3959 + +4984 +3604 +5401 +6458 +4894 +1871 +2268 +6735 +4139 +5772 +6534 +6199 + +2613 +4511 +14053 +15595 + +25475 +11850 +12168 + +34501 + +14232 +10228 +15816 +9481 +6643 + +5029 +7410 +3023 +2000 +7915 +5569 +1379 +2946 +7013 +4292 + +5447 +5243 +6352 +1660 +2347 +4029 +5794 +6723 +2073 +7518 + +7190 +1021 +1045 +5807 +4104 +4188 +5510 +3145 +2473 +3279 +1489 +2850 + +12531 +5773 +2373 +5971 +2821 +11792 + +6616 +1617 +6994 +2194 +7213 +5263 +4764 +2029 +6976 +6955 +1018 +3830 + +6011 +6522 +2785 +6336 +1221 +5433 +1998 +2990 +5341 +2213 + +15845 +16017 +6817 +2350 +9955 + +18485 +10512 +18191 + +10963 +18879 +1288 +12514 + +7206 +11431 +5079 +1767 +1478 +1173 + +1653 +1462 +5197 +3378 +3011 +6671 +5170 +2654 +6005 +7759 +5265 + +4457 +4696 +5685 +5934 +2295 +2864 +3115 +3941 +3921 +4557 +4973 +2993 +2151 +2311 + +6867 +7819 +4407 +2792 +1571 +3345 +1642 +7461 +5816 +6697 + +3291 +3084 +4832 +1195 +8411 +7009 +3863 + +6455 +5008 +7351 +5320 +3745 +3554 +4741 +1938 +6275 +6867 +6466 + +48508 + +6790 +4190 +1003 +5524 +5145 +3348 +1088 +5249 +6326 +3637 +5766 +4961 +3031 + +24120 +1811 +6650 + +3129 +4133 +3814 +2893 +3749 +6315 +2418 +2726 +3483 +3877 +2043 +5079 +4440 +1787 + +8110 +5553 +6158 +4811 +3133 +3737 +2611 +2075 +4188 +5086 + +19318 + +5872 +6372 +5416 +1309 +6321 +7020 +3273 +4175 +3717 +5140 +7438 +5079 + +1336 +9155 +6709 +2722 +4065 +1618 +1492 +6562 + +5440 +4334 +4617 +3830 +2468 +2110 +1474 +2171 +4903 +5984 +3652 +3808 +4988 +3253 +5376 + +9374 +3614 +1620 +1340 +9642 +4596 +2325 +3680 +6480 + +6328 +1140 +4212 +4673 +6003 +3907 +1897 +5136 +5398 +5164 +1340 +6152 +5189 +5705 + +4086 +4307 +4252 +3336 +2311 +1017 +5877 +2410 +2087 +2151 +2581 +3720 +4578 +3279 +2417 + +14837 +8046 +6307 +12835 + +6737 +5747 +5476 +3975 +8761 +1607 +3930 +5819 +6597 + +2404 +4632 +9393 +2482 +7537 +10334 +6698 +1194 + +7778 +11298 +6485 +1039 +11800 +4406 +4824 + +1317 +7026 +8237 +6529 +5450 +8785 +4565 +5485 +2066 +5517 + +15025 +18252 +18684 +11672 + +4554 +1621 +2494 +4759 +7009 +2702 +6973 +1681 +7204 +2369 +5719 +5105 + +7942 +3730 +9426 +12559 +11015 +2978 + +1535 +9079 +1988 +7192 +7933 +1625 +7926 +1389 +3112 + +3316 +1145 +4696 +7752 +8697 +3344 +11835 + +1354 +1589 +7545 +6150 +6746 +2918 +6788 +4965 +5385 +6289 + +16280 +7614 +19318 +10871 + +1389 +5027 +2440 +10135 +13799 + +1323 +5820 +5780 +4612 +3452 +4654 +2567 +1202 +1445 +1458 +3210 +4807 +2684 +1996 +1384 + +4093 +8449 +1615 +5801 +4196 +6076 +7989 +5862 +6156 +4328 + +18948 + +3089 +7778 +7239 +5381 +2587 +1405 +4676 +6439 +7005 +2918 diff --git a/src/day01/mod.rs b/src/day01/mod.rs index 05a6a9e..0542716 100644 --- a/src/day01/mod.rs +++ b/src/day01/mod.rs @@ -2,4 +2,29 @@ use crate::read; pub fn run() { let input = read("01"); + let set = vec![0]; + + let mut res = input.lines().fold(set, |mut acc, x|{ + if x.is_empty() { + acc.push(0); + } else { + let num: i32 = x.parse().unwrap(); + *acc.last_mut().unwrap() += num; + } + acc + }); + res.sort(); + res.reverse(); + + #[cfg(feature="part2")] + { + let a = res.first().unwrap(); + eprintln!("Part 01: {}", *a); + } + + #[cfg(feature="part2")] + { + let b: i32 = res[..3].iter().sum(); + eprintln!("Part 02: {}", b); + } }