From a6a2385a85115b5a3e4990b43a28a6994bf134ac Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Fri, 2 Dec 2022 06:30:20 +0100 Subject: [PATCH] 2022 - Day 1 --- 2022/input/1/input | 2275 ++++++++++++++++++++++++++++++++++++++++++ 2022/input/1/test | 16 + 2022/src/bin/day1.rs | 41 + 3 files changed, 2332 insertions(+) create mode 100644 2022/input/1/input create mode 100644 2022/input/1/test create mode 100644 2022/src/bin/day1.rs diff --git a/2022/input/1/input b/2022/input/1/input new file mode 100644 index 0000000..83af010 --- /dev/null +++ b/2022/input/1/input @@ -0,0 +1,2275 @@ +15931 +8782 +16940 +14614 + +4829 +12415 +13259 +11441 +8199 + +2540 +2500 +6341 +2235 +1858 +4157 +5053 +6611 +1050 +4401 +6187 +1078 +3297 + +25264 +23014 +15952 + +10156 +4544 +4930 +11786 +15822 + +1264 +6399 +2031 +6892 +3115 +5151 +5093 +6724 +7001 +4011 +1458 +1945 + +2106 +2016 +1528 +2524 +6089 +4466 +3154 +2686 +3289 +5831 +1520 +2122 +5744 + +33066 +22616 + +1993 +8485 +1037 +9730 +2076 +7492 +10000 +2971 + +11027 +9137 +4599 +7461 +1531 +12939 + +17530 +18837 +19466 +4845 + +1467 +4870 +10176 +6657 +5608 +2096 +9977 +6478 + +18828 +26577 + +17901 +5059 +13789 +4993 + +6676 +3415 +2464 +5937 +4275 +6629 +7566 +1943 +6313 +4572 + +9121 +10713 +5071 +1669 +7736 +10522 +6231 + +6400 +1771 +4568 +7681 +7486 +6090 +2223 +5581 +6705 +5719 +7519 + +6595 +3849 +6564 +1622 +2268 +6424 +5295 +3627 +2088 +7357 +6565 +1878 + +20744 +25902 +15310 + +11785 +2309 +7863 +15771 +4541 + +9217 +14774 +10316 +1035 + +5026 +5406 +2517 +5628 +4392 +5195 +5548 +4046 +2982 +4444 +4603 +4139 +5917 +4623 +5650 + +1304 +7839 +7143 +1520 +3668 +6533 +4406 +7153 +4585 +5586 +7202 + +10209 +5965 + +5676 +8694 +8691 +5790 +5498 +2189 +5651 +7073 +5270 +3057 + +2391 +8708 +8619 +4297 +4738 +10270 +3906 + +3023 +4720 +1548 +2991 +3111 +7063 +2012 +3763 +2035 +1784 +5001 +1680 + +7538 +7930 +9906 +8140 +13556 +4543 + +15678 +13201 +14557 +2543 +7345 + +30741 +29356 + +8506 +2596 +1936 +5285 +11960 +10241 + +4985 +2868 +10320 +8332 +1677 +2481 +2177 +7646 + +6131 +10046 +10184 +4015 +4132 +6841 +4179 +6723 + +11545 +8164 +17009 +6257 + +5301 +2162 +4275 +5983 +2671 +5587 +1250 +3145 +1364 +1145 +5876 +5648 +1517 +4821 +5700 + +16437 +14836 +4812 +3411 +8245 + +7546 +4484 +3121 +6861 +6332 +1407 +4020 +5444 +7421 +3100 +3955 + +16399 + +6052 +5898 +4698 +4965 +3117 +1798 +4646 +5183 +5615 +1508 +1065 +4239 +5268 +5753 +3913 + +8019 +4512 +19441 + +11542 +37427 + +2233 +1709 +1969 +5307 +4878 +2657 +6902 +6803 +2376 +4771 +4720 +4788 +3331 + +58268 + +15355 +3160 +15157 +2642 + +5958 +8776 +5573 +1966 +6919 +2661 +1810 +7727 +3528 +3520 + +3786 +5268 +7101 +7405 +4907 +2235 +4133 +4449 +4107 +7039 + +1192 + +15060 +9010 +17932 + +3037 +6302 +1310 +3578 +3499 +4572 +2899 +6801 +7015 +8003 +1645 + +2609 +8239 +11678 +4553 +3746 +7926 +4316 + +7989 +3443 +5709 +2736 +1066 +5070 +5401 +4781 +8140 +5206 + +6619 +4757 +5744 +5749 +4729 +4403 +1124 +3927 +1505 +6378 +7011 +7042 + +10734 +8546 +11816 +3041 +8038 +1514 +8005 + +2358 +4435 +15419 +9841 +1425 + +1575 +10261 +4196 + +13692 +3944 +5136 +14997 + +2395 +2053 +3511 +5846 +3289 +2223 +6256 +1725 +8118 +1615 + +5239 +14775 +4030 + +10610 +19176 + +5746 +4448 +6311 +7034 +1101 +3327 +2740 +2102 +2826 +6415 +2725 +6958 + +11322 +3127 +9187 +10407 +12052 +9870 +10917 + +7802 +15736 +12384 +12976 +9523 + +4431 +5918 +7903 +6003 +5690 +7135 +6625 +3042 +3791 +4604 +4472 + +5938 +1763 +1053 +1054 +6116 +1785 +6375 +3025 +3233 +7402 +3616 +4328 + +8730 +1695 +7271 +12172 + +1549 +1093 +8703 +4985 +4782 +3867 +3377 +5399 +2160 + +3877 +9623 +16382 +7247 + +6002 +5321 +2250 +1800 +1861 +1295 +5078 +4417 +5520 +3786 +3256 +3833 +6064 +1192 + +5113 +7824 +1006 +8708 +2630 +8752 +7077 + +4902 +3429 +2356 +5491 +2655 +3510 +1323 +3556 +2666 +5398 +3297 +5691 +5189 +6097 +3642 + +6558 +5566 +6259 +2433 +5153 +4382 +2403 +2022 +4473 +6768 +6971 + +10026 +13871 +13729 +5818 +9155 +10414 + +10107 +1720 +9245 +2438 +5150 +2275 +7178 +5384 + +3092 +4749 +3262 +2065 +5267 +5886 +4299 +5495 +2835 +3656 +3673 +5304 +3762 +1007 +1018 + +28554 +21993 + +2805 +1096 +2793 +8293 +3124 +1876 +7970 +2845 + +6531 +4430 +1311 +2156 +7435 +3390 +4009 +4575 +4333 +2742 +6973 +4136 + +2392 +4116 +4306 +2518 +4393 +1104 +2972 +2281 +5399 +4100 +2883 +7281 + +2391 +6469 +3870 +7305 +4913 +7618 +6042 +7663 +5674 +5749 +6631 + +3428 +12053 +7299 +4773 +10473 +8874 +2151 + +3248 +1165 +2435 +4215 +4789 +2067 +4858 +4051 +1963 +6408 +2912 +4624 +1268 + +4409 + +13565 + +7738 +5672 +4046 +7972 +3639 +4021 +8963 +2633 +7339 + +9829 +15037 +13499 +4234 + +6455 +7168 +5332 +6783 +16123 + +6047 +4912 +11390 +9771 + +9789 +5224 +1315 +3203 +8979 +5935 +9119 +8165 + +35275 + +4518 +6479 +12034 +1535 +11757 +1587 + +4610 +1626 +2456 +1352 +5620 +5503 +6280 +3946 +4973 +4822 +5997 +3462 +4956 +4251 + +2800 +1862 +1109 +4088 +1956 +3073 +5845 +5377 +5507 +4893 +4028 +2680 +1625 +5827 + +16667 +25591 + +6522 +8676 +8184 +5751 +9105 +3063 +1674 +10344 + +5539 +1142 +5816 +1168 +5969 +1389 +2075 +7074 +3101 +7431 +2743 +5736 + +2030 +3296 +4251 +2939 +1612 +2397 +6043 +3978 +2302 +4059 +3466 +5130 +4417 +3434 +5507 + +6623 +1216 +6469 +3269 +5336 +3321 +2133 +4883 +3175 +5315 +3771 +4732 +4096 + +7446 +4631 +9206 +1435 +8494 +3378 +4408 +1267 + +1031 +5587 +7270 +7454 +1386 +4005 +7112 +5510 +6167 +6258 +6177 +2584 + +9163 +6488 +8195 +7072 +2543 +7303 +3772 +3218 +6430 + +1846 +1426 +6176 +2386 +7884 +3130 +2066 +1363 +2676 +4032 +5883 + +6238 +4357 +6244 +5001 +6205 +2031 +4763 +4717 +3449 +5988 +2594 +6508 +6129 +3292 + +5276 +4818 +3936 +3716 +6800 +9499 +6284 +9610 + +17850 +15611 +1168 +10641 + +3648 +5602 +3507 +4240 +1019 +9291 +4877 +1210 +1926 + +3812 +9890 +7661 +13651 +1409 +10386 + +5305 +6002 +5503 +1214 +3192 +2611 +3303 +3203 +1917 +2840 +5494 +1825 +1135 +2000 +2666 + +1790 +7427 +4094 +5114 +4197 +4891 +3757 +1257 +1111 +7603 + +6791 +21115 + +6530 +4247 +12222 +12781 + +8490 +18751 + +3652 +3504 +3702 +4855 +1212 +6255 +1856 +5854 +7241 +3881 +7206 +1378 + +4129 +13281 + +8377 +9763 +7679 +4214 +4630 +8473 +8473 + +8725 +6220 +2198 + +7744 +1879 +11034 +7657 +9804 +8737 +11941 + +6000 +11448 +7628 +1637 +13733 +12875 + +4185 +14872 +3858 +3304 +3888 + +3551 +7065 +2559 +5068 +1668 +3129 +5361 +3866 +3214 +3785 +5725 +5409 + +2699 +3046 +2856 +1163 +4577 +4562 +1137 +5976 +4888 +3274 +3444 +5393 +1179 +5842 +4118 + +8999 +9195 +5866 +4732 +7260 +8053 +1744 +2243 + +59751 + +2972 +3341 +6585 +3761 +5052 +6547 +3857 +1717 +6438 +3061 +4074 +3960 +2893 + +5365 +17400 +16638 +2645 + +2858 +5485 +3270 +1470 +5477 +6900 +2096 +4839 +2745 +1962 +4589 +5332 +2532 + +6461 +2328 +4672 +9236 +2756 +8089 +5530 +3597 +3743 + +1256 +18350 + +17958 +10353 +17514 +8089 + +6730 +5610 +2916 +2385 +1329 +6266 +3138 +1573 +2726 +5822 +4665 +4192 + +2509 +13659 +2992 +3163 +4710 +13667 + +8718 +8001 +8395 +6518 +8604 +5904 +2956 +5830 +6497 +6337 + +12989 + +36036 +6483 + +17287 + +7230 +11174 +10488 +9330 +7884 +1885 + +6206 +6035 +2633 +8982 +7805 +9517 +2961 +2391 +6385 + +42975 + +6497 +13039 +8944 +10022 +7280 +10565 + +4189 +5311 +2161 +6026 +2672 +1512 +3381 +2672 +4408 +2104 +1844 +4902 +1184 +5076 + +1915 +2558 +9039 +5235 +2360 +4491 +7424 +8471 +1421 + +5978 +7846 +9024 +11363 +3658 +12312 + +6387 +6701 +6008 +4706 +12257 + +1756 +9535 +2131 +9046 + +1929 +4597 +6341 +6420 +3274 +1631 +6382 +5208 +7825 +1431 +2402 + +5458 +6924 +2874 +6041 +2703 +5111 +4308 +6932 +5970 +1813 +4833 +5304 + +7181 +3390 +3305 +3785 +4706 +3308 +6495 +6222 +7615 +6231 + +1562 +5987 +5691 +3910 +2199 +6038 +4109 +4856 +6115 +2915 +1328 +1627 +4305 +4279 +1522 + +2469 +2418 +7364 +6865 +5711 +3849 +2045 +3217 +6821 +2522 +7100 + +7037 +4718 +2447 +2830 +5767 +4812 +7475 +6267 +7119 +6095 +3717 +7429 + +11546 +24555 + +6544 +4806 +7414 +7130 +5773 +2574 +7393 +7058 +3709 +8329 + +5328 +2752 +2637 +3992 +4958 +3984 +3276 +5768 +5776 +6417 +4245 +5962 +6451 + +5131 +9613 +4627 +8112 +3703 +4765 +3983 + +5749 +1308 +6403 +1154 +2719 +4229 +1695 +1883 +4188 +1930 +6479 +1643 +4145 +6469 + +1712 +2651 +6120 +4479 +1431 +3414 +1420 +2645 +3141 +2134 +3833 +2917 +5987 +4440 + +14665 +11731 +4462 + +4443 +4767 +3167 +2889 +2494 +1054 +4301 +5118 +1606 +3306 +2464 +4929 +5815 +5980 +6051 + +2235 +1326 +1962 +5198 +6824 +5968 +6107 +6362 +6911 +2249 +5138 +5072 +6093 + +9073 +18319 +6656 +19469 + +5004 +7250 +2725 +3886 +2064 +2747 +3683 +6068 +7107 +2494 +3164 +5258 + +8240 +5565 +9900 +9253 +9780 +8609 +3622 +5557 + +8430 +8189 +13988 +3664 +2842 + +9819 +10269 +7996 +3874 +1237 +5402 +2560 +2218 + +5550 +6123 +4183 +4115 +1203 +3360 +1725 +5902 +2038 +4024 +3108 +3652 +3142 +5830 + +10005 +13753 +15209 +14921 +4880 + +17368 +1888 +3327 + +1793 +6804 +4538 +3085 +1493 +1086 +1296 +2894 +5610 +6306 +4623 +5761 +4983 + +6374 +3487 +8405 +7486 +6123 +2925 +1779 +1271 + +8150 +3307 +24346 + +8897 +6651 +10425 +3195 +9473 +10734 +4895 +4251 + +11166 +37176 + +29815 +13284 + +4764 +9530 +19531 +1524 + +11360 +9121 +4467 +9222 +8073 +11766 +4041 + +28221 +36720 + +7336 +5380 +4774 +6491 +3241 +3424 +5956 +2980 +1309 +6101 +3746 +3164 + +1685 +7573 +8509 +7495 +3145 +7413 +5480 + +2553 +2369 +4087 + +22541 + +18520 +17646 +2214 +10201 + +14938 +10062 +21551 + +4553 +8399 +9026 +10486 +9448 +12135 +7814 + +3890 +4593 +7584 +8915 +3988 +3565 +8788 +5293 +3904 + +4965 +2021 +7167 +10546 +7628 +5390 +6927 +10315 + +4100 +6239 +4096 +4868 +3045 +4478 +4822 +4746 +2953 +2216 +5223 +2216 +6248 +2935 + +5992 +7316 +9399 + +14567 +8081 +9942 +2254 +8319 + +21916 +35451 + +2934 +6437 +2518 +6721 +6958 +7525 +6017 +4205 +1579 +1079 +7375 + +6898 +1432 +4281 +2130 +4606 +3784 +5126 +6926 +3417 +6179 +2382 +3285 +1468 + +10483 +4925 +12330 +2723 +10685 + +10815 +4848 + +1083 +5124 +1166 +7641 +8367 +6187 +3662 +7465 +8605 +8117 + +19058 +7396 + +5620 +3362 +6765 +8339 +5972 +3422 +1715 +6641 +4117 +3269 + +20112 +12403 +17778 + +1652 +6828 +6867 +5817 +3292 +2978 +2569 +2737 +6586 +3208 +1328 +2552 +2938 + +38204 + +32440 +13784 + +1367 +7878 +8547 +5957 +4673 +4680 +5917 +1743 +4883 + +2935 +1864 +2652 +5241 +2535 +5303 +2634 +1511 +4434 +2411 +4735 +4892 +4767 +5571 +5972 + +41656 + +4654 +2609 +5504 +4437 +2350 +2897 +2287 +1052 +6391 +4299 +4435 +1061 +3913 +4269 + +13465 +17336 +4598 + +3442 +2608 +6953 +6680 +6806 +2719 +2738 +6485 +3670 +6515 +6211 + +8566 +2737 +12087 + +5540 +6843 +5021 +7902 +5829 +1017 +7270 +4981 +7634 +4859 +6316 + +3002 +5108 +1291 +2928 +7863 +5200 +1943 +2076 +2775 + +4434 +7250 +1377 +5189 +3158 +3246 +8714 +9673 + +6330 +11340 +1411 +14843 + +2745 +3342 +4958 +2728 +3845 +6308 +7138 +6353 +5265 +3977 +1446 +4353 + +8334 +7623 +6531 +10529 +7419 + +3917 +13563 +8015 +12802 +1540 +2008 + +1590 +8424 + +1942 +1828 +5975 +4489 +4001 +3199 +2529 +2109 +4482 +3607 +5473 +3249 +4378 +6493 + +3977 +3184 +6189 +11999 +13925 + +12065 +6843 +11238 +16132 +5347 + +4144 +2827 +5520 +5141 +5614 +2529 +4815 +1054 +6349 +2184 +3531 +1591 + +10122 +7709 +6700 +8312 +8507 +1890 +4039 + +7177 +3123 +1449 +8582 +6580 +9663 +11280 + +8751 +2358 +18224 + +6872 +4272 +3138 +8066 +1413 +5715 +3053 +1658 +5595 +5721 + +8921 +7914 +10497 +3413 +5289 +2755 +7726 +7237 + +3304 +2565 +3505 +4395 +1937 +5620 +5992 +5531 +5294 +5384 +2487 +3102 +1839 +2654 +1369 + +13063 +9483 +3511 +5543 +13544 + +4367 +3869 +5907 +4606 +2922 +4117 +4716 +4564 +5228 +5736 +2237 +5925 +1736 +3157 + +6877 +1953 +1103 +10584 +11666 +2042 + +6997 + +5789 +3955 +1598 +6997 +6868 +5148 +8076 +3007 + +7440 +3774 +4595 +6827 +6415 +5796 +8252 +5947 +3757 + +2786 +1528 +1920 +5923 +1861 +4262 +2462 +5137 +4527 +3451 +1820 +4515 +3091 +4370 + +5231 +5724 +8463 +5867 +7776 +1405 +4873 + +5570 +13574 +9971 +12111 + +38253 + +68706 + +3270 +8365 +4604 +1469 +4885 +11781 +4510 + +3705 +1806 +5869 +3487 +1970 +4648 +2254 +1714 +4678 +4610 +1851 +4992 +4037 +1438 +3186 + +7501 +2667 +6548 +10978 +1759 +5718 +7887 + +15685 +17651 +15879 +16407 + +2727 +7036 +2483 +6244 +8733 +6191 +6852 +7568 +6863 +1571 + +4016 +1348 +4466 +4713 +1777 +2707 +3959 +3141 +1027 +2876 +5167 +1349 +1531 +4604 +1631 + +1492 +1616 +2617 +4184 +2209 +2463 +3843 +3106 +3969 +5790 +5086 +2469 +5461 +2426 +2936 + +7818 +2394 +6102 +3210 +7205 +2378 +4621 +6839 +4375 + +4882 +2275 +2673 +3927 +1801 +1181 +4223 +2134 +1414 +3513 +1930 +4218 +1030 +5153 +5631 + +7855 +8703 +8604 +3507 +8327 +2473 +6072 +2616 +8550 + +7761 +22778 +22679 + +21461 +18458 + +5893 +11132 +10226 +13071 +4987 +7773 + +8890 +9352 +8432 +7618 +3971 +9680 +2787 +9849 + +9239 +10126 +5646 +10227 +2786 +8177 +2412 +7063 + +13769 + +2805 +4241 +5027 +7401 +3809 +6649 +4261 +5625 +5349 +6866 +2935 +2487 + +15077 +16612 +11447 +13677 + +1812 +17170 +24913 + +7213 +5812 +5693 +5653 +11687 +7312 +4465 + +6447 +14207 +18951 + +38602 + +34832 + +5562 +1835 +2126 +1130 +2669 +3051 +3105 +4356 +4789 +3909 +5162 +5597 +2452 +4462 +2074 + +5046 +2712 +2027 +6702 +4395 +4134 +7460 +2079 +5308 +3774 +5925 +1420 + +5103 +2566 +5237 +2763 +3102 +2628 +3626 +4125 +3675 +5186 +5116 +5401 +1592 +2347 +3946 + +9256 +2589 +6950 +8214 +2216 +9494 +7900 +4317 +2246 + +37600 + +11146 +9884 +13530 + +1518 +3963 +4415 +5577 +4663 +1243 +7552 +3866 +6343 +6301 +1019 + +2667 +7079 +2560 +6437 +7190 +5421 +5409 +1951 +2801 +6925 +3310 + +13352 +9266 +5773 +7103 +13283 +3512 + +2329 +4814 +4002 +5247 +4074 +5463 +5404 +3785 +1671 +2970 +3619 +5702 +4895 +3947 +1567 diff --git a/2022/input/1/test b/2022/input/1/test new file mode 100644 index 0000000..51a384d --- /dev/null +++ b/2022/input/1/test @@ -0,0 +1,16 @@ +24000 +45000 +1000 +2000 +3000 + +4000 + +5000 +6000 + +7000 +8000 +9000 + +10000 diff --git a/2022/src/bin/day1.rs b/2022/src/bin/day1.rs new file mode 100644 index 0000000..a0e0943 --- /dev/null +++ b/2022/src/bin/day1.rs @@ -0,0 +1,41 @@ +use aoc::Solver; + +pub struct Day {} +fn main() { + Day::solve(); +} +#[test] +fn part1() { + Day::test(aoc::Part::ONE); +} +#[test] +fn part2() { + Day::test(aoc::Part::TWO); +} + + +impl aoc::Solver for Day { + fn day() -> u8 { + 1 + } + fn part1(input: &str) -> u32 { + input.split("\n\n") + .map(|elf| elf.split("\n") + .flat_map(|snack| snack.parse::()) + .sum()) + .max() + .unwrap() + } + + fn part2(input: &str) -> u32 { + let mut elfs: Vec = input.split("\n\n") + .map(|elf| elf.split("\n") + .flat_map(|snack| snack.parse::()) + .sum()) + .collect(); + + elfs.sort_by(|a, b| b.cmp(a)); + + elfs.iter().take(3).sum() + } +}