commit 41b1b887b3888c731e6b6dac21053924da827967 Author: Sebastian Knackstedt Date: Tue Dec 6 11:44:37 2022 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1cdc31a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +.idea +.fleet \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..24fc373 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aoc22" +version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..3c87da9 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,36 @@ +[package] +name = "aoc22" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +name = "base" +path = "src/lib.rs" + +[[bin]] +name = "day1" +path = "src/day1/main.rs" + +[[bin]] +name = "day2" +path = "src/day2/main.rs" + +[[bin]] +name = "day3" +path = "src/day3/main.rs" + +[[bin]] +name = "day4" +path = "src/day4/main.rs" + +[[bin]] +name = "day5" +path = "src/day5/main.rs" + +[[bin]] +name = "day6" +path = "src/day6/main.rs" + +[dependencies] diff --git a/day1.txt b/day1.txt new file mode 100644 index 0000000..3b5b71e --- /dev/null +++ b/day1.txt @@ -0,0 +1,2242 @@ +2936 +2154 +1578 +4820 +5674 +5582 +2392 +6148 +1276 +1783 +2572 +5067 +3526 + +1673 +10546 + +1036 +2765 +2244 +1018 +2363 +6858 +4640 +2614 +2660 +4411 +1118 +6887 + +3965 +3978 +3991 +8557 +3150 +3801 +5310 +1991 +8961 + +8526 +2340 +4983 +3750 +3471 +1564 +4638 +7198 +3127 +5522 + +5417 +3737 +7464 +2219 +5174 +2873 +1650 +3044 +6290 +2640 +5499 + +1946 +3463 +7792 +6268 +2608 +5922 +3812 +2292 +5730 +5798 +2785 + +15448 +14133 +15280 + +32925 +9977 + +31033 +36925 + +7793 +4374 +3042 +3900 +7160 +7472 +6251 +1866 +7489 + +6884 +7643 +3926 +3857 +3326 +7619 +2831 +8489 +8212 + +8447 +1468 +1100 +6492 +9151 +2144 +6579 +1951 +9223 + +28622 + +4166 +2686 +7394 +2773 +5777 +5734 +1164 +1916 +4040 +7119 +1986 +5178 + +3920 +11406 +1982 +1596 +2852 +9750 +5758 + +4860 +10579 +5897 +9117 +2767 +10259 +8488 +1120 + +11037 +16409 + +3114 +5793 +9778 +5873 +4201 +11491 +3555 + +1793 +9922 +21194 + +3578 +4113 +4094 +7777 +4623 +4349 +5554 +8046 +6099 +2934 + +18520 +22405 +22499 + +3978 +20163 +16656 + +4073 +4198 +2156 +5691 +4071 +7596 +5628 +7557 +6776 +3796 + +10611 +1321 +2692 +8966 +1069 +3168 +11061 + +2025 +6601 +2981 +3962 +5499 +3940 +1548 +2094 +5794 +6120 +6393 +5493 +3611 + +2539 +2894 +7029 +7277 +1467 +3123 +6152 +1023 +6351 +6054 +5440 + +2877 +5142 +4862 +4155 +3692 +7854 +6712 +1462 +7198 +1111 +1548 + +3246 +19782 + +13975 +11522 +12604 +1220 +4652 + +1860 +2373 +3595 +6084 +5099 +3484 +5828 +2102 +5249 +3382 +3129 +3963 +2298 + +7770 +4139 +1491 +3495 +5239 +9025 +1745 +2254 +9599 + +20903 + +1009 +3131 +3866 +9099 +9002 +2730 +7083 +4350 +1239 + +61041 + +59008 + +6746 +5100 +2503 +1809 +5988 +6011 +1652 +1291 +4348 +6322 +1982 +4321 + +4090 +7038 +6586 +4222 +8733 +5201 +5132 +5260 +2548 + +5959 +6803 +1420 +4281 +1380 +1566 +6317 +3029 +4666 +4459 +4039 +4104 + +14286 +13187 +11293 +6804 +9011 + +4002 +13481 +6528 +14618 + +5247 +9496 +2951 +8130 +4237 +7737 + +9223 +12089 +12087 +7816 +9441 +10626 + +5465 +3972 +8692 +13696 +11295 + +9724 +17909 +23253 + +3418 +3116 +5056 +1656 +5994 +3336 +4612 +3063 +6783 +2118 +4666 +1343 +5492 + +3910 +4692 +1113 +1799 +5139 +3531 +4893 +2612 +5573 +3298 +1612 +4609 +3372 + +1787 +1838 +2569 +2437 +3770 +2197 +3144 +5940 +6248 +4953 +4674 +3697 +4926 +2660 + +6814 +2923 +1517 +2468 +6726 +2925 +4728 +4433 +6343 +4225 +4081 +4445 +3555 + +6727 +5809 +10250 +7025 +9307 +1102 +7950 + +5769 +5786 +3105 +1538 +1836 +2025 +5583 +1900 +2558 +2418 +3541 +2765 +2474 +4071 + +3368 +6393 +4684 +4010 +7804 +8291 +8889 +2384 +6981 + +2112 +4039 +6338 +2628 +5228 +3427 +1788 +5138 +1891 +4216 +5905 +5629 +4588 + +42033 + +57235 + +3821 +5741 +4265 +2601 +5218 +3592 +1816 +1199 +3577 +4657 +1068 +5495 +1614 +3586 +1894 + +3638 +3088 +6292 +2293 +5310 +5129 +4082 +3982 +2596 +2252 +4279 +5800 +4607 + +5351 +13793 +10195 +5951 +9105 +9951 + +4126 +3798 +1905 +5413 +1956 +2246 +3559 +3993 +2447 +2600 +1478 +5856 +5595 +1416 +3749 + +5758 +2495 +1185 +5261 +4898 +6858 +3304 +5540 +6718 +6596 +4806 +3161 +2222 + +5011 +7613 +8709 +7915 +6889 +12127 +8855 + +3479 +5863 +9234 +9019 +13582 +2978 + +10216 +13081 +5805 +3791 + +6591 +1319 +1901 +6087 +6769 +5230 +3857 +1690 +1471 +6775 +4204 +2166 +1192 + +6571 +9490 +3259 +2326 +5084 +8723 +10744 +8363 + +5693 +5198 +3911 +2606 +3996 +1377 +1248 +5244 +3169 +6347 +4885 +4255 +6175 + +7476 +1656 +24309 + +3801 +5855 +2015 +2516 +1313 +3658 +5344 +2769 +3269 +3797 +6851 +7192 + +1254 +1999 +3039 +5211 +2624 +6505 +3214 +6949 +7036 +7926 +2469 + +17404 +21131 +13342 + +3789 +5360 +2709 +4535 +5734 +5686 +3180 +1711 +1719 +3476 +1747 +3526 +3642 +3528 +2035 + +5978 +6149 +7455 +2176 +6878 +2191 +1291 + +2498 +7020 +7297 +4930 +1920 +6770 +4661 +4429 +1639 +5593 +4552 +6441 + +1804 +8012 +2515 +4692 +3062 +2261 +6532 +6486 +3061 +4968 +1284 + +3640 +9961 +4058 +3247 +12036 +5775 + +5253 +5478 +2337 +5508 +4905 +5950 +5556 +1425 +5441 +2823 +5915 +2901 + +5247 +4417 +1117 +3120 +5747 +1237 +4181 +5554 +3357 +1711 +6794 +3088 +4462 + +17031 +7995 +7350 + +5329 +2498 +2249 +2890 +1653 +2814 +3465 +2429 +5142 +1373 +1076 +3256 +3441 +2567 +3470 + +7072 +6394 +14586 +15340 +10147 + +1184 +3671 +6755 +4184 +1318 +5838 +1549 +2264 +2809 + +19812 +29553 + +5892 +1705 +3585 +1626 +6955 +5158 +1920 +3187 +2635 +4317 +1546 +2059 +3259 + +1837 +7240 +8226 +7841 +4213 +1359 +8366 +8041 +8457 +5615 + +3400 +4732 +9484 +2584 +3179 +7544 +7950 +7146 +2869 + +6427 +7052 +12827 +6005 +5345 + +11886 +4904 +15026 +8150 +2428 + +5226 +1184 +4964 +7415 +6726 +6062 +3801 +4207 +4667 +5422 +6152 +6809 + +11010 +3396 +3939 +10492 +10977 +1526 + +6235 +1219 +1240 +3401 +2883 +4055 +3590 +7311 +2287 +4448 +1450 +6571 + +4195 +7290 +6159 +2487 +1417 +3335 +3714 +2680 +7677 + +2389 +4734 +5970 +4799 +3294 +5785 +4205 +3461 +3951 +2188 +1083 +3154 +3160 +5131 + +3037 +7706 +2893 +5051 +2504 +5707 +3270 +1667 +7843 +8255 + +3971 +2506 +1225 +4862 +4154 +3311 +4597 +4483 +5029 +2931 +3724 +6267 + +5105 +2285 +3247 +1997 +7380 +2619 +5931 +5356 +7503 +1492 +6980 + +2372 +9012 +3114 +6193 +9829 +7515 + +2994 +2886 +7307 +6672 +9188 +6452 +7227 +1663 +2321 + +4061 +4316 +3828 +4449 +6179 +8549 +4645 +2389 + +5622 +4051 +3292 +5450 +4050 +5380 +3050 +1497 +5642 +2911 +4139 +6228 +4921 +4164 + +3019 +2696 +4175 +5228 +5084 +8066 +2002 +6316 +1896 +5800 +5010 + +3827 +4823 +1059 +6860 +4913 +2078 +6344 +4928 +4670 +3954 +5839 +6671 +1847 + +8618 +10069 +9967 +5072 +3126 +10051 +7873 + +2607 +11143 +1825 +6221 +8017 +9435 + +16412 +16329 +1854 +8746 + +1571 +2842 +5496 +5206 +2448 +3106 +1109 +3122 +4157 +5302 +5701 +5799 +3679 +2192 + +4301 +5488 +1830 +2337 + +7923 +3239 +9182 +1888 +6162 +1450 +6176 +3233 +2406 + +7771 +6540 +5808 +3970 +4350 +1340 +8384 +2276 +8802 +2848 + +5847 +3110 +3085 +5670 +5916 +2571 +2262 +2451 +1622 +4318 +4021 +4566 +5403 +4223 +5333 + +4537 +6349 +11104 +12051 +1978 +11190 +4207 + +5656 +5373 +3390 +3672 +6780 +5693 +2580 +1318 +6731 +6497 +6087 +4812 +1683 + +4013 +5016 +3679 +3489 +4541 +3353 +2013 +4128 +1089 +5016 +5174 +5962 +2476 +1202 +4038 + +7860 +3774 +3465 +2578 +2927 +5082 +6238 +4640 +4399 +4796 +5472 + +13289 +7271 +4915 +12428 +4991 +7437 + +1861 +6704 +9064 +9116 +9014 +3179 +3804 +3388 +9220 + +1542 +4467 +4690 +5711 +5771 +4787 +4920 +3270 +4137 +3723 +1897 +3557 +4111 +1133 + +31409 +26240 + +54757 + +11450 +16767 +23519 + +2962 +7702 +2733 +4930 +1625 +4819 +8294 +1175 +5457 +2818 + +6973 +17505 +9097 + +5350 +5398 +3740 +3089 +5707 +4075 +1216 +5204 +2666 +3231 +1938 +4479 +5828 +4838 + +7265 +2510 +11224 +4131 +13248 +1782 + +9488 +4374 +6103 +5519 +8562 +7159 +1375 +5488 + +1831 +4925 +4237 +7047 +4861 +1022 +1128 +1435 +4340 +3034 +6247 +1802 + +8584 +1369 +9026 +2651 +1936 +3739 +9534 +1333 +9577 + +3422 +5403 +2334 +3151 +5389 +6238 +6798 +3153 +2349 +2507 +7712 + +24170 +37492 + +10089 +4269 +8807 +4197 +6865 +2465 + +11707 +2757 +12186 +7550 +6848 + +2872 + +4350 +7436 +1658 +5948 +1318 +4182 +2357 +6368 +6596 +6849 +5834 +6740 + +4541 +3912 +8154 +8962 +6441 +8402 +5632 +4613 +3044 + +15710 +21759 +10989 + +2297 +5846 +5189 +4010 +1784 +5537 +1710 +4587 +4919 +2042 +3875 +1231 +1189 +5253 +4591 + +3073 +2725 +6203 +7249 +4089 +5208 +4083 +2246 +3511 +3208 +4807 +2344 + +2697 +1438 +3037 +4962 +3541 +3306 +4257 +2955 +1545 +3920 +6095 +3218 +4343 +5534 +1427 + +6900 +3342 +11170 +11907 +7355 +12479 + +1038 +8366 +9232 +8076 +8587 +3629 +4064 +9998 + +6287 +3967 +4660 +6274 +2192 +7327 +2320 +7645 +2270 +1937 +4081 + +24311 +11660 + +59340 + +6337 +5276 +1837 +3584 +1694 +5173 +3233 +6142 +6009 +5006 +6609 +3681 +4657 + +8509 +7711 +1338 +4405 +8726 +2762 +5390 +7733 +6562 +2982 + +4088 +12749 +16144 +2756 +2984 + +7631 +7535 +6105 +5294 +4164 +3887 +7604 +1942 +4003 + +7843 +5369 +6791 +7812 +8959 +1015 +7660 +8312 +9652 + +4738 +31158 + +15129 +5290 +10208 +14179 + +64834 + +17092 +20735 +17584 + +20179 + +6301 +9239 +5750 +8133 +4043 +1360 +7768 +4443 + +1874 +5287 +10423 +8366 +8343 +6700 +8319 +4207 + +9296 +1089 +5175 +2097 +14198 + +8741 +2040 +1298 +6200 +5218 +5703 +4398 +8164 +3133 +5517 + +8203 +11470 +9992 +5236 +3425 +13464 + +5741 +7636 +8651 +2228 +3812 + +7507 +4962 +8297 +7543 +7524 +4316 +7844 +4957 +3512 +8166 + +3786 +4240 +6919 +5851 +5750 +4494 +5669 +5055 +2882 +5237 +5003 +6899 +2143 + +5252 +7067 +5621 +1603 +7932 +2229 +8221 +2127 +2642 + +5887 +8125 +8737 +10040 +11446 +1559 + +2217 +4189 +8380 +8045 +8755 +13228 + +54109 + +1661 +6203 +5058 +4111 +3350 +2427 +2875 +1662 +1043 +2872 +3145 +2096 + +10789 +2296 +1519 +8104 +7658 +2462 +11042 + +4075 +25095 +12365 + +3620 +3451 +2143 +4928 +2209 +2259 +6291 +1922 +4258 +1298 +5973 +6830 +1690 + +6720 +6472 +7642 +3595 +1368 +2802 +3531 +5303 +1754 +5980 + +33359 + +11749 +3605 +11281 +1446 +6081 +2610 +9589 + +4086 +1683 +3542 +1782 +5999 +1239 +3191 +1829 +4645 +4154 +5315 +4039 +1170 +5072 +5837 + +5498 +2051 +1591 +3317 +2076 +4854 +5165 +6695 +8679 + +9267 +35217 + +5634 +6374 +5070 +2104 +5724 +5451 +6252 +2991 +6001 +6377 +1555 + +3235 +2411 +4950 +6073 +5384 +1309 +2112 +3943 +1158 +1942 +4894 +3041 +5480 +4287 + +8198 +16167 +2116 +4242 +3134 + +5254 +1059 +6196 +5498 +2120 +4585 +2757 +1442 +7062 +2529 +3641 +1540 + +2139 +17318 +19655 + +67758 + +13837 +3641 +8971 +8275 +7128 +1945 + +1852 +3110 +2650 +6258 +6653 +5424 +6283 +3827 +1203 +1847 +5970 +7045 + +3339 +4223 +3933 +5845 +4095 +1658 +4167 +2456 +2140 +3991 +1326 +4503 + +3459 +6780 + +6017 +17143 +2006 +15617 + +6357 +5973 +2832 +2404 +5466 +5263 +2442 +6483 +4672 +6030 +4179 +2206 +2294 +6168 + +2526 +7729 +5484 +5537 +8009 +3436 +5436 +7202 +7328 +2660 +2234 + +1256 +6714 +6588 +2886 +11142 +7214 +1867 + +2905 +3043 +5967 +2667 +1735 +6070 +3982 +6459 +1637 +1984 +1692 +2181 +1266 + +4355 +4571 +6495 +2767 +3262 +1740 +4560 +4120 +1892 +4609 +1276 +6129 +5883 +6009 + +5508 +1052 +1030 +6060 +3657 +3996 +5975 +1088 +2266 +4524 +7182 + +3034 +4023 +5263 +3276 +2948 +4466 +3517 +5358 +2969 +3410 +6135 +5900 +3376 +1312 + +8020 +7495 +2147 +1390 +4096 +2477 +7974 +4165 +1039 +1034 +7495 + +2474 +1473 +2810 +5689 +2742 +1972 +3315 +2083 +5077 +5477 +4451 +5582 +3126 +3173 +3823 + +11214 +7922 +4212 +5624 +8534 +7311 +11637 + +15693 +3473 +14621 +1422 +5178 + +7968 +3381 +3653 +4254 +5848 +6735 +2951 +3583 +3752 + +2701 +6136 +6047 +4179 +3184 +4990 +1776 +2015 +4756 +4400 +4733 +1665 +3399 + +3920 +1556 +3239 +5927 +1193 +4077 +4066 +4879 +5952 +2610 +3674 + +1682 +6139 +10994 +2262 +2315 +9710 +11296 + +12443 +4378 +6221 +8424 +7789 +1346 + +6840 +5808 +15893 +3310 +14216 + +5480 +1790 +2085 +3623 +3286 +4700 +3996 +2913 +2367 +1725 +5204 +2311 +2965 +3593 + +24055 +13551 + +11158 +6005 +13660 +11402 +10202 + +7769 +4788 +1884 +7859 +1587 +2695 +4885 +1651 +3921 +4647 +1109 + +5356 +8571 +5279 +2408 + +4523 +5592 +7243 +6911 +7604 +4000 +3415 +7335 +7325 +6703 +7012 + +5293 +6269 +5782 +6615 +4499 +7453 +6217 +5074 +7079 +7098 +6023 +6796 + +4735 +4908 +5414 +2580 +2794 +2243 +6211 +5507 +2794 +5024 +6115 +3177 +3466 +3455 + +4725 +1786 +2451 +4178 +3485 +1208 +2228 +4479 +2207 +4882 +4332 +3857 +3771 +5319 + +1401 +14031 +1695 + +1921 +9783 +5635 +1786 +10360 +6850 +4863 +1404 + +2442 +16957 +12686 + +4039 +5926 +5272 +5775 +6138 +7024 +6142 +6641 +4558 +5609 +7398 +2347 + +23477 +2485 +7786 + +5340 +1527 +1952 +2863 +2246 +5007 +6093 +3073 +3193 +4766 +5291 +2878 +2585 +6225 + +5259 +6647 +2722 +4293 +4990 +5668 +5620 +1183 +2420 +6872 + +1598 +6291 +8717 +1640 +8729 +6411 +1479 +7903 + +5887 +9297 +5108 +4814 +3171 +10077 +3700 +9785 + +5500 +6377 +2407 +8051 +4278 +2402 +2098 +5988 +2301 +4956 +2267 + +1802 +5166 +5094 +1190 +5493 +1562 +4255 +2126 +1959 +4176 +5354 +2921 +2743 +5640 +3116 + +11346 +12151 +12510 +11039 +11673 +7320 + +3029 +6031 +4235 +4697 +2645 +6612 +6585 +2072 +5350 +3869 +1793 +4184 +4684 + +6720 +6848 +1173 +5192 +2683 +4863 +6494 +2116 +2334 +2428 +3922 +5454 +4604 + +7695 +2885 +4466 +5049 +8098 +4177 +6464 +7981 +3183 +3346 + +5863 +3390 +10072 +4163 +9577 +6662 +5975 +8122 + +1443 +4466 +7142 +6107 +1032 +3545 +4362 +8074 +1339 +2477 +1322 + +1912 +14613 +15225 +16363 + +4119 +1645 +8059 +7384 +5633 +11876 +5144 + +2886 +7293 +17062 + +1344 +5571 +6367 +2730 +1134 +5853 +4098 +6827 +1283 +1437 +6932 +3271 + +3847 +1889 +6732 +1468 +1087 +3477 +5090 +3164 +5436 +6696 + +11985 +4877 +12181 +3096 +7222 + +12716 +11377 +11278 +1601 + +5418 +11900 +5334 +8971 +10651 +7907 +11469 + +6907 +7969 +2738 +3250 +4497 +5563 +2339 +7091 +2032 + +1092 +8088 +6222 +8095 +6713 +3648 +2551 +1956 +3413 +8164 + +6511 +6142 +4365 +4237 +6568 +1832 +5450 +3012 +3588 +2699 +4931 + +32059 +19019 + +2627 +8198 +10858 +11115 +1648 +2383 + +9821 +7551 +1459 +6217 +10094 +1445 +9978 diff --git a/day2.txt b/day2.txt new file mode 100644 index 0000000..0897034 --- /dev/null +++ b/day2.txt @@ -0,0 +1,2500 @@ +B Y +A Z +A Z +C Z +B Y +B Y +B X +B Z +C Z +B X +B Y +A Z +B Y +B Z +B Y +C Z +B Z +B Y +B Z +C Y +B Y +A Z +B Y +B Y +B Y +C Y +A Z +B Y +B X +A Z +B X +A Z +A Z +B Y +B Y +B X +A Z +B Y +B Z +C X +C X +B Y +B Y +B X +B X +C X +B X +A Z +B Y +B Y +C X +A Z +B Y +B Z +B X +B X +A Z +A X +B Y +B Y +B Z +C Z +B Z +B Z +B Z +A Z +A Z +B X +B X +B Y +B X +B X +C Z +C Z +A Z +A Y +A Z +B Z +A Z +B Y +C X +B X +C X +B Z +B Z +C Z +B Z +B X +C X +A Z +C X +B Z +A Y +C Z +B Y +C Y +B X +A X +B Y +B X +B X +B Z +B Y +A Z +B Z +B Y +B Y +A X +A Z +B X +B X +B X +B X +B Z +B Z +B Y +C X +A Z +A Z +B Y +B Z +B Y +A Z +B Z +A Z +A Z +C X +B Z +A Z +A Z +B Y +B Z +A Z +B Y +B Y +A Z +B Y +C X +B Z +B Y +B X +C X +B X +B X +B X +A Z +A Z +C Y +A Z +B Y +A Z +C X +B Z +B Z +C X +B Y +C X +B X +B X +C X +A Z +B Y +C X +B X +B Y +A Z +B Y +B Y +C X +B Y +C X +A Z +A Z +A Z +B Y +B Y +A X +A Z +A Z +B Y +C X +C Y +B Y +C X +A Z +B X +A Z +A Z +C X +B Y +A Z +B Y +C X +A Z +B X +B Y +A Z +B Y +B X +B X +C X +B Y +C Y +A Z +B Y +B Y +C Y +B Y +C Y +C X +A Y +A Y +B Z +B Y +A Z +B Z +B X +B X +B Y +A Z +B Y +B X +B Y +B Y +C Z +B Y +B Y +A Z +A Z +B Z +A Y +C X +B Y +B Y +B Z +B Z +B Y +C X +B Y +B X +B Z +B Y +B X +B Y +C Z +B Y +B X +A Z +B Z +B Z +A Z +C X +B Y +C Z +A Z +B Y +C Z +B Y +B X +B Y +B X +C Z +B Z +A Z +A Z +A Z +A X +B Z +B Y +B X +B Y +A Z +B Z +C Z +B X +B Z +B Z +A Z +B Y +B X +A Z +A Z +B Y +B X +A Z +A Z +C Z +A Z +C Z +B Y +B Y +B Z +C X +A Z +B X +B Y +B X +B Y +B Y +B X +B Z +B X +C Z +C X +C X +A Z +A Z +B X +B X +A Y +C X +B Y +A Y +B Z +B X +A Z +B X +B Y +B Y +B Y +B Y +A Z +A Z +B Y +B X +C Z +B Z +C X +B Z +B Y +C X +A Z +B Y +A Z +A Z +B Z +B Y +B X +A Z +B X +B Y +A Z +B Z +B X +B X +A Z +C Y +B X +A Z +B X +B Y +C X +B Y +C Z +C X +B Y +B Y +B Y +B X +B Y +B X +A Y +A Z +B Z +B Y +B X +B Z +B Y +C Z +B Y +A Z +B X +A Z +C X +A X +B Z +B Z +C X +A Z +B X +A Z +A Z +B Z +A Z +B Y +B Z +C Z +A Y +A Z +A Z +A Z +C X +B Z +B Z +B Y +B X +B Y +B Y +B Y +B Z +B Y +B Y +A Z +B Z +A Z +C X +B Y +B X +B Y +B X +B Y +B Y +C X +B Y +B Y +B Z +B Y +C X +B Y +B X +B Y +C X +A X +A Z +C Z +B Y +C Z +B X +C Z +C X +C Z +B Y +B Y +C X +C X +B Y +C X +A Y +B Y +B X +B X +B Z +B Y +C Y +C X +B X +B Y +B Z +B X +B Z +B Z +C X +B X +B Y +B Z +B X +C Z +A Y +B Y +B Y +B Y +A Y +C Y +B Y +B Z +B Z +B Y +B Y +B Z +B X +B X +B Y +A Z +C Y +C Z +B Y +B X +B Y +B Y +C X +B Y +C X +A Z +B X +C X +C Z +A Z +A Z +B Y +C X +A Z +A Z +B Y +A Y +B Y +A Z +A Z +B X +C X +A Z +B X +B Z +A Z +A Z +B X +B Y +B X +B Z +B Y +B Y +B Z +C X +C X +B Y +A Z +B X +B X +B Y +B Z +B Y +B X +B Z +B X +B Y +C X +B Y +B Y +C Y +A Z +B Y +B X +B Y +A Z +C X +A Z +A X +B Z +B X +A Z +B Y +B X +B X +A Z +B Y +A Z +B Z +B Y +A Z +B Y +B Y +A Z +B Z +C Z +B Y +B Y +C Y +A Z +B Y +B Y +B Y +B Y +B Z +B Y +B Y +B Y +C X +B Z +B X +A Z +B Z +C X +B Y +B Y +A Z +B Y +B X +A Z +A Z +C Z +B X +B X +B Y +B Z +B Z +B Z +B Y +B Y +B Y +B Y +B Z +B Y +A Z +A Y +A Z +B Y +B Y +A Z +B X +B Y +A Z +C Z +B Z +B Z +B Y +A Z +A Z +B Y +B X +B Z +B X +B Y +B Y +B X +C X +B Z +B X +A Z +B Y +C Z +B X +A Z +C Z +C Z +A Z +B Y +B Y +A Y +B Y +C Z +B X +C X +B Y +B X +B Z +B Y +B Z +B Y +B Y +A Z +B X +B X +A Y +B Z +B X +B Z +A Y +B Z +C X +B X +B X +B Z +B X +C Y +B Y +C X +C X +B Z +B X +C Z +B Z +A Z +C Y +B Y +B Y +B X +B Z +B Y +B Y +B X +C X +B Y +B Y +C Y +B Z +C X +A Z +B X +B X +B Z +B X +B Y +A Z +B Z +B X +A Z +B Y +C X +A Y +A Z +C X +B X +B Z +B X +C X +A Z +B X +B Y +B Y +A Z +B Z +C X +A Z +B Z +C X +B X +A Z +C X +C Z +B Y +B Z +B Y +B X +C Z +B Z +B Z +B Y +A Z +C Z +A Y +B Y +C X +B Y +B Z +A Z +B Z +A Z +B X +C X +B Y +A Z +B Y +B X +C Z +B Z +C X +B Y +B X +C Y +B Y +C X +B Y +B Y +B Y +B Z +B Y +B X +B Y +B Y +A Z +A Z +C X +B Z +B Y +A Z +B X +C X +B Y +B X +A Z +C Z +A Z +B Z +B Y +B X +B Z +B Y +A Z +C X +C Z +A Y +A Z +C X +C Y +C Z +B Y +B X +B Z +B Y +B X +B Y +A Z +B Y +C X +B X +B Y +C Z +B Y +B Y +B Y +B X +B Y +C Z +B X +B Y +B Y +B Z +B X +B X +B Z +B Z +A Z +A Z +C X +B Y +B Y +C X +B Y +B X +A Y +C Z +B Y +B Z +B Y +B Y +A Z +B Y +B Z +B Y +B Z +B X +B Z +B Y +A Z +B X +B Z +B Y +B Y +B Z +B Y +A Z +B X +B Y +B Z +B X +B Y +B X +B X +B Y +B X +C Y +B Z +B Y +B Z +C Y +A Z +B Y +A Z +B X +A Z +A Z +C Z +B X +C Y +A Z +B Z +B Z +B X +B Z +B Y +A Z +B Z +C Z +A Z +C Y +A Z +B Y +A Z +B Y +A Z +B X +A Z +B Z +C X +B Y +B Y +B Y +C X +B Z +C X +A Z +A Z +C X +B Y +B Z +B X +B Y +B X +A Z +B Y +B Y +A Z +B Y +B Z +B Z +B X +B Z +B Y +B X +B Y +B Y +C X +C Z +B Y +B Y +B Y +B Z +B Y +B Y +B Y +A Z +B Y +B X +B Y +B X +B Z +B Y +B X +B X +A Y +B Y +B X +B Y +B Y +B Y +B Z +B X +A Z +B Y +B Y +B Y +A Z +B X +B X +C Z +B Y +B Y +A Z +B Y +B Z +B X +C X +B Y +B Y +C X +C Z +B X +A Z +B Y +B Y +B X +B X +B X +B Y +B Y +A Z +A Z +B Y +B Y +A Z +B Z +A Z +C X +C X +B Y +B Y +A Z +A Z +C Z +B Z +B X +A Z +B X +B Y +B Y +B X +B Y +B Y +C Z +B Y +B X +C Z +C Z +B X +B Y +B Y +B Z +A Z +B Y +B Y +B Y +B X +B X +A Z +A Z +B X +B Y +B Z +B Y +B Z +B Y +B Z +C X +B Y +C X +B Y +B Y +C Y +A Z +B X +C Z +B Y +B Z +B Y +B Y +B Y +C X +B X +B Y +A Z +C Y +B Y +A Z +B Y +B Z +B Z +B Y +B Y +B Y +C X +B Y +A Y +C Y +B X +B X +B X +B X +B Z +B X +B Z +B Y +B Y +A Z +B X +B X +A Z +A Y +B Y +B Z +B Y +C X +B Y +B X +B Z +C X +B Z +B Y +B X +B X +A Z +B Y +B Y +B Y +C X +A X +B X +C X +B X +C X +B X +A X +B Y +B Y +B Y +B Y +B Z +C Y +C X +A Z +B Z +B Z +B Y +B Z +B Y +B Y +B X +B Z +A Z +A Z +B Z +B X +B Z +A Z +B Y +B Y +B Y +B Z +A Y +B X +B Z +B Y +B Y +B Y +B Y +C X +B Z +C X +A Z +A Z +B Z +A Y +C X +B X +B X +C X +A Z +A Z +A Z +B Y +B Z +A X +A X +B Y +C X +A Z +B Z +A Z +B Y +B Y +B X +B X +B Y +C X +B Z +B Y +B X +B X +B Y +B Z +B Y +B Y +B X +B X +B X +B Y +C X +B Y +B Y +B X +B Y +B Y +B X +B X +A Z +C X +B X +A Z +B Y +B Y +B Z +B Y +B X +A Z +C Y +B X +B Z +B Y +C X +A Z +B X +A Z +A Z +B Y +B Z +B Y +A Z +B Y +B Z +A Z +C Z +B Y +B Y +B X +B Z +B Y +B X +B X +B Y +B Z +B X +B Y +C Z +A X +B Y +C X +A X +B X +B X +B Z +A X +B X +B Y +B X +A Z +B Z +C Z +B X +B X +A Z +B X +B X +B Z +B Y +B Y +A Z +B Y +B Y +B X +B X +B X +B Y +A Y +C X +B X +A Z +B X +B Y +C Z +B Y +B Y +A Z +B Y +A Z +B Y +A Z +B Y +B Y +A Z +B X +B X +B Y +B Y +B Y +A Z +B Y +B Y +A Z +B X +A X +A Z +B Y +B X +B Z +B Z +B Y +B Y +C Y +B Y +B Y +B X +B Y +A Z +C X +B Z +B X +B Z +A Z +B Y +B Z +B X +A Z +A Z +C X +B X +A Y +C X +B Z +B Z +C Z +B Z +B Z +C Y +A Z +C Z +A Z +C Z +B Z +B Y +C X +B Y +B X +A Z +C Y +B X +B Y +B Y +B X +B Y +A Z +A Z +B Y +B Z +B Y +C X +B X +B Y +B X +A Z +C X +B Y +B Y +B Y +B Y +C Z +B Y +C Z +A X +C Z +B X +B Y +B Y +B X +B Y +C X +C X +A Z +B Y +B Y +C X +B Z +C Y +B Z +B Z +B Z +B X +B X +B X +B Z +B X +C X +B Y +C X +B X +C Z +B Y +B X +B Z +B Y +B Y +B Y +B Y +B Y +B X +B X +A Z +B Y +B X +B Y +B Y +A Y +B Y +B Y +A Z +A Z +C Z +B X +B Y +B Y +B Z +C Z +C X +A Z +C X +A X +B X +B Z +B Y +A Z +C Z +B Y +C Z +B X +A Z +B X +A Z +B Y +A Y +B Y +B Y +A Z +C X +B X +B Y +A Z +B Z +B Y +B X +B X +C Y +B X +A Z +B Z +A Z +C X +C Y +B Z +B Z +A Z +B X +B Y +B X +C X +B Y +B Y +B X +C X +B X +B Y +B X +B Y +B Z +B Y +B X +B X +A Z +B Y +B Y +C X +C Y +C X +A Z +A Z +B X +B X +B Z +A Z +A Z +C Z +B Z +A X +B X +B Y +B Y +A Z +B Y +B X +B X +B X +B Y +B X +B Y +B Y +B Y +B Y +B Y +B Y +B Z +A Z +B Y +B X +C X +A Y +B Y +B Y +B Z +C Z +B X +C X +B Z +B Y +B Y +B X +B X +B X +A Z +B X +A Y +B Y +B Y +C X +A Z +B Y +C X +B Y +B X +B X +B X +C Z +B X +A Z +B Y +B Y +B Y +A Z +A Z +B X +A Y +B Y +B Y +B Y +B X +B X +B Z +B X +B Z +B X +B Y +A Y +A Z +C Y +B Z +C X +B Z +B Y +B X +A Y +B Y +B X +B Y +B X +C Z +B X +C Z +B Y +B X +B Z +A Y +A Y +C Z +B X +B X +B Y +A Z +B Y +B Z +A Z +B X +B X +B X +B X +B X +B Z +A Z +A Z +C Y +C X +A Z +A Z +C X +B X +B X +B Z +B X +A Z +B Y +B X +B Y +C X +A Z +B Z +C X +B Y +B Y +A Z +B Y +B Y +B X +B Y +C Y +B X +B Z +B Y +A Z +B Z +A Y +B Y +A Z +B X +B Y +A Z +B Y +C Z +B Z +B Y +C X +C X +B X +B Z +B Y +B Z +B Z +B Z +B Z +A Z +B Y +B X +B Z +B Y +B X +A Z +A Z +A Z +B Y +C Y +C Z +B Z +B X +B Y +B Z +B Y +A Z +A Z +C Z +B X +B Y +B Z +B X +A Y +A Y +B Y +A Y +B Z +B Y +A Z +B Y +B Y +B Y +C Z +B X +B Z +B X +B Y +B Y +B Y +C X +B X +B Y +B Z +B X +B Y +B Y +B Y +B X +B X +B X +A Z +B Y +B Y +C X +C X +C X +C X +B Z +A Z +A Z +B Z +B Y +B X +A Z +C Z +B Y +B X +C Z +C X +B X +B Y +B Y +B X +B X +B Y +A Z +B X +B X +B X +B Y +A Y +B X +A Z +B Y +B Y +B Y +C Y +B Z +B X +B Z +C X +B Y +B Z +C X +B X +B X +B Y +B Y +B Y +A Z +A Z +A Z +B Y +B X +C Z +B Z +B Y +B Y +B Y +B Y +B Z +C X +A Z +C Z +B Z +B X +B X +A Z +B X +B Z +A Z +B Y +B Y +A Z +B Y +B Y +C Y +C Z +B X +A Z +B Z +B Y +C Z +C X +B X +A Z +B Y +B Z +B X +A Z +A Z +A Z +B Y +B X +C X +B Z +B Z +B X +B X +B Y +A Z +B X +B X +B Z +A Z +C X +B X +B Y +B Z +A Z +B Y +B Y +B Y +C X +B Z +A Y +A Z +B Z +C X +A Z +A Z +B Y +C X +B Y +B Z +C X +B Y +B Y +A Z +B Z +A Z +C Z +A Z +B X +B Z +A Z +B X +B Y +C Z +A Y +B Y +B Y +B Y +A Z +B Z +A Y +A Z +B Z +B Y +B Y +A Y +B Y +C X +B Z +B Z +A Z +B X +B X +A Z +B Z +C Y +A Z +A Z +B Y +B Z +B X +C Y +B Y +B Y +B Z +B Y +B Z +B X +B X +B Y +B Y +C X +C X +B X +B X +C X +A Z +B Y +C Z +A Z +B X +B Y +B Z +A Z +C Y +A Z +B Z +A Z +C X +C X +B X +B X +B Y +B Y +B Y +B Y +B Z +B X +B Z +C Y +B Y +A Z +B Y +B X +A Y +B Y +B Z +C X +B X +A Z +A Z +B Y +B Y +A Z +C X +B X +B Y +B Y +B Z +A Z +A Z +C Z +A Z +B Y +B Y +B Y +A Z +B Z +B Y +A Z +A Y +B Y +B Y +B Z +A X +A Z +B Z +B X +A Z +B Z +B Y +B Y +B X +A Y +C Y +B Y +B Y +B X +B Z +A Z +B X +B X +B Y +B Y +A Z +B X +C X +B X +B X +A Z +B Y +C X +A Z +B X +C Z +A Z +B Y +B Y +B X +B X +A Z +C Z +B X +B X +B Y +A Z +B Y +B Y +B X +B Y +B X +A Z +B Y +B Z +B X +A Z +B Y +C Z +C X +A Z +A Y +B X +B Z +B Y +B Y +B Y +B Z +B Z +A Y +C X +B X +C X +B Y +B Y +B Z +B Y +C Y +C X +B Z +C X +B Y +B X +B Y +B Y +A Z +B Y +A Z +A Z +A Z +A Z +B Y +A Z +B X +B X +B X +C Z +B Z +C Y +B Y +A Z +B Z +B Y +B Y +B Y +A Z +B Z +C Y +C X +B Y +B Y +B Y +B X +B Y +B Z +A Z +B Y +B Y +C Y +B Z +B X +B Y +B X +B Z +B Y +C Y +C Y +A Z +B X +B X +A Y +B Z +A Z +B Y +B X +B X +B Z +B X +A Z +B Y +C X +C X +B Z +A Z +B Y +B Y +B Y +B Y +B Y +B X +B Y +B Y +B Z +B Z +A X +A Z +A Z +A Z +A Y +C X +B Y +B Z +B X +A Z +B Y +B Y +B X +B Y +B Y +C Y +C Y +B X +A Z +B Y +C X +B Y +A Y +B X +B X +B Y +C X +A Z +B Y +B X +C X +C Z +B Y +B Y +B Y +A Z +B X +A Z +C Z +B Z +B Y +B Y +B X +B Y +B Y +B X +A Z +C X +C Z +B X +B Y +C Y +B X +A Z +B Y +A Z +B Y +A Y +A Z +A Z +B Y +B Y +B Z +C Z +C X +B Y +B Z +B Y +A Z +B Y +B Z +B Y +B X +B Y +B Z +B Y +B Z +C X +B Y +B Y +C Z +A Z +B Y +C X +B X +A Y +B Y +A Z +B Y +B X +B Y +B Y +B X +B X +B X +B Y +B Y +C Z +B Z +C X +C Z +B Y +C X +B X +A Z +B Y +C Z +A Y +B Y +B Y +B Y +C X +B X +B Y +B Y +B Z +C X +B X +B Z +A Z +B X +B Z +B X +A Z +B Y +B Z +C X +B X +C X +B X +B Y +B Z +B Z +B Z +A Z +B Y +B X +B Y +B Y +B X +B Z +B Y +C X +A Z +B Z +B X +A Z +B Y +B Y +B Y +A Z +A Z +C X +B X +A Y +B Y +B Y +B Y +A Z +A Z +A Z +C Y +B Z +A Y +B Y +B X +B X +B Y +C X +B Y +C Z +B Y +A X +B Y +B X +B Y +B X +C Z +B Y +B Z +B X +B Z +A Z +B Y +B X +B Y +A Z +B X +C Y +B X +B Y +B Y +B Y +C X +B Y +B Y +B Y +A Z +B Z +C X +A Z +B Y +C Y +B X +A Z +C Z +B X +B Y +B X +C Z +B X +B Z +C Y +B X +B Y +B X +B Z +B X +B Z +B Y +B Z +B X +A Z +B X +A X +B X +B Y +B Y +B Y +A Z +B Y +B Y +B Z +C X +B Y +B Y +B Y +B X +B X +B X +C Z +B Z +B X +A Z +B Y +B Z +B Y +B Y +B Y +B Y +C X +A Z +B Z +B Y +B Y +B Z +A Z +B Y +B Z +B Y +B Y +C Y +A Z +B Z +C X +B X +C Z +B X +B X +B Y +B Y +A X +B Y +C Z +A Z +B X +C Z +C Z +B X +A Z +B X +C Z +B Z +B Y +B Y +C X +A Z +B X +B Y +B X +B X +B X +B Y +C X +B Z +B Y +B Y +B Y +B X +A Z +A Z +B Y +B Z +B Y +A Z +B Y +B X +A Z +B Z +B Y +B X +B Y +A Y +B Y +B Y +B Y +B Z +B X +B Y +C Z +C X +B Y +C Y +B Z +A Z +A Z +B Y +B Y +A Z +B Z +B Y +B X +A Z +A Z +C X +A Z +C X +A Z +B Y +C X +B X +B X +B Y +A Y +B Y +B Z +B X +B Y +B Y +A Z +B X +B Y +A Z +A Y +A Z +C X +A Z +C X +A X +B Y +B Y +A Z +B X +B Z +B Y +B Y +B Z +B Y +B Y +B X +B Y +C X +C X +B Y +B Y +B X +C Z +C Z +C Z +C X +B Y +C Z +A Z +C Z +B Y +A Z +B Z +B X +A Y +B Y +B Y +B X +B Y +B Y +C X +B Y +A Z +B Y +A Z +C Z +A Z +B Y +B Z +A Z +B X +B X +B Z +B X +B Y +A Z +B Y +C X +A Z +C Z +B X +A Z +B Y +B Y +C Z +B Z +A Z +B Y +B X +B Y +B Z +C Z +A Y +A Z +B X +B X +A Z +C Y +B Y +A X +A Z +B X +B Y +B X +A Z +C X +B Y +B Y +C X +A X +B Y +A Z +A Z +B Y +B Z +B Y +B Y +B Y +B X +B Y +B X +B X +B X +B Y +A Z +C X +A Z +A Z +A X +A Z +B X +B Z +B Y +A Z \ No newline at end of file diff --git a/day3.txt b/day3.txt new file mode 100644 index 0000000..c6f4805 --- /dev/null +++ b/day3.txt @@ -0,0 +1,300 @@ +hqBqJsqHhHvhHHqlBvlfpHQQwLVzVwtVzjzttjQVSjMjwL +gRTRnCRsFNGbTzLjwcSTMmSz +dGgsRWPGdWgZJqBBqhfpPq +HNCNJHCWJRRLqNJWlfrrrwsmlwGmmf +dddvLdLjdDvjvswlmGwlZQtjrt +dvcpbLVcvNJJHNPHSp +QDprSpLQRLQrQDmQcQFZjbbhZwdRsRFbbBss +gWGGPgNvJlgJzDlNGHCGPNZZgFBbsjbFFBwZwfhdZbZB +lHTlGMHlGCPNvClzGzJHvGcrMcVtLqMLcrrQVcVDrqrm +SrBpJFfldlFNslFJBZwsmwgVGGsCCVmZZD +jLtjvzLQMtWjbbQvDZZwGRJGgwggGZgv +MzqqjznQPqnnjznnctnFlSddPfHflhfBJFNdHd +mPNNGVCRngnSbgNw +WqsqlTssgvqvZWZzhsTzWhScdHtfJJnfbtSJwfczdtSS +sqTvhpqQvWZQLmDpDGMDGrgL +DQRcLQVLbbcbrFPcRtTBBBJnTZrrnmZTrMgJ +slGjjjdlhMfvdMQTvg +jlzNhWHhhWjHlwwwGLDSDtPQVtRzRbSzpp +DzDgfvzfDczfHCHSlgHLCmWG +PrpNPJtpPMBssmmVdmSVVr +PSRMwPnMpBNtNBTnnZwDqzQFfwhjZZqfhh +fzfBwhBJFbCwbwwg +strtgtrPgmPgFRsMdRnZRMFn +mrmLPDvGmmtSLDgmSqvHchhcHQzcQQJHBfBh +NsgwPPDgsPHqsTqqmLbLrDRhmrRVrbVW +lFpGFtfFlvSFplGFzptSGSSlhZbhjhfrmWbhLhmLbCZVZjWr +ccplJQSGcSSpVFvNqqsqPNqPQPTwqd +HFhPNNZGqSZrCDBVZBCB +RJTtwczTzCRVQrRHpR +mfgblfltwgwwmlJgcHNnGhSbFNnFsFjFqG +tSRqNRHpHnMSTqpcmrWWfqfmrCQCrW +lhGDtbgVVgDsDbhfldfwrzrfcdzwcr +vtDDhsgFBTNZFBHS +LcNpLLBNgdmHGmsBCrRBQDDwnwRj +hSWfZVhfPJJhfVWbhzbnQqQnRRRqPvCCrjvjwj +ztJSSJhzzSTJrZSbzzJTfzbZmLmggdmNMFNpmtmMGFFGNpmt +TRdFfLbTnLvZVlZvznQV +pgJGprJNhghhNjjPgPNrhNqqlVVlQVVQqQjfzBfQvZzB +rmGmSwJPwJprrNDbsfMRsdTDcDWHfM +QMpZZTtwMBttJMMbVqPpqLqbVlbqqN +rjCFGrdGRwdDHSnqflPVLqqVNllrfl +DHGDRvhvwTZhJWBQ +LcQCCpLQVhrdcFQCJrmmmwDwvDtJJnnw +TsZqqTzMRqZjfsjTTDjsNJnmnStRSHnnSJmnJSNH +sMMZZbDjZFdbVCFphV +FCcdFFGBsdDrbMNSmSdmQR +tVttHVLhvVgfTTtffNSMQRMZSRmMQNmHSb +gngvvwJtVVTvVvvvfwvJThhCzGcnsCjmCDmscPcGCsGsmz +fsnzRNZswZszPRZSLflPpDhlhvgWHmjWvJjh +bVcCqjbdjbcMdBrddrQphvHHmHWlggpWpppqJJ +FBTdFQGrTjLNsNtL +MSWWgMdgdbWbbfdgsPmddgCmSLZvSFvLQvnLrFNZvZFLlLLl +hjpJjGthjRNRptwJJqVBllnvrrlTTQFZqnTZnn +tjDGHwhHHjwjjJGpwjwjjJpwsdgffmbgMsmbDNcMcdmCPdsm +MlDrrgnTDLlCCmCRFgRSCR +HHhbbNQMccQFSNBmmpJNSJ +MwbMbshsswVbHQsbcVMcrtDllTlLqfTGVzLGrTlT +gSFzqQTpmVpQVpLFLrzJJRthlsQBlPsZsBhZst +rwrNDdbHdBhRhZbsjB +vvvMHwHcwGCwwNfMVSrqffWpSfSFzLmT +RNgMgRCCgCfPNfvNgVQmhPVWWjWjLLdLBj +JhJqqqwGDchsBVbdjldmBLmG +schZzDwTJzFTsctHFMtfftgMttpM +GHHWqWFWfWHqbRWsFZFmqZbhNjNDNppNjrjDcQdbpddhjr +wCLCVPfwgVSnPNrQhnDcjcNpDD +TPgLlggJLVwPVVPPwgTwvtSCFmzGGqzGZsGRqWBGfFRFJFRB +LfFLmGTPHBfpHmzBLdZfBfZTbWWttWSDJtWVDJDtSWJzVCCV +RssRRRhrRwQqMQQwnPngQrwvVSjttjJSjSVtWWCWjbVb +hQPnnRnQgNcQqqQQcsZTNTLpdZZfpZFHNpBp +VTCVVnwfFTvFmTCvWwJHdlhHWBJhJBRWNHgh +ZbSMZbctGtScQSZsSpZpPpplhBhtdJDRDJjhdtlRJRjNRj +rLsbBQSMBGspPGcMPQvnqmwzwmCVLmqVmwTF +GVrrQVHHHQGTllQjPHGrlCQpZZpJFWZFzzjBssDJghzhFZ +NSMmWmtqMWqSNbcctdLcdghpgpppssZgbgzpFzJJFs +cfLqLwMRdtNLMlQrvflWTQPffQ +FjtGflGsbNqjsmjGGGbmqQQQBQBTjdpTpJTWvJBddj +CPrVRMnvvLSRHLnBpwdWTRBQwQzBzR +SnZMZPcHMlqchsvGGb +nnJnswzPCtmZDCpmhphD +rSVVLQQQGQjwpdmdNmpS +VvBcQvGcQgGLBgWrwznfJsncltJsJnssPM +dhbwLStzSGmmmzJJvFgJNvnrgvhv +VTsTsRscRsVBMRVTTsjZVPCnDNvfrPfDvNCfBrPNDJ +scHHQTpJZjHwzLSHHtqHSt +MHmFsBDmGpGTBfmCfWCffhzgvf +wcjwnRLPZRVbtCjtNttGCh +ZLGVJRrnPPPwQwPppqDHFpBFTpqFDr +GzMgVfGRdRVngDjhqcjctrtrzzzs +QbQSHwHSLbWwJJFwJPLPSWTQjrhqtjflThccsclCcscCCmmj +JFbNSbLvHHLQFLvwQJFWSBVgMNGdBBnBMVfddpGngB +sZHNJwMsvHswwvMWqBzhChWPMBzd +bHQQQRDHRcRcDljttBldlPBdggBCqB +QjnDbDjjjncRjbQnfZpvssZNHnppFNpvvp +NdmfPNMHMdNMHcffHBCwwsvsRRllvwlcqjwscw +VLhVGLpLShgvrjwFhjqfls +pppnnQtVpGZVWtzGgVzgSSfnCCDmdPBMDbmmDMmdNMBmWNmm +rrfgCrrMllfnBhBrdCFfWLFmmVFVWQvWwtwV +TmSGSqNzvwwTFVvj +NSGSmNbDzpmSpbHmSJqqlMgdMndcgdccdpgllRRh +bbPtLnLcLJzTjcJbbTcttLcSgwmvWfVvfVvBgfmWVJMJMJMW +ZsDNNGDRsrHzpNRwMlgRlgmMWvffWM +FGzQpZGGLFjnSFbF +DQZVDdWWNBtgWnJCnL +SSHSmbHRFqGrmqJrbbGzjmzCwrvgvwnBwnCvprwvpwwPvv +qFFFSmsRRzzFjcFsSsjmzJzflhlZTTThdhVflZlVDDhMcN +cdvrFddqDtDvqgCDtFtrvvvFSmShPShJVJmMJSJbVBgTlmbM +GzjpHzGHHfQNfJSlPQbJBSTJBM +HWpspsWjNsGRHfpwNszzLfGqnCnZtdvvcZvwqFCcZqMZCv +rhHhDhhDrRNwDRhNRLRqNPHjHSpVpVlljSSMnlHnjS +sVVBsFBJBtBSPSjtjPPZZS +JmddVTzsffcGNwzCqNqR +nQfqFtZWFZnFJWfpGqhDsGLLPLVbrPhr +CzjwMTgBgTNSGLVVDPbjbS +wMCmgNNdgvzGdRQcFGFdfJ +CbqCDnwFpDpCVfBPmPffPfRfpB +svcsjlGJGnlnvjvzgQQgGzsZPhBRcRPhWfBZBhPhWRRhPN +sJngnjSGGTGzgJGrrbCqLHrCLwSFqV +hnRnJrwMHnQRRRwMhRrnJRBLZtBPdPSdtZZjjstsLHBP +pBBzzcbTbzCcFzTvlSCZLCtSvvttdZ +FWmNzBFNDnRqNRDM +lvzlSPRDSpDJmNwNGgFpfsFN +WBHrtrLBbhWHtdrFwFFsjzwfFjsdsF +HWnrHnTWhWTCTzTBnRZqDDDCqZcclRvSJR +qcdVbpcMFQcdMGcMFjjpbCnCGmCnJHDHDGJChzCJCJ +wWwlSfBRgRNBDPJnCgCrgzms +tBTfTRwlwRLNwTRmWtNwQFZtqcjcdcqpbdQMqMdd +jJRzwDdwFdJddcjjFCFvQLvNlBhSBhCC +gMMpbHpmnHpWfnlCSBQCPmPllQSs +nHWHVfTGdTSjZzDT +sCVTsBPltgDSbLvRMMDT +WNrjNmWZwmZwfVLvLRbRNvMp +mrHGrmnjqVzjGqdmCltlhFFllgsHBPCg +wbglgTFRblnMRltJBNrDDWQbtdbN +dqCpcjPLGfHZQBJNGGvQDZ +SPssjVSqPCLpScfCgFRVmTlRwndlRwTR +hWMWMhTTDgWMzGMszQShGWJPCQmPVCNPffPfVJftqNQC +nbnHHwLrnswwPVCPZV +nsRvFHLsvplvrcsSWDDDddjjDlMTjT +HRCnhWZhCddgwRcwhdWZHHQLJzSLsSzjJwSjztsmtzsmLF +VlVVNNVqTlMVbTVVMqvqvrDTjQfFtjstJmzftfzsSbtStJQb +pQvvPpBqNBccPWWhcWWc +glJTndVWCTDDVFvnVndVlCvwmBmqBBwQmwPwmMPggGsPGm +NhcSrhNZHhZzRtHcNRrSMSMSFBMGmsQQGLMPPF +hcpRzbcHjRhRbZRzZRztzRpJVdCdnfCnlFvdDTnJCVDjWd +dqWvjjBdWWqMjdvvMJjWWjMGgcfchhzrhwbrwShwgzSqNb +mmmmsVTlVlsLQmnpsNcfgfwNLgczhcGhzw +RslpsnGGGlWdCZFMMRWR +pfSpZSrdSMVDVVLMMDDZpdgRWMPGqqPGqmqqGGhGHNRN +wwQBwtjvvJlvsnbTbvBRHgPmlqhlqWWHqZZgNm +JnQwJvjTtzTZwJnbzzfCrfLCfdfdddfD +PZcnljZFTVmQdlQh +JCLLqBBCSNCCqzJNzStBpStBmsdhVTdmVWsWmdhfLhWVdfrR +BpMzzqSzppMMqpJqqgzPFcjZjnTjgcjbPjPDPZ +HLHWmqBHHqWbMHFtbgWcdhspPcPchndPpn +ZRVSQZRfVZGRgnfsdhLgLndL +jzJRwJRSJJvSlZQGRVwlSGZDMqmmCCCmtNbCmtCMzFNLbF +fDhlBhhZmQRRfHwLdjHFFWQQjQ +ZMTssVVzvbCqJddsLwwH +TzgTbgGGzztMbbvzvVbGvSPBrlShRrfnNrnBDlNcRDZRZB +bjfqGfvFfcHvRwGFRHjbgQtddlQljWpWnQgdWWll +TSPVVSVwSzSDTDlntDndnlWddt +hTrrNCBCVrCrrVshThHHbZvFGscwbfFGRJcZ +jNhMjcgvMNgWggvttcFtchvPFFzdPPrQrrGGQQszRPQrRG +wSCqCmmppbTwPnGHrQdrGCCD +LlqwGmGScLcVthVt +dGGrWWDqmCnwCCQMQrMbFHbMHsPFgPVZbgFPgg +tLRTBwfvTBJcZFNFZRHSHPVN +zjJLTvjcwDzqqhGD +DzrWszFFrtBBhnhNCClHlnHbSbmlSn +ZLwLcVVZcLVpvRwLgMLpLJgPmmQSNSTNbtTvQmCHQCClCHCt +cfgZJwwVLJZPPVpRwzhzrrfGGBrGtDrBsf +BTsdCQsQnwwdcCqqdCnsFvGFpFBvGzrLLmmzpvfG +pjZjgPVlJVMVtgJSWLPvfFFFbNNmNbvbmL +ggVplgJtHSSggdCHsscChhdnnR +JddZcSlvvGFJNWVWFgQgVtFWhg +nDqsHqCszwjCCPMnfhfBhtdWggfg +bqppHqqHHbPLjLCppbwDdRNvdmcTmlNZGGbTTcNv +lcZDSvztcHHcMSZVHVvMZBqBNNFNhBNTTmssBqBcFB +bbGJQdQPpGfQJQdJfLFhmznhzLLNTFhNhf +JGpWpPJddbPpPwpjbtZSzltDgWDSgvtrVv +lJcNlNjPcmtFzHtHBJFg +VPZdwGGWVrsdPWhWwhzzCzzFppDFMBtttFCr +wshsLVfWTnGswdhwcmRjRmScqTcjlPNq +BsBshRZQQsVdsZQZSdsPDwJDHNNHBztNNFMGGwMF +nSTpLjcvHppzwwNt +jcqncjjvfmgrCfvqrnZbmdmSsdbVWlsmhRdW +FjjqRZjZFZWFqPvNvvPQpmbPDCmt +GSnHSnrScncHhrtncGshVbmTmbpVvppCmpCTmTCmCC +rHfnddwdfctlzFFgwqlj +wBwlBmmhwRVThVBmFHnvHMnfsmFfHq +jzwGSGJNZCCssHfsCPfv +GJbzbZdbwJdtdQphRVWQ +ztFZccVHFWHHLSDBpSBPhhZw +fmjsCmqnNTJnvbTvLRPDlCpBSPBpRShl +JqsGTSNJGqvqvNvttGQQGdFrQctrrF +mNZqjTFrZqrTNTTGSSSbrhrhRFRHcnLCzcCdHcLBdccHLzRC +JDDfJswJDWsvgVgwpWnRBlBzGCnlCLBlcCDl +vVGpfQWJpsPQMVgvppVwgWPJrqSZTrZqhTQTrhjbjqSSjZqt +fMSDzDHzpDDVsStdDgwwFZFrrMPCNngCZP +WmLnbWmvvWTTLWWQWRGQvLvrPFZJcgJFCZNrCgGCFCPNPF +QLhlqhljWvRQbbqlqnfStnHdBqVVfzpq +qWZtSQTSvJJvBfJVBBVFNDNHbbdRVPdpNFRF +fGcwwmCgsLhgwLchbpHdrrrphdPRPh +gMjllmcjwsLMgcwlMnSWzSqjSZJqZqZfjQWv +cdRHPjRFRdFVHGcFfFTHQTHVLSQBsbsqSCLqllBJqqbSqLJC +WwWppWgtNrnzzWDmrrmNvWJClJSSbqLJJCGbsCgJbLLg +MnvWpmwvWnvtGPjVRcHRRHMj +dLMDhdHGrcLTvvvstB +nPqgGGNPqRgRSjgmlWjbbTTPPBvpvpTcswwsTF +NRGmgjRnWgnZJqllmSqjnqSDhQzVrdQHDfDrDJQDMHDJzM +RgmcPmGNQwwNmSRwPPgfmrBlCDlGbvFFvtrCsvlrBB +nfdVnjHdMWnTqflFtbjrllrlsCDl +TZJVMhnfMnVMHnpRRNRzgJRzSzgwPR +nTbsblzlnGllmsNnbDwbcWQWwWBFJBQcWQvPWFJM +HRZRdSRdCdLdRftrHHZfSQBMWJMgMzQPFWMJCFWgvQ +HVzrLrrjRjLGnlTnlDlsjj +RQdTdZhWqlZhTdWTqblhNmTMVnnrQsnnpvgMVMHMgHMrgP +fjSSfjcCzGNBjCjsnpMVpnpzvpzsHp +GGwLGSccwjwLwBcGLGSqZWmmdLZLWThmRNZmWR +ncmBrmfdfcVcfGnQdVWRBRvgqNvDvWqzLRqg +PlpPbSbLFPLpFstsbqRqZMqWZqMWSDRzvq +sjtjHCwJwlHfdfjccmmLLQ +tGMtLHQGWzLHFVQtVfQtMWtbgrZNbdfSbccggrcTjTrfbm +swRChnwqhBCCCmSjcNSdcd +vnlnqDRlsRnJJqswJvGMFVMMdWtpVJFMQQFL +ffcHLzGmfvqqfWfF +rJrrRSPCPMCrPRQMNNWJQjJCnqFVVVTStqVnSBdqppBVtpqd +jNQQPjQMCRQwwQbRQbjMgwbNhwWZHHmzmlchlHHHDcLmWzhD +JzvrRHHJvCRZFPFnPgsQVVQNzQTQDttVsB +GSMjpqdbGNppBtDhPN +MbmqMwGbZPmPHJmv +ggVSVWzCNbbNCbRM +DfVhVsVQcQDmpmQTTQLjPjMjbDGNlbRMlNGG +sftTFJJccnphcfncTsfBvwZvrzgzZzZvBrVnzq +qqlClBNSCNSRQMvdrwFvnBrr +GDfhDtszhhsThpTDzsfpprMrFvQvrnnfvQrwHFbfFH +VtggWhpsmGVTGJWMjWjNjPWjLL +NSnShnjsswSsRPNsrnwcwMHfFwGqbvqCbFfg +LDJtzzmgVVlvqGbzvFfzff +mlJmQQpmJpZpBJJdjBNhrnnRdTTgNN +RtRRvbhDFPHHlhtPhRvPRtqjmzqzzwLjHQHLLLQVmVjq +WNNBBZfgfWnqVQwNqzmQcm +MZGfzSrTTnWrrWsTWnfSGbGllPCbGlJRvlPllCtt +phgcNfqgfpZsjjpdsS +brHHnWPbDPDbTPlDJJvJJPrMVVzRSdFzwdZZzFnsdzzVdVZs +SbStvJMDQgNmmtgg +lzDMDhfFRlfMFTfMGPMbFTlMpBHrmpjjCFjmBmrqBjtCmjjq +VvVswLLHZnJJwdndNsSSNBpCpjqjmNgrmCNtmmqm +nHcZWcSVsScTDlPPlTPb +DFMQSlMDpSpFDtDFccHvmqzvbHZjJmvzmmQH +CSgffrPssdgqRbqzzRqZ +dsdsfGsrBPsTVcMctMVNNhtStW +MDWRDWpgDvWpNptvNMnJCHJHMwHCndJfZn +blcrqTFmmcbhLTTTmlBZbjBJdBfBnCbQBdfn +TzlnhcnzTmhLRvSDsRzDPzWR +nwmmPnnPDjclhhjfFzzzwqbFFNHwVqVq +vSQrbpWCvMWQQWQMLgFJVHqzBzJVNqzBFL +CvCvQtWWQmcbtntPcb +qzvtzCCtLsLLzmQCHqpSsHSmfrnNrTrNWWMNGnWZTMZGBvWn +PglVFJwPhbcghVTBpBnWWhWnTMhB +FgjcJccVpwDcwFgVDsqzddqLqSDSCQQL +PLHsSVGGPvSLTffjMJWJJBjfBL +gNhwgTqDcqwpDqNhFpDFhFWfnndjcMJjMWzzBtntJBnW +DFhhQRRwbCbwRQChppmTHCVGTlslrsvrrSVZ +hHnRfSMmsSVrFvQqrmDPgr +jjcBzjZLpWccJLczBjZjWGwCnNzDvrgPCgQvFggvqrQFnr +jtZGpLwjWBpBWcfMTttfbHRnHTbT +swSHffFTVrJlHFSWrTpMZMPhMNBqBhTvhhqZ +bQbLQGGjQLdRCcQjGZBzpzBZqMBBBVdBqh +RjQDQGmgmVVbVcjjmjgcnWtJfrwsfrtHlwswnfHSFw +bVHbbMFDcbDbcmbbHVRbMRFgzSmdzSSTBtTjBdQTzlSldQjT +nqpqCMwJffqQSzTBQlqd +wvJhnnfrfsJrCNffvspRrPPFMbPMRRPPMZgZHR +FnJZnssHvMdJWJpW +mlDlllGrSGmttwlGvZgrzZNWgggzTzdT +bCltZCthtRcbcFbjFL +JGmHrJwGzzpllRZdzZLRcW +htbPSbVtFbbgjhffgPSfTVSDcHDDDLWscRdsZjdZcRssWc +vhfFbFvVHbtTVgFPhmJBCvBNrqBBrGCqQB +BcNQcvcBchSQNccLLvhTqbJZTrHrrrzzqTZMZMFZ +tpHDsnDRslllCCHtwnpsfjRgrJrVMfMmMrFrzVJFzrVZbZrr +tnDpjCwPLNSPdhPH +qnjvvBwBhSSFPgDQLVVDqgLr +WbszTbHTbsbHJWHLLMVZmJPQDrvmZL +ctlRbtCWWtvlSfjljjhBnBNB +TsnvssDDQlRbzMzjDMqHwq +tSGjZCfFZtCFLtVGWGZFbcqwHbhWdbzbwHbdwbdw +ZGBFJFZVBLjStZPBBZLRvlmsPTvsgrrnrTllvs +PgQdNsQFsdNwWqQBsQrTrTLpbrnTpGngnbTG +hCzzMJVDmfzmBDMCfSfhTMGcnpnTcjGrpjbMGjbL +CVVfvCflSHNHvPdBHW +DwlMjMNjStgmthMghg +PTlpHnJJTcZvTTbHZWZTvpqdHhmLgrgdfrhLLsmshmsLts +vncqTbPqcpCnbCPvccZbDBCGzzNBwjDlVVGFjjVR +QsdGGCztZVRddPgndf +DrNNBbwNHNwlbjFbbCNjNwDWWDPPVfDMgfmVMfnMWmmP +rvJBbbBNcLCtJZQL +NfLlqLhbNPddLPqLhpgHwFFwFHHTwRHWwPFTrT +MSMSCnjBnBjCscjVDVljTvHmmWnrwTrwFTrvTWTT +JCMMBzDMJcZZCjDzSBDNJgdfdQlqlLNdhgGLhp \ No newline at end of file diff --git a/day4.txt b/day4.txt new file mode 100644 index 0000000..0f4a908 --- /dev/null +++ b/day4.txt @@ -0,0 +1,1000 @@ +2-88,13-89 +12-94,12-94 +34-69,34-61 +9-76,9-9 +35-82,34-52 +9-10,10-88 +57-71,71-75 +50-71,71-91 +44-67,43-43 +68-69,67-68 +6-47,6-48 +6-52,7-67 +43-51,40-44 +56-67,57-69 +94-94,68-94 +10-97,9-9 +40-95,40-98 +22-81,22-22 +7-58,7-59 +8-82,82-82 +22-27,23-44 +5-27,7-28 +11-75,11-75 +7-90,99-99 +65-89,65-66 +24-52,29-53 +41-57,27-58 +14-95,13-26 +27-34,26-75 +18-33,33-56 +21-95,21-95 +20-29,69-71 +81-81,23-90 +47-83,47-82 +28-50,86-98 +50-76,21-50 +3-69,64-79 +17-97,10-16 +54-92,10-93 +7-75,45-77 +72-72,42-73 +13-80,81-87 +25-26,25-64 +38-48,38-38 +2-99,2-99 +48-93,67-92 +12-85,2-94 +14-75,7-82 +29-46,23-29 +50-94,4-51 +3-37,37-91 +24-91,91-91 +25-48,44-47 +2-77,1-26 +1-58,1-21 +16-93,16-93 +3-99,8-98 +23-23,6-23 +17-67,68-68 +4-15,1-4 +35-41,35-40 +6-88,52-89 +11-48,11-61 +4-64,12-65 +7-90,7-8 +1-89,6-73 +64-69,38-70 +26-67,59-66 +41-54,16-42 +2-99,9-96 +2-8,7-88 +12-95,97-97 +17-92,12-93 +27-56,27-28 +19-66,65-77 +1-95,94-94 +24-48,23-95 +40-74,74-74 +20-99,20-97 +60-73,61-74 +23-85,23-86 +37-69,69-69 +37-64,27-37 +7-53,7-27 +84-97,93-94 +26-51,50-52 +12-93,13-93 +28-86,29-29 +11-25,18-46 +97-99,91-98 +27-73,53-58 +25-77,6-26 +26-29,29-68 +11-17,11-28 +99-99,13-99 +70-92,48-92 +50-61,50-62 +2-95,77-94 +17-17,17-90 +95-95,16-95 +12-96,13-97 +28-98,28-28 +18-91,3-80 +1-95,1-19 +86-89,22-89 +37-96,3-96 +2-18,18-56 +8-72,71-73 +46-48,32-47 +57-69,57-78 +10-22,9-9 +6-96,6-6 +44-58,5-59 +6-8,7-93 +76-95,77-99 +97-99,3-98 +69-69,64-69 +38-68,67-96 +68-74,67-95 +20-68,69-69 +6-88,9-85 +47-66,47-55 +9-94,93-95 +19-29,28-89 +4-83,90-90 +2-95,1-95 +36-37,36-36 +12-90,45-68 +1-80,89-94 +95-99,6-96 +1-1,2-95 +47-81,46-80 +1-57,38-47 +5-7,7-98 +18-75,18-94 +39-70,39-70 +62-93,62-62 +30-32,31-54 +22-82,82-84 +83-92,84-98 +54-93,6-94 +74-91,73-90 +11-90,11-90 +92-98,96-97 +13-73,55-69 +47-95,46-95 +11-97,11-99 +53-68,53-53 +45-89,45-46 +99-99,38-89 +14-88,96-96 +6-78,6-7 +31-67,67-67 +96-96,48-96 +40-69,25-39 +10-60,9-61 +38-97,78-93 +52-69,51-60 +21-72,21-33 +24-90,89-90 +36-83,84-84 +44-58,44-68 +95-95,82-94 +13-91,91-95 +27-95,94-96 +60-82,61-83 +11-77,12-12 +7-91,6-90 +15-94,14-48 +5-73,5-74 +10-40,10-40 +59-94,59-93 +84-84,84-84 +8-8,7-75 +20-81,20-81 +5-96,96-99 +5-63,5-6 +2-93,2-93 +72-74,31-73 +6-54,5-47 +8-36,9-86 +1-95,94-94 +11-66,10-73 +45-52,52-99 +1-92,1-95 +76-90,76-77 +6-53,54-55 +44-52,45-95 +5-70,27-70 +3-56,6-55 +28-37,36-37 +54-97,54-98 +4-63,1-4 +5-64,65-65 +19-74,17-18 +12-26,12-12 +34-78,35-99 +42-42,3-42 +69-70,69-77 +49-75,50-95 +30-52,1-28 +25-80,25-25 +97-99,10-98 +36-55,36-54 +6-55,8-55 +60-80,61-81 +76-81,37-77 +19-20,20-20 +11-33,33-85 +31-60,7-32 +3-9,1-2 +40-87,22-40 +9-35,8-35 +9-75,35-75 +19-86,18-85 +33-52,45-53 +15-49,49-66 +40-83,1-41 +10-54,23-88 +83-94,43-83 +7-74,3-75 +18-79,17-18 +6-63,1-6 +19-39,39-77 +69-78,69-79 +14-26,1-23 +3-49,1-58 +39-40,38-39 +16-58,54-57 +34-83,17-34 +79-88,10-80 +73-86,73-86 +4-15,13-14 +6-94,6-6 +84-93,35-84 +56-81,55-81 +3-30,3-4 +5-94,4-96 +5-87,42-87 +98-99,63-79 +20-95,10-21 +40-87,39-41 +39-90,40-97 +20-54,24-88 +1-40,2-65 +57-97,63-96 +1-42,1-1 +5-11,11-66 +39-96,38-95 +5-72,6-73 +7-7,10-96 +97-97,13-97 +71-97,2-4 +79-79,76-79 +20-56,56-74 +57-76,62-68 +20-63,20-57 +19-68,69-69 +41-70,41-70 +37-42,27-44 +77-98,57-99 +18-92,91-96 +10-85,10-96 +43-61,6-44 +25-65,66-95 +12-29,12-80 +22-70,69-71 +77-78,6-77 +20-89,22-88 +79-88,20-88 +98-98,3-99 +58-80,58-66 +27-32,25-47 +80-91,80-95 +24-70,24-86 +52-60,52-62 +80-80,16-80 +3-43,10-88 +2-80,1-99 +34-87,34-88 +28-30,28-32 +13-55,7-55 +16-38,7-16 +25-33,32-77 +58-90,57-57 +7-94,6-7 +5-97,32-96 +71-71,51-71 +10-21,10-11 +3-9,8-98 +26-34,1-81 +35-49,35-50 +11-70,10-71 +25-72,24-99 +27-84,71-72 +50-72,50-71 +11-62,11-34 +93-97,92-96 +71-71,28-71 +72-80,65-81 +27-32,23-28 +31-79,32-79 +12-80,12-81 +38-63,6-39 +27-98,60-97 +45-83,35-45 +52-52,30-52 +11-97,12-14 +3-94,1-99 +4-23,16-22 +1-12,13-91 +14-80,14-78 +3-89,1-3 +28-99,27-87 +14-50,11-66 +40-88,39-39 +38-98,98-99 +5-91,4-91 +4-22,23-23 +20-90,24-91 +2-63,1-62 +14-81,13-80 +52-52,1-51 +8-11,11-93 +9-66,1-9 +44-86,43-68 +13-13,13-94 +40-67,40-68 +70-73,34-68 +5-83,2-11 +37-49,36-49 +11-97,99-99 +44-99,43-98 +50-98,50-97 +38-39,38-80 +83-83,2-84 +14-40,3-23 +41-94,41-96 +61-83,59-62 +22-95,22-96 +32-77,32-77 +22-97,23-96 +39-85,70-84 +4-95,3-95 +14-39,14-38 +9-68,68-96 +62-63,3-48 +21-25,22-90 +4-4,3-98 +85-89,85-99 +7-42,7-43 +31-82,82-84 +45-53,41-54 +38-66,37-66 +5-80,4-72 +1-1,2-97 +3-3,2-3 +47-61,42-61 +70-94,94-98 +1-51,1-51 +53-70,93-99 +43-72,72-82 +3-7,6-77 +71-95,82-92 +82-89,6-82 +3-43,4-76 +45-91,46-91 +12-87,13-87 +11-92,11-46 +3-73,3-72 +91-91,47-92 +12-93,14-94 +43-45,9-44 +10-87,11-87 +20-34,33-88 +48-71,15-97 +20-64,19-64 +3-57,57-57 +6-7,7-99 +4-19,19-96 +68-72,69-72 +14-45,14-14 +22-93,22-23 +8-34,8-15 +83-93,92-96 +11-94,12-94 +54-84,38-85 +93-98,3-55 +32-77,39-40 +3-15,15-93 +16-28,11-29 +1-95,94-96 +6-25,25-26 +32-96,99-99 +1-35,2-5 +73-91,65-74 +62-77,41-63 +72-72,72-93 +5-81,5-81 +81-83,32-81 +68-89,68-89 +30-35,30-61 +48-97,8-49 +85-94,12-94 +15-95,15-96 +4-98,3-4 +33-84,33-92 +28-58,29-59 +44-80,44-80 +11-84,83-83 +95-98,1-96 +3-44,21-43 +91-91,46-69 +91-98,1-90 +3-20,19-72 +3-92,4-55 +23-68,98-98 +26-97,80-83 +98-98,2-97 +30-92,74-92 +6-44,7-60 +18-23,36-47 +9-94,98-99 +11-20,11-75 +50-95,5-51 +13-83,20-84 +27-27,27-47 +95-96,56-95 +27-28,27-29 +31-95,31-31 +19-50,21-23 +19-48,30-55 +7-36,22-80 +3-5,6-99 +21-22,23-52 +3-70,3-70 +4-8,7-90 +28-60,60-98 +81-93,58-82 +2-6,3-16 +15-75,16-76 +8-86,6-6 +1-78,78-95 +37-91,37-99 +94-94,17-94 +53-80,80-81 +1-90,89-89 +21-32,21-73 +65-74,65-74 +24-54,89-92 +8-47,9-47 +8-36,12-41 +6-79,1-23 +79-83,24-84 +91-91,16-92 +14-84,14-15 +51-67,50-50 +6-93,96-96 +29-55,29-43 +36-37,36-77 +36-36,19-35 +84-84,60-89 +66-88,14-89 +14-69,28-93 +79-94,39-62 +85-89,89-89 +1-78,2-78 +44-52,42-53 +55-97,55-97 +32-81,74-80 +90-90,16-89 +3-96,2-37 +15-58,16-71 +5-93,6-93 +1-4,4-13 +61-96,61-99 +17-87,17-86 +34-48,35-49 +17-58,10-17 +1-11,12-68 +56-86,27-64 +73-80,73-77 +96-96,76-97 +23-32,23-31 +3-94,5-95 +67-98,66-72 +87-93,56-92 +4-15,5-15 +24-76,25-75 +43-59,33-60 +66-74,66-68 +18-90,17-57 +68-72,72-93 +6-19,19-29 +94-99,6-95 +20-85,10-21 +45-66,45-67 +73-74,12-73 +35-75,34-59 +67-88,80-88 +99-99,2-97 +15-90,14-14 +9-59,9-86 +18-52,52-79 +65-73,27-74 +89-96,88-96 +97-97,5-78 +92-94,48-93 +27-40,27-57 +7-95,1-8 +7-17,7-49 +66-66,65-89 +7-46,12-78 +15-29,15-38 +7-7,8-64 +13-22,13-21 +11-11,10-45 +84-84,30-84 +42-91,91-91 +65-87,29-87 +87-87,18-86 +17-66,17-65 +87-88,78-86 +57-57,58-87 +22-53,22-54 +8-62,7-62 +37-90,37-91 +50-86,49-86 +6-58,6-67 +32-60,32-63 +91-96,91-91 +13-94,13-14 +4-95,4-95 +1-86,4-87 +30-96,59-95 +10-28,8-59 +2-49,66-71 +96-99,4-97 +3-74,2-2 +29-76,75-75 +4-92,4-91 +16-94,14-16 +35-35,36-96 +39-67,66-66 +17-97,16-67 +1-99,46-98 +41-74,40-74 +45-68,45-69 +68-95,94-99 +14-51,13-31 +91-91,4-91 +46-66,2-67 +61-66,6-71 +66-69,55-89 +11-11,6-10 +72-91,73-94 +1-92,1-16 +25-98,35-74 +56-87,73-87 +57-59,1-58 +4-5,4-91 +27-31,30-68 +98-98,22-98 +28-95,84-94 +9-24,8-24 +21-30,22-38 +79-81,6-83 +34-96,34-83 +31-33,26-32 +36-59,50-52 +25-95,19-25 +97-97,75-90 +97-99,27-98 +7-48,32-52 +12-72,11-33 +3-41,3-41 +2-95,3-95 +71-71,52-72 +92-98,20-92 +14-90,15-99 +86-97,85-87 +44-71,44-71 +10-68,1-10 +47-77,11-46 +8-25,25-47 +22-34,25-34 +17-90,18-48 +31-94,30-94 +10-97,10-96 +21-44,22-97 +42-97,2-98 +84-91,50-85 +60-96,78-82 +81-85,73-80 +41-73,40-73 +48-65,47-56 +5-42,6-79 +33-33,33-83 +46-79,47-79 +61-91,23-92 +93-95,3-94 +32-43,31-51 +83-97,70-83 +24-93,94-94 +2-94,8-91 +45-61,46-65 +46-50,48-75 +23-95,57-84 +3-99,92-95 +85-85,2-61 +42-87,87-93 +95-99,2-96 +3-4,3-98 +1-87,7-87 +34-72,72-73 +11-84,8-12 +80-99,63-98 +96-99,7-97 +73-75,30-73 +60-87,7-61 +21-41,19-40 +14-77,76-86 +53-97,36-98 +34-54,33-54 +4-36,11-66 +6-10,10-94 +1-57,3-87 +15-39,16-39 +34-72,14-33 +1-3,3-93 +23-53,22-53 +24-44,23-34 +9-28,3-9 +12-99,99-99 +87-98,87-98 +11-11,11-73 +96-96,4-91 +91-91,8-92 +18-47,18-94 +57-59,27-59 +12-96,13-75 +1-27,26-61 +21-60,60-61 +30-67,31-67 +22-78,22-78 +6-77,7-52 +28-45,44-78 +34-87,90-94 +65-76,77-77 +11-76,57-58 +83-84,14-83 +70-97,11-70 +97-98,11-97 +29-29,16-29 +87-94,18-87 +53-71,70-70 +3-96,2-90 +11-80,13-99 +68-68,69-83 +64-97,1-98 +39-42,40-58 +35-49,35-49 +58-88,58-87 +67-67,13-66 +20-20,6-19 +16-67,16-17 +3-46,2-4 +41-96,41-88 +20-89,18-21 +4-84,4-84 +81-82,20-81 +94-94,28-93 +64-74,8-65 +3-73,5-36 +15-67,6-86 +33-33,32-91 +23-97,57-97 +8-58,8-46 +9-10,9-99 +67-93,69-92 +93-99,5-93 +95-96,95-98 +15-22,35-53 +55-97,38-98 +95-99,3-96 +12-12,12-62 +89-89,41-88 +9-10,9-92 +41-85,67-84 +10-97,2-11 +19-73,61-72 +38-79,78-80 +49-61,50-72 +70-71,71-72 +25-32,26-31 +2-5,3-62 +12-94,11-93 +26-95,27-98 +40-81,40-80 +34-71,34-95 +99-99,16-89 +14-93,93-96 +19-70,4-20 +7-28,1-29 +13-59,12-59 +44-97,11-45 +8-36,36-37 +94-95,7-94 +43-43,9-42 +16-98,3-13 +89-96,59-82 +9-50,9-51 +70-98,69-97 +84-87,84-87 +25-83,13-70 +63-71,62-71 +3-31,3-96 +53-67,13-76 +98-98,59-99 +4-39,5-40 +19-91,17-90 +28-50,36-45 +34-86,33-38 +58-80,57-80 +90-90,9-90 +98-98,37-72 +2-39,3-53 +85-97,28-84 +96-97,86-98 +38-78,30-39 +1-42,2-41 +7-28,8-27 +6-74,7-75 +85-87,49-86 +98-98,16-46 +42-90,41-70 +5-70,6-70 +13-75,75-75 +25-69,5-51 +13-43,2-14 +77-91,78-78 +17-97,16-18 +3-94,1-3 +33-86,32-92 +13-57,57-68 +18-88,19-95 +11-97,11-96 +17-67,17-67 +44-95,44-94 +21-85,20-85 +30-64,41-64 +34-68,35-68 +37-77,77-79 +96-97,9-96 +78-85,9-79 +80-80,35-79 +16-50,16-36 +65-85,7-85 +52-92,2-52 +77-77,30-78 +4-61,2-5 +41-91,30-90 +93-96,20-90 +9-11,10-73 +39-42,38-42 +46-72,45-76 +57-63,56-66 +9-68,5-46 +5-92,98-98 +39-46,39-46 +10-48,10-65 +3-22,7-91 +43-82,2-94 +21-69,20-69 +70-70,2-71 +9-94,8-91 +23-99,23-80 +6-98,6-97 +45-45,22-44 +31-79,32-32 +47-67,47-48 +5-80,80-81 +34-54,29-55 +16-97,16-96 +6-71,71-74 +17-47,17-46 +74-85,85-86 +7-10,9-82 +30-30,30-90 +51-54,55-55 +20-28,21-98 +67-67,64-66 +50-51,35-50 +4-68,5-5 +1-4,4-40 +20-20,20-84 +29-31,26-73 +12-12,11-12 +45-94,44-93 +36-45,18-37 +14-41,13-98 +38-42,42-84 +32-63,31-62 +32-79,1-79 +32-32,32-88 +83-95,83-96 +50-84,49-83 +30-56,30-74 +7-67,67-82 +5-39,40-94 +3-7,7-82 +42-45,42-67 +1-97,96-99 +30-87,30-64 +3-97,3-98 +52-81,52-81 +65-80,65-80 +46-55,54-91 +17-88,87-92 +7-97,97-97 +57-81,57-81 +54-97,54-54 +13-13,13-86 +30-35,36-36 +77-77,68-76 +11-82,12-91 +7-72,2-48 +85-94,28-86 +17-88,88-99 +9-56,7-9 +56-96,33-96 +85-89,85-89 +13-13,13-99 +76-93,62-76 +86-86,31-86 +31-95,31-96 +68-70,44-69 +9-54,9-10 +66-97,25-98 +44-93,93-93 +63-63,17-62 +3-98,2-10 +18-96,19-97 +19-80,2-81 +44-45,4-44 +1-37,7-36 +59-61,39-62 +33-98,33-57 +38-77,37-76 +13-96,11-14 +28-98,29-99 +4-44,2-45 +37-95,37-95 +53-68,54-68 +3-72,4-88 +14-21,21-82 +43-65,42-47 +21-52,51-93 +65-79,56-65 +22-65,36-77 +42-54,53-99 +10-95,9-95 +1-78,2-76 +81-81,16-81 +26-49,29-70 +45-87,44-87 +14-15,14-67 +14-15,14-84 +2-42,41-79 +1-93,93-94 +61-98,60-97 +3-9,12-99 +48-62,49-56 +64-65,41-64 +27-52,27-51 +88-91,30-89 +17-46,46-46 +10-80,11-81 +3-7,1-6 +80-81,80-96 +67-96,67-96 +96-98,2-96 +89-90,60-89 +16-83,16-82 +67-77,68-70 +33-68,33-37 +8-29,1-7 +28-71,28-70 +64-89,79-89 +18-35,18-36 +20-86,20-88 +68-69,40-68 +24-74,23-82 +79-88,79-88 +5-56,4-55 +1-98,2-2 +10-99,4-24 +12-15,13-15 +30-93,99-99 +6-14,6-97 +3-86,4-52 +15-52,13-52 +28-78,78-79 +27-28,27-95 +40-88,29-96 +1-3,2-52 +27-43,27-33 +23-65,54-99 +4-49,48-50 +46-67,47-68 +94-94,2-94 +24-31,30-66 +14-87,6-58 +2-5,4-98 +40-92,39-91 +2-87,87-88 +7-74,19-73 +58-91,58-92 +11-82,5-97 +62-65,4-62 +95-96,8-95 +6-68,6-68 +5-98,4-10 +46-72,89-96 +24-58,58-92 +33-36,37-94 +47-48,48-76 +18-20,3-32 +11-65,10-58 +32-97,32-95 +27-53,19-75 +10-60,45-59 +32-62,63-65 +1-88,2-88 +48-93,63-92 +46-79,78-96 +18-47,4-17 +6-63,6-7 +39-80,36-69 +20-78,20-78 +26-81,26-27 +23-96,20-79 +45-59,45-60 +37-47,36-64 +33-45,5-42 +3-98,4-98 +18-75,4-19 +10-93,10-10 +24-70,7-24 +20-53,40-49 +56-81,72-80 +1-70,4-71 +15-18,19-92 +84-98,83-95 +35-48,47-49 +27-63,62-78 +9-79,14-95 +5-77,4-77 +20-39,20-40 +26-67,72-92 +69-80,55-80 +68-83,68-92 +87-87,6-86 +1-92,1-94 +14-81,14-99 +49-51,49-52 +71-71,49-70 +69-70,69-72 +18-54,3-50 +97-99,1-97 +4-34,33-33 +67-84,11-84 +31-52,47-51 +81-97,97-98 +27-62,54-61 +1-83,1-99 +30-78,30-78 +12-38,12-37 +37-76,24-74 +1-96,1-95 +96-96,12-96 +41-61,40-60 +81-87,81-99 +1-19,9-19 +2-8,7-42 +35-36,36-71 +67-79,67-78 +69-69,65-68 +8-8,9-64 +4-12,6-78 +14-47,47-64 +9-93,9-93 +95-98,15-29 +30-87,88-88 +12-77,78-78 +8-15,18-50 +10-98,11-97 +1-2,1-97 +2-92,2-86 +50-50,50-87 \ No newline at end of file diff --git a/day5.txt b/day5.txt new file mode 100644 index 0000000..2f2ee99 --- /dev/null +++ b/day5.txt @@ -0,0 +1,513 @@ +[N] [Q] [N] +[R] [F] [Q] [G] [M] +[J] [Z] [T] [R] [H] [J] +[T] [H] [G] [R] [B] [N] [T] +[Z] [J] [J] [G] [F] [Z] [S] [M] +[B] [N] [N] [N] [Q] [W] [L] [Q] [S] +[D] [S] [R] [V] [T] [C] [C] [N] [G] +[F] [R] [C] [F] [L] [Q] [F] [D] [P] + 1 2 3 4 5 6 7 8 9 + +move 3 from 9 to 4 +move 2 from 5 to 2 +move 8 from 1 to 9 +move 4 from 7 to 1 +move 5 from 3 to 8 +move 3 from 3 to 7 +move 11 from 8 to 3 +move 7 from 3 to 6 +move 2 from 5 to 9 +move 3 from 1 to 6 +move 6 from 2 to 4 +move 6 from 7 to 5 +move 1 from 6 to 1 +move 1 from 9 to 4 +move 16 from 4 to 9 +move 2 from 1 to 2 +move 1 from 4 to 6 +move 1 from 3 to 7 +move 2 from 2 to 4 +move 1 from 7 to 9 +move 22 from 9 to 8 +move 1 from 6 to 3 +move 18 from 8 to 5 +move 3 from 8 to 2 +move 3 from 2 to 9 +move 13 from 6 to 7 +move 1 from 6 to 7 +move 4 from 3 to 6 +move 2 from 6 to 3 +move 2 from 3 to 8 +move 3 from 7 to 8 +move 14 from 5 to 2 +move 3 from 2 to 5 +move 2 from 8 to 4 +move 4 from 8 to 6 +move 4 from 6 to 4 +move 11 from 5 to 2 +move 3 from 9 to 2 +move 7 from 2 to 3 +move 11 from 7 to 2 +move 1 from 5 to 7 +move 5 from 6 to 8 +move 30 from 2 to 7 +move 23 from 7 to 2 +move 4 from 3 to 4 +move 3 from 9 to 6 +move 4 from 8 to 2 +move 1 from 8 to 2 +move 2 from 7 to 9 +move 4 from 2 to 3 +move 1 from 5 to 9 +move 6 from 4 to 7 +move 5 from 3 to 6 +move 1 from 3 to 6 +move 1 from 9 to 2 +move 16 from 2 to 5 +move 7 from 7 to 6 +move 9 from 2 to 1 +move 2 from 1 to 4 +move 8 from 5 to 3 +move 5 from 7 to 4 +move 1 from 9 to 8 +move 9 from 3 to 6 +move 25 from 6 to 8 +move 2 from 9 to 5 +move 3 from 4 to 2 +move 7 from 4 to 1 +move 1 from 8 to 7 +move 6 from 5 to 2 +move 11 from 8 to 5 +move 1 from 7 to 9 +move 10 from 1 to 2 +move 6 from 5 to 1 +move 1 from 4 to 2 +move 13 from 8 to 1 +move 17 from 1 to 2 +move 5 from 1 to 9 +move 1 from 8 to 4 +move 1 from 1 to 3 +move 1 from 3 to 6 +move 1 from 9 to 3 +move 2 from 4 to 5 +move 1 from 4 to 8 +move 1 from 9 to 1 +move 8 from 5 to 7 +move 1 from 8 to 1 +move 7 from 7 to 6 +move 2 from 1 to 2 +move 1 from 3 to 6 +move 2 from 5 to 4 +move 8 from 2 to 1 +move 1 from 9 to 7 +move 1 from 5 to 1 +move 2 from 7 to 3 +move 2 from 3 to 7 +move 2 from 7 to 8 +move 2 from 1 to 5 +move 3 from 9 to 2 +move 2 from 8 to 9 +move 1 from 9 to 2 +move 1 from 9 to 8 +move 1 from 8 to 7 +move 6 from 6 to 5 +move 1 from 6 to 2 +move 2 from 4 to 5 +move 2 from 6 to 8 +move 1 from 7 to 1 +move 2 from 8 to 4 +move 11 from 2 to 5 +move 18 from 5 to 6 +move 6 from 2 to 6 +move 10 from 2 to 7 +move 1 from 4 to 3 +move 7 from 2 to 8 +move 7 from 1 to 4 +move 6 from 7 to 8 +move 2 from 7 to 3 +move 8 from 4 to 7 +move 1 from 1 to 3 +move 1 from 2 to 1 +move 4 from 7 to 1 +move 4 from 1 to 3 +move 2 from 3 to 9 +move 2 from 5 to 4 +move 1 from 2 to 1 +move 2 from 1 to 5 +move 1 from 3 to 1 +move 2 from 5 to 2 +move 1 from 2 to 6 +move 5 from 7 to 4 +move 1 from 1 to 2 +move 10 from 8 to 1 +move 2 from 2 to 7 +move 2 from 7 to 1 +move 1 from 7 to 9 +move 1 from 5 to 7 +move 3 from 8 to 7 +move 3 from 3 to 6 +move 3 from 7 to 1 +move 5 from 1 to 4 +move 1 from 7 to 6 +move 22 from 6 to 3 +move 2 from 6 to 2 +move 19 from 3 to 4 +move 15 from 4 to 8 +move 9 from 8 to 4 +move 5 from 6 to 8 +move 2 from 2 to 8 +move 2 from 9 to 4 +move 7 from 1 to 5 +move 1 from 1 to 3 +move 1 from 9 to 7 +move 5 from 8 to 3 +move 4 from 8 to 1 +move 5 from 1 to 5 +move 10 from 4 to 3 +move 3 from 4 to 2 +move 2 from 8 to 3 +move 12 from 4 to 8 +move 1 from 7 to 6 +move 3 from 2 to 9 +move 2 from 4 to 5 +move 5 from 3 to 7 +move 1 from 7 to 2 +move 1 from 1 to 6 +move 1 from 7 to 2 +move 15 from 3 to 8 +move 10 from 5 to 6 +move 3 from 7 to 8 +move 1 from 5 to 8 +move 1 from 2 to 3 +move 7 from 6 to 1 +move 3 from 5 to 3 +move 5 from 3 to 5 +move 3 from 5 to 4 +move 2 from 4 to 9 +move 2 from 3 to 5 +move 14 from 8 to 5 +move 1 from 9 to 1 +move 16 from 5 to 3 +move 16 from 3 to 6 +move 2 from 9 to 8 +move 21 from 6 to 7 +move 2 from 1 to 7 +move 1 from 2 to 7 +move 4 from 1 to 7 +move 1 from 4 to 7 +move 16 from 8 to 5 +move 20 from 7 to 4 +move 1 from 9 to 8 +move 1 from 7 to 4 +move 3 from 8 to 6 +move 1 from 9 to 1 +move 2 from 1 to 4 +move 2 from 5 to 2 +move 5 from 4 to 7 +move 1 from 6 to 9 +move 11 from 7 to 6 +move 2 from 7 to 5 +move 12 from 6 to 2 +move 13 from 2 to 1 +move 1 from 2 to 3 +move 1 from 8 to 4 +move 6 from 4 to 1 +move 1 from 6 to 7 +move 7 from 4 to 9 +move 8 from 9 to 3 +move 2 from 8 to 3 +move 10 from 5 to 4 +move 11 from 1 to 8 +move 1 from 1 to 3 +move 5 from 1 to 8 +move 8 from 5 to 6 +move 13 from 8 to 9 +move 12 from 3 to 5 +move 12 from 5 to 9 +move 1 from 7 to 9 +move 1 from 1 to 2 +move 1 from 1 to 4 +move 3 from 8 to 5 +move 1 from 2 to 5 +move 1 from 4 to 8 +move 5 from 6 to 3 +move 1 from 8 to 4 +move 13 from 4 to 7 +move 3 from 7 to 6 +move 1 from 1 to 4 +move 4 from 4 to 2 +move 1 from 6 to 3 +move 2 from 5 to 9 +move 2 from 5 to 9 +move 1 from 4 to 8 +move 6 from 9 to 4 +move 22 from 9 to 2 +move 8 from 7 to 4 +move 7 from 2 to 1 +move 3 from 3 to 8 +move 2 from 6 to 7 +move 14 from 4 to 2 +move 2 from 6 to 1 +move 1 from 8 to 7 +move 3 from 3 to 9 +move 1 from 8 to 4 +move 3 from 1 to 9 +move 3 from 9 to 3 +move 31 from 2 to 8 +move 8 from 8 to 4 +move 1 from 9 to 1 +move 9 from 4 to 5 +move 7 from 5 to 6 +move 2 from 5 to 1 +move 1 from 2 to 1 +move 1 from 7 to 9 +move 1 from 2 to 9 +move 2 from 6 to 4 +move 4 from 7 to 4 +move 4 from 9 to 8 +move 6 from 4 to 1 +move 1 from 3 to 2 +move 1 from 3 to 6 +move 1 from 9 to 2 +move 2 from 2 to 4 +move 1 from 9 to 1 +move 1 from 3 to 1 +move 17 from 1 to 9 +move 4 from 6 to 2 +move 1 from 9 to 7 +move 4 from 9 to 7 +move 1 from 8 to 4 +move 3 from 7 to 6 +move 1 from 4 to 9 +move 10 from 8 to 5 +move 6 from 6 to 5 +move 1 from 7 to 2 +move 1 from 1 to 4 +move 1 from 4 to 5 +move 9 from 8 to 3 +move 4 from 3 to 9 +move 1 from 4 to 6 +move 1 from 6 to 5 +move 1 from 4 to 8 +move 2 from 3 to 8 +move 1 from 3 to 8 +move 3 from 8 to 9 +move 5 from 2 to 9 +move 1 from 7 to 9 +move 5 from 8 to 7 +move 3 from 8 to 4 +move 2 from 8 to 5 +move 24 from 9 to 7 +move 1 from 3 to 5 +move 2 from 9 to 4 +move 22 from 7 to 9 +move 1 from 3 to 4 +move 6 from 4 to 6 +move 4 from 6 to 7 +move 10 from 5 to 3 +move 8 from 3 to 5 +move 2 from 3 to 4 +move 2 from 4 to 6 +move 10 from 7 to 3 +move 21 from 9 to 1 +move 2 from 3 to 4 +move 4 from 3 to 8 +move 2 from 4 to 8 +move 1 from 7 to 8 +move 4 from 6 to 8 +move 3 from 5 to 4 +move 8 from 8 to 2 +move 18 from 1 to 6 +move 3 from 4 to 1 +move 1 from 2 to 8 +move 5 from 1 to 8 +move 3 from 3 to 6 +move 3 from 2 to 9 +move 3 from 8 to 1 +move 11 from 5 to 2 +move 3 from 8 to 7 +move 10 from 2 to 9 +move 1 from 7 to 9 +move 3 from 8 to 1 +move 2 from 7 to 8 +move 6 from 9 to 5 +move 4 from 2 to 8 +move 8 from 5 to 8 +move 1 from 3 to 7 +move 2 from 5 to 6 +move 3 from 1 to 6 +move 2 from 1 to 6 +move 4 from 9 to 8 +move 4 from 9 to 8 +move 1 from 9 to 4 +move 9 from 6 to 9 +move 16 from 6 to 9 +move 1 from 4 to 7 +move 1 from 2 to 9 +move 5 from 8 to 5 +move 4 from 5 to 1 +move 6 from 1 to 7 +move 12 from 8 to 4 +move 5 from 8 to 1 +move 6 from 9 to 3 +move 1 from 1 to 6 +move 2 from 5 to 8 +move 12 from 4 to 7 +move 2 from 8 to 4 +move 1 from 4 to 8 +move 1 from 7 to 6 +move 1 from 4 to 6 +move 14 from 7 to 1 +move 3 from 3 to 2 +move 7 from 9 to 7 +move 3 from 3 to 5 +move 15 from 1 to 2 +move 2 from 5 to 9 +move 1 from 8 to 9 +move 16 from 9 to 1 +move 1 from 5 to 9 +move 5 from 6 to 2 +move 12 from 7 to 2 +move 20 from 2 to 6 +move 10 from 2 to 6 +move 11 from 1 to 7 +move 2 from 7 to 4 +move 2 from 2 to 5 +move 1 from 2 to 3 +move 2 from 5 to 6 +move 1 from 9 to 5 +move 1 from 5 to 9 +move 25 from 6 to 7 +move 25 from 7 to 6 +move 1 from 3 to 1 +move 1 from 2 to 5 +move 1 from 4 to 3 +move 33 from 6 to 3 +move 1 from 9 to 5 +move 2 from 3 to 5 +move 28 from 3 to 9 +move 5 from 1 to 9 +move 4 from 1 to 8 +move 2 from 3 to 2 +move 2 from 8 to 1 +move 1 from 4 to 6 +move 3 from 5 to 3 +move 1 from 2 to 4 +move 2 from 2 to 8 +move 1 from 6 to 5 +move 30 from 9 to 2 +move 7 from 2 to 6 +move 1 from 1 to 3 +move 1 from 1 to 7 +move 1 from 5 to 6 +move 1 from 5 to 4 +move 5 from 7 to 4 +move 4 from 7 to 3 +move 1 from 3 to 7 +move 3 from 8 to 7 +move 8 from 3 to 1 +move 3 from 1 to 7 +move 4 from 1 to 4 +move 3 from 9 to 8 +move 8 from 6 to 2 +move 18 from 2 to 6 +move 6 from 7 to 2 +move 1 from 1 to 7 +move 3 from 4 to 7 +move 5 from 4 to 8 +move 2 from 8 to 7 +move 7 from 2 to 5 +move 5 from 2 to 7 +move 10 from 7 to 9 +move 5 from 5 to 9 +move 1 from 3 to 9 +move 5 from 2 to 6 +move 3 from 7 to 9 +move 2 from 5 to 6 +move 2 from 2 to 9 +move 2 from 8 to 7 +move 1 from 4 to 5 +move 8 from 9 to 2 +move 5 from 6 to 7 +move 4 from 9 to 1 +move 4 from 8 to 9 +move 12 from 9 to 1 +move 16 from 1 to 4 +move 12 from 6 to 2 +move 3 from 7 to 6 +move 3 from 7 to 3 +move 1 from 9 to 4 +move 12 from 4 to 5 +move 2 from 4 to 3 +move 1 from 7 to 1 +move 4 from 4 to 3 +move 1 from 8 to 2 +move 6 from 3 to 1 +move 1 from 1 to 8 +move 7 from 2 to 5 +move 1 from 8 to 1 +move 4 from 5 to 4 +move 5 from 5 to 9 +move 1 from 3 to 8 +move 1 from 9 to 7 +move 1 from 8 to 1 +move 4 from 5 to 6 +move 5 from 5 to 9 +move 7 from 9 to 5 +move 11 from 6 to 4 +move 1 from 9 to 4 +move 1 from 9 to 1 +move 1 from 7 to 2 +move 9 from 4 to 3 +move 5 from 1 to 9 +move 3 from 5 to 1 +move 5 from 9 to 8 +move 8 from 3 to 1 +move 2 from 5 to 3 +move 7 from 2 to 5 +move 1 from 6 to 4 +move 3 from 5 to 9 +move 3 from 6 to 9 +move 3 from 2 to 9 +move 5 from 3 to 6 +move 1 from 9 to 5 +move 4 from 8 to 3 +move 1 from 8 to 4 +move 8 from 1 to 3 +move 12 from 3 to 7 +move 1 from 2 to 4 +move 3 from 2 to 8 +move 6 from 7 to 6 +move 4 from 5 to 7 +move 5 from 9 to 7 +move 2 from 9 to 2 +move 1 from 9 to 5 +move 4 from 5 to 1 +move 1 from 5 to 4 +move 14 from 7 to 6 +move 1 from 1 to 7 +move 10 from 4 to 5 +move 4 from 1 to 2 +move 1 from 4 to 6 +move 1 from 7 to 4 +move 17 from 6 to 8 +move 1 from 5 to 7 +move 10 from 5 to 4 +move 1 from 2 to 6 +move 4 from 2 to 6 +move 13 from 6 to 1 +move 9 from 4 to 3 +move 2 from 2 to 4 +move 1 from 6 to 7 +move 1 from 4 to 3 +move 8 from 3 to 5 +move 1 from 3 to 4 +move 17 from 1 to 3 +move 15 from 3 to 7 +move 3 from 4 to 1 +move 6 from 8 to 9 +move 6 from 9 to 1 +move 2 from 3 to 1 +move 2 from 5 to 2 +move 6 from 7 to 6 +move 3 from 6 to 9 \ No newline at end of file diff --git a/day5_test.txt b/day5_test.txt new file mode 100644 index 0000000..c526f15 --- /dev/null +++ b/day5_test.txt @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 \ No newline at end of file diff --git a/day6.txt b/day6.txt new file mode 100644 index 0000000..0fd53a8 --- /dev/null +++ b/day6.txt @@ -0,0 +1 @@ +pqffvllhrhthvhshhpnhpnpqpvpvrpvpwvwjjdssmcsmccjvjmjjwnjwjwhjwwwzswwhvhwwlvvlbvbtbzbfbzbtbqbgbpbggwzggvjjdpdffbmffntncchtccbcffcjfjnjfnntssvtstzssmnnhrhlhbbwfwjfwjfwwbhhfhmmpsssbnssssfzzfpffdrdpdqqvnncjjgrjjmhhpqqcjqcjjzdzzpvvprrlglrrcmcqqtltdltddswsrrzzwgzzgssczcmzzmgmwgmggwwzttpccmcsmmvfvnvppzlzvzllgclggpfggfnfrfvrvwwvhwwvgwwrbbgfglflblzblzbznzhzffplffnrrcqqsgsvshvhlldhhvnhhmdddnssdvdwdwccggmddsmswwtctdtqqjsshhjzzdpdmpdmppjtjwjswjsjjjsdjjtrtbrbjjwwvnvppqphqhwhcwhwbbpgbbnhbnhhswwdswwlcczdztzbbbnwwtmmpvvgjjqgqdqzzdjdpjjnnffhccscvvchhbmbcbffpdpggvdvttpvpqqhggdtdhtdhhmghmgggzwgwrgwggwlggvpggcfcttzmtmgmvgmmpqmqlmqllsqqjbjwjsszczlzrzgrzzhshlhjjwttwnntbtjtjpplccqrqhrhssbmbttrddfvfwwjcwcvwcwwvpvggqwgwjgwgccvqqcmqqtqnqpnqnffdqfqhhqnhnmhmvhmhwwfrwrggnmmmcnmmgsszmzlmzmddcwwthtssgjsgjjgpgnppdqqcgqggzjgjngnrnggvffgddvtvctcftcftfnnnnhssbgsgwwthtqtltftqtnqttsrtrggwcgwcwmwgmgvmmzrmzrzjzmmcclmmtjmjhmmlhlwlppnpccbbrlrqrcrjrdrlrnngmnmvmcmzczztbblglccvzvppzspsddrzzlsllfzfsspnpdnpnvvvgmmpccmpcpgcpcwcddtmddgwgngqqcpqqlhqqczqqbvqqgdqgqmgmlmmvrrgfgzffbccldcdmmcmcgcngnghngngdngdndcncbbpqbbphbphpccpcwwjswwfttbqbsszccrbbdndsdrdqrqjrjjbmbtbdbbgbvgvcggwdwcccttqccnffjpjqqzpzlzvlljhhschhzlhhfhcfhchvcvtvtgvgzvzrvrdrgrwrjwjljhljlssszsqzsswhhmlhlrhlhzzgghjhzjjcllwrwtrrbdbrbnrnprnrffjvvphhvbbqbbscstsmslmlvmvrmmvvngnlnzzwqzzjqqsqbqrrtmrtmmfgmgrgjjtmjmrrddmrrqmrrjmjqmqnqmmcmlmfmffcgcclplffzvzwvzzjtztftqftqffjjpwjjbpjjggzdgzgwzzfrfvvhfvvwcvvbccfcvffpcpgpbbqhbbhmmzfmfvvnjvnjjhzhqqmffndndmmzhmmqnnlglvvjhjddvggqwgwdgwdggqbqgqrqlrrtptsswlssqwssbdsdrsddjsszjszjjpnjnvnjvnnmznmnddccpwwhshzzcfcqcwcddsjjmnjmjljwwgmglllqlhhctcvvqrvrrhfrrbcrrfbrfbrfrqffbwbqwbbjggsjjjnqqrqsqhhwnhnshnhhdjjqfqpqmmqgqgqggzmmnncrrpgglgqlqclqlsqqwnnfntnzttrnnmtmvvfppbrprzpzzdzvvtctnncpclpccsbbswwcscjssvhvhhqggzmgmqgmgwwgcwgccrllzhzzlzlbljbllmqqpjqqhrhqhjhbbjmjmhmddmwmcmvvmbbmvbmmznnwvwlwtllhwlwgwpgplgpgmgngjgglbglgmllvvlttgrrrlsrllghlggjdjwwfjwfjfvhjmgqnwhwpbdtzrphsqbmmvscslhbdzffsfshgsdjbqbwlgmrtschcnfhdlnndsvpwmwttfglpghhznmgfcjsdlwhnmfqvmpvhgpnnwtjfztbmtprqhsqtjwzhwcqjtjbtqwlcldnvggrwddmpllwnrqwdljwzfzqwcdwgqwvnthnrpcsfwrmqvbzjvzqnmdnfgtbzgtnrvblfwmhdsddgbffnjzvjzfpwglctpqhnqdvtblcchrlmndzhlsczgnsmnbwgnjngnjtlrdpfhqjrwcrqvcpspbtwcvgvvmpnwqjjpdpnslmcrcjnjmhqmrmfbcmrcmpbcbhpcvwqwflljfpgdvqhgdwgcphjqfnqzjjpsqnbtfzhftjtfcbhhcmmlwcfznsflfpphprrgvqwfgjcwfgjfsghzcbqrldwrjlzlbjhpgrbmgdpgzmfsqsphqbbslwwpzspccrhcfrgcjlfwhlcmzdcltbbpcrzglqgqntpwtmgstqlmcsqqbsqgmsmfznwcrfdgvsmnfqmwtsvqvlhwwjlrlhnsvcnrtwwmrjcgfncvlrcqrllndlvmrjpfjpgrrjcwhsqvlbtnlqgwjjqzwcvtvlnfnmqqshbcnqtcbvnwtwbfdgqmvnpmjhlsfdntfwwntvsrrsmspzqmglfnprjtdbmbgnplzzclsjpnzwdhcbhpfnqrgmgqtpfhgnfbqhrpmznbrshjhntzctslwhtgtjvpqhntmchhtncfjmbzcgnpcbpmldrtnpvrzqfftbjjcjlpwwgvmnstjghftcczjzfsftgzpfhbspqmrbfhcdfmqbrgrbsmjvgpbrnvbblwwvqzzpmqrspzvzppjfbgfftdvsdvmrjzhfslptzmgndnqqgmrrfnbbpvbmvpngwjhzvfbwfnzlrgwffvjsfdldfgchfjmnzfnzhwrwttrzlrhmnwvjjdqfmbpfllhrgmddjgnwjnbqwjnslcrdjrmnldcpsgzjpdhrpdfwhbvwhwnhcsmwcwstvqrcrqsnvjrzljfgbljfszchbsqnldgntvcscwqqmpnlwtlfmswtmvrlpzgbrjhtgjgpnhggnprpvwfqpjffqhtfvpnrptgrtwzzlvplgnfjmqphgmnssccrdndqgpljtwtntshrpgsjcdrpmccjnjdgmpmzbfhqjzphcswtwvvqcrwsjhtdqgrhqjmjjcrblpswcblnpzvfztqtbpgjcgngqmwrjtlmhvlsbmrdzwlgqlfqcqnsnjcnddssqbftjvnlgcwwfcgdpdmqrdsjmcnzrfrpnvjmbsltpzwjhjzqqvbgrltczbgvcpwdzqsvhddsbjgjgcmnldrfhnhddlvjcvsnghprjwlghhtghldcqsdcdgnmbcjglvjjvvlbhzczlmjsdqtdpzdtvfztgsdfjsdtfchvzcgvhjnnncmsrfvvmcsjjdftmlpczgvtwngssqmzlmsrrsrbhhhrnwqhmpcdvqmdsvvtsgsqfdcpgsdgzvmbzpbpgtcbshnvdzlmpnwmqrvnmrjprmvppjwfbjhlhzsfhqqzmpbclqvsvfrcqwprrcvqcbbwvnqfwnrgjhlwmgzpfspqrvqrhmqnwvzjrhvvgdgswlvzjjhjtdctlthlpzqhjvwwbpsclpgflcnsdshrqbhmczcwljqlndfnfrcdgmptpsltrcjccnpdchgnswdcpsslcslcjznzpgfhznhbgqhdqvddmqzdnmpshhdcjrsmfjllhfvjvmzzhzrvlbpzqngwmlwcmqnppqzncvjshfrpjlptvnqfrfcrfnbhwhpdqqvjhsqvsmprtgfrddwzjzlwhhqvjpfrwgwvwpszzsfzwjtwngdjfllhjrmqjtmvwsvggnswpqpjbtcrnhhhlzbrvhjdstnpctjlgsffrrbfdvjzhwsgthgfsqnvqdcjffsttlrjnhtqqdpfqpjtdgfwcdwzmwfvqgglsrmmqwbszclpzwldwcswpwfwldrfmmdndcptjbmnvgcpntqcdrcffvgnlpjmcqjpfmbmwjfpqzbzhqtqbzsghbnfvhphfzzhfznttpfrqwpmzjchpzzrdclhdltlqbjmjdfdjqlqbwptsghcnvtdscwgpqnlhhvsvglplhlrwpnzmdbsbrlhmpczzfz \ No newline at end of file diff --git a/day6_test.txt b/day6_test.txt new file mode 100644 index 0000000..9e3311c --- /dev/null +++ b/day6_test.txt @@ -0,0 +1 @@ +bvwbjplbgvbhsrlpgdmjqwftvncz \ No newline at end of file diff --git a/src/day1/main.rs b/src/day1/main.rs new file mode 100644 index 0000000..2bf7ad4 --- /dev/null +++ b/src/day1/main.rs @@ -0,0 +1,20 @@ +use base::*; + +fn main() { + let lines = read_file("day1.txt"); + + let mut sums: Vec = vec![]; + lines.split(|line|line.is_empty()).for_each(|sub| + sums.push(sub.iter().map(|line|line.parse::().expect("Error while parsing")).sum()) + ); + sums.sort(); + sums.reverse(); + let top = &sums[0..=2]; + + top.iter().enumerate().for_each(|(index, cal)| + println!("{}. with value {cal}", index + 1) + ); + + let sum = top.iter().sum::(); + println!("Sums of top three: {sum}"); +} diff --git a/src/day2/main.rs b/src/day2/main.rs new file mode 100644 index 0000000..668a671 --- /dev/null +++ b/src/day2/main.rs @@ -0,0 +1,140 @@ +use base::*; + +#[derive(Debug, PartialEq, Clone, Copy)] +enum Move { + Rock, + Paper, + Scissors +} + +enum GameResult { + Win, + Draw, + Lose +} + +impl GameResult { + pub fn from_str(c: &str) -> GameResult { + return match c { + "X" => {GameResult::Lose} + "Y" => {GameResult::Draw} + "Z" | _ => {GameResult::Win} + } + } +} + +impl Move { + pub fn from_str(c: &str) -> Move { + return match c { + "A" | "X" => { + Move::Rock + } + "B" | "Y" => { + Move::Paper + } + "C" | "Z" | _ => { + Move::Scissors + } + } + } + + pub fn score(self) -> u32 { + return match self { + Move::Rock => {1} + Move::Paper => {2} + Move::Scissors => {3} + } + } + + pub fn result(self, other: Move) -> GameResult { + if self == other { + return GameResult::Draw; + } + match self { + Move::Rock => { + if other == Move::Scissors { + return GameResult::Win + } + } + Move::Paper => { + if other == Move::Rock { + return GameResult::Win + } + } + Move::Scissors => { + if other == Move::Paper { + return GameResult::Win + } + } + } + + GameResult::Lose + } +} + +struct GameMove(Move, Move); + +impl GameMove { + fn calc_score(&self) -> u32 { + let result = self.1.result(self.0); + let score = self.1.score(); + return match result { + GameResult::Win => { + score + 6 + } + GameResult::Draw => { + score + 3 + } + GameResult::Lose => { + score + } + } + } + + fn from_opponent_move(opponent_move: Move, result: GameResult) -> GameMove { + return match result { + GameResult::Draw => { + GameMove(opponent_move, opponent_move) + } + GameResult::Win => { + let our_move = match opponent_move { + Move::Rock => {Move::Paper} + Move::Paper => {Move::Scissors} + Move::Scissors => {Move::Rock} + }; + GameMove(opponent_move, our_move) + } + GameResult::Lose => { + let our_move = match opponent_move { + Move::Rock => {Move::Scissors} + Move::Paper => {Move::Rock} + Move::Scissors => {Move::Paper} + }; + GameMove(opponent_move, our_move) + } + } + } +} + +fn main() { + let lines = read_file("day2.txt"); + + let sum = lines.iter().map(|line| { + let symbols_per_move = line.split(" "); + let mut symbols_iter = symbols_per_move.map(|symbol| Move::from_str(symbol)).take(2); + + GameMove(symbols_iter.next().unwrap(), symbols_iter.next().unwrap()) + }).map(|game_move|game_move.calc_score()).sum::(); + + println!("Task 1: Got sum: {sum}"); + + let sum = lines.iter().map(|line| { + let mut symbols_per_move = line.split(" "); + + GameMove::from_opponent_move(Move::from_str(symbols_per_move.next().unwrap()), GameResult::from_str(symbols_per_move.next().unwrap())) + }).map(|game_move|game_move.calc_score()).sum::(); + + + println!("Task 2: Got sum: {sum}"); + +} \ No newline at end of file diff --git a/src/day3/main.rs b/src/day3/main.rs new file mode 100644 index 0000000..ff0b88c --- /dev/null +++ b/src/day3/main.rs @@ -0,0 +1,58 @@ +use base::*; + +fn calc_prio(item: char) -> u32{ + if item.is_lowercase() { + item as u32 - ('a' as u32) + 1 + } else { + item as u32 - ('A' as u32) + 27 + } +} + +fn main() { + let lines = read_file("day3.txt"); + + let sum = lines.iter() + .map(|line|line.split_at(line.len() / 2)) + .map(|(first_half, second_half)| { + for char_0 in first_half.chars() { + for char_1 in second_half.chars() { + if char_0 == char_1 { + return Some(char_0); + } + } + } + None + }) + .map(|item| { + match item{ + None => 0, + Some(item) => calc_prio(item) + } + }).sum::(); + + println!("Task 1: {sum}"); + + let sum = lines.chunks_exact(3).map(|chunk| { + + for char_0 in chunk[0].chars() { + for char_1 in chunk[1].chars() { + if char_0 == char_1 { + for char_2 in chunk[2].chars() { + if char_1 == char_2 { + return Some(char_0); + } + } + } + } + } + + None + }).map(|item|{ + match item { + None => 0, + Some(item) => calc_prio(item) + } + }).sum::(); + + println!("Task 2: {sum}"); +} \ No newline at end of file diff --git a/src/day4/main.rs b/src/day4/main.rs new file mode 100644 index 0000000..f17f78f --- /dev/null +++ b/src/day4/main.rs @@ -0,0 +1,68 @@ +use std::fs::read_to_string; + +struct Range { + start: u32, + end: u32 +} + +impl Range { + fn new(start: u32 , end: u32) -> Self{ + Range {start, end} + } + + fn contains(&self, number: u32) -> bool { + number >= self.start && number <= self.end + } + + fn fully_overlap(&self, other: &Range) -> bool { + self.contains(other.start) && self.contains(other.end) + } + + fn partly_overlap(&self, other: &Range) -> bool { + self.contains(other.start) || self.contains(other.end) + } +} + +fn main() { + let input = read_to_string("day4.txt").unwrap(); + + let count = input + .split_whitespace() + .flat_map(|line| line.split(",")) + .flat_map(|line_range| line_range.split("-")) + .map(|number| number.parse::().unwrap()) + .collect::>() + .chunks_exact(2) + .map(|chunk| Range::new(chunk[0], chunk[1])) + .collect::>() + .chunks_exact(2) + .filter_map(|range_pair|{ + if range_pair[0].fully_overlap(&range_pair[1]) || range_pair[1].fully_overlap(&range_pair[0]) { + Some(()) + } + else { None } + }) + .count(); + + println!("Task1: {count}"); + + let count = input + .split_whitespace() + .flat_map(|line| line.split(",")) + .flat_map(|line_range| line_range.split("-")) + .map(|number| number.parse::().unwrap()) + .collect::>() + .chunks_exact(2) + .map(|chunk| Range::new(chunk[0], chunk[1])) + .collect::>() + .chunks_exact(2) + .filter_map(|range_pair|{ + if range_pair[0].partly_overlap(&range_pair[1]) || range_pair[1].partly_overlap(&range_pair[0]) { + Some(()) + } + else { None } + }) + .count(); + + println!("Task2: {count}"); +} \ No newline at end of file diff --git a/src/day5/main.rs b/src/day5/main.rs new file mode 100644 index 0000000..9b8f8e0 --- /dev/null +++ b/src/day5/main.rs @@ -0,0 +1,100 @@ +use std::collections::HashMap; +use base::read_file; + +#[derive(Debug, Clone)] +struct CrateStorage { + stacks: HashMap> +} + +impl CrateStorage { + fn print_top(&self) { + for k in 0..(9 as usize) { + match self.stacks.get(&k) { + None => { + print!(" ") + } + Some(v) => { + print!("{}", v[v.len() - 1]); + } + } + } + println!() + } +} + +#[derive(Debug)] +struct MoveOp { + amount: usize, + from: usize, + to: usize +} + +impl MoveOp { + fn apply(&self, storge: &mut CrateStorage, task_1 : bool) { + if task_1 { + for _ in 0..self.amount { + let vec = storge.stacks.get_mut(&self.from).unwrap(); + let element = vec.remove(vec.len() - 1); + storge.stacks.get_mut(&self.to).unwrap().push(element); + } + } else { + let mut temp = vec![]; + for _ in 0..self.amount { + let vec = storge.stacks.get_mut(&self.from).unwrap(); + temp.push(vec.remove(vec.len() - 1)); + } + temp.reverse(); + for i in 0..self.amount { + storge.stacks.get_mut(&self.to).unwrap().push(temp[i]); + } + } + dbg!(&storge); + } +} + +fn main() { + let lines = read_file("day5_test.txt"); + let mut storage = CrateStorage{ + stacks: HashMap::new() + }; + + let mut moves =vec![]; + + for line in lines { + if line.starts_with("[") { + let mut iter = line.chars().enumerate(); + loop { + match iter.next() { + Some((idx, char)) => { + if char == '[' { + let idx = idx / 4; + if let Some((_, value)) = iter.next() { + let vec = storage.stacks.entry(idx).or_insert_with(|| Vec::new()); + vec.insert(0, value); + } else { + break; + } + } + } + None => break + } + } + } else if line.starts_with("move") { + let split = line.split_whitespace().collect::>(); + let amount = split[1].parse::().unwrap(); + let from = split[3].parse::().unwrap() - 1; + let to = split[5].parse::().unwrap() - 1; + moves.push(MoveOp{amount, from, to}); + } + } + + let mut storage_task_1 = storage.clone(); + moves.iter().for_each(|move_op| move_op.apply(&mut storage_task_1, true)); + storage_task_1.print_top(); + + let mut storage_task_2 = storage; + moves.iter().for_each(|move_op| move_op.apply(&mut storage_task_2, false)); + storage_task_2.print_top(); + + +} \ No newline at end of file diff --git a/src/day6/main.rs b/src/day6/main.rs new file mode 100644 index 0000000..246dfe9 --- /dev/null +++ b/src/day6/main.rs @@ -0,0 +1,21 @@ +use std::collections::HashSet; +use std::fs::read_to_string; + +fn find_marker(content: &str, size: usize) -> Option { + for (idx, chars) in content.chars().collect::>().windows(size).enumerate() { + let set = chars.iter().map(|char|*char).collect::>(); + if set.len() == size { + let idx = idx + size; + return Some(idx); + } + } + None +} + +fn main() { + let content = read_to_string("day6.txt").unwrap(); + + println!("Task 1: {}", find_marker(&content, 4).unwrap()); + println!("Task 2: {}", find_marker(&content, 14).unwrap()); + +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..2f910f5 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,16 @@ +use std::fs::File; +use std::io::{BufRead, BufReader}; + +pub fn read_file(name: &str) -> Vec { + let file = File::open(name); + + return match file { + Ok(file) => { + BufReader::new(file).lines().map(|line|line.ok()).flatten().collect::>() + } + Err(_) => { + vec![] + } + } + +} \ No newline at end of file