From 8e83830b1d0e59d3f9724891b2e6640087f14930 Mon Sep 17 00:00:00 2001 From: Ishan Jain Date: Fri, 2 Dec 2022 11:12:08 +0530 Subject: [PATCH] Added Day 2 part 1 --- inputs/input.txt | 4738 ++++++++++++++++++++++++--------------------- inputs/sample.txt | 19 +- src/main.rs | 64 +- 3 files changed, 2552 insertions(+), 2269 deletions(-) diff --git a/inputs/input.txt b/inputs/input.txt index 845da24..d16510d 100644 --- a/inputs/input.txt +++ b/inputs/input.txt @@ -1,2239 +1,2501 @@ -5118 -5554 -4186 -4729 -1242 -4360 -1427 -5312 -6012 -1017 -5581 -5203 -3811 -4945 -3960 - -3812 -7757 -4448 -2205 -15715 - -4164 -6482 -4479 -3061 -4082 -2474 -1175 -1918 -4755 - -4056 -5122 -11426 -5529 -3659 -9592 -10257 - -3435 -3106 -4933 -2695 -3107 -6567 -5579 -1463 -5734 -4547 -4532 -2152 -5132 - -6074 -11600 -4337 -3444 -7637 -6725 -1189 - -5637 -1226 -7068 -6290 -4411 -3858 -6677 -1858 -2840 -1175 -5056 -6569 - -32887 -19643 - -4951 -2276 -4300 -4473 -1895 -5251 -1770 -4623 -4602 -4925 -1769 - -68012 - -5760 -2687 -3192 -2730 -4867 -4723 -2591 -1677 -4458 -4388 -6038 -3127 -6416 -3048 - -2485 -1630 -1595 -2864 -2125 -3852 -2216 -3883 -4293 -4165 -2762 -4016 -2508 -1396 -4541 - -5918 -6874 -6644 -4024 -3229 -1318 -1851 -1566 -1035 - -7625 -1369 - -3894 -18802 -1362 -12368 - -10251 -6249 -2784 -9394 -5932 -5610 -7201 -9922 - -10994 -10092 -4121 -2966 -1178 -2235 -9379 - -2592 -1895 -1740 -4357 -5314 -1068 -2228 -3775 -3949 -7162 -3078 -1450 - -9484 -1796 -8055 -7901 -9323 -1982 -2517 -8358 -2614 - -18536 -23454 -12107 - -6703 -6966 -1086 -7022 -3487 -3871 -2568 -6441 -1216 -2105 -5100 -2945 - -3268 -4866 -3569 -4374 -3666 -2477 -3263 -1312 -5121 -6592 -5337 -1417 - -17864 -11775 -1345 -11675 - -6636 -1678 -3982 -4552 -2719 -2736 -1342 -6375 -2671 -1541 -1093 -5538 - -21177 -36871 - -4608 -5474 -5004 -3229 -2744 -1577 -2182 -4518 -4930 -1986 -5776 -5023 -2070 -5342 -1952 - -13940 -15506 -13799 - -3672 -3303 -4866 -5507 -5282 -5768 -2847 -2214 -1688 -2255 -4302 -4962 -4585 -4285 -3602 - -4766 -4358 -4532 -10741 -13311 -2271 - -3073 -5990 -8256 -3692 -4658 -4561 -6347 -3260 -6938 -8643 - -5261 -1524 -1671 -3277 -2326 -5603 -5837 -1638 -5104 -3696 -1910 -2319 -2305 -1373 -4801 - -2593 -3527 -1517 -4626 -2003 -4414 -4677 -2282 -3000 -1457 -3530 -5344 -1890 -1703 -1268 - -9002 -7173 -3848 -6891 -1741 -5303 -1670 -1342 -1865 - -10319 -10539 -2972 -4667 - -4318 -1366 -1430 -5003 -2691 -7117 -3015 -6516 -6895 -1618 -3189 -6739 - -2494 -7140 -2905 -8784 -8727 -4711 -2284 -6894 -7030 -1688 - -1853 -7351 -7815 -3222 -8276 -1461 -5028 -8048 -5534 - -12546 -6236 -20372 - -2778 -5745 -2783 -5774 -4508 -3691 -6097 -4637 -5643 -5902 -1166 -1208 -3983 -5030 - -3767 -2558 -3988 -1056 -6570 -5437 -1920 -2822 -9126 - -3173 -3242 -5762 -4311 -5206 -3892 -4978 -5065 -1319 -2577 -1347 -3232 -1915 -5986 -3536 - -2308 -2812 -1119 -3845 -4589 -4779 -1503 -3613 -1576 -3827 -1468 -1533 -5896 -4981 - -9740 -16395 -19471 -12882 - -4779 -7293 -12593 -15897 - -36970 - -2386 -1094 -2957 -4452 -4005 -2723 -1124 -3533 -2671 -1701 -2508 -3075 -4741 -1471 -3416 - -37202 - -5272 -2736 -4756 -2235 -4679 -4093 -1773 -4088 -2419 -3192 -4429 -3959 -5230 -4342 - -8514 -11430 -5023 -9565 -3726 -11026 -6334 - -6563 -2638 -12569 -3458 -5449 -1216 - -1320 -4708 -1627 -4189 -3962 -1463 -2628 -5667 -5494 -6105 -4925 -3540 -1613 -2288 - -5974 -7710 -5200 -4859 -2346 -5619 -1337 -4814 -1359 -3020 -1798 - -2744 -1957 -10669 -4877 -3507 -7657 -7748 - -1021 -4297 -1689 -6925 -16175 - -7147 -11617 -5654 -11861 -6065 -3090 -1744 - -3782 -6658 -2389 -4339 -2312 -7245 -2039 -3411 -6251 -1778 -2345 -5814 - -13113 -10123 -18700 -6991 - -16138 -11645 -18610 - -9586 -6653 -1001 -4547 -2891 -2726 -7618 -5679 -1567 - -2380 -1858 -1059 -1160 -5115 -2588 -1969 -2629 -5525 -5831 -2139 -5469 -2783 - -10606 -4518 -9057 -5905 -4187 -4693 -4396 -2191 - -4374 -4407 -1083 -7787 -7716 -7505 -10096 -10650 - -5809 -4387 -3426 -3730 -3699 -4944 -4176 -2681 -5197 -1325 -5920 -4957 -5876 -5345 - -20155 - -1243 -11423 -13133 -4539 -4880 -4276 - -1073 -1316 -1841 -5102 -1196 -4847 -1293 -2424 -2345 -2298 -4214 -4215 -5760 -5775 - -4542 -1152 -5164 -5642 -2069 -1419 -5614 -7343 -1507 - -2840 -3922 -3563 -1856 -5216 -4886 -3794 -4637 -1826 -3520 -5582 -4602 -2442 -3631 -4946 - -7956 -3248 -7897 -7846 -2054 -5576 -3753 -3378 -1899 -3490 -6142 - -9837 -10901 -15019 -1735 -5306 - -3246 -2485 -5573 - -2722 -2084 -18774 - -7940 -10855 -8498 -5547 -13550 -4239 - -1857 -7355 -4374 -6798 -2341 -13128 - -14215 -9770 -2447 -1035 - -8426 -1873 -4518 -2812 -7611 -2465 -4770 - -8166 -19955 -6472 - -10884 -11212 -1463 -2716 -1796 -12003 -1240 - -2802 -2639 -3268 -2492 -6676 -8851 -4054 -9603 -5354 - -1483 -3080 -6696 -8713 -6856 -4796 -7728 -4600 -3616 -8565 - -26580 -15329 - -6074 -15758 -5707 -13583 -2595 - -4957 -9125 -6534 -8684 -1728 -3690 -7983 -4131 -8907 - -12147 -15776 -14765 -17316 - -27492 -12173 - -5967 -1170 -7896 -7865 -7945 -2261 -2026 -1751 -3988 -3759 -5258 - -20764 - -7020 -7441 -8780 -6111 -3483 -8606 -4547 -8153 -3543 -6791 - -5397 -4408 -1572 -2315 -3376 -2021 -1140 -2876 -5045 -6034 -4404 -5705 -3814 -3981 -3814 - -6836 -3601 -7452 -8519 -2302 -2382 -8481 -1455 -7154 -6565 - -2077 -5139 -5462 -1508 -2094 -4850 -1688 -4382 -1991 -2297 -1930 -4720 -4995 -2891 -1967 - -2201 -3673 -9817 -7417 -1283 - -4988 -3052 -2258 -6022 -3678 -2938 -7073 -6437 -2402 -5973 - -2492 -4592 -1501 -4818 -3141 -3470 -2821 -4367 -4952 -2779 -2237 -4283 -5625 -2935 - -2422 -5273 -4053 -4471 -1343 -1128 -4538 -4328 -2974 -3674 -4155 -5472 -3520 -2427 -4145 - -19383 -13539 -9822 -2453 - -2244 -3506 -2573 -3837 -1725 -5081 -4668 -4438 -2414 -1446 -1862 -2453 -2049 -4867 -5438 - -16970 -5265 - -7417 -8051 -7490 -1175 -11316 -4219 - -1065 - -6974 -1232 -6746 -3660 -3883 -5403 -3793 -4956 -4253 -2237 -5815 - -6537 -4906 -11084 -7541 -10019 -5164 -11601 - -4215 -4216 -1160 -2096 -1453 -6271 -5534 -4353 -6423 -4060 -6811 -4701 -3383 - -2138 -12998 -19743 - -8678 -6328 -6426 -7184 -8008 -7896 -5365 -9506 -1955 - -1498 -19856 -7833 - -17023 -7023 -21278 - -2110 -5542 -7191 -6509 -8813 -5236 -7771 -9593 -1262 - -11625 -19032 -17458 - -5266 -4751 -7950 -2185 -7837 -5710 -2053 -7332 -7422 -6356 - -5781 -1330 -2974 -2628 -7407 -7339 -3767 -5411 -3400 - -5330 -3441 -6203 -5272 -5867 -6034 -3167 -2187 -6006 -6614 -1089 -2485 - -3792 -4129 -1207 -1121 -3599 -6143 -4394 -5550 -1488 -2675 -6064 -1527 -4429 - -1606 -1129 -5426 -5260 -3827 -5595 -2286 -1974 -7525 -1290 -4569 - -2181 -5045 -7730 -5502 -5467 -7720 -1780 -4553 -1188 -4213 - -2565 -10635 -12032 -3283 - -9902 -2896 -9653 -6296 -2656 -11583 -5835 - -4932 -4548 -3832 -2377 -3371 -2612 -1907 -3494 -4567 -3130 -3375 -2750 - -7757 -1033 -8201 -13544 -13481 - -3382 -12952 -9450 -4982 -13966 - -4691 -3678 -1026 -7359 -1885 -1245 -5281 -8602 -6744 - -13041 -9202 - -3621 -3558 -2279 -2854 -6415 -5368 - -1102 -5319 -5768 -1990 -2526 -1900 -6294 -4744 -3655 -5011 -3092 -2697 -3864 - -12013 - -27776 -14644 - -5434 -1501 -1439 -4972 -1365 -6076 -1428 -6291 -6020 -5509 -3835 -2571 -6308 -1483 - -3972 -9357 -8383 -11037 -9557 -10966 - -8344 -1761 -10183 -4200 -3936 -5778 -9722 -1298 - -3962 -2611 -7361 -1156 -2522 -2462 -4249 -5127 -1443 -5989 -2942 - -5384 -7053 -2194 -11964 -5937 -7708 - -3052 -3192 -3224 -5708 -2120 -5756 -6107 -1198 -5519 -3803 -1169 -2903 -5942 -4376 -3675 - -11517 -9051 -2084 -4508 -4197 -7219 -9902 - -4566 -5562 -4263 -1970 -1965 -1333 -1601 -2665 -3443 -5463 -4981 -3792 -2588 -3282 - -1243 -3604 -4947 -1044 -6962 -2276 -2828 -6334 -2508 - -1339 -3050 -10158 -2095 -7779 -5165 -9420 -6101 - -4512 - -3273 -2248 -2082 -12415 -13944 - -5638 -5204 -3327 -1361 -3775 -3421 -7597 -1917 -1802 -3896 -4058 - -1901 -1813 -7388 -3861 -6838 -6154 -5500 -3086 -6403 -3654 -7471 -6904 - -1932 -1303 -1930 -1720 -5505 -1595 -2260 -5629 - -38957 - -4629 -3672 -3629 -5011 -5182 -3952 -2295 -4943 -2644 -2851 -5894 -4654 -5257 -3972 - -48469 - -3481 -1398 -3837 -2611 -3330 -3229 -7619 -4106 -6816 -3486 -2763 - -6591 -2522 -6262 -5458 -3025 -2804 -6403 -1390 -2964 -3081 -3449 - -6408 -3223 -4302 -1079 -5836 -5580 -1538 -2616 -3850 -5272 -3688 -2381 -5775 -5497 - -1891 -1448 -4283 -5965 -2726 -1425 -5399 -2795 -1583 -2489 -5171 -3133 -2547 -5117 -3092 - -11463 -11581 -6972 -5410 -3675 -8578 -4283 - -1398 -1747 -1341 -5365 -5086 -2268 -4544 -5286 -5910 -1393 -4580 -4726 -1123 -3949 -1223 - -7526 -3223 -5495 -7184 -10259 -7681 -4795 - -7168 -6278 -7939 -3829 -3670 -7969 -4917 -7406 -9035 - -5687 -4872 -2967 -10772 -9196 -6207 -6244 -2801 - -3500 -1786 -1517 -1585 -4536 -2645 -5249 -4808 -5681 -4591 -5595 -2751 -3336 -1615 -2200 - -6894 -4752 -1794 -6507 -2184 -5589 -3016 -4532 -2321 -6843 -2909 -2104 -4065 - -24126 - -3293 -8274 -1297 -4841 -4653 -1817 -1972 -6169 -1001 -7070 - -6969 -5331 -4779 -5316 -5249 -3315 -4355 -3596 -3868 -5647 -1110 - -5235 -5846 -5619 -6259 -4372 -2600 -7526 -3962 -3840 - -4260 -4484 -6361 -4276 -6344 -4776 -1173 -1884 -4572 -1411 -5230 -3976 -1800 -2426 - -19185 -15235 -19905 -8664 - -3346 -7532 -8840 -2182 -10048 -4181 -5030 -8078 - -2080 -2279 -6250 -3388 -6097 -4607 -6262 -4259 -3261 -4653 -3338 -7025 - -1138 -2851 -5912 -8592 -7341 -3596 -7669 -1030 -7624 - -6551 -6753 -7807 -4296 -3515 -6873 -5010 -8497 -1742 -5767 - -8921 -7840 -9067 -3809 -4347 -2876 -3886 -9982 - -11455 -10295 -15198 - -1574 -4240 -4052 -1739 -5701 -8449 -5055 -3893 -2700 - -3864 -4306 -4190 -1165 -1708 -5705 -5654 -6753 -3840 -4139 -2121 -5735 - -1662 -3541 -2480 -6124 -3355 -5737 -5537 -6806 -7953 -1109 - -14180 -15876 -25965 - -7732 -33422 - -5918 -5146 -6768 -9366 -1687 -1440 -3115 -1065 -6514 - -2316 -4905 -2945 -5351 -6196 -6207 -5751 -3811 -4765 -1419 -5253 -1616 -2274 -6363 - -5125 -2491 -5057 -2749 -1586 -4997 -5249 -3944 -3964 -3845 -2457 -5972 -5313 -6453 - -30602 -6865 - -4413 -1651 -6256 -6524 -3466 -1160 -4599 -6477 -2681 -1855 -4785 - -6435 -5377 -6008 -1744 -5182 -4469 -3999 -2913 -3367 -3233 -2369 -1712 -5408 -4622 - -4201 -5475 -1117 -2679 -2649 -1446 -4043 -1136 -3750 -4523 -3800 -3245 -3179 -6183 - -7682 -7213 -5144 -1557 -5579 -5005 -6307 -5906 -7244 -6230 - -1205 -2764 -3576 -5212 -1723 -4138 -1801 -1772 -4809 -1429 -2010 -3093 -4435 -2268 -4904 - -4386 -6822 -1865 -3688 -6771 -5433 -1430 -4870 -6745 -5758 -4456 -6549 -6203 - -2413 -3287 -3376 -5780 -1190 -1177 -1577 -4375 -5558 -5117 -6773 -2483 -4436 - -5870 -4195 -5932 -1117 -5072 -4581 -6922 -2695 -3134 -2021 -3327 -5538 -2324 - -2609 -4270 -5809 -1096 -6794 -3530 -3222 -4881 -3806 -2887 -7158 - -2989 -5279 -6821 -2474 -3144 -8621 -3854 -5012 -1144 -1354 - -9033 -7624 -5535 -2433 -1433 -5568 -8161 - -5691 -5394 -3445 -4619 -1703 -6197 -2113 -4277 -2506 -3380 -6039 -6423 -6429 - -23751 -4571 -7508 - -9674 -3084 -3612 -3841 -3555 -8146 -6263 -7746 -3586 - -7907 -6263 -2320 -4430 -15429 - -2825 -2248 -7184 -3650 -1008 -5219 -5600 -2610 -7357 -5113 -1039 -2019 - -2167 -4159 -6290 -3757 -10133 -1345 -7250 -10590 - -6712 -5361 -3243 -6239 -1667 -2699 -5389 -1400 -1334 -2382 -1604 -3256 -2439 - -6520 -1478 -3049 -6452 -6899 -1850 -2466 -3485 -3020 -6683 -8000 - -7715 -6597 -5588 -2062 -6732 -3811 -10470 - -4793 -1206 -6481 -11715 -8827 -3174 - -3492 -1535 -2603 -5877 -4937 -6805 -1620 -9488 -1593 - -2182 -8258 -3319 -5499 -6257 -1466 -6435 -8334 -1140 -6764 - -15599 -28121 - -5804 -6653 -1670 -7337 -4711 -8303 -10073 -6327 - -2754 -2040 -2295 -8503 -2231 -11685 -6556 - -16325 -4057 -11110 - -6482 -2035 -5189 -6641 -4232 -1100 -1088 -2779 -2220 -3078 -2847 -6009 -1981 - -8655 -8687 -7225 -4133 -4449 -7193 -4009 -7455 - -2014 -2691 -1207 -1140 -6736 -4780 -2781 -2855 -5056 -3590 -2372 -6188 - -6779 -4130 -5169 -5726 -1503 -1520 -8302 -3054 -3037 -6190 - -6862 -7039 -1305 -4226 -5769 -5068 -8362 -7612 -6856 - -17695 -18988 -3757 -15137 - -5268 -3234 -2073 -1529 -1190 -5659 -7316 -3075 -4191 -6111 -2582 -7122 - -9316 -2087 -2980 -12121 -1703 -6661 -4286 - -20694 -6712 -15401 - -4342 -3838 -3208 -2372 -1410 -1648 -2342 -6113 -5573 -6091 -2624 -1749 -5643 -4258 - -2303 -2178 -3449 -3150 -3825 -3673 -1326 -6377 - -10398 -3801 -11714 -7455 -3382 -6182 - -27882 - -6667 -3268 -11915 -7045 -10478 -10538 -2287 - -5694 -5516 -6094 -4909 -5685 -4931 -5949 -6361 -6476 -6439 -1667 -5691 -3883 -3307 - -9977 -7477 -6533 -9766 -4576 -2051 -1376 - -5966 -7654 -5784 -2727 -7568 -4600 -2150 -1333 -6583 -4119 -2648 - -11274 -8674 -4155 -2163 -1897 -6579 -11099 - -2751 -4530 -5488 -1491 -2456 -2752 -1767 -6113 -7730 -7127 - -8657 -6947 -4803 -5103 -4373 -9501 -1486 -5689 - -4382 -5176 -2533 -6017 -6100 -4935 -1841 -4530 -6120 -4735 -3438 -3305 -5324 -2814 - -41401 - -20975 -30628 - -2099 -5390 -4829 -5845 -2674 -1029 -3312 -3412 -3402 -5544 -4773 -5274 -2458 -4309 -2741 - -4345 -7095 -7361 -2171 -6003 -5069 -1941 -2473 -2116 -6508 -6491 -7227 - -8137 -8052 -5372 -1086 -2369 -5763 -8937 -9055 -1208 - -4359 -3906 -5012 -2086 -4937 -4239 -3390 -3280 -4948 -3906 -6387 - -6430 -11071 -1179 -6918 -12028 -1855 - -11059 -14754 -15751 -15821 -9411 - -8722 -1104 -7422 -9229 -7919 -6200 -2274 -2980 -5686 - -3277 -4325 -9477 -9651 -4798 -8742 -4308 -6656 -6746 - -5777 -6805 -4337 -4847 -4966 -3525 -2729 -6611 -3070 -3734 -1957 -1360 -1678 - +B Y +A X +B Y +A Y +A Z +B Y +B Z +C Y +A X +C X +A X +B Y +C Y +B Y +B Z +C X +C Z +A X +B Y +C Z +C Y +B X +B Y +A X +B Z +B Z +B Y +C Z +B X +B Z +C X +B Y +B Y +B Y +B Y +C X +C X +B Z +C X +B Z +C X +B Y +C X +B X +B Z +B Y +C Y +B Y +A X +B Y +B Y +C Y +B Z +B Y +B Z +C Y +B Y +A X +C X +C Y +B Y +A Z +A Z +A X +B Z +A X +A X +B Z +C Y +C Z +B Z +B X +C Y +B Y +C Y +C X +C Z +A X +B X +B Y +B Z +B Y +A X +B Z +B Y +B Z +B Z +B Y +A X +B Y +C X +A X +B Y +C X +A X +C Y +B Y +C Z +A X +B X +C X +B Z +A X +B X +B Y +B Y +B X +B Z +B Y +C Y +B Y +B Y +A X +C Y +C X +B Y +B Y +C Y +B Y +B X +B Z +B Y +B Y +C Y +B Z +B Y +B X +A X +B Z +A X +A X +B X +B Z +B X +B Y +B Y +B Y +B Y +C Y +C X +C Y +B Y +B Z +B X +B Z +C Z +C X +B Z +C X +B Y +C X +C Y +B Z +C X +C X +B Z +B Y +B Y +B Y +B Y +B Y +B Y +A X +A X +B Y +C X +B Y +B Z +B X +B Z +A Z +A X +C X +B X +A X +A X +C Z +A Z +B Y +A X +C X +C Y +C Y +A X +B Y +A X +B Z +C X +B Z +B Y +B Y +A X +C X +C X +B Y +A X +A X +C X +B Z +B Y +A X +A X +B Y +B Y +B Y +B Y +C X +B Z +B Y +B Y +A Y +B Y +B Z +A Y +B Y +C Y +B Z +B Y +B Y +C Z +A X +B Z +C X +C X +B Y +B Z +B X +A X +B X +B Y +B Z +B Z +B Z +B X +B Y +B Y +C Z +A X +C X +B Y +B X +C Y +B Y +B Y +A X +B Z +B Z +B Y +B Y +B Z +B Y +C Y +C Y +B Y +B Y +B Y +A X +A X +C Y +C Z +C Z +A Y +C Y +B Z +B Y +B Y +C Y +A X +B X +A Z +A Y +B Y +C X +B X +B X +A X +B Y +B X +C Y +B Y +B Y +B Y +B Y +B X +B Y +C X +C X +A X +B X +B X +B Y +C Y +B Z +C Y +B X +C X +C Y +B Z +C Z +A Y +B Y +A Z +B Z +C Y +A Z +B Y +C X +B Y +B Z +B Y +A X +B Y +B Y +C Y +C Y +A X +B Y +A X +C Y +B Y +C X +A X +C X +B Z +B X +B Y +B Y +B Y +B Y +B Y +C Y +A Z +C X +B X +B Z +B Y +B Y +B X +B Y +B Z +B Y +C Y +B Y +B Y +B Y +B X +B Y +B X +A Z +B Z +C Y +B Y +B Z +B X +B Z +A X +B Y +A X +B Z +B Z +C Z +B Y +B Y +B X +B Y +B Y +C X +B Z +B Z +B Y +B Z +B Y +B Z +A X +C X +C X +B Y +C Z +B X +B X +B Y +C X +C Y +B Y +C X +C Y +B X +B Z +A X +B Z +B Z +C Y +B Z +C X +B Y +C X +A X +A X +C Z +C X +B Y +C Y +B Z +C X +A X +C Y +B Z +B Y +C X +C Z +B X +A X +B Y +A X +B Y +C X +B Z +C Y +C X +B Z +B Z +B X +C Z +B Y +B Z +C X +B Y +B Y +B Y +C Z +B Y +B X +B X +C Z +B Z +A X +B Y +B Z +B Z +C Y +C Z +A Y +B Y +B Y +A X +B Y +C Z +A X +C X +B Z +C X +B Y +B X +B Y +B Y +C Y +A Z +B Y +C Z +B Z +C Z +B Z +A Y +A X +B Z +B Y +B X +B Y +B X +C X +C X +C X +B Y +C Y +B X +B Y +B X +C Y +A Z +B Z +B Y +B Y +B Y +B Y +C X +C X +A X +B Y +B Z +B Z +C Y +B Y +A X +C Y +C Y +B X +B X +A X +C X +C Y +B Z +A X +B Z +C X +B Y +B Y +C Y +B Y +C Y +A Y +B Y +B Y +B Z +A X +B Y +B Z +C X +B Z +B Z +B Y +B Y +B X +B Y +C Z +B Z +B Y +B Y +A X +B Y +B Y +B Y +B Y +B Y +B Y +C Y +B Z +B Y +C Y +A Z +C Y +B Y +C X +C Y +C Y +B Z +B Z +C Y +C X +B Z +B Y +B X +A X +A X +C X +B Z +C X +B Z +A X +B Y +B Y +C Y +A X +B Y +B Y +A X +A X +A Z +C Z +C X +A X +B Z +B Y +C Y +C Y +C Z +B Y +A X +B X +B Y +C X +C Y +B Z +C Y +B Y +B Y +B Y +B Z +B Z +B Y +B Y +C X +A X +B X +B Y +A X +B Y +B Z +B X +C X +B Y +B Y +B X +B Y +C Y +C Y +B Y +B Y +B Y +A X +C Y +B Y +B X +C Y +A X +B Y +A Y +A Z +B Z +B X +A X +C Y +C Y +B Z +A Y +B X +B Y +A X +C X +B Y +C X +B Z +B Z +C X +B Y +B Z +B Y +B Y +B Z +B Y +B X +B Z +C X +A X +C Y +C Y +B Y +B Z +A X +B X +C Y +A X +A X +A X +C X +B Z +B Y +C Z +B Y +B Y +C X +B Y +A X +A X +B Y +B Z +C X +C X +C X +A X +B X +C Z +C Y +B Y +C X +C X +B Y +B Y +C Z +A Z +A X +B Y +B X +A X +A X +B Y +B X +B Y +C Y +A Y +C X +B Y +B Z +B Y +B Z +C Z +B X +B Y +A X +B Y +B Y +C Z +A X +B Y +B Y +B Y +A X +C Y +A X +B Y +C X +C Y +C X +B Y +B Z +B Y +B Y +C X +C Y +B Y +C X +C Y +B Y +B Z +A X +A Z +B Y +C X +B X +B Y +C X +A X +A X +C Y +C Z +C X +C Y +A Y +C Y +C Z +C X +B Y +C X +A Z +B X +C X +B Y +B Z +B Z +B Y +C Y +B Z +B Y +B Z +A X +C X +B Z +C X +B Z +C X +C Y +C Y +C Y +B X +C Z +B Y +B Z +B Y +C Y +B Y +A X +B Y +C X +A Y +A Z +A X +B Y +C X +B Z +B Z +C X +A X +B Y +A Z +B Y +C X +B Z +B Y +C X +A X +B X +C Y +C Z +C Y +C Y +A X +B X +B Y +C Y +B Y +A X +B Y +B X +B Y +A X +B Y +B X +C Z +B Y +C X +B Y +A X +B X +B Z +B Y +A X +C X +B X +C X +B Y +A X +C X +B Y +A X +B Y +B Y +A X +B Y +B Z +A X +B Y +B X +C Y +B X +B Z +C X +B Y +C Z +B Y +C X +C X +A X +B Y +C Z +B Z +B Y +B Y +B Z +B Y +B X +B X +B Z +C Y +C Z +B Y +A X +B Y +B Y +C X +C X +B Z +A X +B Y +B Y +B Y +C X +B Y +B Y +C Y +B Z +C X +B Z +B X +B Y +C X +C X +A X +C X +B Y +C Y +B Y +C Z +A X +B Z +B Y +B Y +B Y +C X +C Y +B Y +B X +C X +B Y +A X +B Y +C X +A X +A X +C Y +B X +B X +B Z +B Z +B X +C Y +B Y +B Y +B Y +C X +C Y +B Z +B Z +C Z +B Y +B Y +A Z +C Y +C X +B Z +A X +A X +C X +A X +B X +B Y +B Z +B Y +A X +B Z +B Z +B Y +B Y +C Z +A X +C Y +B Y +B Y +B Z +B Y +C X +B Z +A X +B X +A X +B Y +C X +A X +C X +B Y +A X +C X +B Y +A X +B X +A Y +B Y +B Z +C Z +B Y +B Z +C X +B Z +B Y +C X +B Y +B Y +B X +A X +A Y +A X +B Y +B X +C X +B Y +B Y +B Z +C Y +A X +B Z +A X +A X +A X +A X +C Y +B X +C X +C X +A X +B Y +C Y +A X +A X +C Y +C X +C Y +B Y +B Z +A X +B Y +B Y +B Z +B Y +B X +C Y +C X +C Y +C X +B Y +A X +B Y +A X +C Y +C X +C Y +C X +C Y +B Y +B Y +A Z +A X +A X +B Z +A X +B Y +B Y +A X +A X +C Y +C Y +C Y +A X +B X +C X +B Y +A X +B X +B Y +C Y +A X +B X +B Y +B Y +B Y +C X +C X +B Y +B Y +A Z +B Y +A X +B Y +B Y +B Y +B Y +A X +B Z +C X +B Z +B Z +C Y +B Z +A X +A X +B Y +A Y +A X +A Z +C Y +C X +C X +C Z +C X +C Y +B X +B Y +A X +B Y +A X +C X +B Y +A Y +B Y +B X +B Y +A X +B Y +B Z +B Z +B X +B Z +C X +A X +B Y +B Y +B Y +A X +C X +C X +C X +B Y +C Y +A X +B Y +C Y +B X +B Z +A X +B Y +A X +C X +C Y +C Y +B Y +C Y +C X +B Z +B Y +B Y +A X +A X +B Y +B Y +B Z +C X +C X +C Y +C X +C Z +A Z +C X +B Y +A Z +B Y +A X +B Y +C X +B Y +B Y +B Z +C Y +B Y +A Z +A X +A X +C X +A Y +B Y +B Y +A X +A X +B Z +B Z +B Y +C X +C Y +C Z +A Z +B Z +A X +A Z +A X +C Y +C X +A X +A X +C Z +C X +A X +C Y +C X +A X +B Z +B Z +B Y +B Y +B Y +B Y +B Y +C Y +C X +B X +C X +B Y +B Y +A X +B Y +A X +A Y +B Z +B Y +A X +A Y +B X +B Y +C Y +B Y +C X +C Z +B X +B Z +B Y +C Z +B Y +C Y +A X +B Y +B Y +B Y +B Z +C Y +A Z +C X +B Y +B Z +C X +B Y +A X +C Y +B X +C X +A X +B Y +B Y +C X +B X +B Y +B Z +B Y +A X +B Y +B X +A X +A X +A X +B Y +C Y +C X +B Y +A X +A Z +B Z +A X +C X +B Y +B Y +C Y +B Z +B Y +C X +C Y +B Y +C Y +B Y +B Y +C X +A X +A X +A X +B Y +B Y +B Y +C X +A Z +B Y +B Z +B X +B Z +B Y +B Y +C X +A X +B Y +B Y +B X +B X +C X +C X +A X +C Y +B Y +C X +B Y +C Y +C X +B Y +C X +B Y +A X +B Z +C Z +C Y +A X +B Z +A X +C Y +C Y +B Z +B Z +A X +C X +B Y +C Z +B X +B Z +B Y +B Y +B Y +C Y +B Y +C X +A X +B Y +C Y +B Y +A X +B Y +B Y +C X +A X +B X +B X +B Z +C Z +B Y +C Y +C Y +B X +C X +C X +B Z +B Z +C X +C X +B Y +C X +B Y +B Y +B Z +B Y +B X +B Y +C X +C Y +C Y +B Y +A X +B Y +A X +C Y +C Z +C X +C Y +B Y +B Y +B Z +B Z +A Y +C X +B Y +B Z +A Z +B X +C X +B Y +B Z +B Y +C X +A X +B Z +C X +B Z +B Z +B Z +B Y +C X +B Y +B Y +B Y +A Z +B Y +B X +C X +B Y +C Y +A Z +B Z +A X +A X +B Z +A X +B Z +A X +A X +C X +C X +A Z +C X +B Z +B Z +B Y +B X +B Y +B Y +B Z +B Y +C Y +A X +C Y +B X +B Y +B Z +C X +A Z +A X +B Y +A X +A X +C X +A X +B Y +A Z +B Y +C Y +A X +B Y +A X +B Z +A Z +C X +B Z +B Y +B Z +B X +A X +B Z +C X +B X +B Z +B Z +C X +C X +C X +B Y +B Z +C X +B X +B Y +C Y +B Z +A Z +C X +B Z +B Z +B X +C Y +B Z +B Y +A X +B Y +B X +B Y +B Y +B Y +B Y +B Z +A X +B Y +B Y +B Y +B Y +C Y +A Z +C X +B X +A Y +B Y +A X +A X +B Y +A X +C Z +B Z +C Z +B Y +C Y +A X +C Y +C Y +C Y +B Y +C Y +B X +B X +C Y +A X +C Y +C X +C X +B Y +B Z +B X +B Z +B Z +B Y +C Y +B Y +C Y +B Y +B Z +B Y +A X +B Y +C Z +B X +B Y +C Z +C X +B Y +C Y +C X +A X +B Y +A X +B X +B Z +B Y +B Z +C X +B Y +A X +B Z +B Y +B Z +B X +B Z +B Z +A X +A Z +B Y +C Y +A X +B Z +B X +A X +A X +C X +B Y +C X +C Z +B Z +B Z +B Y +C Y +C X +B Y +B Y +A X +B Y +C Z +B Y +B Y +C Y +B X +B Y +B Y +B Z +B X +B Y +B X +B Y +B Z +B Z +B Z +B Z +B Z +C Y +B Y +C Y +A Y +C Y +C Z +A X +B Y +C Y +B Y +A X +C Y +B Z +A X +A X +B Z +C Y +B Y +C X +B Z +B Y +A X +B Y +C X +B Y +B Z +A X +C X +B X +B Y +A Y +C Y +C X +B Z +C Z +B X +B X +C Y +A X +A X +B Y +C Y +C X +C Y +B Z +C X +B Y +B X +B Y +C X +B Z +B Z +B Y +C X +C Z +B Y +B Z +B Z +B Z +A Y +B Y +A X +B Z +C X +C Z +A X +B Y +C X +A X +C Y +C Y +B Y +B Y +B Y +B X +B Y +B Y +C X +A X +B X +B Z +C X +B Y +C X +C Y +B Y +A X +B Y +B Y +A X +B Y +A X +C X +A X +B Y +A Y +A X +B Y +C X +C Y +B Z +A X +B Y +C X +A X +B Z +C Y +A X +C X +B Y +C X +C Z +B Y +B Z +C Z +C Y +B Y +B Y +B Y +B Y +B Y +B Y +A X +A X +B X +A X +C Y +B Z +B Y +B Y +B Y +B Y +C X +B Z +A X +A X +B X +B Y +B Z +B Z +B Y +C X +A X +B Y +B Y +B Y +B Y +A X +B Z +C Z +B Z +B Y +A X +A X +B Z +B Y +B Y +B Y +C X +B Z +B Y +B Y +B Y +B Z +C X +A X +B Z +C X +B Z +A X +A X +A X +C X +C X +B Z +C X +C X +C X +B Y +B Y +C X +A X +C X +C Y +B Z +B Y +B Z +A X +B Y +B Z +B Y +A X +B Z +B Y +B Z +A X +B Y +B X +C Y +C Y +B Y +C Y +C X +B Z +B Z +C Y +A X +B Y +B Y +C Y +C Y +A Z +B Y +B X +C X +B Y +C X +C Z +C X +C X +C Y +A X +C Z +C Z +B Z +B Y +A X +B Y +B Z +B Z +C Y +C Y +B Y +B X +B Z +A X +C X +C X +A X +B Y +C Y +C X +B Y +B Z +A Y +B Y +B Y +B Y +B Y +C Y +B Y +C Y +B Z +C Y +B Y +B Z +B Y +B Y +C X +C X +B Z +B Z +B Z +B Y +B Z +A X +A Y +C X +B Z +A X +A X +A X +C Y +A X +B Y +A Y +B Y +B Y +C X +B Y +B Y +A X +B X +A X +B Y +B Y +B X +A X +B X +B Z +C X +A X +B Y +B Z +C Y +C Z +B Y +C Y +C Z +B X +B Y +C Y +A X +B Y +C Y +C X +B X +C X +A X +C Y +C Z +B Y +A X +C Z +C X +B Y +B Y +C Y +C Z +C Y +A X +A X +C Y +A Y +A Z +A Y +C X +C Y +B Z +B Y +B Y +B Z +A X +C X +C X +B Y +A Z +B Y +B X +B Y +B Y +C Y +C Z +A Y +B Y +B Y +B Y +B Z +B Y +C Y +B X +B Y +C X +A X +B X +B Y +B Y +A X +B Z +C Z +C X +B Y +A X +A X +C Y +B Y +A X +B Y +B Y +C Z +A X +A X +B Z +C Y +B Y +B Y +A X +B Z +A X +C Z +B Y +A Z +B Y +A Z +C Z +B Z +B Y +C Z +B Y +C Y +A X +B Y +B Z +C Y +A X +C Y +C Z +B Z +A Z +B X +A Z +C Z +A X +C X +B Y +B Y +B Y +B Y +B Y +B Y +C X +B X +B Y +C X +B Y +C Y +A X +B Y +C X +A X +B Z +B Y +A X +B Y +C X +C X +B Y +A X +B Y +C X +C X +B Y +B Y +B X +C Y +B X +C X +A X +B Y +A Z +B X +B Z +A Z +A X +B Y +C Y +B Y +B Y +B Y +C Z +A X +B Z +C Y +C Y +C X +A Z +B X +C X +C Z +B Y +B Y +C Y +C X +B Y +C Y +B Y +C Y +B Z +C X +B X +B X +C Y +B Z +B Y +B Y +B Z +B Y +A X +C Y +B Y +B Y +B Z +B Y +C X +B Y +C X +B X +A X +A X +C X +B X +B Y +B X +A X +C X +B X +B Z +B Y +A X +A Y +B Y +C Y +B Y +A Z +B Y +B Y +C Y +A X +C Y +B Z +C X +C X +A X +C Y +C Y +A Y +B Y +B Z +B Y +C X +B X +C Y +C Y +A Y +C Y +B Y +B X +B Y +C Y +B Z +C X +B Y +C Y +B Y +B Y +B Y +A X +C Y +A X +B X +B X +C X +C Y +B Y +A Z +B Y +A X +B Z +B Y +C Z +B Y +C X +C X +C X +C X +B X +C X +B Z +A X +C Z +B Y +A X +C Y +A Z +B Y +C Y +B Y +B Z +A X +B Y +B Y +B Y +A X +B Z +C Y +B Y +B Y +B X +B Y +B Y +A Z +C Y +B X +C X +B Y +B Z +B Y +B Y +C X +B Z +B Y +C Y +B Y +B Y +A X +C X +A X +B Z +A X +C X +B Z +A X +B Z +C Z +A X +B Z +C X +B Y +B Y +B Y +C X +B X +A X +B Y +B Z +C X +B X +B Z +C Y +B X +B Y +C Y +B Y +C X +B Z +A Z +B Y +B Z +C X +B Z +B Y +C Y +C Y +A X +C Y +B Y +A Z +C X +C X +C X +B Y +C X +B X +B Y +B Y +A X +A X +B Z +A X +C Y +C X +B Y +C Z +B Y +B Y +C X +B Z +C Y +A X +B Y +A X +A X +B Y +B Y +B Y +B Z +A Z +B Z +B Y +A X +C X +A X +A Z +C Y +A X +C X +C X +A X +C Z +B Y +B Y +B X +B Y +C X +A X +A X +B Y +A Z +C Z +B Z +B Y +B Y +B Y +C Y +C Y +B Y +A X +B Y +B Y +C Z +B Y +A X +C Z +B Y +C X +B X +B Y +B Z +C X +C Y +B Y +B Z +B Z +A X +A X +B Y +B Y +C Y +C X +C X +A Z +C Z +B Y +B Y +A X +B Y +B Y +A X +C Y +C X +C X +C Y +C Y +B X +B Z +C X +B Y +C Y +B X +B Y +A X +C Z +C Y +C Y +A X +C Z +C X +B Y +B Y +C Y +C X +C X +C X +C Z +C Y +A X +B Y +C X +B Y +B X +C X +B Z +C X +C Z +B Z +B Y +A X +B Z +B X +C Y +B X +B Y +B Z +B Y +A Y +B Y +A X +A X +B Y +A X +C X +C Z +B Z +B Y +B Y +B Y +A X +C Z +B Y +C Z +C X +A X +B Y +A X +B Y +C Y +B Y +A X +B Y +C Z +B Z +A Y +C X +A X +A Z +C X +B X +B Y +B X +C Y +B Y +B Y +C Y +C Y +B Y +A X +B Y +B Y +B Y +C X +C Y +B X +B X +B X +A X +B Z +B Y +C Y +B Y +C X +B X +C X +C X +B Y +C X +B Z +B Z +C X +B Y +B Y +B Z +C X +C Z +B Y +A X +A X +A Y +C X +B Z +B X +B Y +B Y +C X +B Z +A X +C X +A Y +A X +C X +C Z +B Y +B Y +B Z +C X +B Z +B X +A Z +C Z +A X +B Y +A X +B Z +A X +B X +B Z +B Y +B Y +C X +B Y +B Y +A X +B Z +C Y +C X +B Y +C X +A Y +B Y +B Y +B Y +B Z +C Y +B Y +C X +B Y +A Z +C X +B X +A X +C Z +B Y +A X +B Z +B Z +C X +A Y +A X +B Z +B Z +B X +B Z +C Z +C Y +B Y +C X +B X +B Y +A Y +C X +B Z +B Y +C X +B X +C X +A X +B Z diff --git a/inputs/sample.txt b/inputs/sample.txt index 993faf8..db60e36 100644 --- a/inputs/sample.txt +++ b/inputs/sample.txt @@ -1,16 +1,3 @@ -1000 -2000 -3000 - -4000 - -5000 -6000 - -7000 -8000 -9000 - -10000 - - +A Y +B X +C Z diff --git a/src/main.rs b/src/main.rs index b0a0e12..f5ae720 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,34 +1,68 @@ -use std::cmp::Reverse; - const INPUTS: [&str; 2] = [ include_str!("../inputs/sample.txt"), include_str!("../inputs/input.txt"), ]; -fn parse(input: &'static str) -> Vec> { +fn parse(input: &'static str) -> Vec<(Move, Move)> { input .trim() - .split("\n\n") + .lines() .map(|set| { - set.split('\n') - .map(|c| c.trim()) - .map(|c| c.parse::().unwrap()) - .collect() + let set = set.trim(); + let (a, b) = set.split_at(1); + + let x = match a.trim() { + "A" => Move::Rock, + "B" => Move::Paper, + "C" => Move::Scissors, + _ => unreachable!(), + }; + let y = match b.trim() { + "X" => Move::Rock, + "Y" => Move::Paper, + "Z" => Move::Scissors, + v => { + println!("{:?}", v); + + unreachable!(); + } + }; + (x, y) }) .collect() } +#[derive(Clone, Copy)] +enum Move { + Rock = 1, + Paper = 2, + Scissors = 3, +} + +fn calc_score(m1: Move, m2: Move) -> i32 { + match (m1, m2) { + (Move::Rock, Move::Rock) => 3, + (Move::Rock, Move::Paper) => 0, + (Move::Rock, Move::Scissors) => 6, + (Move::Paper, Move::Rock) => 6, + (Move::Paper, Move::Paper) => 3, + (Move::Paper, Move::Scissors) => 0, + (Move::Scissors, Move::Rock) => 0, + (Move::Scissors, Move::Paper) => 6, + (Move::Scissors, Move::Scissors) => 3, + } +} + fn main() { for input in INPUTS.iter() { let output = parse(input); + let mut score = 0; - let mut sets: Vec = output - .into_iter() - .map(|c| c.into_iter().sum::()) - .collect(); + for (a, b) in output { + score += b as i32; + score += calc_score(b, a); + } - sets.select_nth_unstable_by_key(2, |c| Reverse(*c)); - - println!("{}", sets.into_iter().take(3).sum::()); + println!("{:?}", score); } }