From cf6303a5bc1558ebdb7b467da38f74cd3ac3a9b1 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 5 Dec 2022 19:46:06 +0100 Subject: Add 2022 --- 2021/Cargo.toml | 2 + 2021/day1/Cargo.toml | 8 + 2021/day1/input.txt | 2000 ++++++++++++++++++++++++++++++++++++++++++++++++ 2021/day1/src/main.rs | 21 + 2021/day10/Cargo.toml | 8 + 2021/day10/example.txt | 10 + 2021/day10/input.txt | 110 +++ 2021/day10/src/lib.rs | 191 +++++ 2021/day2/Cargo.toml | 8 + 2021/day2/input.txt | 1000 ++++++++++++++++++++++++ 2021/day2/src/main.rs | 34 + 2021/day3/Cargo.toml | 8 + 2021/day3/input.txt | 1000 ++++++++++++++++++++++++ 2021/day3/src/main.rs | 36 + 2021/day4/Cargo.toml | 8 + 2021/day4/input.txt | 601 +++++++++++++++ 2021/day4/src/main.rs | 107 +++ 2021/day6/Cargo.toml | 8 + 2021/day6/input.txt | 1 + 2021/day6/src/main.rs | 36 + 2021/day7/Cargo.toml | 8 + 2021/day7/input.txt | 1 + 2021/day7/src/main.rs | 29 + 2021/day9/Cargo.toml | 8 + 2021/day9/example.txt | 5 + 2021/day9/input.txt | 100 +++ 2021/day9/src/lib.rs | 90 +++ Cargo.toml | 2 - day1/Cargo.toml | 8 - day1/input.txt | 2000 ------------------------------------------------ day1/src/main.rs | 21 - day10/Cargo.toml | 8 - day10/example.txt | 10 - day10/input.txt | 110 --- day10/src/lib.rs | 191 ----- day2/Cargo.toml | 8 - day2/input.txt | 1000 ------------------------ day2/src/main.rs | 34 - day3/Cargo.toml | 8 - day3/input.txt | 1000 ------------------------ day3/src/main.rs | 36 - day4/Cargo.toml | 8 - day4/input.txt | 601 --------------- day4/src/main.rs | 107 --- day6/Cargo.toml | 8 - day6/input.txt | 1 - day6/src/main.rs | 36 - day7/Cargo.toml | 8 - day7/input.txt | 1 - day7/src/main.rs | 29 - day9/Cargo.toml | 8 - day9/example.txt | 5 - day9/input.txt | 100 --- day9/src/lib.rs | 90 --- 54 files changed, 5438 insertions(+), 5438 deletions(-) create mode 100644 2021/Cargo.toml create mode 100644 2021/day1/Cargo.toml create mode 100644 2021/day1/input.txt create mode 100644 2021/day1/src/main.rs create mode 100644 2021/day10/Cargo.toml create mode 100644 2021/day10/example.txt create mode 100644 2021/day10/input.txt create mode 100644 2021/day10/src/lib.rs create mode 100644 2021/day2/Cargo.toml create mode 100644 2021/day2/input.txt create mode 100644 2021/day2/src/main.rs create mode 100644 2021/day3/Cargo.toml create mode 100644 2021/day3/input.txt create mode 100644 2021/day3/src/main.rs create mode 100644 2021/day4/Cargo.toml create mode 100644 2021/day4/input.txt create mode 100644 2021/day4/src/main.rs create mode 100644 2021/day6/Cargo.toml create mode 100644 2021/day6/input.txt create mode 100644 2021/day6/src/main.rs create mode 100644 2021/day7/Cargo.toml create mode 100644 2021/day7/input.txt create mode 100644 2021/day7/src/main.rs create mode 100644 2021/day9/Cargo.toml create mode 100644 2021/day9/example.txt create mode 100644 2021/day9/input.txt create mode 100644 2021/day9/src/lib.rs delete mode 100644 Cargo.toml delete mode 100644 day1/Cargo.toml delete mode 100644 day1/input.txt delete mode 100644 day1/src/main.rs delete mode 100644 day10/Cargo.toml delete mode 100644 day10/example.txt delete mode 100644 day10/input.txt delete mode 100644 day10/src/lib.rs delete mode 100644 day2/Cargo.toml delete mode 100644 day2/input.txt delete mode 100644 day2/src/main.rs delete mode 100644 day3/Cargo.toml delete mode 100644 day3/input.txt delete mode 100644 day3/src/main.rs delete mode 100644 day4/Cargo.toml delete mode 100644 day4/input.txt delete mode 100644 day4/src/main.rs delete mode 100644 day6/Cargo.toml delete mode 100644 day6/input.txt delete mode 100644 day6/src/main.rs delete mode 100644 day7/Cargo.toml delete mode 100644 day7/input.txt delete mode 100644 day7/src/main.rs delete mode 100644 day9/Cargo.toml delete mode 100644 day9/example.txt delete mode 100644 day9/input.txt delete mode 100644 day9/src/lib.rs diff --git a/2021/Cargo.toml b/2021/Cargo.toml new file mode 100644 index 0000000..9f555f1 --- /dev/null +++ b/2021/Cargo.toml @@ -0,0 +1,2 @@ +[workspace] +members = ["day1", "day2", "day3", "day4", "day6", "day7", "day9", "day10"] diff --git a/2021/day1/Cargo.toml b/2021/day1/Cargo.toml new file mode 100644 index 0000000..a3c4e52 --- /dev/null +++ b/2021/day1/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day1" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day1/input.txt b/2021/day1/input.txt new file mode 100644 index 0000000..ad1abff --- /dev/null +++ b/2021/day1/input.txt @@ -0,0 +1,2000 @@ +173 +175 +171 +177 +179 +177 +174 +177 +178 +185 +189 +195 +194 +211 +227 +226 +227 +221 +224 +227 +228 +231 +232 +229 +226 +244 +252 +251 +258 +269 +263 +255 +259 +261 +232 +231 +241 +244 +245 +278 +258 +259 +273 +272 +281 +284 +288 +303 +306 +312 +313 +325 +327 +332 +335 +345 +346 +328 +329 +327 +330 +325 +326 +325 +351 +352 +353 +363 +364 +382 +402 +401 +380 +370 +371 +348 +359 +357 +366 +386 +401 +387 +388 +404 +409 +430 +435 +441 +475 +469 +475 +473 +478 +510 +507 +508 +510 +502 +500 +512 +517 +521 +519 +532 +533 +537 +538 +540 +541 +545 +556 +548 +543 +549 +561 +562 +563 +562 +561 +572 +574 +575 +568 +569 +570 +579 +591 +590 +602 +601 +581 +583 +593 +590 +591 +577 +576 +579 +581 +563 +559 +563 +564 +567 +569 +570 +582 +579 +601 +598 +583 +589 +591 +597 +611 +618 +621 +622 +641 +657 +658 +661 +631 +633 +646 +647 +652 +667 +670 +676 +680 +681 +683 +681 +687 +690 +683 +687 +690 +695 +691 +693 +696 +695 +700 +697 +696 +700 +713 +696 +693 +698 +701 +700 +699 +690 +692 +693 +696 +722 +744 +746 +758 +763 +768 +782 +776 +777 +787 +797 +800 +801 +789 +814 +815 +812 +790 +791 +790 +804 +813 +841 +845 +844 +848 +855 +847 +855 +858 +859 +858 +860 +867 +868 +869 +877 +887 +888 +895 +896 +904 +905 +907 +923 +932 +944 +945 +950 +955 +965 +990 +1019 +1017 +1025 +1040 +1041 +1066 +1060 +1033 +1034 +1047 +1057 +1060 +1061 +1068 +1071 +1080 +1081 +1090 +1096 +1097 +1098 +1099 +1093 +1096 +1100 +1101 +1112 +1118 +1119 +1121 +1123 +1125 +1126 +1152 +1155 +1149 +1161 +1166 +1178 +1181 +1182 +1189 +1190 +1176 +1169 +1183 +1196 +1183 +1205 +1207 +1198 +1200 +1186 +1172 +1162 +1177 +1179 +1175 +1163 +1164 +1170 +1168 +1171 +1173 +1172 +1174 +1175 +1172 +1173 +1167 +1169 +1173 +1176 +1177 +1178 +1179 +1181 +1185 +1186 +1196 +1183 +1181 +1176 +1190 +1200 +1216 +1240 +1238 +1234 +1224 +1247 +1257 +1258 +1246 +1233 +1234 +1223 +1229 +1231 +1232 +1231 +1232 +1249 +1255 +1254 +1257 +1268 +1298 +1300 +1302 +1325 +1337 +1339 +1345 +1348 +1336 +1341 +1342 +1343 +1344 +1343 +1336 +1351 +1360 +1362 +1359 +1357 +1358 +1364 +1370 +1372 +1373 +1374 +1378 +1409 +1390 +1398 +1410 +1411 +1417 +1418 +1431 +1450 +1451 +1452 +1456 +1468 +1469 +1472 +1475 +1465 +1469 +1453 +1457 +1458 +1474 +1464 +1454 +1457 +1460 +1467 +1469 +1470 +1455 +1456 +1468 +1476 +1498 +1502 +1500 +1514 +1522 +1529 +1528 +1516 +1511 +1516 +1521 +1503 +1523 +1498 +1515 +1527 +1526 +1527 +1556 +1567 +1586 +1607 +1616 +1615 +1611 +1612 +1621 +1599 +1600 +1601 +1625 +1632 +1633 +1628 +1656 +1644 +1646 +1669 +1671 +1675 +1676 +1682 +1681 +1658 +1657 +1671 +1669 +1668 +1669 +1670 +1691 +1708 +1709 +1708 +1724 +1731 +1738 +1748 +1766 +1767 +1769 +1756 +1757 +1758 +1759 +1760 +1773 +1775 +1777 +1780 +1782 +1793 +1813 +1795 +1796 +1798 +1797 +1804 +1806 +1811 +1812 +1813 +1818 +1822 +1829 +1824 +1814 +1811 +1806 +1825 +1844 +1847 +1837 +1841 +1844 +1836 +1825 +1828 +1841 +1846 +1839 +1840 +1847 +1856 +1869 +1870 +1871 +1879 +1884 +1890 +1888 +1859 +1861 +1873 +1870 +1871 +1876 +1885 +1886 +1887 +1888 +1887 +1895 +1888 +1889 +1891 +1890 +1884 +1885 +1854 +1857 +1860 +1841 +1837 +1838 +1841 +1859 +1863 +1865 +1866 +1864 +1853 +1855 +1865 +1867 +1875 +1876 +1877 +1880 +1877 +1876 +1886 +1894 +1901 +1903 +1910 +1901 +1903 +1905 +1911 +1913 +1928 +1938 +1940 +1946 +1956 +1951 +1953 +1955 +1961 +1957 +1960 +1967 +1966 +1970 +1976 +1979 +1980 +1979 +1967 +1974 +1980 +1974 +1975 +1976 +2005 +2012 +2015 +2022 +2023 +2024 +2018 +2017 +2024 +2041 +2042 +2043 +2074 +2075 +2077 +2084 +2090 +2091 +2096 +2097 +2100 +2103 +2090 +2063 +2081 +2082 +2079 +2095 +2093 +2095 +2103 +2084 +2093 +2098 +2116 +2123 +2124 +2123 +2117 +2115 +2120 +2121 +2132 +2138 +2146 +2158 +2162 +2163 +2167 +2177 +2178 +2183 +2178 +2198 +2174 +2187 +2196 +2221 +2224 +2228 +2232 +2237 +2238 +2257 +2262 +2263 +2266 +2280 +2287 +2293 +2280 +2281 +2289 +2290 +2289 +2291 +2307 +2316 +2322 +2321 +2320 +2335 +2339 +2345 +2348 +2357 +2360 +2361 +2367 +2375 +2380 +2382 +2389 +2398 +2384 +2388 +2390 +2367 +2369 +2371 +2366 +2370 +2371 +2379 +2364 +2365 +2368 +2369 +2370 +2377 +2378 +2390 +2392 +2398 +2402 +2393 +2404 +2417 +2441 +2446 +2453 +2459 +2462 +2463 +2464 +2476 +2477 +2481 +2482 +2483 +2477 +2481 +2489 +2500 +2504 +2491 +2490 +2487 +2474 +2475 +2476 +2478 +2489 +2491 +2498 +2501 +2513 +2514 +2532 +2546 +2547 +2553 +2559 +2562 +2580 +2588 +2590 +2602 +2601 +2608 +2613 +2616 +2623 +2626 +2651 +2652 +2654 +2650 +2651 +2654 +2658 +2657 +2660 +2654 +2668 +2669 +2662 +2665 +2647 +2660 +2670 +2672 +2680 +2677 +2678 +2677 +2684 +2677 +2678 +2684 +2702 +2703 +2707 +2727 +2728 +2738 +2739 +2738 +2757 +2759 +2766 +2771 +2775 +2788 +2790 +2794 +2797 +2800 +2798 +2801 +2800 +2802 +2803 +2804 +2831 +2820 +2821 +2824 +2827 +2813 +2816 +2826 +2827 +2829 +2834 +2835 +2841 +2849 +2854 +2855 +2867 +2877 +2894 +2900 +2918 +2917 +2898 +2899 +2901 +2902 +2903 +2901 +2919 +2920 +2931 +2939 +2945 +2946 +2934 +2936 +2947 +2956 +2955 +2958 +2946 +2947 +2951 +2955 +2957 +2960 +2964 +2965 +2974 +2976 +2992 +3009 +3014 +3015 +2997 +2996 +3003 +3000 +3006 +3026 +3019 +3031 +3012 +3013 +3020 +3010 +3014 +3018 +3019 +3031 +3007 +3017 +3018 +3031 +3033 +3025 +3037 +3039 +3033 +3000 +3001 +3003 +3014 +3016 +3034 +3033 +3035 +3038 +3040 +3038 +3020 +3018 +3020 +3021 +3039 +3043 +3034 +3036 +3043 +3059 +3074 +3076 +3090 +3096 +3103 +3101 +3102 +3113 +3114 +3115 +3119 +3127 +3146 +3140 +3145 +3146 +3147 +3151 +3152 +3153 +3154 +3144 +3149 +3157 +3163 +3172 +3175 +3180 +3206 +3207 +3212 +3215 +3211 +3212 +3220 +3229 +3230 +3226 +3227 +3256 +3296 +3299 +3301 +3303 +3301 +3302 +3308 +3324 +3323 +3313 +3314 +3317 +3318 +3317 +3330 +3358 +3360 +3369 +3363 +3368 +3371 +3377 +3381 +3385 +3382 +3379 +3381 +3383 +3385 +3386 +3389 +3388 +3392 +3396 +3393 +3391 +3393 +3394 +3398 +3400 +3403 +3404 +3408 +3424 +3425 +3426 +3424 +3415 +3417 +3420 +3439 +3442 +3447 +3454 +3478 +3480 +3477 +3478 +3470 +3472 +3477 +3476 +3477 +3479 +3509 +3519 +3542 +3547 +3548 +3564 +3565 +3569 +3570 +3584 +3591 +3590 +3589 +3598 +3603 +3605 +3609 +3608 +3628 +3624 +3644 +3652 +3654 +3648 +3650 +3652 +3659 +3661 +3675 +3676 +3690 +3692 +3699 +3700 +3702 +3703 +3706 +3715 +3719 +3720 +3725 +3721 +3730 +3722 +3740 +3750 +3751 +3752 +3761 +3763 +3778 +3777 +3778 +3780 +3777 +3794 +3793 +3792 +3802 +3803 +3806 +3817 +3814 +3823 +3824 +3825 +3826 +3831 +3834 +3835 +3844 +3856 +3857 +3864 +3879 +3904 +3906 +3923 +3933 +3935 +3934 +3935 +3937 +3935 +3944 +3941 +3936 +3937 +3935 +3936 +3935 +3937 +3938 +3949 +3950 +3949 +3952 +3953 +3980 +3989 +3990 +3991 +3992 +3988 +3993 +4003 +3969 +3959 +3964 +3973 +3981 +3987 +3986 +3975 +3982 +3981 +3983 +3981 +3984 +3992 +3991 +3984 +3999 +4003 +4004 +3996 +3992 +4035 +4043 +4042 +4034 +4027 +4051 +4052 +4048 +4051 +4049 +4060 +4059 +4062 +4061 +4063 +4062 +4053 +4056 +4067 +4055 +4057 +4058 +4072 +4077 +4075 +4060 +4057 +4058 +4061 +4060 +4061 +4060 +4070 +4088 +4097 +4093 +4105 +4107 +4105 +4103 +4105 +4109 +4086 +4111 +4112 +4115 +4110 +4118 +4119 +4127 +4128 +4129 +4130 +4134 +4136 +4135 +4138 +4139 +4140 +4135 +4158 +4137 +4138 +4158 +4157 +4154 +4156 +4175 +4176 +4179 +4184 +4198 +4196 +4199 +4180 +4188 +4193 +4192 +4201 +4200 +4192 +4207 +4220 +4218 +4230 +4229 +4247 +4248 +4249 +4253 +4254 +4256 +4265 +4266 +4272 +4268 +4273 +4295 +4296 +4305 +4295 +4310 +4311 +4312 +4311 +4314 +4307 +4305 +4294 +4306 +4321 +4316 +4326 +4330 +4331 +4337 +4336 +4337 +4338 +4340 +4342 +4345 +4347 +4345 +4370 +4384 +4405 +4406 +4419 +4420 +4435 +4439 +4443 +4445 +4447 +4431 +4424 +4433 +4418 +4417 +4416 +4417 +4420 +4424 +4440 +4442 +4454 +4461 +4481 +4483 +4479 +4480 +4484 +4485 +4495 +4498 +4499 +4524 +4527 +4528 +4539 +4541 +4545 +4543 +4559 +4569 +4571 +4568 +4573 +4570 +4571 +4580 +4579 +4580 +4583 +4588 +4589 +4590 +4597 +4632 +4625 +4626 +4618 +4621 +4632 +4642 +4644 +4647 +4650 +4665 +4669 +4666 +4673 +4674 +4677 +4681 +4686 +4651 +4657 +4658 +4664 +4665 +4667 +4685 +4688 +4695 +4712 +4714 +4715 +4717 +4731 +4734 +4738 +4737 +4743 +4745 +4752 +4753 +4748 +4763 +4768 +4769 +4771 +4774 +4801 +4802 +4830 +4845 +4850 +4847 +4873 +4883 +4884 +4885 +4886 +4887 +4896 +4891 +4913 +4914 +4937 +4938 +4953 +4959 +4979 +4984 +4990 +4982 +4979 +5008 +5007 +5008 +5004 +5015 +5017 +5038 +5066 +5067 +5069 +5078 +5091 +5101 +5086 +5088 +5086 +5092 +5097 +5098 +5088 +5070 +5072 +5083 +5082 +5073 +5077 +5080 +5076 +5073 +5065 +5066 +5068 +5069 +5081 +5082 +5084 +5083 +5086 +5089 +5092 +5095 +5130 +5133 +5119 +5129 +5130 +5138 +5140 +5148 +5147 +5150 +5151 +5155 +5163 +5188 +5190 +5192 +5189 +5196 +5180 +5191 +5193 +5197 +5182 +5162 +5163 +5147 +5154 +5155 +5168 +5207 +5216 +5223 +5228 +5227 +5229 +5221 +5218 +5221 +5219 +5220 +5230 +5259 +5260 +5233 +5256 +5258 +5251 +5246 +5230 +5234 +5242 +5245 +5260 +5261 +5269 +5281 +5285 +5296 +5297 +5296 +5297 +5298 +5313 +5314 +5313 +5319 +5313 +5322 +5324 +5325 +5333 +5346 +5354 +5355 +5345 +5347 +5349 +5350 +5352 +5339 +5349 +5345 +5361 +5362 +5363 +5404 +5398 +5424 +5415 +5420 +5433 +5435 +5436 +5437 +5438 +5455 +5454 +5460 +5455 +5453 +5454 +5466 +5469 +5471 +5481 +5482 +5502 +5503 +5501 +5484 +5460 +5461 +5465 +5466 +5470 +5454 +5460 +5486 +5482 +5483 +5502 +5512 +5514 +5516 +5518 +5525 +5526 +5521 +5515 +5518 +5521 +5528 +5539 +5557 +5561 +5577 +5571 +5572 +5579 +5576 +5577 +5589 +5592 +5595 +5596 +5595 +5601 +5587 +5560 +5563 +5562 +5571 +5598 +5606 +5621 +5636 +5637 +5663 +5665 +5678 +5677 +5678 +5679 +5684 +5687 +5684 +5688 +5691 +5690 +5693 +5696 +5707 +5725 +5727 +5731 +5734 +5738 +5748 +5767 +5768 +5763 +5767 +5758 +5760 +5791 +5777 +5778 +5782 +5773 +5776 +5777 +5791 +5792 +5793 +5795 +5781 +5786 +5793 +5805 +5807 +5818 +5822 +5821 +5826 +5827 +5846 +5847 +5864 +5886 +5878 +5873 +5868 +5878 +5876 +5881 +5876 +5888 +5890 +5893 +5894 +5895 +5900 +5907 +5908 +5915 +5916 +5937 +5936 +5927 +5938 +5945 +5944 +5935 +5942 +5943 +5945 +5948 +5977 +5985 +5975 +5985 +5998 +5999 +5996 +6027 +6047 +6031 +6033 +6034 +6022 +6023 +6025 +6030 +6029 +6030 +6034 +6046 +6055 +6061 +6058 +6067 +6070 +6077 +6069 +6088 +6084 +6090 +6100 +6102 +6107 +6111 +6108 +6103 +6104 +6114 +6118 +6107 +6114 +6102 +6112 +6113 +6115 +6116 +6139 +6135 +6143 +6154 +6155 +6160 +6163 +6160 +6163 +6169 +6184 +6176 +6199 +6205 +6204 +6219 +6222 +6231 +6207 +6218 +6219 +6221 +6222 +6221 +6200 +6194 +6203 +6204 +6210 +6209 +6210 +6209 +6210 +6230 +6238 +6239 +6245 +6249 +6264 +6271 +6262 +6275 +6252 +6253 +6240 +6245 +6219 +6220 +6221 +6222 +6225 +6231 +6236 +6238 +6267 +6272 +6273 +6278 +6287 +6286 +6287 +6281 +6264 +6269 +6270 +6274 +6247 +6248 +6259 +6264 +6267 +6276 +6281 +6286 +6284 +6289 +6287 +6275 +6247 +6263 +6261 +6264 +6265 +6270 +6271 +6272 +6271 +6280 +6282 +6283 +6291 +6302 +6303 +6315 +6335 +6361 +6358 +6359 +6362 +6363 +6349 +6348 +6355 +6357 +6358 +6357 +6375 +6374 +6367 +6342 +6350 +6354 +6353 +6354 +6357 +6369 +6371 +6382 +6384 +6371 +6403 +6402 +6412 +6413 +6415 +6416 +6417 +6418 +6419 +6420 +6438 +6436 +6438 +6443 +6454 +6440 +6439 +6431 +6442 +6441 +6444 +6446 +6450 +6422 +6424 +6418 +6426 +6437 +6438 +6439 +6449 +6451 +6452 +6463 +6464 +6475 +6492 +6499 +6506 +6519 +6548 +6545 +6543 +6556 +6565 +6567 +6564 +6553 +6554 +6556 +6564 +6584 +6580 +6581 +6582 +6584 +6585 +6586 +6595 +6596 +6595 +6598 +6575 +6594 +6595 +6593 +6591 +6602 +6603 +6575 +6573 +6577 +6586 +6587 +6615 +6624 +6647 +6677 +6678 +6679 +6683 +6682 +6684 +6689 +6704 +6709 +6723 +6751 +6754 +6755 +6757 +6758 +6774 +6787 +6791 +6816 +6837 +6838 +6846 +6847 +6845 +6847 +6850 +6864 +6863 +6853 +6874 +6875 +6874 +6883 +6891 +6899 +6918 +6920 +6921 +6937 +6934 +6935 +6951 +6950 +6969 +6971 +6976 +6978 +6979 +6987 +6989 +6987 +6989 +6991 +6990 +6991 +6980 +6979 +6963 +6964 +6968 +6972 +7000 +6992 +7003 +7006 +7019 +7022 +7028 +7040 +7035 +7034 +7055 +7063 +7065 +7066 +7071 +7079 +7092 +7102 +7118 +7115 +7121 diff --git a/2021/day1/src/main.rs b/2021/day1/src/main.rs new file mode 100644 index 0000000..7e18b94 --- /dev/null +++ b/2021/day1/src/main.rs @@ -0,0 +1,21 @@ +use std::fs::File; +use std::io::prelude::*; +use std::io::BufReader; + +fn main() { + let file = File::open("input.txt").expect("File not found"); + let reader = BufReader::new(file); + let values: Vec = reader + .lines() + .map(|x| x.unwrap().parse::().unwrap()) + .collect::>(); + let mut increasing: u16 = 0; + + for index in 1..values.len() { + if values[index - 1] < values[index] { + increasing += 1; + } + } + + println!("{}", increasing); +} diff --git a/2021/day10/Cargo.toml b/2021/day10/Cargo.toml new file mode 100644 index 0000000..40d2066 --- /dev/null +++ b/2021/day10/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day10" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day10/example.txt b/2021/day10/example.txt new file mode 100644 index 0000000..b1518d9 --- /dev/null +++ b/2021/day10/example.txt @@ -0,0 +1,10 @@ +[({(<(())[]>[[{[]{<()<>> +[(()[<>])]({[<{<<[]>>( +{([(<{}[<>[]}>{[]{[(<()> +(((({<>}<{<{<>}{[]{[]{} +[[<[([]))<([[{}[[()]]] +[{[{({}]{}}([{[{{{}}([] +{<[[]]>}<{[{[{[]{()[[[] +[<(<(<(<{}))><([]([]() +<{([([[(<>()){}]>(<<{{ +<{([{{}}[<[[[<>{}]]]>[]] diff --git a/2021/day10/input.txt b/2021/day10/input.txt new file mode 100644 index 0000000..df5a5a3 --- /dev/null +++ b/2021/day10/input.txt @@ -0,0 +1,110 @@ +{[[<{(<{[{{[{[[]{}]{<>{}}}({<>()}{{}{}})]}{({[<>{}]({}[])})[{[{}[]](()<>)}<[{}{}]{()<>}>]}}]<(({{{(){}}{[][] +<<<({((<{<([([<>{}]<{}<>>]{<{}<>>({}<>)}])>}{({(([()[]]{[]()})({{}<>}<(){}>))[(<<><>>[()[]]){{()[]}< +<<<[(({{(([[[[<><>][<><>]]]([[{}{}](<><>)][(<>[]){[]()}])])([[(<{}<>>(()[]))(<[][]>)]]{{<[[]{}]{< +({({([{{[[[{(<(){}><[]{}>)}]]][(<<([()[]](()[]))>[[[{}[]]{[]<>}](<()>[()<>]]]>(<(({}<>){<>[]}){<[]()>}>{[{( +[([{(<[<<[({<[()<>][{}]>({{}{}})}({[<>{}][()()]}[([][]){()[]}]))]>>]>)<<[((([[{{()()}(<>{})}[(<>( +{[[{<[[[[([[{[()[]]<[]()>}<({}())<[]<>>>]({<{}[]>}<<{}<>>>)](([(<>{}){[][]}]<[(){}]({}{})>)[((()){[]})<{{} +{{<<((({(<[({<<>[]><{}{}>}((<>[])([]())))[((()[]){[]{}})]]{<([{}[]]<<>[]>)(({}[]}{[][]})><<([][])([][])>>} +([[(<({[[{[{<[<><>]({}())>}](<[[{}[]](<><>)]{{()<>}[{}]}>{((<><>]<()()>)([(){}]<()>)})}{[<{({}())<<><>>}[(() +(<((([[<<[<[{[()[]][[]{}]}{([]<>){[]{}}}]>]>>{{([[({<>()}(<>{}))]<{(()<>)([])}([<>{}}{{}()})> +(<({{<(<{[{<{[(){}][<>{}]}{[[][]]{<>{}}}>}<(([[][]][<>()])[[{}{}][{}()]])>]}>{{{([<(()())> +(<[{<<(<<<((<[<>[]]>)({[[]<>]}<({}<>)([][])>))[{<[[]()](<>())>{<[]<>><{}()>}}(<<{}<>>(<>[] +<[[(((([[(<[{((){})<{}<>>}{({}<>><{}<>>}]([{<>()}([]<>)]<{()()}({}[])>)>)]{{({([{}<>])(<<>() +<({<(<{[{<<[[[{}[]][()[]]](<()()><()>)]>>[(((([]<>){(){}})<{{}()}({}())>)[<[[]()]{<>[]}><[()[]][<>()]>])[(<<< +([[[{(<<<([[[<<>[]>]]{<([]<>){[]{}}><<[]>({}<>)>}]<(<<{}<>>([])><{<>[]}<{}<>>>)([{[]()}<<> +<({<<(<{(<<(({[]<>}{{}{}})(<<>[]><<>[]>))(<<<><>><[]{}>>{[()[]][()[]]})>>){{<{([{}()]{<>()}){<[][]>({}<>)}} +(([{{(<[([([([[]()]({}))<<[][]><{}()>>][[[{}<>][<>{}]]]){[{[[][]]<{}{}>}<<()<>>(<>())>]}])<{{[(({})<[]()>){[< +{(<<[<{<<{(([[()<>]{<>[]}]{[{}{}]{<>()}})<([[][]]{[]<>}){(()<>)<[]<>>}>)[[{{[]}}]]}<{{((<>)<{}>){ +<{<{<{{[<{{<<<<>[]>{()[]}>><[<<>()>{{}[]}]<[{}]{[]()}>>}}>[[{(((<>{}]({}()))<<{}()>[[]()]>)}]{{({[<>() +<[[<<([{([{{[[()()]<{}<>>][{{}()}<()()>]}({([]<>)<<>[]>}{[[][]][()[]]})}[((<{}{}><()[]>){<<>()>((){} +<<{([[{[<{[<([()()]{()<>}>[<[]<>>[[]<>]]>{{[{}{}][()<>]}<[[]{}][{}{}]>}]<((({}<>)<<><>>){{<><>}[()<>]})> +[[[[[{({((([<[<>{}]<{}()>>[<{}[]>[[]{}]]]{{{()<>}<{}[]>>([()()]{{}()})})))}[{{[({<{}[]>}<[[]()]>)( +{[[<[([{((<[<[{}[]][<><>]>({{}{}}[{}{}])]{{({}{}){{}[]}><[{}[]]([]())>}>[{<{()<>}([]())>}]))(<[([[()][[][]] +[(({[((<{<{<<[[]<>]<{}[]>>>{[<[]{}>[[]{}]]{((){})<[]>}}}<<<{{}{}}<<>()>>{<<>[]>([]{})}>>>}{[{{{<[]()>(()<>)}< +{[[[{<([{[<{([<>()]{<>[])){<<><>>([]<>)}}<{[(){}]<()<>>}>>([[<()<>>((){})]][<<[]{}><()()>>(<[ +[{(<{[({[{[{{(<>{})({}{})}<(<>[])>}([<()<>>[()<>]]{(()<>)<{}()>})]{([{{}{}}(()<>)][{()()>])[<<[][]>(<>[])> +[[{[{([<<<<([{[][]}{<>()}]([[]<>]<<>[]>))<{[<>()][<>{}]}[((){})]>><[[<{}<>>([]())]]>><<{{(() +<{[<<[[[<{{[<<[]{}>[()<>]><{()()}<()[]>>][[[<>{}][[]()]][<<>>{{}[]}]]}{<<<[]()>({}<>)>>(<[[]()]{<>[]} +{(([({{<(<<[(({}{})[()[]])<<{}{}>(()[])>](([()[]]<{}()>){{<><>}<[][]>})>((<{()()}[{}()]>[{<>()} +<(({(([[<[{[{<{}>(())}{<{}[]>[<>[]]}]{<{()}><<()()>[{}{}]>}}]({<<<()[]>{()<>}>>}[[{(<>){[]}}((()) +{{<{<<(([[[{{[{}{}]{<>[]}}}{[<{}<>>[{}<>]]{{[][]}{[]]}}]({<([][])[<>]>{(()())<<><>>}}([([][]){{}()}]<{()[]}{[ +[<<<<<[{<{{({[[]()](<>())}{{[]{}}([][])})}(<<[{}{}]({}<>)>[<<>>{()}]>)>({[(<[][]>{{}[]})][[(()())<(){}>]{<()< +{({<<([[(<(([(()[])]{{{}<>)((){})}))[([<(){}>[<>()]]{{<><>}})<({<>{}}(<>[]))>]>({[{([]()){(){ +<{[<(<{[(<<{(({}[])(<>()))}[{<[]<>><()[]>}<<{}{}>(<>{})>]>{{{<{}<>>[{}()]}}[<<()()}>(([]{})([] +{<[(([{{{[(<<[{}()]>{(<>())[[]{}]}>){{[{{}[]}{()<>}]{(()<>)<<><>>}}}]}{(<[([[]][{}[]])]>)[[((<{}[]})[ +([[[({({{[<<[<[]<>><()>]>{([<><>])(<<><>><<>()>)}>[(([[][]]{()<>}>)([{(){}}({}<>)])]][(<<{{}{}}{() +{([({[{{{[(<<<<><>>([][])>[<[]<>>[()<>]]>)[[(<()[]>)(<<>()>[()<>])]({<[][]>{[][]}}[<()()>[<>[]]])]](<<{<<><> +<((({{<[[({[(([]<>)[[]<>])]{{<{}>{[]<>}}(([][])[()[]])}}{[{<()<>>[()[]]}{{[]<>}{[]()}}]}){([{{{}{}}[( +{<<[[{[<(([[{([][])[<>()]}<{<><>}>](<<[][]>[[]{}]>[{<>}{{}<>}])]{<([()<>]<()[]>)(<[][]>(<>[]))>[{[[]< +([{((<[<<([[[{<>()}(<>())]([(){}](<>[]))][[<[]>]]]<{<[{}[]][[][]]>}([<[]()><<>{}>]<{(){}}[{}{}]>)>)>({([ +([{(<<[<{<[[(<[][]>{<><>}){<<>()>}]{({()[]}<<>()>)}][{({(){}}[()()])<[<><>]<<>[]>>}]>}<<[({< +{<({[({{<[[({{(){}}<<>[]>}<({}[]){()())>)<{([]{})([]())}>]]>(<{[((<>[]){[]()})<<()<>>({}<>)>]{{{()[]}}} +{({[[<(<{[[{<<[]()>[()()]>([<>{}]{<>[]))}<{([]())(()<>)}<<[]><[][]>>>][({<{}><[]()>})[<[()[]][()()]>{<{}<>> +{({(((<{<[<(<({}<>)[()()]>{<[]{}><()<>>})[<({}<>)><(<>)<()()>>]>(<(([][])<()<>>)<<<><>>([])>>{(<[]{}> +[{{[([<<(<[<({<><>}{[]()})[{<><>}]>{<(()[])><[<><>]>}][<{[{}<>][[]<>]}(([]{}))>[[([])<{}[]>]{<(){}>({}())}]] +{[<<((<<[([[([()[]]({}()))(<{}()>{(){}})][((<>[]]{{}{}})((()<>)<<><>>)]]{[<(<>[])<[]>>([<>()]{[] +((({({{<[(((<[<>[]]([]<>)>[<[]{}>{<><>}])<{[<>()][()<>]}{<{}<>>[[]()]}>))<[<{(<><>)<()<>>}>[<[[]<>]<[]{ +{<<<{<({([({((<><>)[[][]]){[()<>]{<><>}}}<[{[]<>}[<>[]]][[()<>]{(){}}]>)<[[[[]<>]]((<><>))}(<<()<>><<><>>><[[ +(({{[({<{<{[[<<>[]>([][])]{<<>()>{{}()>}]{[<<>[]>[{}{}]][{()()}{[]<>}]}}([({{}[]}{{}()}){(()<>){()<>}} +(<([({{{{<[<{{<>[]}{{}}}<[{}{}]<{}{}>>><{{(){}}([]{})}>](<[([]())[()]]>[(<[]<>>[[]{}])])>[{(<[[][]]<{} +((({[{{{([<{{<<><>><[][]>}{({}())<<>{}>}}[{([]())}[<<>()>({}[])]]>{<[<<>[]]<()<>>][[()[]][<>[]]]>[{[[] +<(<<[[<{({{[(([][]))([<><>][{}{}])]}})}>]](<([{{[{<{[][]}[{}<>]>([{}()])}]}([{{(())}{{{}{}}<[]{} +<([<[{{({[(({({}{})<{}()>}))[[((<><>)<{}>)[[[][]]((){})]]<<<[]()>{()[]}>>]]{<<(<[]<>>[<>{}]){({}())}>>}}{[[ +[<<[(({<({{{[{[][]}{(){}}][<()()>]}((<{}{}>>[{{}[]}])}{<[(<>[])[(){}]](<<><>>({}<>))><(({}()) +[([{<{(([[[([{{}[]}<(){}>])]<{([[]()][[]<>])([{}{}]([][]))}>]({<<([][]){()<>}>>{([()<>]([])){{{}()}{[][]} +{<({[<[(({{({<(){}><[][]>}[{<>()}({})])<[[{}]{<><>}]<<[]{}>([]{})>>}[(({[]<>})([(){}]<()[]>))]}))]><<( +{<<[[<[[[((<[<{}<>><<><>>]<({}[])([]{})>>{<{()<>}>{([]{})[()[]]}}>[[<({}<>)([]{})>(<{}()>[[]()])][[<()<>><[] +{((({(<{[[[({<<>[]><{}<>>}[{[][]}[<>()]]){([<>()][[]()])({[]<>}{{}<>})}]<<{[{}<>]<{}()>}<(()){(){}}>>{ +<[[{<<([<[{{(({}()){[]{}}){{{}[]}{<>()}}}}{<{[<><>]<{}{}>}(({}()){()<>})>(<(<>{})[<>()]>{<<><>>{[][]}} +{{([{(((({<{[({}{}){{}{}}]{(<>{})[{}{}]}}[{[()[]][{}()]}{(()[])(()())}]><({(<>[])}((())<[]>))>}<{{{{{}<> +({(([({(<<<((({}[])((){}))((<><>)[[][]]))((<()<>><(){}>){{{}()}(()[])})><([[{}<>][()[]]])(([<> +<<<<<{({{([(([{}{}]<{}()>))][<<{<>[]}{<>}>({()<>}{{}()})>[([<><>]{{}()})([[]{}])}]){({[([]<>)<[][]>][{<><> +((<[<<{{<([{{[{}<>]{{}<>}}([[][]]<<>{}>)}{[[[]{}]])]{[<<{}<>>{{}{}}><({}<>)>]([(<><>)[{}()]])})(< +<(((<[(((<([[{(){}}<<>()>]]<{<<>{}><(){}>}<{[][]}{[]{}}>>)>{<<{{<><>}{[]<>}}{{<>[]}<[]()>}>[{{{}()}{[]<> +{[<{((<<[<<([(()()){{}()}](([]{}){<>()>))>{({((){})({}())}[[()][<><>]])<([{}[]][[]{}])(([]{}){()<>} +(<[({[(([[{[[<{}{}><<>{}>][<<>{}>]]([{<>()}<<>{}>]{{[]{}}({}())})}([({{}()}{{}()})][[<<>[]>[<>{}]]{<<>[])}]) +{<{(((<([[[<[(<>())[()[]]]<<()[]><{}<>>>>]<{({<>()}(()<>)){<<><>>{{}[]}}}{(<()<>><<>[]>){{[]()}[[]()]}}>][(<[ +<<[[<(({{{{<{{[]()}({}<>)}[(<>{}){[]{}}]>[<{[][]}{{}{}}>]}{{(<<>()><{}{}>)[{{}[])[(){}]]}(([()[]][{}[]]){< +(<(<<<([{((<[[{}[]]{{}}]<({}<>)<()<>>>})<(<[<>{}]<{}<>>><([]<>)([]<>)>)[{<{}<>>[()()]}[(<>[])] +<{(([([[<<([{{<><>}[<><>}}{[{}<>]{{}<>}}]{([[]()]<()[]>)[({}<>){[][]}]})({[((){})<<>[]>][{<>()}[[]<>] +<<<{{<{[({<<[[[]][[][]]]({[]()}{{}[]})>>{[({{}<>}{[][]})[[{}()]{[]}]]}}([[[[<>[]]<{}[]>]{[{}{ +{<{{([([<{[[{([]<>)[()<>]}][{<()()>}<{{}<>}([]{})>]]{{[{[][]}<{}[]>]([<>()]{{}{}})}{(({}{})(( +<{<((<{<{([<((()<>){()[]}){[[]<>](()[])}><(([]()])<[[]()]{{}<>}>>]{({<()><()()>}[[()<>]<<>[]>] +[<[{[(<<[(<<<(<>[])[[]]>{<(){}>}><([<>[]]{<>{}})[{<><>}{[]()}]>>{[(<[]<>>)<[{}<>]{<>()}>]{<(()())[[][]]>[ +[<<<{[(<<[({{{<>[]}<[]()>}{<<>[]>(<>[]]}})]>>{[[<({([][]){{}()}}[{<>()}({}())])({(()[])(<> +[<[[<{<{{{{{<([]())[<>()]><{()<>}[<><>]>}}}}}><<{(([{<[][]>{[]()}}[{[][]}{{}<>}>][(({}())({}()) +<[[{{[<{<<[<(<<>[]>)<<()()>{{}[]}>>{<{()<>}[<><>]>[{{}{}}{()}]}]{(<([]<>)({}())>{<[]{}>}){[({}())]{( +({{[(([(<{[[{(()<>)({}())}<({}{}){{}}>](((()())<{}()>)[<{}<>><{}()>])]({{([][])({}<>)}<({}())<[] +{[(<[<{[(([<(<[]()><{}()>)<<[][]><()>>>][<<[{}[]]<{}{}>](<<>>{<>[]})>[{(<>())[<>]}<{[]<>}(( +[{{(<{{[{<<<<(<><>)>(({}[]))><<[[]{}][<>()]>>>({[({}{}){<>{}}]<[<><>]>})>}<[<{{<{}{}>{<><>}}}>]<( +{<{<<{[{<[[[<<{}[]>{()<>}>(<()[]>({}<>))]{<((){})[<><>]><{<>{}}{<>()}>}]({([()[]]{[]()})}([{()()}}<(<>() +[<<([(<[<[[([(<>{}){()<>}][<{}()><{}()>])]((([()<>]{()<>})[[<><>]]))][{([{{}{}}]<{<>}[{}()]>)[[{ +<[[{([({<<<(<([]<>)<<><>>>[{[]()}<(){}>])>>>({(([[<>{}]([]<>)]{[(){}](()())})([{<>()}([]<>)]))<[{[{}()]{<>[]} +<(([{<{[[<({[({}()){{}[]}]{<{}[]>[{}<>]}}[[[{}<>](<><>)][<()()>({}<>)]])<{{[{}<>]{<>[]}}}([[{}[]]<<>{}>])>> +{(<[([[[{[<[[<[]()>[{}{}]][<()[]>{[]()}]]>[[[(<>[]){<>[]}][{<>{}}<()[]>]]]](<{{([]())[()()]]<[{}[]][[]( +[([[[<<<{({[[{[][]}<()[]>]][{{[]()}([]<>)}({()<>})]))[<{<[<>{}]{[]{}}>({<>{}}[()()])}><<([<>[]]{{}[]})[<[][] +{(({({<{([[[[<[]{}>(<>{})]{({}())(()<>)}]]<{{<[]()>(()())}{([][])}}<{[[][]]<()<>>}{(<>{})({} +[{{<[{(<{({<[{[]<>}[[]()]][[{}<>]{{}()}]>(<[()()]>([{}[]]{(){}}))}{{{({}<>)<<><>>}({[]<>)<{}>)}})([<({ +(<[{{{{<(<[<{{()()}{[]{}}}<([]{}){<>()}>>[({{}<>}{{}[]})]][[({{}()}(<>[])){<[][]>[<>()]}]]>]>{[( +[{<(<<{[<(<[<({}[])({}{})>]{<{{}()}<<><>>>{<{}{}>(()())}}>)>][({<[[<(){}>(<>())](({}{}){{}()} +{([[{<{<{(([<([]<>)[<>]>{(<>[]){<>[]}}][<[(){}]{{}()}>((<>[]))])<({[()<>](()[])}){<[()<>]{<>{}}>{([])<() +<[{[{(<<({[((<[]{}>{[]{}})([()[]]<(){}>))<{<<>[]>[{}]}{<{}<>>{()}}>]{{{(<>())}(({}<>))}<<{()<>}({}())>([{}< +<(<[{{<{{[([{{(){}}<<>{}>}(<(){}>)][[{{}<>}(()<>)]]){([<<>{}>[()()]][{[]()}<{}()>])}]<{([{[]}([][] +<[[{<{[<{([<[<[]<>][{}]]<({}{})([])>>]({{(<><>)[[]<>]}<<{}[]>[[]<>]>}))}([<(({()()}{[]<>}))<{<()[]><[]()>}((( +({{{<{([{<[{{[{}<>](<><>)}[[<>()]({}[])]}[[<(){}>({}<>)]<(()())({}())>])>[<<<[[][]][(){}]><([ +((<{[<[[(((<[<<>()>([]())]<(()<>){()[]}>>[<{(){}}{{}}>[[(){}}<[]{}>]])<[[[[][]][{}()]]{[{}()][ +(({[[<{({[[[[[<><>]<[]{}>]<(<>{}){[]()}>][(([]<>){()[]})([<>{}]<()<>>)]]]}[[<{<(<><>)<{}[]>>}<<{<> +<{({[{(([[{(<(()[])<(){}>>{<{}{}>{<><>}})[<(()())<[]{}>>]}[{{{[]}[()[]]}[<()[]><<>{}>]}{<[<><>]{[] +[<[<<{<{{<[(<{(){}}[<>()]><({}<>)<<>{}>))<<<()<>>({}<>)><[<><>][()]>>](({({}()){()()}}<[[]<>]<<>{}>>)<[[[] +{<{(<(<[<([{<{{}[]}(()[])>[({}())<[][]>]}<<{()()}[<><>]>>]<{{[[]{}]{<><>}}(({}{})[[]])}({(<>[])<<>{}> +{{{[[((<[(<<[[{}()]<[]<>>]{<()[]>}>[<<()()>>([<><>]((){}))]>{<<[{}{}][{}()]>[(()())[<>[]]]>{{ +<({<{[{<[<({{[<><>]{<>[]}}<{[]<>}<<><>>]}{{[{}{}]{{}{}}}{<[]<>>{[][]}}})(<({()<>}<{}[]>){([]{}) +{<(<<[<{([{[({{}<>}[()()]){(()<>)[{}<>]}]}])}>]{{(<[<<((()())<<>()>)>{([[]{}]((){}))<({}<>)({}< +[<(<[[{{[([[<<[]{}>{[]<>}>{(<>[])[{}{}]>]([[[]<>](()())])])([[<{<>{}}(<><>)><({}<>)<()>>][({[]<>} +[<{({{[<([{<{[()[]][(){}]}>[([<>[]]{{}})]}<<((()<>}(()()))<[(){}]>>((({}())[{}<>]){({}<>)<<>[]>})>]{<<{<{}[] +[[<{<{({(<{<{({}())[{}]}([()[]]{{}()})>}((([{}{}]{()<>})<[<>()]{<>[]}>)[([()<>]<<><>>)[[()[]]{[]}]]]>){([[[ +{<(([<<[<{(((<()<>>{{}()})({[]{}}[[]{}]))(([{}[]]{[]<>})<<[]>(<>{})>))}[{{<(<><>]<<>>>}}({[({}[]) +[[{{[([<[({[{(<>()}[<>[]]}{{<>{}}<[]{}>}]{{{()[]}([]{})}([()<>]{()<>})}}[<{(<>)<<><>>}{{<>[]}<<>[]>}>({< +{{[{{{<([<{<{<{}<>>}{[(){}]{{}()}}><{{[]()}<{}>}>)[[{[{}{}]{()<>}}<(<>{}){[]{}}>][[(()<>)(<>())]({[]<>}[()[] +((<({<{[(<[{[<<>><{}()>][[{}[]>]}{({()<>}[{}[]])[(()())]}][<<{<>{}}<<><>>>[{[][]}{<>()}]>]>[<({({}()){{ +[([<<({({[<{(((){}){<>{}})(({}<>))}{<[[]()][{}{}]>{([][])<[][]>}}>]<<(<{<>()}[()[]]>[<(){}>[<>()>])<<[{}( diff --git a/2021/day10/src/lib.rs b/2021/day10/src/lib.rs new file mode 100644 index 0000000..6cf54ad --- /dev/null +++ b/2021/day10/src/lib.rs @@ -0,0 +1,191 @@ +use std::collections::VecDeque; +use std::str::FromStr; + +pub struct SyntaxLines { + lines: Vec, +} + +impl FromStr for SyntaxLines { + type Err = (); + + fn from_str(input: &str) -> Result { + let lines: Vec<_> = input + .trim() + .split('\n') + .map(|x| x.to_owned()) + .collect::>(); + + Ok(SyntaxLines { lines }) + } +} + +impl SyntaxLines { + pub fn part1(&self) -> u32 { + let mut result: u32 = 0; + + for line in &self.lines { + let mut qopen = VecDeque::new(); + let mut panic_char = ' '; + + for character in line.chars() { + match character { + c if character == '(' + || character == '[' + || character == '{' + || character == '<' => + { + qopen.push_back(c); + } + c if character == ')' + || character == ']' + || character == '}' + || character == '>' => + { + match qopen.pop_back() { + Some(bracket) => { + let mut error = false; + if c == ')' && bracket != '(' { + error = true; + } else if c == ']' && bracket != '[' { + error = true; + } else if c == '}' && bracket != '{' { + error = true; + } else if c == '>' && bracket != '<' { + error = true; + } + + if error { + panic_char = c; + } + } + None => panic!("Wtf?"), + }; + } + _ => {} + }; + + if panic_char != ' ' { + if panic_char == ')' { + result += 3; + } else if panic_char == ']' { + result += 57; + } else if panic_char == '}' { + result += 1197; + } else if panic_char == '>' { + result += 25137; + } + break; + } + } + } + + result + } + + pub fn part2(&self) -> u64 { + let mut scores = Vec::::new(); + + for line in &self.lines { + let mut qopen = VecDeque::new(); + let mut panic_char = ' '; + let mut result: u64 = 0; + + for character in line.chars() { + match character { + c if character == '(' + || character == '[' + || character == '{' + || character == '<' => + { + qopen.push_back(c); + } + c if character == ')' + || character == ']' + || character == '}' + || character == '>' => + { + match qopen.pop_back() { + Some(bracket) => { + let mut error = false; + if c == ')' && bracket != '(' { + error = true; + } else if c == ']' && bracket != '[' { + error = true; + } else if c == '}' && bracket != '{' { + error = true; + } else if c == '>' && bracket != '<' { + error = true; + } + + if error { + panic_char = c; + } + } + None => panic!("Wtf?"), + }; + } + _ => {} + }; + + if panic_char != ' ' { + break; + } + } + + if panic_char == ' ' { + while !qopen.is_empty() { + let v = qopen.pop_back().unwrap(); + result *= 5; + result += if v == '(' { + 1 + } else if v == '[' { + 2 + } else if v == '{' { + 3 + } else { + 4 + }; + } + scores.push(result); + } + } + + let middle = scores.len() / 2 as usize; + scores.sort(); + + scores[middle] + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_example() { + let input: SyntaxLines = include_str!("../example.txt").parse().unwrap(); + let result = input.part1(); + assert_eq!(result, 26397); + } + + #[test] + fn test_example_part2() { + let input: SyntaxLines = include_str!("../example.txt").parse().unwrap(); + let result = input.part2(); + assert_eq!(result, 288957); + } + + #[test] + fn test_puzzle_input() { + let input: SyntaxLines = include_str!("../input.txt").parse().unwrap(); + let result = input.part1(); + assert_eq!(result, 392367); + } + + #[test] + fn test_puzzle_input_part2() { + let input: SyntaxLines = include_str!("../input.txt").parse().unwrap(); + let result = input.part2(); + assert_eq!(result, 2192104158); + } +} diff --git a/2021/day2/Cargo.toml b/2021/day2/Cargo.toml new file mode 100644 index 0000000..8aa34bb --- /dev/null +++ b/2021/day2/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day2" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day2/input.txt b/2021/day2/input.txt new file mode 100644 index 0000000..9e714f9 --- /dev/null +++ b/2021/day2/input.txt @@ -0,0 +1,1000 @@ +forward 2 +down 8 +down 1 +up 7 +forward 4 +down 4 +down 3 +forward 2 +forward 5 +forward 2 +forward 7 +forward 8 +down 7 +forward 6 +forward 1 +down 8 +down 8 +up 9 +down 9 +forward 1 +up 1 +forward 6 +forward 7 +down 7 +forward 4 +forward 2 +forward 1 +forward 3 +forward 8 +forward 4 +up 6 +down 2 +forward 4 +down 3 +up 3 +up 2 +up 3 +forward 8 +down 5 +down 8 +down 5 +down 4 +down 2 +up 1 +forward 6 +forward 6 +forward 8 +up 5 +down 5 +forward 8 +forward 7 +down 9 +down 7 +down 6 +down 3 +forward 3 +up 7 +forward 2 +up 6 +forward 7 +forward 9 +down 9 +forward 3 +down 2 +down 2 +down 7 +down 7 +forward 8 +down 7 +forward 9 +up 7 +down 4 +down 8 +forward 2 +forward 2 +up 1 +forward 8 +down 5 +forward 8 +forward 4 +up 1 +forward 2 +forward 2 +forward 2 +down 9 +down 7 +down 9 +forward 9 +forward 4 +up 7 +down 4 +forward 9 +forward 8 +up 5 +up 1 +down 1 +down 9 +down 6 +up 8 +forward 2 +forward 7 +up 7 +forward 7 +forward 6 +down 6 +forward 8 +up 6 +forward 7 +down 7 +forward 4 +forward 9 +up 9 +up 8 +forward 8 +forward 3 +up 1 +up 4 +down 4 +up 9 +up 8 +forward 6 +down 2 +down 2 +up 4 +forward 4 +forward 1 +down 8 +forward 6 +down 5 +forward 6 +down 8 +up 1 +forward 1 +up 9 +down 8 +up 3 +up 9 +forward 9 +forward 2 +down 2 +up 6 +up 6 +forward 8 +up 3 +down 3 +forward 5 +up 2 +forward 1 +forward 1 +forward 8 +down 4 +forward 8 +forward 7 +down 8 +forward 7 +down 7 +down 2 +down 1 +down 7 +up 9 +down 5 +up 1 +forward 7 +down 5 +down 9 +down 2 +down 8 +down 4 +forward 2 +forward 2 +forward 1 +down 6 +up 7 +forward 2 +down 1 +down 5 +forward 3 +forward 8 +down 4 +up 2 +up 9 +up 7 +forward 7 +forward 4 +up 8 +up 3 +up 4 +forward 6 +down 7 +forward 7 +up 6 +down 9 +up 6 +forward 4 +up 3 +down 3 +up 6 +down 9 +down 6 +forward 7 +forward 9 +forward 2 +down 6 +up 3 +up 9 +forward 9 +forward 8 +up 4 +up 5 +forward 6 +down 5 +up 4 +up 9 +down 8 +forward 5 +up 5 +forward 7 +forward 6 +down 8 +down 5 +down 2 +up 5 +down 8 +forward 7 +forward 7 +up 6 +forward 3 +down 8 +forward 5 +forward 8 +down 7 +forward 6 +down 2 +forward 2 +forward 8 +down 4 +forward 5 +forward 7 +forward 5 +forward 8 +forward 9 +forward 6 +down 6 +up 7 +down 9 +forward 7 +forward 1 +up 2 +forward 8 +down 1 +up 9 +forward 7 +down 2 +up 2 +forward 5 +down 4 +down 3 +up 8 +up 6 +forward 3 +up 4 +forward 3 +forward 1 +forward 1 +up 9 +down 2 +down 9 +up 4 +forward 4 +forward 4 +forward 2 +forward 5 +forward 9 +forward 7 +up 4 +up 5 +down 5 +forward 9 +down 1 +forward 2 +down 6 +forward 9 +down 4 +down 2 +forward 2 +up 7 +forward 7 +forward 8 +up 9 +forward 3 +up 1 +down 5 +forward 5 +down 1 +up 5 +forward 4 +forward 5 +up 3 +down 4 +up 6 +up 1 +down 2 +forward 6 +down 8 +up 9 +down 7 +forward 9 +down 8 +forward 3 +forward 8 +down 1 +down 7 +forward 6 +up 6 +down 1 +down 5 +forward 6 +down 7 +down 2 +forward 6 +forward 2 +forward 8 +forward 7 +forward 2 +down 7 +up 2 +down 7 +forward 8 +forward 8 +forward 2 +forward 4 +down 1 +down 6 +down 1 +down 4 +down 4 +down 2 +down 7 +up 5 +up 5 +down 1 +forward 3 +up 1 +down 3 +forward 9 +forward 4 +forward 7 +down 4 +down 4 +down 2 +forward 2 +forward 1 +forward 9 +down 1 +down 4 +down 1 +forward 4 +up 8 +forward 3 +down 6 +forward 5 +forward 9 +forward 1 +up 8 +down 7 +down 8 +forward 4 +down 4 +up 5 +down 3 +forward 3 +down 6 +down 1 +down 9 +forward 8 +up 5 +down 7 +up 7 +forward 3 +up 5 +up 7 +down 4 +up 2 +down 2 +down 8 +up 6 +down 4 +up 1 +down 8 +down 4 +forward 7 +down 4 +up 3 +down 9 +forward 3 +up 4 +up 1 +up 5 +down 4 +forward 4 +forward 4 +down 2 +down 3 +down 4 +forward 2 +down 9 +down 9 +down 6 +forward 5 +forward 7 +down 3 +forward 2 +up 8 +down 6 +down 8 +down 2 +up 9 +down 1 +forward 8 +forward 1 +forward 8 +up 4 +up 1 +down 8 +up 2 +forward 5 +down 3 +forward 5 +forward 4 +forward 1 +down 9 +forward 2 +forward 5 +forward 4 +forward 3 +down 7 +up 9 +forward 7 +up 8 +forward 3 +forward 3 +down 5 +forward 7 +forward 5 +down 4 +forward 6 +down 6 +up 3 +down 3 +forward 7 +forward 8 +up 3 +up 8 +forward 8 +up 4 +forward 5 +up 4 +down 7 +forward 4 +down 8 +down 6 +forward 7 +down 4 +up 7 +down 6 +up 5 +down 2 +forward 7 +down 7 +up 3 +up 3 +down 3 +down 5 +forward 3 +forward 5 +forward 8 +down 3 +down 8 +forward 3 +down 1 +forward 4 +up 5 +forward 8 +up 1 +up 4 +down 4 +forward 1 +forward 6 +up 7 +up 1 +up 7 +down 5 +forward 8 +down 1 +forward 1 +forward 6 +up 9 +up 6 +down 4 +forward 5 +down 1 +forward 7 +down 8 +up 3 +down 9 +down 1 +up 7 +up 6 +forward 8 +down 9 +down 4 +forward 4 +up 7 +down 3 +forward 5 +forward 8 +up 5 +down 7 +up 2 +forward 3 +forward 3 +forward 4 +down 1 +forward 5 +forward 7 +up 7 +forward 7 +forward 1 +forward 3 +forward 9 +down 3 +forward 5 +down 9 +down 7 +down 4 +down 8 +up 3 +down 1 +up 5 +down 5 +forward 2 +down 6 +down 5 +forward 2 +forward 6 +down 6 +up 6 +down 8 +up 1 +forward 4 +forward 2 +forward 1 +up 1 +forward 5 +forward 3 +forward 7 +down 9 +forward 3 +down 9 +up 5 +down 7 +down 2 +down 3 +up 5 +up 3 +down 2 +forward 4 +forward 1 +down 3 +up 4 +down 8 +down 1 +forward 6 +down 3 +forward 9 +down 7 +down 3 +down 4 +down 5 +up 1 +forward 8 +forward 2 +up 3 +up 7 +up 1 +forward 3 +forward 9 +up 5 +forward 6 +down 8 +down 9 +down 5 +forward 6 +forward 3 +forward 8 +forward 7 +forward 9 +forward 2 +up 9 +forward 8 +down 2 +down 6 +down 9 +down 5 +forward 1 +down 7 +forward 2 +down 4 +down 1 +up 1 +down 2 +forward 5 +forward 8 +down 9 +up 6 +forward 8 +forward 3 +up 6 +up 2 +forward 8 +down 8 +up 1 +down 6 +down 2 +down 6 +forward 5 +forward 6 +down 4 +forward 1 +down 4 +up 7 +forward 4 +up 1 +forward 9 +forward 7 +up 3 +down 7 +down 4 +forward 3 +forward 8 +forward 6 +forward 6 +up 1 +up 2 +up 8 +down 7 +forward 8 +down 5 +forward 6 +down 1 +down 9 +down 2 +forward 6 +up 3 +down 5 +down 6 +forward 1 +forward 2 +down 3 +forward 8 +forward 1 +up 5 +down 8 +down 4 +up 9 +up 2 +forward 7 +forward 9 +up 8 +up 6 +forward 1 +down 7 +up 1 +down 3 +forward 2 +forward 3 +down 3 +down 2 +forward 3 +down 7 +forward 3 +forward 7 +forward 7 +down 8 +down 4 +forward 3 +forward 4 +down 7 +down 9 +down 4 +down 2 +forward 7 +up 8 +down 4 +down 3 +forward 9 +down 5 +up 6 +up 2 +down 5 +down 6 +forward 2 +forward 8 +down 1 +forward 6 +up 7 +down 6 +forward 4 +down 2 +down 5 +down 9 +forward 7 +up 4 +forward 9 +up 7 +down 4 +down 6 +up 9 +forward 1 +up 7 +down 5 +forward 3 +forward 3 +down 7 +down 1 +down 7 +down 7 +down 1 +forward 8 +forward 9 +forward 8 +down 9 +down 8 +down 5 +down 3 +forward 4 +forward 1 +down 1 +forward 1 +down 7 +forward 7 +forward 3 +down 8 +forward 3 +forward 9 +forward 8 +down 7 +forward 8 +down 2 +up 5 +forward 7 +forward 4 +down 2 +up 6 +up 8 +forward 7 +down 9 +up 3 +forward 4 +up 9 +up 5 +up 5 +up 6 +down 4 +down 5 +up 5 +forward 7 +forward 6 +down 4 +forward 5 +forward 4 +up 7 +forward 8 +down 2 +forward 1 +down 9 +down 8 +forward 7 +down 7 +down 1 +forward 9 +down 7 +forward 6 +down 2 +up 9 +forward 1 +up 9 +down 3 +up 9 +down 1 +forward 1 +down 1 +up 6 +down 8 +up 2 +down 3 +forward 1 +down 4 +up 5 +down 5 +down 4 +forward 5 +forward 4 +down 9 +up 7 +down 7 +forward 7 +forward 6 +forward 8 +down 8 +forward 8 +down 1 +down 1 +down 8 +down 2 +up 2 +up 1 +forward 5 +down 1 +up 5 +up 2 +down 6 +up 8 +forward 5 +down 8 +down 1 +up 5 +down 1 +forward 4 +down 6 +down 4 +forward 2 +forward 2 +down 1 +up 4 +up 8 +down 6 +down 2 +forward 5 +forward 8 +forward 7 +down 5 +down 7 +down 3 +forward 6 +down 3 +down 3 +forward 6 +forward 6 +forward 6 +up 7 +forward 1 +down 5 +down 2 +up 8 +forward 6 +down 7 +down 6 +forward 1 +up 5 +down 4 +up 9 +forward 3 +up 3 +forward 9 +forward 9 +forward 7 +forward 5 +down 9 +forward 1 +forward 6 +up 8 +down 7 +forward 9 +forward 5 +up 4 +down 8 +forward 8 +forward 4 +down 9 +up 2 +forward 5 +forward 8 +down 8 +down 9 +down 9 +forward 4 +forward 8 +down 5 +down 5 +forward 5 +forward 5 +up 9 +up 7 +forward 3 +up 4 +down 8 +up 6 +up 6 +down 4 +down 3 +forward 2 +forward 9 +down 4 +down 2 +forward 4 +up 9 +forward 1 +down 8 +down 9 +down 9 +down 3 +forward 1 +down 5 +up 9 +forward 6 +up 4 +forward 2 +forward 2 +forward 4 +down 9 +up 5 +up 1 +down 6 +forward 7 +down 8 +forward 4 +forward 9 +up 9 +up 4 +down 5 +down 3 +forward 2 +down 8 +down 6 +forward 3 +down 2 +forward 6 +up 2 +forward 6 +down 7 +up 4 +forward 1 +forward 4 +up 4 +forward 6 +forward 8 +down 7 +down 6 +up 7 +down 2 +down 4 +down 5 +forward 1 +up 4 +forward 8 +forward 6 +down 8 +up 5 +up 2 +up 9 +up 5 +forward 6 +down 4 +up 3 +down 8 +down 6 +down 2 +up 3 +up 5 +down 1 +forward 9 +up 8 +up 2 +down 3 +forward 6 +down 1 +forward 5 +down 3 +up 1 +up 2 +down 5 +down 7 +forward 8 +down 8 +up 9 +forward 3 +down 8 +down 8 +forward 1 +down 4 +down 4 +forward 3 +up 6 +down 3 +down 7 +down 7 +up 1 +forward 3 +forward 2 diff --git a/2021/day2/src/main.rs b/2021/day2/src/main.rs new file mode 100644 index 0000000..e0153a3 --- /dev/null +++ b/2021/day2/src/main.rs @@ -0,0 +1,34 @@ +use std::fs::File; +use std::io::prelude::*; +use std::io::BufReader; + +fn main() { + let file = File::open("input.txt").unwrap(); + let reader = BufReader::new(&file); + let tokens: Vec = reader.lines().map(|x| x.unwrap()).collect::>(); + let mut xpos: u32 = 0; + let mut ypos: u32 = 0; + let mut aim: u32 = 0; + + for line in tokens { + let command: Vec<&str> = line.split(" ").collect(); + let (action, value) = (command[0], command[1].parse::().unwrap()); + + match action { + "forward" => { + xpos += value; + ypos += aim * value; + } + "down" => { + // ypos += value; + aim += value; + } + "up" => { + // ypos -= value; + aim -= value; + } + _ => {} + } + } + println!("{}", ypos * xpos); +} diff --git a/2021/day3/Cargo.toml b/2021/day3/Cargo.toml new file mode 100644 index 0000000..898e70d --- /dev/null +++ b/2021/day3/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day3" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day3/input.txt b/2021/day3/input.txt new file mode 100644 index 0000000..b380427 --- /dev/null +++ b/2021/day3/input.txt @@ -0,0 +1,1000 @@ +011110011110 +101101001111 +000000010101 +100111001010 +110000011010 +011101010101 +011110001100 +010111111001 +111011100101 +011110000110 +010100001111 +000001001100 +110001001000 +001000100101 +010100011110 +010111011110 +110101001111 +011010111011 +000011010101 +100111011100 +010010100011 +010010011001 +000111010011 +111001000111 +100101111111 +011001101110 +110010101100 +001000010001 +110101100011 +101110001011 +010100000110 +001110011110 +011101100110 +001111101101 +000101101000 +100110000111 +000001010100 +111100010110 +000100100100 +001000110001 +101000001011 +101000100110 +110000101010 +010111110000 +111110010110 +011011111111 +111010100000 +100001000111 +011000001010 +011000010001 +101101100001 +011001101011 +111001001010 +000010110101 +101110100010 +001111111101 +011110001001 +000111100011 +010101001001 +111110111111 +111000111010 +001001111100 +000011000001 +011100010110 +110010000111 +000010010101 +110000001110 +010011111011 +001010100100 +111001010101 +001101000011 +110100110011 +110010100101 +001000001011 +111110011000 +110111011011 +110110101001 +010010100100 +111100001100 +100100001100 +110001111010 +111011001011 +010000010001 +110010100000 +010100011100 +000110001001 +010011000001 +111011010001 +010011111101 +111101110100 +110110101100 +010100111110 +100011001101 +000010000010 +011111100001 +100000101100 +100001110011 +100101100100 +000100001001 +101000000011 +110111101100 +100100101001 +001001101001 +000001010000 +001001111110 +111011111010 +001000011110 +110000100111 +010010010101 +011010001011 +100010010101 +010110101010 +011111001011 +110010011100 +111110101010 +000001111010 +111101110101 +101010110111 +100010101111 +000110101110 +000000010000 +000010100110 +111110010001 +000100110000 +110010011011 +101001000010 +010110000101 +100011100100 +110000110100 +110011000001 +101110001000 +010100011111 +111000100111 +110001100010 +100001101000 +101001000111 +111110100000 +000011000010 +110000000001 +111010000111 +100100111011 +101101110001 +111100110100 +100110010000 +001001001110 +100010001001 +101000110100 +011100001111 +001110100110 +110100001100 +101101001011 +000011111110 +101101010100 +000110110001 +011100011001 +111000111111 +011010101100 +111000100101 +100111011110 +011010100110 +110000101111 +110010000001 +100001110101 +110101011111 +111111000011 +101010010010 +000111111111 +000001001111 +101101010010 +111111001000 +001001110000 +110010011110 +110011001111 +100111101011 +011111000111 +110010111100 +010110000000 +110001100011 +111000100001 +011000101000 +100110001100 +001101011011 +011001111110 +011101000110 +110110111001 +110101001010 +111000111011 +100111010001 +100110000011 +010001000100 +001001001000 +010010001010 +010101101101 +001110001001 +101110011111 +010111001111 +110111001110 +100000101011 +010000111111 +101000101011 +101011010111 +000101110001 +100100010010 +100111011101 +111100000100 +100110000001 +000001000101 +101100001111 +100000101001 +010101010110 +000110010111 +011101001100 +000111111011 +000001100101 +100001011011 +111000101110 +111101100111 +011010010100 +101001001010 +110100110001 +111101011101 +000011101110 +011000100100 +101110000111 +011101110110 +111001010001 +011110000100 +011110001101 +100111100001 +010011100001 +001001101101 +001111111010 +010101000101 +011100000110 +100010001101 +011011101011 +110111001010 +101000010010 +111111100011 +000101111011 +001101010011 +100101000001 +101101100011 +101110010011 +011001100000 +110001111111 +011100101100 +010010001110 +111110101101 +010110001000 +000011000110 +101010011011 +000100111011 +001000111101 +010011111111 +011101100111 +111111011111 +001100000000 +101100001110 +101100001000 +100001011111 +100001000101 +000101011001 +010100111100 +110000111011 +010000111100 +011100110000 +101111110010 +100011110101 +100100110101 +100001100000 +101000100101 +111000001100 +010000001011 +110101010111 +011011001000 +100111000101 +011000000100 +110110011000 +101101101101 +100101110010 +001100001010 +010111000011 +111111100001 +100010111011 +110011001001 +000011011101 +001100101101 +010110011001 +111100110010 +011111001110 +100110001111 +000111101111 +011000110001 +001010001010 +000111010100 +010011110101 +011111000010 +000101000010 +111101011010 +110011111100 +100000001000 +100001000110 +101010100001 +000101000101 +100100011111 +110000101110 +000110000101 +001001011111 +100010011100 +000001110001 +110000010100 +011111010100 +001000001111 +000111000001 +110010001000 +001001111101 +111000001001 +001011000001 +111110010100 +110010001100 +010110110000 +011100100010 +011000101011 +001001000001 +011001001110 +111000010100 +000110000110 +011011000100 +011000010111 +110001011000 +010111011000 +000101110100 +000000011111 +001100111100 +000010100101 +000111110000 +000110000001 +000100101001 +101111110100 +010010000001 +001100010001 +101111001101 +111011111101 +000011110011 +111001011100 +010110110110 +000000001101 +010010000000 +000001010011 +101000010000 +101000001110 +010001000111 +111010011011 +101001111110 +000110101100 +100110101001 +100111111111 +101001101001 +110010010011 +011001011111 +111111110110 +101110010110 +100100001101 +010001111110 +111111101000 +100010100001 +011110010100 +101000110011 +010110110011 +011111001000 +100010100101 +110010010110 +111011001000 +101110001101 +000010110011 +001110100100 +100000011101 +011001100001 +011001101010 +001100011101 +000111101100 +001010001001 +111001101110 +110110001111 +001111001010 +001001000011 +001000010000 +000001111110 +000101101111 +001001000110 +100001101110 +101111011100 +111110010010 +010001100011 +101000100111 +001101000111 +111011110011 +000011000101 +111101001110 +110111111111 +011100010100 +110011110001 +001011011001 +000011010111 +011000001110 +000101010111 +110101110001 +001100001111 +110111010111 +110010010101 +100111100111 +101000000111 +101111000100 +100011100010 +000100100101 +111011110110 +001111100110 +011011000010 +100010010100 +010111110010 +100010110011 +111111111000 +011010101111 +101110111011 +101110101010 +001011001000 +110110001011 +110100101111 +001011001011 +110011010000 +000000100000 +100000110000 +101110011011 +100101101111 +010110100010 +000010100011 +000110110000 +111101000001 +011001010011 +000000001110 +000100110101 +111111111110 +001010101001 +001101100111 +010100000101 +000111001001 +101100101110 +011011110111 +011010000011 +000100101011 +100001100110 +000111011101 +000100011100 +000101100101 +011111111110 +111010111011 +100000100101 +011001011110 +010101100010 +010101111101 +100001000001 +001000100001 +010010111110 +100011001011 +011011000111 +110011010101 +111101100100 +001110001010 +110011111101 +111011011101 +001101000001 +101011011011 +100000111010 +010101110101 +000101011100 +011000011001 +111001010011 +100100010110 +111101010001 +110110011011 +011110110100 +101000110101 +101110111101 +011011011110 +000100110110 +100011011111 +111010101001 +011111011000 +101000101110 +110010111001 +111010000010 +110011011001 +110110010100 +111010011010 +000010110001 +011101100010 +110010110111 +010101001111 +011011001101 +101111000110 +010111010010 +101111011011 +100111101100 +001000001101 +010110100000 +001010100110 +111111000111 +100101000100 +100101001100 +110111010110 +101000101000 +100001001111 +110011110010 +111111101111 +110001111000 +010001110110 +101100000010 +000110000111 +001011100101 +101010100101 +110110001001 +000011011111 +110110101110 +101100110010 +101110101110 +101010110101 +000111000011 +101000011111 +001100000111 +101001111111 +100100011101 +111100011011 +000010111010 +111010101010 +101001010010 +101100010011 +010000110110 +011110110011 +001101110111 +110111110110 +001011000100 +101111100010 +011010011100 +110100001010 +100100110111 +000011010011 +000110111010 +001100100000 +100111011011 +001101101011 +101011101111 +001101100100 +111010010111 +100111111100 +101101000100 +000011111100 +011111001101 +110101001101 +011100100110 +101011000000 +100001010011 +011110111110 +011011100110 +110001011010 +111111110101 +001111111000 +100010011011 +100001101100 +110011010100 +100011000001 +011110111001 +010111110110 +100110001010 +100000000011 +001001101111 +101111011010 +010000110100 +101001011110 +100100011000 +101101000111 +011101001001 +010101110010 +000110000000 +000100111000 +010110111010 +110000011111 +011001011100 +010100110110 +011111110011 +111011011010 +001000101011 +000010110100 +011100101000 +111111100110 +011001110100 +000100011000 +010101010111 +001011101000 +001000011100 +110101101100 +010001000010 +001010010000 +111000110001 +101111111111 +011101011110 +001001111010 +001000100110 +000011011001 +100101100001 +110111000000 +100111011111 +111000110000 +110010111111 +000010010011 +100001100111 +010110100100 +001101001010 +101001100110 +010001110101 +001011000010 +010111110101 +000001001110 +010010100110 +111011001110 +101011111001 +000100000000 +111101001100 +100111011010 +000010010001 +100000010000 +101101000010 +110100010100 +111011111000 +101001100100 +001110101011 +000111001010 +111110000011 +001110100101 +101010000101 +010101010011 +110000111100 +101011001010 +010001011011 +010000011010 +000010101011 +100110110101 +100111011001 +100111010111 +000101100000 +101110000001 +100100001000 +010111000010 +000101001010 +001110010010 +111011000111 +001110110010 +111010000001 +011000100101 +000111100101 +100000100111 +100110011011 +001011100001 +101010100111 +011001111000 +000011011010 +001011101100 +010011011001 +000111111100 +010001011110 +111111011010 +111010010101 +110000010011 +001001101010 +000101011011 +100111111110 +110010101001 +111000011000 +011100101110 +011100010001 +001101110010 +101000111111 +101011011001 +110111000110 +001000010100 +000111000100 +010000101110 +001100100001 +111100000011 +111011101010 +000001111000 +100100010000 +110110000110 +000010111100 +110110110111 +010000011011 +101110000100 +011100100100 +010111001011 +001011010000 +000111010001 +110010111000 +001011011110 +000001100111 +010000101111 +110001100100 +111000001101 +000110011001 +010000010110 +101010001110 +111000111000 +011111011100 +111001110110 +111100010001 +110101111001 +001001010011 +010001111001 +001101101110 +010011000010 +000100011011 +000001101000 +001110100001 +100011010011 +100000011100 +011001010111 +110011011010 +100110001011 +011001110111 +001010001100 +000111010111 +110111111101 +111001101010 +001110001000 +011100001010 +010011101010 +111011010011 +000011001010 +100101000110 +100101010111 +110010100010 +010100101111 +111011011100 +100011100101 +101111111101 +001001110011 +110111101001 +100100010101 +010101100001 +100011000011 +001010010111 +011001001001 +110001101001 +010011100010 +111000001111 +010101111111 +001001001011 +000111110111 +100110111101 +011011110000 +001001011110 +011010101101 +111011101011 +010001100111 +110100001111 +100010110111 +000000010100 +100000010001 +010011010101 +010011100110 +100011111011 +110110100001 +110000100110 +110101100000 +110001101011 +110110100110 +101111101110 +011010101011 +101001010101 +110110111101 +100111100010 +101100100010 +101011101101 +010011010011 +001111011100 +100101010100 +101010101010 +010000011101 +011100000010 +100111101000 +111111010101 +011010101000 +001010110010 +111110010011 +110111011010 +010010111111 +111001100111 +010101111000 +000111110011 +111101000110 +001011000000 +110100100110 +101001110010 +101111011001 +111110000001 +011101110010 +011000010110 +101011010010 +100110011101 +000010011101 +001111110100 +110011001100 +111110111100 +011001011000 +001110000011 +110001001101 +111110111011 +110000000000 +010000110001 +000100110001 +001000101101 +001100110111 +101011001111 +110011110011 +010011100101 +001001000000 +011110100000 +001010110111 +110101111101 +001111000000 +100011011001 +100000001001 +000010101010 +110000100000 +111111101001 +111010101100 +101100110111 +110100011000 +010011000111 +010010001000 +001011001111 +001001001100 +100010110110 +111100111011 +111100101100 +000111111101 +101110000011 +100001011101 +111101110011 +100100000011 +111110011001 +100010111101 +110001001010 +111111100100 +010000110101 +001100001101 +001001110111 +110110101010 +011110010010 +101011010000 +101101110010 +010010110000 +011110100111 +010111000100 +010100000010 +000011110100 +111001011101 +010111100101 +110010101101 +011100010010 +001110111100 +011111110110 +001110100010 +000001100001 +011011110010 +000010111101 +001011111110 +111110111010 +001010101101 +100011110010 +001111110010 +011001110010 +100110101100 +010111010011 +001000010011 +111110110010 +011000000110 +011111111100 +000111110110 +110001110100 +101110010101 +010000111101 +011011101110 +011010100111 +001010000010 +100001100011 +110001000000 +101111100111 +101111110011 +001101110011 +110001110101 +100101010010 +010101011110 +000011111000 +000100001000 +101001110011 +011100110001 +000000011100 +111110010111 +101011101100 +110011101100 +110101011000 +010111001000 +111100001010 +001000011111 +010100111011 +101010101011 +001110001110 +100011000110 +000101101011 +110011010111 +111001011110 +111010100110 +010001110001 +011010101110 +101011110000 +001101010010 +001010000011 +011001000111 +010001000110 +010110011111 +001111011000 +000010010111 +100011110111 +111100111100 +010101010001 +100011101111 +011101011001 +001011001100 +001111000101 +110111011000 +011001001010 +010000000100 +100110111010 +000000111110 +011100100011 +100100111110 +000010011010 +111000000100 +001110001111 +011000101010 +011100110010 +110101000111 +110110111111 +101110110010 +000110100000 +110100001101 +000111101110 +111000111001 +000111111010 +010110111011 +000101110111 +111000011011 +010110001010 +001011111011 +100100100011 +011110110010 +000111110101 +110110011101 +000011000011 +110011001010 +000100101100 +101100100011 +010111000001 +110101100001 +011110111010 +111100101000 +010000100010 +110011000111 +010011011100 +100110101011 +000100001011 +101111000010 +010000010000 +111110000100 +111100011110 +010100111001 +100000011111 +010111110100 +100100110011 +111101111001 +100010011000 +111110101111 +010111001010 +110000101000 +001111111111 +000111100110 +000011101100 +011010001000 +001011010011 +110011111011 diff --git a/2021/day3/src/main.rs b/2021/day3/src/main.rs new file mode 100644 index 0000000..10c1f81 --- /dev/null +++ b/2021/day3/src/main.rs @@ -0,0 +1,36 @@ +use std::fs::File; +use std::io::prelude::*; +use std::io::BufReader; + +fn main() -> Result<(), std::io::Error> { + let file = File::open("input.txt")?; + let reader = BufReader::new(&file); + + let lines: Vec<_> = reader.lines().map(|x| x.unwrap()).collect::>(); + let mut bits: Vec = vec![0; lines[0].len()]; + let half: u32 = (lines.len() / 2) as u32; + let mut gamma_string = String::new(); + let mut epsilon_string = String::new(); + + for line in lines { + for (index, character) in line.chars().enumerate() { + bits[index] += character.to_digit(10).unwrap(); + } + } + + for bit in bits { + if bit >= half { + gamma_string.push('1'); + epsilon_string.push('0'); + } else { + gamma_string.push('0'); + epsilon_string.push('1'); + } + } + let gamma_rate = isize::from_str_radix(&gamma_string, 2).unwrap(); + let epsilon_rate = isize::from_str_radix(&epsilon_string, 2).unwrap(); + + println!("{}", gamma_rate * epsilon_rate); + + Ok(()) +} diff --git a/2021/day4/Cargo.toml b/2021/day4/Cargo.toml new file mode 100644 index 0000000..8842130 --- /dev/null +++ b/2021/day4/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day4" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day4/input.txt b/2021/day4/input.txt new file mode 100644 index 0000000..4c28ac7 --- /dev/null +++ b/2021/day4/input.txt @@ -0,0 +1,601 @@ +76,69,38,62,33,48,81,2,64,21,80,90,29,99,37,15,93,46,75,0,89,56,58,40,92,47,8,6,54,96,12,66,83,4,70,19,17,5,50,52,45,51,18,27,49,71,28,86,74,77,11,20,84,72,23,31,16,78,91,65,87,79,73,94,24,68,63,9,88,82,30,42,60,13,67,85,44,59,7,53,22,1,26,41,61,55,43,39,3,35,25,34,57,10,14,32,97,95,36,98 + +17 45 62 28 73 +39 12 0 52 5 +87 48 50 85 44 +66 57 78 94 3 +91 37 69 16 1 + + 1 67 4 58 13 +25 54 34 63 87 +59 70 66 72 71 +33 17 8 20 85 +69 46 50 41 88 + +47 63 80 15 90 +24 1 40 94 13 +56 62 74 81 95 +43 88 37 99 22 +57 52 33 84 49 + +33 58 54 28 10 + 7 82 97 66 92 +95 77 5 86 84 +85 91 94 21 69 +23 12 13 98 46 + + 1 63 58 23 0 +67 14 45 42 32 +48 64 83 10 13 +74 16 3 79 46 +44 52 95 25 6 + +93 47 5 96 28 +88 76 70 0 72 +77 1 36 54 9 +14 17 75 64 15 +79 66 61 78 26 + +23 75 96 71 76 +63 59 39 65 36 +95 21 67 41 74 + 9 97 4 2 49 +32 17 81 0 56 + +77 53 30 94 5 + 4 42 87 25 24 +52 15 68 9 45 +56 89 98 47 34 +99 32 27 78 46 + +75 70 99 65 41 +87 6 11 88 1 + 4 42 64 98 78 +63 50 69 79 39 +67 46 17 97 26 + +26 73 6 79 47 +67 51 64 16 60 + 8 1 61 76 39 +13 57 48 65 46 +63 83 4 92 71 + +97 93 21 88 80 +58 42 53 95 90 +49 29 30 26 22 +66 51 75 8 13 + 5 39 19 4 96 + +77 16 33 1 6 +54 91 60 56 88 + 4 59 24 79 22 +36 49 17 97 27 +67 99 92 62 86 + +78 18 59 74 54 +79 68 23 51 85 +47 42 92 58 12 +30 97 19 26 15 + 1 62 94 65 70 + + 6 91 56 55 11 +58 96 21 50 53 +51 60 67 64 71 +12 25 44 47 39 +15 92 81 9 38 + +98 16 31 21 30 +58 10 3 89 7 +79 20 60 74 26 +86 4 83 96 15 +94 29 44 41 34 + +50 75 83 20 52 +65 85 41 78 38 +31 64 86 32 10 +25 82 13 61 22 +11 73 4 77 24 + +56 74 26 20 62 +83 46 41 24 52 +34 28 76 80 36 +75 48 63 17 55 +69 47 22 45 60 + +17 15 71 28 68 +12 76 27 25 14 +34 39 31 58 13 +75 67 2 26 42 +72 43 0 23 54 + +37 43 18 76 47 +96 1 80 77 27 +13 89 16 4 6 +74 92 55 99 38 +19 75 52 85 81 + +69 51 39 95 98 +90 61 91 6 21 +25 57 81 10 49 +67 55 43 96 17 +78 11 3 64 77 + +51 66 8 62 60 +82 94 24 54 26 +59 91 97 37 77 +20 25 69 98 84 +38 12 65 35 61 + + 7 26 91 84 17 +23 52 86 19 24 +58 44 5 32 40 + 6 27 89 76 92 +33 10 90 83 82 + +44 61 68 70 87 +23 17 90 93 21 +92 54 95 46 14 +47 24 89 33 31 +26 80 35 42 78 + +88 80 50 46 26 + 1 97 92 51 74 +16 24 40 31 95 +47 85 61 99 12 +27 8 25 42 13 + + 8 59 37 87 44 +62 0 67 39 92 +79 81 54 24 93 +56 84 23 18 34 +72 68 29 11 91 + +64 51 81 44 12 +49 20 23 36 53 +59 73 37 60 57 +96 65 5 43 14 +46 31 47 87 1 + +11 13 72 30 3 +67 20 84 59 77 +52 87 97 51 16 +43 36 21 33 82 +41 96 91 93 29 + + 7 31 19 87 94 +92 68 18 57 23 + 5 88 81 86 10 +99 50 37 33 25 +97 22 0 53 91 + +78 39 41 44 89 +91 82 71 42 37 +25 93 67 53 9 +84 23 33 92 14 +74 45 57 86 50 + +79 83 10 85 48 +51 29 93 87 21 +58 5 52 37 99 +80 1 18 46 42 +60 92 0 44 59 + +79 76 54 14 42 +57 11 39 66 33 +86 62 27 61 26 +48 68 47 99 46 +78 90 9 36 98 + +76 79 66 38 65 +67 91 90 41 93 + 2 1 33 56 50 +46 9 0 61 62 +26 58 16 24 10 + +20 22 86 58 14 +53 74 54 85 6 + 2 96 40 72 78 +99 81 16 31 55 +11 57 62 51 32 + + 8 51 73 40 88 +83 35 37 98 27 + 3 42 15 14 33 + 2 38 52 82 71 +67 55 9 66 53 + +94 99 54 18 14 +40 56 57 66 68 +28 74 48 30 0 +59 1 22 50 23 +13 71 6 26 15 + +28 60 66 25 56 +49 68 84 10 38 +73 50 87 16 14 +79 26 29 18 2 +57 22 5 48 91 + +61 78 3 95 87 + 6 62 25 74 84 +22 71 93 57 20 +81 33 15 45 96 +38 14 19 72 26 + +51 19 62 72 39 +36 83 6 33 9 +95 43 42 2 22 +94 99 23 97 11 +66 61 16 30 35 + +51 38 7 24 82 +23 12 46 55 85 +43 97 45 61 67 +53 2 77 99 34 +17 93 25 9 72 + +37 32 35 63 93 +40 16 51 99 88 +73 69 49 80 33 +56 54 18 87 71 +29 98 85 58 17 + +38 4 55 72 33 +29 63 86 52 75 + 7 47 34 53 14 +89 39 83 36 78 + 6 21 15 18 96 + +56 19 40 0 7 +61 33 50 66 54 +93 91 64 6 45 +51 90 94 18 37 +15 28 13 2 44 + +18 79 4 56 15 +38 80 8 42 5 +60 11 53 23 27 + 9 71 19 83 72 +39 97 98 99 7 + +90 22 41 95 15 +20 18 7 70 49 +97 51 79 94 77 +31 89 50 40 9 +37 84 6 98 35 + +38 56 94 55 0 +92 84 8 85 73 +86 81 76 35 1 +62 5 59 77 72 +79 97 60 11 70 + +43 98 87 97 70 +53 55 35 8 64 +80 59 75 11 2 +17 95 13 38 90 +31 20 60 84 4 + +38 19 10 73 86 +37 72 66 22 53 + 6 41 20 21 92 + 0 13 9 89 17 +43 61 80 60 65 + +61 50 42 99 26 +11 51 52 83 64 +92 60 2 91 20 +95 10 14 94 98 + 5 37 90 17 69 + +82 48 51 32 78 +30 39 10 84 69 +94 5 60 92 89 +95 31 64 67 23 +96 20 33 66 61 + +33 92 78 24 74 +45 34 73 5 57 +18 37 69 44 38 +25 30 53 87 64 +28 23 14 10 81 + +39 82 40 64 86 +26 81 3 85 50 +71 75 91 65 96 +17 55 8 56 59 +22 36 73 90 0 + +18 67 50 70 71 +83 8 75 55 29 +66 33 39 88 16 +32 84 78 59 0 +11 3 61 65 36 + + 1 12 66 59 9 +24 97 75 83 11 +45 16 14 31 71 +85 43 99 18 15 +61 56 80 69 29 + +18 50 86 53 71 +67 36 14 24 55 +52 30 33 54 81 +72 51 39 28 42 +45 98 78 35 73 + +60 86 68 58 37 +17 78 43 31 96 +33 61 34 45 36 +10 29 83 98 2 +88 73 7 84 50 + +30 21 94 31 4 +20 68 91 55 51 +10 98 2 25 84 +64 97 29 28 58 +75 17 76 54 65 + +17 11 88 9 66 + 1 59 60 79 55 +30 46 83 67 91 +23 45 99 90 6 +81 33 8 13 76 + +25 68 43 59 51 +56 14 41 52 16 +62 36 12 37 71 +83 90 81 91 0 +95 92 29 54 26 + +53 84 85 18 10 +51 44 87 86 67 + 4 81 82 77 30 +26 68 80 57 71 +22 83 47 61 14 + +41 89 38 14 66 +70 92 26 97 53 +78 25 5 4 48 +54 86 31 23 0 +99 73 6 20 98 + +18 81 96 60 47 +59 87 95 15 57 +34 17 26 7 42 +25 90 45 94 5 +10 41 32 20 98 + +37 9 20 82 83 +84 14 62 3 76 +86 67 95 40 65 +57 26 1 19 69 +49 41 29 35 13 + +29 74 69 92 48 +80 47 59 18 13 +98 5 64 89 83 +37 97 90 32 49 +25 87 39 21 63 + + 1 61 5 82 66 +87 75 18 23 63 +38 51 33 59 4 +21 14 17 97 92 +94 45 84 22 10 + +86 93 8 99 54 + 1 4 37 30 34 +80 17 50 74 97 +28 11 6 85 78 +94 76 92 63 79 + +63 87 89 19 81 +72 90 71 96 16 +85 92 78 11 37 +50 17 68 82 66 +21 9 39 69 73 + +30 63 90 5 45 +26 15 28 84 65 + 1 23 0 12 17 +61 98 21 39 56 +67 51 3 8 42 + +54 91 9 70 93 +75 58 89 53 19 +77 64 45 78 14 + 7 31 99 42 51 +87 95 60 10 84 + +98 35 66 42 85 +75 27 97 54 9 +16 15 60 44 49 +28 19 51 24 50 +59 18 37 88 39 + +69 29 49 9 76 + 4 83 64 33 2 +67 81 88 70 39 +85 73 97 15 8 + 7 13 26 12 1 + +57 3 65 28 87 +36 31 51 19 0 +56 77 41 20 76 +79 29 80 60 66 +55 61 8 30 15 + + 2 42 3 17 40 +10 56 91 52 23 +76 39 75 82 49 +50 36 99 9 53 +92 66 48 31 41 + +16 51 80 95 23 +36 84 33 56 11 +49 46 32 78 85 +67 29 94 26 22 +76 6 30 37 0 + +27 94 79 48 4 +55 81 22 18 88 +93 15 59 41 11 +67 43 24 92 65 + 5 1 60 99 62 + + 2 51 42 84 82 +80 28 43 93 72 +81 57 13 45 66 +34 22 53 37 3 +31 46 70 77 79 + +17 12 22 53 74 +23 49 52 60 40 +64 98 97 75 57 +58 81 85 89 92 +42 34 65 87 18 + +13 8 54 25 11 +84 72 66 78 1 +22 82 48 85 62 +68 99 18 3 57 +64 41 80 94 71 + +45 5 56 30 62 +10 50 78 13 34 +90 97 85 36 0 +86 35 80 55 74 +47 99 59 61 18 + +79 87 81 45 95 +24 91 27 18 16 +51 35 34 46 48 +39 40 6 70 99 + 1 82 63 32 50 + +78 68 27 17 65 +74 15 21 38 24 +82 97 49 7 58 +19 23 87 79 22 +57 93 30 1 69 + +64 13 40 21 89 + 3 95 20 79 59 +80 46 91 54 1 +62 66 30 60 47 +26 99 55 25 2 + +47 83 7 71 81 + 9 72 12 20 96 +28 57 82 98 42 +34 59 18 69 1 +68 38 46 19 80 + +43 39 48 84 87 +32 78 5 65 50 +86 13 20 22 70 +31 6 52 53 18 +73 25 4 60 99 + +48 15 59 50 33 +93 99 46 70 21 +91 26 76 65 87 +10 27 78 5 96 + 4 63 22 82 20 + +88 63 66 48 37 +39 47 56 52 27 +81 18 33 12 59 + 3 96 55 26 43 +42 4 7 28 22 + +95 12 98 84 23 +37 35 78 9 61 +52 47 24 90 17 +55 87 18 80 41 +38 0 14 36 48 + +62 72 56 78 8 +75 26 11 58 91 +38 74 52 65 45 +43 41 15 82 35 +89 27 21 54 0 + +43 36 85 68 60 +26 89 84 10 80 +87 50 75 81 35 +12 46 6 70 59 +93 51 66 33 49 + +68 32 0 63 54 +20 92 39 89 17 +48 60 87 36 14 +93 76 83 10 55 +64 74 80 11 41 + + 9 32 11 41 87 +78 22 8 72 75 + 6 51 29 90 50 +21 68 47 2 7 +52 19 36 57 58 + +83 36 25 31 99 +86 29 47 77 38 +13 51 20 59 27 +74 50 9 11 44 +52 95 81 2 70 + +96 47 14 73 59 +84 87 7 4 46 +60 27 79 53 30 +58 28 55 5 43 +91 75 63 35 52 + +41 66 27 50 56 +76 60 80 85 23 + 3 21 37 74 95 + 9 92 43 5 98 +79 49 88 24 70 + +59 18 57 90 13 +79 29 12 2 0 +84 58 38 77 96 +33 89 43 11 44 +93 23 98 60 51 + +58 86 28 17 1 + 6 4 81 55 53 +84 27 38 12 83 +50 43 40 85 88 +26 72 25 41 44 + +14 92 7 98 12 +44 11 71 64 26 +88 8 2 56 6 +59 0 15 33 51 +10 52 89 53 34 + +52 4 5 63 50 +15 8 60 70 13 +33 79 21 39 34 +84 91 30 12 71 +61 31 41 9 66 + +43 67 52 92 54 +17 21 71 78 60 +19 0 88 61 2 +14 66 87 12 37 +89 23 25 4 24 + +41 62 7 66 33 +59 87 84 80 71 +73 97 25 85 60 +86 64 61 54 83 +22 18 63 81 27 + +92 89 50 11 73 +41 48 62 80 78 +46 55 81 16 94 +97 45 5 13 40 +14 75 22 42 2 diff --git a/2021/day4/src/main.rs b/2021/day4/src/main.rs new file mode 100644 index 0000000..4b2f9b3 --- /dev/null +++ b/2021/day4/src/main.rs @@ -0,0 +1,107 @@ +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn part1(grids: &Vec>, mut inputs: Vec) -> u32 { + let mut values = Vec::::new(); + + for _ in 0..4 { + values.push(inputs.remove(0)); + } + + let mut winner: i8 = -1; + for input in inputs { + if winner >= 0 { + break; + } + values.push(input); + for i in 0..grids.len() { + // Search by rows + for j in [0, 5, 10, 15, 20] { + let mut n = 0; + for k in 0..5 { + let x = grids[i][j + k]; + if values.iter().any(|&i| i == x) { + n += 1; + } + } + if n == 5 { + winner = i as i8; + } + } + + // Search by cols + if winner < 0 { + for j in 0..5 { + let mut n = 0; + for k in [0, 5, 10, 15, 20] { + let x = grids[i][j + k]; + if values.iter().any(|&i| i == x) { + n += 1; + } + } + if n == 5 { + winner = i as i8; + } + } + } + + if winner >= 0 { + break; + } + } + } + + let mut sum = 0; + for x in &grids[winner as usize] { + if values.iter().any(|&i| i == *x) { + continue; + } + + sum += x; + } + + sum * values.pop().unwrap() +} + +fn main() -> std::io::Result<()> { + let file = File::open("input.txt")?; + let reader = BufReader::new(file); + let mut lines = reader.lines(); + + let inputs: Vec<_> = lines + .next() + .unwrap() + .unwrap() + .trim() + .split(',') + .map(|x| x.parse::().unwrap()) + .collect::>(); + + let mut grids: Vec> = vec![]; + let mut n: usize = 0; + + lines.next(); // Ignore the first empty line + while let Some(line) = lines.next() { + let mut line = line.unwrap(); + grids.push(Vec::with_capacity(5 * 5)); + + for _ in 0..5 { + grids[n].extend( + line.trim() + .split(' ') + .filter(|x| !x.is_empty()) + .map(|x| x.parse::().unwrap()) + .collect::>(), + ); + line = match lines.next() { + Some(x) => x.unwrap(), + None => "".to_string(), + }; + } + n += 1; + } + + println!("{}", part1(&grids, inputs.clone())); + + Ok(()) +} diff --git a/2021/day6/Cargo.toml b/2021/day6/Cargo.toml new file mode 100644 index 0000000..89d04ae --- /dev/null +++ b/2021/day6/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day6" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day6/input.txt b/2021/day6/input.txt new file mode 100644 index 0000000..de918c7 --- /dev/null +++ b/2021/day6/input.txt @@ -0,0 +1 @@ +1,1,3,5,1,1,1,4,1,5,1,1,1,1,1,1,1,3,1,1,1,1,2,5,1,1,1,1,1,2,1,4,1,4,1,1,1,1,1,3,1,1,5,1,1,1,4,1,1,1,4,1,1,3,5,1,1,1,1,4,1,5,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,5,1,1,1,3,4,1,1,1,1,3,1,1,1,1,1,4,1,1,3,1,1,3,1,1,1,1,1,3,1,5,2,3,1,2,3,1,1,2,1,2,4,5,1,5,1,4,1,1,1,1,2,1,5,1,1,1,1,1,5,1,1,3,1,1,1,1,1,1,4,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,1,1,2,2,1,2,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,4,2,1,4,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,5,1,1,1,1,1,1,1,1,3,1,1,3,3,1,1,1,3,5,1,1,4,1,1,1,1,1,4,1,1,3,1,1,1,1,1,1,1,1,2,1,5,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1 diff --git a/2021/day6/src/main.rs b/2021/day6/src/main.rs new file mode 100644 index 0000000..46a148c --- /dev/null +++ b/2021/day6/src/main.rs @@ -0,0 +1,36 @@ +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() -> std::io::Result<()> { + let file = File::open("input.txt")?; + let mut reader = BufReader::new(file); + let mut buffer = String::new(); + + reader.read_line(&mut buffer)?; + + let mut lanternfishes: Vec<_> = buffer + .trim() + .split(',') + .map(|x| x.parse::().unwrap()) + .collect::>(); + + for _ in 0..80 { + let mut n = 0; + for lanternfish in lanternfishes.iter_mut() { + if *lanternfish == 0 { + *lanternfish = 6; + n += 1; + } else { + *lanternfish -= 1; + } + } + + for _ in 0..n { + lanternfishes.push(8); + } + } + + println!("{}", lanternfishes.len()); + + Ok(()) +} diff --git a/2021/day7/Cargo.toml b/2021/day7/Cargo.toml new file mode 100644 index 0000000..b170ccb --- /dev/null +++ b/2021/day7/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day7" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day7/input.txt b/2021/day7/input.txt new file mode 100644 index 0000000..3e0fecf --- /dev/null +++ b/2021/day7/input.txt @@ -0,0 +1 @@ +1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,62,461,1087,183,1096,431,412,200,486,1543,25,580,1030,15,65,1186,9,226,173,77,119,691,855,451,88,741,221,1465,190,779,327,179,627,366,288,174,1147,49,773,3,5,65,20,172,601,307,611,699,1168,933,1295,832,242,62,8,4,226,768,33,566,21,10,937,15,760,100,574,181,89,72,1054,225,28,0,685,661,131,281,933,90,233,109,1345,81,106,636,1262,193,172,1056,709,1176,447,536,1054,929,171,226,127,274,710,917,218,192,25,128,321,1816,515,181,759,20,258,134,281,151,99,479,623,534,72,576,534,337,54,293,450,230,963,14,357,446,1244,964,16,865,52,1,1171,77,7,275,313,894,577,305,1119,393,285,354,136,1147,241,441,166,1024,650,101,178,1514,186,902,367,5,431,374,56,507,857,1316,0,186,63,118,1062,62,446,266,47,354,168,65,1036,447,689,160,749,728,791,1066,99,675,194,891,153,737,801,254,905,1046,21,413,386,204,603,373,218,440,137,1340,1616,121,903,722,841,731,213,219,405,336,1345,144,329,285,213,272,717,47,126,1137,548,32,21,755,219,595,187,143,636,476,397,185,70,345,89,319,80,867,26,1166,509,24,16,151,605,1415,893,814,473,289,377,407,44,184,290,447,1669,116,319,455,294,145,513,58,247,186,1565,31,297,1,226,1051,1561,1233,254,1274,422,547,1638,354,1855,419,71,1003,626,519,109,96,996,117,32,226,424,184,181,720,1311,1162,11,86,438,408,1269,887,612,327,133,1117,1390,345,10,370,175,37,1154,659,707,193,665,65,359,758,1253,498,219,601,59,919,1371,289,9,437,392,626,981,2,51,733,780,101,541,770,464,28,616,81,1708,1515,719,780,1214,673,268,246,25,252,301,205,27,160,0,298,69,285,58,809,1369,812,628,353,47,632,123,168,135,277,303,614,365,330,1385,1117,1346,737,744,1403,385,215,437,276,726,673,668,494,164,1,763,696,487,252,375,1253,42,1111,963,58,63,11,1648,1080,964,526,454,1349,1098,95,59,78,36,42,654,1441,1129,464,740,355,370,44,4,154,986,439,828,287,969,765,565,836,196,387,556,34,586,438,1205,760,798,6,61,260,25,418,1628,566,3,530,753,758,16,92,30,1388,109,240,513,1048,1056,588,1634,418,297,195,447,1145,198,466,0,607,180,57,58,72,319,221,869,744,339,195,1295,268,1336,1310,38,714,326,393,445,422,102,389,188,147,21,805,381,520,561,282,438,115,431,156,482,50,890,470,22,60,46,1588,971,1219,82,380,1061,948,455,99,255,400,1832,91,225,280,520,279,91,172,92,946,434,182,164,142,83,91,281,538,962,77,1104,1522,310,4,961,62,9,1257,596,464,733,338,1166,334,380,509,773,90,498,480,1523,1632,530,543,413,589,748,4,861,11,233,192,699,33,615,1853,205,270,624,1132,1100,227,1402,349,183,179,645,4,1120,962,317,326,128,422,281,302,701,53,179,34,802,272,1254,375,764,418,16,160,943,479,416,717,644,1029,372,140,114,449,351,159,305,1299,749,488,502,180,210,17,533,258,120,333,1097,185,1911,451,360,66,1329,1260,209,1611,454,809,336,783,1438,20,26,609,720,155,578,367,231,1715,64,610,465,752,81,108,389,995,244,1291,1144,159,161,1630,561,813,261,67,1604,124,231,833,14,15,1245,1309,1165,103,1270,228,1,133,644,581,218,481,716,237,155,360,110,1408,931,99,216,5,21,67,348,927,325,759,1127,557,584,696,428,653,548,247,1519,1682,132,3,1648,230,229,136,253,543,1153,204,669,58,81,357,85,82,749,503,139,32,1170,1352,151,653,1441,51,392,474,2,114,64,418,125,514,838,473,794,331,13,327,1476,836,37,3,0,115,18,1784,300,190,99,997,1164,31,1255,96,64,1101,354,698,372,852,1508,100,289,32,704,292,504,191,1342,231,692,12,369,1182,62,809,566,688,218,2,539,234,996,444,228,456,369,115,23,29,226,940,95,404,349,1254,171,69,711,2,1405,1181,34,8,92,173,533,20,181,921,201,1236,185,457,526,2,106,12,601,58,339,457,590,15,1583,473,451,1124,1569,401,72,154,9,1331,471,165,516,463,543,298,197,43,1294,101,1058,1025,1099,4,634,90,104,870,480,412,290,11,924,338,30,281,83,268,20,848,1722,1060,987,9,196,266,28,402,267,199,814,986,440,906,796,1403,1394,62,136,442,412,1729,571,459,91,730,269,172,202,772,305 diff --git a/2021/day7/src/main.rs b/2021/day7/src/main.rs new file mode 100644 index 0000000..26e1e30 --- /dev/null +++ b/2021/day7/src/main.rs @@ -0,0 +1,29 @@ +use std::fs::File; +use std::io::{BufRead, BufReader}; + +fn main() -> std::io::Result<()> { + let file = File::open("input.txt")?; + let mut reader = BufReader::new(file); + let mut buffer = String::new(); + reader.read_line(&mut buffer)?; + + let mut inputs: Vec<_> = buffer + .trim() + .split(',') + .map(|x| x.parse::().unwrap()) + .collect::>(); + + inputs.sort(); + + let half: usize = inputs.len() / 2; + let middle = inputs[half]; + let mut sum: u32 = 0; + + for input in inputs { + sum += (input - middle).abs() as u32; + } + + println!("{}", sum); + + Ok(()) +} diff --git a/2021/day9/Cargo.toml b/2021/day9/Cargo.toml new file mode 100644 index 0000000..b5e5273 --- /dev/null +++ b/2021/day9/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day9" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2021/day9/example.txt b/2021/day9/example.txt new file mode 100644 index 0000000..6dee4a4 --- /dev/null +++ b/2021/day9/example.txt @@ -0,0 +1,5 @@ +2199943210 +3987894921 +9856789892 +8767896789 +9899965678 diff --git a/2021/day9/input.txt b/2021/day9/input.txt new file mode 100644 index 0000000..10120f9 --- /dev/null +++ b/2021/day9/input.txt @@ -0,0 +1,100 @@ +9876543234679310943456798433456798998764321357921025689921987899896498799923491297654545679876212347 +6987675036678939874567987012567897899975532467892334567890996789789989679895989398743236789865101456 +5598983124589598765689765423678956789876543568943565678999765395679876598789678987654345998764313689 +4349994235695329976789998634678946789987987679757678989398653234598767459654567998767499899875424568 +3298987656795419899896459745989134568998998789968789699219772123987654398753456899989989689986576789 +2126598787896998788902349897991013457899999997989994567909765244598875697542346789798764593987897897 +1012349898999887567893956999543234967967988656799323459898954355699876989331238996659875691298998956 +4123467999598765456789897987654347899659876545678912398767896466789987979210349965545996789399659235 +3234598985439878567896789198795456789898765434189329987546789998994699867991467894534987899985432123 +4347899876567989678965994349987897899909996521034998675323597899123989659889578943023498999875321014 +5456987997689299989254789498798998999919989992129876543213456789239877545678989432145999998989432345 +6567896798792109892123569987679999998898767889234997854324597994399765434689996565236789987698544456 +7898945689899998763012458976597989987784345678949998985434989219987654323456899854345699996597655678 +8949239796958899954124567895435678996543234567897889876599878998698765435678998765496978989498966899 +9932198965346789867258789932124567987655123458976778987988769876569876646889019887989869979329987957 +9893987896234568954345898743245798998766234567894567899875457987421987756799934999876649868912398946 +8789876789195689875457999655466799679879845678913348987654346987630298867897895988965432946794459435 +7653245678989799876767899867578954568989658799101234999869234598541349998976789876894321987895568910 +9654134789678986988979989878989243456799767895312349898998945987676556789345698765789210398996678999 +8765245696567895399898979999599012367899898986423498776566899999887687990296987984694331239989989888 +9954346897379964219787767893478943479901999597434569653465678999998798921989896593789452398978998767 +0976557898298965398656456794569894998919589439765698542324599689929899439976789432599543987767999656 +2998678999997897987642347895698769867898478929876987321015689599845996598765678953498959876656897545 +9859789899886789998756468998789655456797569999989996432326796498656789987654567894997899965545998968 +7643996798654567949898979659897643245698979989994987543689895329868999998765678949876778964234899879 +5432345697543458957999989545998732124569998967943198964599943210979098969876899129875467996446789989 +8584557987654569767899993123989841034979987654599979989679985341989197854987989039654346789677899899 +7675678998765699898988932034976432149898998863278954393989876832698986543298968998765956799898998789 +8776789439897789909977794255987543298787899985369893212399989764567997432129456789979899989949987699 +9899899524989896429865689356898655398656799876456789105679899895678987521012359891398797778932397569 +9987978939878987898754578967898786499545892998968994323456789989989498432154467910987676567891986478 +9876568998767898999743679879969897987656901239879895544678999879897599543265998934977567456789765399 +7765459876546999898654798989456998998767893446989796665678998768789987654399899949765432345996996989 +6984345995437898759995987892399999439978998669995689776889997656667998969989789899986645567895789878 +5493234989425789647889876891987899321989998778934578987999876543459549998875569789998786688934899767 +4321049875414678936979965789976678910198989989323469998967987652368932987654414579989887999023987656 +5493959954323469324767894679864567891987878993212378999545698710456891099843203458976998942125998543 +7989898965434568913456893589653456789876567992105567894434789322567992129874212367895459993349879432 +8979767996576679102378921098732345898676456789213458943226798763456789298765673456789345989659765310 +9865656889677889293467892129641237899545345698924567899012999654567899349876654597891299978978987821 +8654345679898999989679953498432356789321234567897698978929898765678998956987875698910987567899398932 +7543234578929898878989769976544578996532356878998789567998769888789987897898986789321297478921239543 +5432143456919657667899898989757689987653479989019893478987847999898796789949997996548396567890198656 +8961012367898943456789987698768789998954568998929989569876435445989654678929898987657987678954239967 +7642123456976432367893297569899898769765679456998678978987321334678965799898769598767998999876349879 +8843234568965321245892195479901989859887894367899568989765410123457896893799654329878999899987456989 +9754545678976432496789989567899876543998999578965467999876923245569987932679954212989898789998567894 +9898758789876545789897678998967989862369998679754345699989874356998898921569896102398767678999978943 +9998767894988656896935569549459898973456899789643234987998765459876789932499789213988654589989899432 +8789978943299767965423478921298767895569964996532146986799878598765999893987689929876542679878798921 +9689989652129878987314567890989856789678953987844299875989989679754666789986567898986321299767687899 +6567897541012989796205679999976545679999654598765987654678998798673245678965438957895410987954576778 +4489995432123497654317895798765432459898767679876798763567899899542134589875312346689929996543134567 +3235789543235698785456954349876721248789878789989899874698999998753234696543201234567898987654235678 +2124678965346789896787893212987210187678989892198942976789998769876545987654415345698976798966547899 +1014589878456893987899954301297321234589899999977893988894987456998668998765623466989765429987858943 +2123578989569902398978975212976542475789789998756789199953986568989889679876734569879954312398969652 +3234567897698943469869865323987643567898699999547894349992197689679995566987655698767893202459878943 +4345978998997899598756998764598764678987569898769976998989999796598754324499878999859994312378989965 +5656899569866968965431279879689985789998498769878989876865778965469843212347989898948975459459999876 +6787932499754357896542456998789699899886329856989999765954567894345954353456798797837988678969878997 +7898953987643239919757567899897543998765498745899886644212678901234969754668997655126898789998868998 +8999654996544128929898978934998631349877899635789765432103789212349898975678986543235679892987657899 +9998969875431017999939989325698752356989998523489876643214897423598787896999697655356799921098545989 +9997978996652126789129893216799763467899896412678999765625996545987676569896598766587898943985432877 +9886899429863245679399789109999878978998765324569769889436789679876543456789439898698987899874321466 +8765678910964376899987698998784989989549995445678945996547899798965432387696429999789556789766440355 +7654569899875487999896587899543494399929987678799434987667934977994321234597998998995445678954321234 +6543456789989568998785476998932359239898998989893223699788999866789410165789896987654324479765535445 +5432567899987678997665365767899498998767999699932104567999987654789421256899765698985212356986787568 +4321256789999789886543214456798997987656789569543213469765498765678933345998754109876323567897898679 +5434345678998998765432102349987856798545993498994999578954329878989654658987653212987434878998929989 +6565656799567899876545214498986534987656789597789878989865912989498768767899864324598546789989939999 +7676768923456999987756725987995423898967896986678767993999894994239989878998975435987659896765798989 +8787879734567898998998999876789545789989954965483458912987789892129796989787896745898789975454447678 +9898989656789987889999987494899656789195899754312379909876556789097645692546999856789897654322334589 +8969398797996545978899976323678967991024789876106567899985434567998732101235678969897998854310123459 +7654249899975323456789985214567898942195678998217879999876524567986544212346989989976799965924265678 +8652135987976896568999953107998929769989899999356989998765213456987656434587896492455678999895696799 +9543299876989987689659864315789319898878989876467999989874301345699786547998954321234589987689989892 +7654987664698998796549874323498901997659878987578997779765432456789987856899967432355678996578678921 +9965799543567899987856975434567892987543656898989986569876753697897598767977898645698789975457568910 +9899898632356792198977896565678969876532345689995987432987884789966449878956789876899899764325457891 +6678997653458999299989979876799349865431334678953294321098765789654323989345999988967998955212345789 +4599298964578998988998968987891234986210123689964498753129877897654312993234789999654987742101234699 +3989129765679997667987899998910129876433234589876569876534988998973209894365678919869876543232348789 +2878939876799896543566999879321236997645345679987893997699999529994698765489799201978997654343469892 +3467899987986789432355698765432345698987456789298932398988965410989989876569895412399989765499598921 +5679979999895678921234569989543456789998987891019643599877896329879879999678976523989878979988987932 +6789568987784569990146678998656567899969898989998754988756899499764768998789897949876767989877656893 +9893499976543478989236789239767898998756789878899869876645798987653456799898789498765456799765346789 +6912987665421299879345678949879989976545698765789979865434687898432567895965689398754345678974235699 +5439876543210987769967899999989567895431987543695491984323456989943458954397899999665265667895127678 +6545997654521976458899910989996468986532398654599392395664677979894568965989959876543123456789024568 +7666798766439894346778929878987347897747498765678989987775899866789789999878943997651016567892123456 +8789899876598789234567898969876456798856569876789778998986798754989899989766959898764323456789236768 +9898999987697655139879987655987898949987899987894566989987986543478999876745898759877467897897345679 +8967998799798743016791098943498929956798999898913455678999876542359998765636789542976578949985498789 +7649876549899752145892987632349547897899498769101234589212987656767899443323498931987989539876569893 +8432987632999863236789876545678956789902349854213455678903498987898954321014567890198994321987689912 diff --git a/2021/day9/src/lib.rs b/2021/day9/src/lib.rs new file mode 100644 index 0000000..3391a74 --- /dev/null +++ b/2021/day9/src/lib.rs @@ -0,0 +1,90 @@ +use std::str::FromStr; + +#[derive(Debug)] +struct Heightmap { + data: Vec>, + rows: usize, + cols: usize, +} + +impl FromStr for Heightmap { + type Err = (); + + fn from_str(s: &str) -> Result { + let rows: Vec<_> = s.trim().split('\n').collect::>(); + let mut data: Vec> = vec![]; + for row in &rows { + data.push( + row.chars() + .map(|x| x.to_digit(10).unwrap() as u8) + .collect::>(), + ); + } + Ok(Heightmap { + data, + rows: rows.len(), + cols: rows[0].chars().count(), + }) + } +} + +impl Heightmap { + fn resolve(&self) -> usize { + let mut count: usize = 0; + + for i in 0..self.rows { + for j in 0..self.cols { + let top = if i > 0 { self.data[i - 1][j] } else { 10 }; + + let bottom = if i < self.rows - 1 { + self.data[i + 1][j] + } else { + 10 + }; + + let left = if j > 0 { self.data[i][j - 1] } else { 10 }; + + let right = if j < self.cols - 1 { + self.data[i][j + 1] + } else { + 10 + }; + let center = self.data[i][j]; + + if center < top && center < bottom && center < left && center < right { + count += (center + 1) as usize; + } + } + } + + count + } +} + +pub fn part1(input: &str) -> usize { + let grid: Heightmap = input.parse().unwrap(); + let result = grid.resolve(); + + result +} + +#[cfg(test)] +mod day9_test { + use super::*; + + #[test] + fn test_with_example_data() { + let data = include_str!("../example.txt"); + let result = part1(data); + + assert_eq!(result, 15); + } + + #[test] + fn test_puzzle_input_part1() { + let data = include_str!("../input.txt"); + let result = part1(data); + + assert_eq!(result, 541); + } +} diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 9f555f1..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[workspace] -members = ["day1", "day2", "day3", "day4", "day6", "day7", "day9", "day10"] diff --git a/day1/Cargo.toml b/day1/Cargo.toml deleted file mode 100644 index a3c4e52..0000000 --- a/day1/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day1" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day1/input.txt b/day1/input.txt deleted file mode 100644 index ad1abff..0000000 --- a/day1/input.txt +++ /dev/null @@ -1,2000 +0,0 @@ -173 -175 -171 -177 -179 -177 -174 -177 -178 -185 -189 -195 -194 -211 -227 -226 -227 -221 -224 -227 -228 -231 -232 -229 -226 -244 -252 -251 -258 -269 -263 -255 -259 -261 -232 -231 -241 -244 -245 -278 -258 -259 -273 -272 -281 -284 -288 -303 -306 -312 -313 -325 -327 -332 -335 -345 -346 -328 -329 -327 -330 -325 -326 -325 -351 -352 -353 -363 -364 -382 -402 -401 -380 -370 -371 -348 -359 -357 -366 -386 -401 -387 -388 -404 -409 -430 -435 -441 -475 -469 -475 -473 -478 -510 -507 -508 -510 -502 -500 -512 -517 -521 -519 -532 -533 -537 -538 -540 -541 -545 -556 -548 -543 -549 -561 -562 -563 -562 -561 -572 -574 -575 -568 -569 -570 -579 -591 -590 -602 -601 -581 -583 -593 -590 -591 -577 -576 -579 -581 -563 -559 -563 -564 -567 -569 -570 -582 -579 -601 -598 -583 -589 -591 -597 -611 -618 -621 -622 -641 -657 -658 -661 -631 -633 -646 -647 -652 -667 -670 -676 -680 -681 -683 -681 -687 -690 -683 -687 -690 -695 -691 -693 -696 -695 -700 -697 -696 -700 -713 -696 -693 -698 -701 -700 -699 -690 -692 -693 -696 -722 -744 -746 -758 -763 -768 -782 -776 -777 -787 -797 -800 -801 -789 -814 -815 -812 -790 -791 -790 -804 -813 -841 -845 -844 -848 -855 -847 -855 -858 -859 -858 -860 -867 -868 -869 -877 -887 -888 -895 -896 -904 -905 -907 -923 -932 -944 -945 -950 -955 -965 -990 -1019 -1017 -1025 -1040 -1041 -1066 -1060 -1033 -1034 -1047 -1057 -1060 -1061 -1068 -1071 -1080 -1081 -1090 -1096 -1097 -1098 -1099 -1093 -1096 -1100 -1101 -1112 -1118 -1119 -1121 -1123 -1125 -1126 -1152 -1155 -1149 -1161 -1166 -1178 -1181 -1182 -1189 -1190 -1176 -1169 -1183 -1196 -1183 -1205 -1207 -1198 -1200 -1186 -1172 -1162 -1177 -1179 -1175 -1163 -1164 -1170 -1168 -1171 -1173 -1172 -1174 -1175 -1172 -1173 -1167 -1169 -1173 -1176 -1177 -1178 -1179 -1181 -1185 -1186 -1196 -1183 -1181 -1176 -1190 -1200 -1216 -1240 -1238 -1234 -1224 -1247 -1257 -1258 -1246 -1233 -1234 -1223 -1229 -1231 -1232 -1231 -1232 -1249 -1255 -1254 -1257 -1268 -1298 -1300 -1302 -1325 -1337 -1339 -1345 -1348 -1336 -1341 -1342 -1343 -1344 -1343 -1336 -1351 -1360 -1362 -1359 -1357 -1358 -1364 -1370 -1372 -1373 -1374 -1378 -1409 -1390 -1398 -1410 -1411 -1417 -1418 -1431 -1450 -1451 -1452 -1456 -1468 -1469 -1472 -1475 -1465 -1469 -1453 -1457 -1458 -1474 -1464 -1454 -1457 -1460 -1467 -1469 -1470 -1455 -1456 -1468 -1476 -1498 -1502 -1500 -1514 -1522 -1529 -1528 -1516 -1511 -1516 -1521 -1503 -1523 -1498 -1515 -1527 -1526 -1527 -1556 -1567 -1586 -1607 -1616 -1615 -1611 -1612 -1621 -1599 -1600 -1601 -1625 -1632 -1633 -1628 -1656 -1644 -1646 -1669 -1671 -1675 -1676 -1682 -1681 -1658 -1657 -1671 -1669 -1668 -1669 -1670 -1691 -1708 -1709 -1708 -1724 -1731 -1738 -1748 -1766 -1767 -1769 -1756 -1757 -1758 -1759 -1760 -1773 -1775 -1777 -1780 -1782 -1793 -1813 -1795 -1796 -1798 -1797 -1804 -1806 -1811 -1812 -1813 -1818 -1822 -1829 -1824 -1814 -1811 -1806 -1825 -1844 -1847 -1837 -1841 -1844 -1836 -1825 -1828 -1841 -1846 -1839 -1840 -1847 -1856 -1869 -1870 -1871 -1879 -1884 -1890 -1888 -1859 -1861 -1873 -1870 -1871 -1876 -1885 -1886 -1887 -1888 -1887 -1895 -1888 -1889 -1891 -1890 -1884 -1885 -1854 -1857 -1860 -1841 -1837 -1838 -1841 -1859 -1863 -1865 -1866 -1864 -1853 -1855 -1865 -1867 -1875 -1876 -1877 -1880 -1877 -1876 -1886 -1894 -1901 -1903 -1910 -1901 -1903 -1905 -1911 -1913 -1928 -1938 -1940 -1946 -1956 -1951 -1953 -1955 -1961 -1957 -1960 -1967 -1966 -1970 -1976 -1979 -1980 -1979 -1967 -1974 -1980 -1974 -1975 -1976 -2005 -2012 -2015 -2022 -2023 -2024 -2018 -2017 -2024 -2041 -2042 -2043 -2074 -2075 -2077 -2084 -2090 -2091 -2096 -2097 -2100 -2103 -2090 -2063 -2081 -2082 -2079 -2095 -2093 -2095 -2103 -2084 -2093 -2098 -2116 -2123 -2124 -2123 -2117 -2115 -2120 -2121 -2132 -2138 -2146 -2158 -2162 -2163 -2167 -2177 -2178 -2183 -2178 -2198 -2174 -2187 -2196 -2221 -2224 -2228 -2232 -2237 -2238 -2257 -2262 -2263 -2266 -2280 -2287 -2293 -2280 -2281 -2289 -2290 -2289 -2291 -2307 -2316 -2322 -2321 -2320 -2335 -2339 -2345 -2348 -2357 -2360 -2361 -2367 -2375 -2380 -2382 -2389 -2398 -2384 -2388 -2390 -2367 -2369 -2371 -2366 -2370 -2371 -2379 -2364 -2365 -2368 -2369 -2370 -2377 -2378 -2390 -2392 -2398 -2402 -2393 -2404 -2417 -2441 -2446 -2453 -2459 -2462 -2463 -2464 -2476 -2477 -2481 -2482 -2483 -2477 -2481 -2489 -2500 -2504 -2491 -2490 -2487 -2474 -2475 -2476 -2478 -2489 -2491 -2498 -2501 -2513 -2514 -2532 -2546 -2547 -2553 -2559 -2562 -2580 -2588 -2590 -2602 -2601 -2608 -2613 -2616 -2623 -2626 -2651 -2652 -2654 -2650 -2651 -2654 -2658 -2657 -2660 -2654 -2668 -2669 -2662 -2665 -2647 -2660 -2670 -2672 -2680 -2677 -2678 -2677 -2684 -2677 -2678 -2684 -2702 -2703 -2707 -2727 -2728 -2738 -2739 -2738 -2757 -2759 -2766 -2771 -2775 -2788 -2790 -2794 -2797 -2800 -2798 -2801 -2800 -2802 -2803 -2804 -2831 -2820 -2821 -2824 -2827 -2813 -2816 -2826 -2827 -2829 -2834 -2835 -2841 -2849 -2854 -2855 -2867 -2877 -2894 -2900 -2918 -2917 -2898 -2899 -2901 -2902 -2903 -2901 -2919 -2920 -2931 -2939 -2945 -2946 -2934 -2936 -2947 -2956 -2955 -2958 -2946 -2947 -2951 -2955 -2957 -2960 -2964 -2965 -2974 -2976 -2992 -3009 -3014 -3015 -2997 -2996 -3003 -3000 -3006 -3026 -3019 -3031 -3012 -3013 -3020 -3010 -3014 -3018 -3019 -3031 -3007 -3017 -3018 -3031 -3033 -3025 -3037 -3039 -3033 -3000 -3001 -3003 -3014 -3016 -3034 -3033 -3035 -3038 -3040 -3038 -3020 -3018 -3020 -3021 -3039 -3043 -3034 -3036 -3043 -3059 -3074 -3076 -3090 -3096 -3103 -3101 -3102 -3113 -3114 -3115 -3119 -3127 -3146 -3140 -3145 -3146 -3147 -3151 -3152 -3153 -3154 -3144 -3149 -3157 -3163 -3172 -3175 -3180 -3206 -3207 -3212 -3215 -3211 -3212 -3220 -3229 -3230 -3226 -3227 -3256 -3296 -3299 -3301 -3303 -3301 -3302 -3308 -3324 -3323 -3313 -3314 -3317 -3318 -3317 -3330 -3358 -3360 -3369 -3363 -3368 -3371 -3377 -3381 -3385 -3382 -3379 -3381 -3383 -3385 -3386 -3389 -3388 -3392 -3396 -3393 -3391 -3393 -3394 -3398 -3400 -3403 -3404 -3408 -3424 -3425 -3426 -3424 -3415 -3417 -3420 -3439 -3442 -3447 -3454 -3478 -3480 -3477 -3478 -3470 -3472 -3477 -3476 -3477 -3479 -3509 -3519 -3542 -3547 -3548 -3564 -3565 -3569 -3570 -3584 -3591 -3590 -3589 -3598 -3603 -3605 -3609 -3608 -3628 -3624 -3644 -3652 -3654 -3648 -3650 -3652 -3659 -3661 -3675 -3676 -3690 -3692 -3699 -3700 -3702 -3703 -3706 -3715 -3719 -3720 -3725 -3721 -3730 -3722 -3740 -3750 -3751 -3752 -3761 -3763 -3778 -3777 -3778 -3780 -3777 -3794 -3793 -3792 -3802 -3803 -3806 -3817 -3814 -3823 -3824 -3825 -3826 -3831 -3834 -3835 -3844 -3856 -3857 -3864 -3879 -3904 -3906 -3923 -3933 -3935 -3934 -3935 -3937 -3935 -3944 -3941 -3936 -3937 -3935 -3936 -3935 -3937 -3938 -3949 -3950 -3949 -3952 -3953 -3980 -3989 -3990 -3991 -3992 -3988 -3993 -4003 -3969 -3959 -3964 -3973 -3981 -3987 -3986 -3975 -3982 -3981 -3983 -3981 -3984 -3992 -3991 -3984 -3999 -4003 -4004 -3996 -3992 -4035 -4043 -4042 -4034 -4027 -4051 -4052 -4048 -4051 -4049 -4060 -4059 -4062 -4061 -4063 -4062 -4053 -4056 -4067 -4055 -4057 -4058 -4072 -4077 -4075 -4060 -4057 -4058 -4061 -4060 -4061 -4060 -4070 -4088 -4097 -4093 -4105 -4107 -4105 -4103 -4105 -4109 -4086 -4111 -4112 -4115 -4110 -4118 -4119 -4127 -4128 -4129 -4130 -4134 -4136 -4135 -4138 -4139 -4140 -4135 -4158 -4137 -4138 -4158 -4157 -4154 -4156 -4175 -4176 -4179 -4184 -4198 -4196 -4199 -4180 -4188 -4193 -4192 -4201 -4200 -4192 -4207 -4220 -4218 -4230 -4229 -4247 -4248 -4249 -4253 -4254 -4256 -4265 -4266 -4272 -4268 -4273 -4295 -4296 -4305 -4295 -4310 -4311 -4312 -4311 -4314 -4307 -4305 -4294 -4306 -4321 -4316 -4326 -4330 -4331 -4337 -4336 -4337 -4338 -4340 -4342 -4345 -4347 -4345 -4370 -4384 -4405 -4406 -4419 -4420 -4435 -4439 -4443 -4445 -4447 -4431 -4424 -4433 -4418 -4417 -4416 -4417 -4420 -4424 -4440 -4442 -4454 -4461 -4481 -4483 -4479 -4480 -4484 -4485 -4495 -4498 -4499 -4524 -4527 -4528 -4539 -4541 -4545 -4543 -4559 -4569 -4571 -4568 -4573 -4570 -4571 -4580 -4579 -4580 -4583 -4588 -4589 -4590 -4597 -4632 -4625 -4626 -4618 -4621 -4632 -4642 -4644 -4647 -4650 -4665 -4669 -4666 -4673 -4674 -4677 -4681 -4686 -4651 -4657 -4658 -4664 -4665 -4667 -4685 -4688 -4695 -4712 -4714 -4715 -4717 -4731 -4734 -4738 -4737 -4743 -4745 -4752 -4753 -4748 -4763 -4768 -4769 -4771 -4774 -4801 -4802 -4830 -4845 -4850 -4847 -4873 -4883 -4884 -4885 -4886 -4887 -4896 -4891 -4913 -4914 -4937 -4938 -4953 -4959 -4979 -4984 -4990 -4982 -4979 -5008 -5007 -5008 -5004 -5015 -5017 -5038 -5066 -5067 -5069 -5078 -5091 -5101 -5086 -5088 -5086 -5092 -5097 -5098 -5088 -5070 -5072 -5083 -5082 -5073 -5077 -5080 -5076 -5073 -5065 -5066 -5068 -5069 -5081 -5082 -5084 -5083 -5086 -5089 -5092 -5095 -5130 -5133 -5119 -5129 -5130 -5138 -5140 -5148 -5147 -5150 -5151 -5155 -5163 -5188 -5190 -5192 -5189 -5196 -5180 -5191 -5193 -5197 -5182 -5162 -5163 -5147 -5154 -5155 -5168 -5207 -5216 -5223 -5228 -5227 -5229 -5221 -5218 -5221 -5219 -5220 -5230 -5259 -5260 -5233 -5256 -5258 -5251 -5246 -5230 -5234 -5242 -5245 -5260 -5261 -5269 -5281 -5285 -5296 -5297 -5296 -5297 -5298 -5313 -5314 -5313 -5319 -5313 -5322 -5324 -5325 -5333 -5346 -5354 -5355 -5345 -5347 -5349 -5350 -5352 -5339 -5349 -5345 -5361 -5362 -5363 -5404 -5398 -5424 -5415 -5420 -5433 -5435 -5436 -5437 -5438 -5455 -5454 -5460 -5455 -5453 -5454 -5466 -5469 -5471 -5481 -5482 -5502 -5503 -5501 -5484 -5460 -5461 -5465 -5466 -5470 -5454 -5460 -5486 -5482 -5483 -5502 -5512 -5514 -5516 -5518 -5525 -5526 -5521 -5515 -5518 -5521 -5528 -5539 -5557 -5561 -5577 -5571 -5572 -5579 -5576 -5577 -5589 -5592 -5595 -5596 -5595 -5601 -5587 -5560 -5563 -5562 -5571 -5598 -5606 -5621 -5636 -5637 -5663 -5665 -5678 -5677 -5678 -5679 -5684 -5687 -5684 -5688 -5691 -5690 -5693 -5696 -5707 -5725 -5727 -5731 -5734 -5738 -5748 -5767 -5768 -5763 -5767 -5758 -5760 -5791 -5777 -5778 -5782 -5773 -5776 -5777 -5791 -5792 -5793 -5795 -5781 -5786 -5793 -5805 -5807 -5818 -5822 -5821 -5826 -5827 -5846 -5847 -5864 -5886 -5878 -5873 -5868 -5878 -5876 -5881 -5876 -5888 -5890 -5893 -5894 -5895 -5900 -5907 -5908 -5915 -5916 -5937 -5936 -5927 -5938 -5945 -5944 -5935 -5942 -5943 -5945 -5948 -5977 -5985 -5975 -5985 -5998 -5999 -5996 -6027 -6047 -6031 -6033 -6034 -6022 -6023 -6025 -6030 -6029 -6030 -6034 -6046 -6055 -6061 -6058 -6067 -6070 -6077 -6069 -6088 -6084 -6090 -6100 -6102 -6107 -6111 -6108 -6103 -6104 -6114 -6118 -6107 -6114 -6102 -6112 -6113 -6115 -6116 -6139 -6135 -6143 -6154 -6155 -6160 -6163 -6160 -6163 -6169 -6184 -6176 -6199 -6205 -6204 -6219 -6222 -6231 -6207 -6218 -6219 -6221 -6222 -6221 -6200 -6194 -6203 -6204 -6210 -6209 -6210 -6209 -6210 -6230 -6238 -6239 -6245 -6249 -6264 -6271 -6262 -6275 -6252 -6253 -6240 -6245 -6219 -6220 -6221 -6222 -6225 -6231 -6236 -6238 -6267 -6272 -6273 -6278 -6287 -6286 -6287 -6281 -6264 -6269 -6270 -6274 -6247 -6248 -6259 -6264 -6267 -6276 -6281 -6286 -6284 -6289 -6287 -6275 -6247 -6263 -6261 -6264 -6265 -6270 -6271 -6272 -6271 -6280 -6282 -6283 -6291 -6302 -6303 -6315 -6335 -6361 -6358 -6359 -6362 -6363 -6349 -6348 -6355 -6357 -6358 -6357 -6375 -6374 -6367 -6342 -6350 -6354 -6353 -6354 -6357 -6369 -6371 -6382 -6384 -6371 -6403 -6402 -6412 -6413 -6415 -6416 -6417 -6418 -6419 -6420 -6438 -6436 -6438 -6443 -6454 -6440 -6439 -6431 -6442 -6441 -6444 -6446 -6450 -6422 -6424 -6418 -6426 -6437 -6438 -6439 -6449 -6451 -6452 -6463 -6464 -6475 -6492 -6499 -6506 -6519 -6548 -6545 -6543 -6556 -6565 -6567 -6564 -6553 -6554 -6556 -6564 -6584 -6580 -6581 -6582 -6584 -6585 -6586 -6595 -6596 -6595 -6598 -6575 -6594 -6595 -6593 -6591 -6602 -6603 -6575 -6573 -6577 -6586 -6587 -6615 -6624 -6647 -6677 -6678 -6679 -6683 -6682 -6684 -6689 -6704 -6709 -6723 -6751 -6754 -6755 -6757 -6758 -6774 -6787 -6791 -6816 -6837 -6838 -6846 -6847 -6845 -6847 -6850 -6864 -6863 -6853 -6874 -6875 -6874 -6883 -6891 -6899 -6918 -6920 -6921 -6937 -6934 -6935 -6951 -6950 -6969 -6971 -6976 -6978 -6979 -6987 -6989 -6987 -6989 -6991 -6990 -6991 -6980 -6979 -6963 -6964 -6968 -6972 -7000 -6992 -7003 -7006 -7019 -7022 -7028 -7040 -7035 -7034 -7055 -7063 -7065 -7066 -7071 -7079 -7092 -7102 -7118 -7115 -7121 diff --git a/day1/src/main.rs b/day1/src/main.rs deleted file mode 100644 index 7e18b94..0000000 --- a/day1/src/main.rs +++ /dev/null @@ -1,21 +0,0 @@ -use std::fs::File; -use std::io::prelude::*; -use std::io::BufReader; - -fn main() { - let file = File::open("input.txt").expect("File not found"); - let reader = BufReader::new(file); - let values: Vec = reader - .lines() - .map(|x| x.unwrap().parse::().unwrap()) - .collect::>(); - let mut increasing: u16 = 0; - - for index in 1..values.len() { - if values[index - 1] < values[index] { - increasing += 1; - } - } - - println!("{}", increasing); -} diff --git a/day10/Cargo.toml b/day10/Cargo.toml deleted file mode 100644 index 40d2066..0000000 --- a/day10/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day10" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day10/example.txt b/day10/example.txt deleted file mode 100644 index b1518d9..0000000 --- a/day10/example.txt +++ /dev/null @@ -1,10 +0,0 @@ -[({(<(())[]>[[{[]{<()<>> -[(()[<>])]({[<{<<[]>>( -{([(<{}[<>[]}>{[]{[(<()> -(((({<>}<{<{<>}{[]{[]{} -[[<[([]))<([[{}[[()]]] -[{[{({}]{}}([{[{{{}}([] -{<[[]]>}<{[{[{[]{()[[[] -[<(<(<(<{}))><([]([]() -<{([([[(<>()){}]>(<<{{ -<{([{{}}[<[[[<>{}]]]>[]] diff --git a/day10/input.txt b/day10/input.txt deleted file mode 100644 index df5a5a3..0000000 --- a/day10/input.txt +++ /dev/null @@ -1,110 +0,0 @@ -{[[<{(<{[{{[{[[]{}]{<>{}}}({<>()}{{}{}})]}{({[<>{}]({}[])})[{[{}[]](()<>)}<[{}{}]{()<>}>]}}]<(({{{(){}}{[][] -<<<({((<{<([([<>{}]<{}<>>]{<{}<>>({}<>)}])>}{({(([()[]]{[]()})({{}<>}<(){}>))[(<<><>>[()[]]){{()[]}< -<<<[(({{(([[[[<><>][<><>]]]([[{}{}](<><>)][(<>[]){[]()}])])([[(<{}<>>(()[]))(<[][]>)]]{{<[[]{}]{< -({({([{{[[[{(<(){}><[]{}>)}]]][(<<([()[]](()[]))>[[[{}[]]{[]<>}](<()>[()<>]]]>(<(({}<>){<>[]}){<[]()>}>{[{( -[([{(<[<<[({<[()<>][{}]>({{}{}})}({[<>{}][()()]}[([][]){()[]}]))]>>]>)<<[((([[{{()()}(<>{})}[(<>( -{[[{<[[[[([[{[()[]]<[]()>}<({}())<[]<>>>]({<{}[]>}<<{}<>>>)](([(<>{}){[][]}]<[(){}]({}{})>)[((()){[]})<{{} -{{<<((({(<[({<<>[]><{}{}>}((<>[])([]())))[((()[]){[]{}})]]{<([{}[]]<<>[]>)(({}[]}{[][]})><<([][])([][])>>} -([[(<({[[{[{<[<><>]({}())>}](<[[{}[]](<><>)]{{()<>}[{}]}>{((<><>]<()()>)([(){}]<()>)})}{[<{({}())<<><>>}[(() -(<((([[<<[<[{[()[]][[]{}]}{([]<>){[]{}}}]>]>>{{([[({<>()}(<>{}))]<{(()<>)([])}([<>{}}{{}()})> -(<({{<(<{[{<{[(){}][<>{}]}{[[][]]{<>{}}}>}<(([[][]][<>()])[[{}{}][{}()]])>]}>{{{([<(()())> -(<[{<<(<<<((<[<>[]]>)({[[]<>]}<({}<>)([][])>))[{<[[]()](<>())>{<[]<>><{}()>}}(<<{}<>>(<>[] -<[[(((([[(<[{((){})<{}<>>}{({}<>><{}<>>}]([{<>()}([]<>)]<{()()}({}[])>)>)]{{({([{}<>])(<<>() -<({<(<{[{<<[[[{}[]][()[]]](<()()><()>)]>>[(((([]<>){(){}})<{{}()}({}())>)[<[[]()]{<>[]}><[()[]][<>()]>])[(<<< -([[[{(<<<([[[<<>[]>]]{<([]<>){[]{}}><<[]>({}<>)>}]<(<<{}<>>([])><{<>[]}<{}<>>>)([{[]()}<<> -<({<<(<{(<<(({[]<>}{{}{}})(<<>[]><<>[]>))(<<<><>><[]{}>>{[()[]][()[]]})>>){{<{([{}()]{<>()}){<[][]>({}<>)}} -(([{{(<[([([([[]()]({}))<<[][]><{}()>>][[[{}<>][<>{}]]]){[{[[][]]<{}{}>}<<()<>>(<>())>]}])<{{[(({})<[]()>){[< -{(<<[<{<<{(([[()<>]{<>[]}]{[{}{}]{<>()}})<([[][]]{[]<>}){(()<>)<[]<>>}>)[[{{[]}}]]}<{{((<>)<{}>){ -<{<{<{{[<{{<<<<>[]>{()[]}>><[<<>()>{{}[]}]<[{}]{[]()}>>}}>[[{(((<>{}]({}()))<<{}()>[[]()]>)}]{{({[<>() -<[[<<([{([{{[[()()]<{}<>>][{{}()}<()()>]}({([]<>)<<>[]>}{[[][]][()[]]})}[((<{}{}><()[]>){<<>()>((){} -<<{([[{[<{[<([()()]{()<>}>[<[]<>>[[]<>]]>{{[{}{}][()<>]}<[[]{}][{}{}]>}]<((({}<>)<<><>>){{<><>}[()<>]})> -[[[[[{({((([<[<>{}]<{}()>>[<{}[]>[[]{}]]]{{{()<>}<{}[]>>([()()]{{}()})})))}[{{[({<{}[]>}<[[]()]>)( -{[[<[([{((<[<[{}[]][<><>]>({{}{}}[{}{}])]{{({}{}){{}[]}><[{}[]]([]())>}>[{<{()<>}([]())>}]))(<[([[()][[][]] -[(({[((<{<{<<[[]<>]<{}[]>>>{[<[]{}>[[]{}]]{((){})<[]>}}}<<<{{}{}}<<>()>>{<<>[]>([]{})}>>>}{[{{{<[]()>(()<>)}< -{[[[{<([{[<{([<>()]{<>[])){<<><>>([]<>)}}<{[(){}]<()<>>}>>([[<()<>>((){})]][<<[]{}><()()>>(<[ -[{(<{[({[{[{{(<>{})({}{})}<(<>[])>}([<()<>>[()<>]]{(()<>)<{}()>})]{([{{}{}}(()<>)][{()()>])[<<[][]>(<>[])> -[[{[{([<<<<([{[][]}{<>()}]([[]<>]<<>[]>))<{[<>()][<>{}]}[((){})]>><[[<{}<>>([]())]]>><<{{(() -<{[<<[[[<{{[<<[]{}>[()<>]><{()()}<()[]>>][[[<>{}][[]()]][<<>>{{}[]}]]}{<<<[]()>({}<>)>>(<[[]()]{<>[]} -{(([({{<(<<[(({}{})[()[]])<<{}{}>(()[])>](([()[]]<{}()>){{<><>}<[][]>})>((<{()()}[{}()]>[{<>()} -<(({(([[<[{[{<{}>(())}{<{}[]>[<>[]]}]{<{()}><<()()>[{}{}]>}}]({<<<()[]>{()<>}>>}[[{(<>){[]}}((()) -{{<{<<(([[[{{[{}{}]{<>[]}}}{[<{}<>>[{}<>]]{{[][]}{[]]}}]({<([][])[<>]>{(()())<<><>>}}([([][]){{}()}]<{()[]}{[ -[<<<<<[{<{{({[[]()](<>())}{{[]{}}([][])})}(<<[{}{}]({}<>)>[<<>>{()}]>)>({[(<[][]>{{}[]})][[(()())<(){}>]{<()< -{({<<([[(<(([(()[])]{{{}<>)((){})}))[([<(){}>[<>()]]{{<><>}})<({<>{}}(<>[]))>]>({[{([]()){(){ -<{[<(<{[(<<{(({}[])(<>()))}[{<[]<>><()[]>}<<{}{}>(<>{})>]>{{{<{}<>>[{}()]}}[<<()()}>(([]{})([] -{<[(([{{{[(<<[{}()]>{(<>())[[]{}]}>){{[{{}[]}{()<>}]{(()<>)<<><>>}}}]}{(<[([[]][{}[]])]>)[[((<{}[]})[ -([[[({({{[<<[<[]<>><()>]>{([<><>])(<<><>><<>()>)}>[(([[][]]{()<>}>)([{(){}}({}<>)])]][(<<{{}{}}{() -{([({[{{{[(<<<<><>>([][])>[<[]<>>[()<>]]>)[[(<()[]>)(<<>()>[()<>])]({<[][]>{[][]}}[<()()>[<>[]]])]](<<{<<><> -<((({{<[[({[(([]<>)[[]<>])]{{<{}>{[]<>}}(([][])[()[]])}}{[{<()<>>[()[]]}{{[]<>}{[]()}}]}){([{{{}{}}[( -{<<[[{[<(([[{([][])[<>()]}<{<><>}>](<<[][]>[[]{}]>[{<>}{{}<>}])]{<([()<>]<()[]>)(<[][]>(<>[]))>[{[[]< -([{((<[<<([[[{<>()}(<>())]([(){}](<>[]))][[<[]>]]]<{<[{}[]][[][]]>}([<[]()><<>{}>]<{(){}}[{}{}]>)>)>({([ -([{(<<[<{<[[(<[][]>{<><>}){<<>()>}]{({()[]}<<>()>)}][{({(){}}[()()])<[<><>]<<>[]>>}]>}<<[({< -{<({[({{<[[({{(){}}<<>[]>}<({}[]){()())>)<{([]{})([]())}>]]>(<{[((<>[]){[]()})<<()<>>({}<>)>]{{{()[]}}} -{({[[<(<{[[{<<[]()>[()()]>([<>{}]{<>[]))}<{([]())(()<>)}<<[]><[][]>>>][({<{}><[]()>})[<[()[]][()()]>{<{}<>> -{({(((<{<[<(<({}<>)[()()]>{<[]{}><()<>>})[<({}<>)><(<>)<()()>>]>(<(([][])<()<>>)<<<><>>([])>>{(<[]{}> -[{{[([<<(<[<({<><>}{[]()})[{<><>}]>{<(()[])><[<><>]>}][<{[{}<>][[]<>]}(([]{}))>[[([])<{}[]>]{<(){}>({}())}]] -{[<<((<<[([[([()[]]({}()))(<{}()>{(){}})][((<>[]]{{}{}})((()<>)<<><>>)]]{[<(<>[])<[]>>([<>()]{[] -((({({{<[(((<[<>[]]([]<>)>[<[]{}>{<><>}])<{[<>()][()<>]}{<{}<>>[[]()]}>))<[<{(<><>)<()<>>}>[<[[]<>]<[]{ -{<<<{<({([({((<><>)[[][]]){[()<>]{<><>}}}<[{[]<>}[<>[]]][[()<>]{(){}}]>)<[[[[]<>]]((<><>))}(<<()<>><<><>>><[[ -(({{[({<{<{[[<<>[]>([][])]{<<>()>{{}()>}]{[<<>[]>[{}{}]][{()()}{[]<>}]}}([({{}[]}{{}()}){(()<>){()<>}} -(<([({{{{<[<{{<>[]}{{}}}<[{}{}]<{}{}>>><{{(){}}([]{})}>](<[([]())[()]]>[(<[]<>>[[]{}])])>[{(<[[][]]<{} -((({[{{{([<{{<<><>><[][]>}{({}())<<>{}>}}[{([]())}[<<>()>({}[])]]>{<[<<>[]]<()<>>][[()[]][<>[]]]>[{[[] -<(<<[[<{({{[(([][]))([<><>][{}{}])]}})}>]](<([{{[{<{[][]}[{}<>]>([{}()])}]}([{{(())}{{{}{}}<[]{} -<([<[{{({[(({({}{})<{}()>}))[[((<><>)<{}>)[[[][]]((){})]]<<<[]()>{()[]}>>]]{<<(<[]<>>[<>{}]){({}())}>>}}{[[ -[<<[(({<({{{[{[][]}{(){}}][<()()>]}((<{}{}>>[{{}[]}])}{<[(<>[])[(){}]](<<><>>({}<>))><(({}()) -[([{<{(([[[([{{}[]}<(){}>])]<{([[]()][[]<>])([{}{}]([][]))}>]({<<([][]){()<>}>>{([()<>]([])){{{}()}{[][]} -{<({[<[(({{({<(){}><[][]>}[{<>()}({})])<[[{}]{<><>}]<<[]{}>([]{})>>}[(({[]<>})([(){}]<()[]>))]}))]><<( -{<<[[<[[[((<[<{}<>><<><>>]<({}[])([]{})>>{<{()<>}>{([]{})[()[]]}}>[[<({}<>)([]{})>(<{}()>[[]()])][[<()<>><[] -{((({(<{[[[({<<>[]><{}<>>}[{[][]}[<>()]]){([<>()][[]()])({[]<>}{{}<>})}]<<{[{}<>]<{}()>}<(()){(){}}>>{ -<[[{<<([<[{{(({}()){[]{}}){{{}[]}{<>()}}}}{<{[<><>]<{}{}>}(({}()){()<>})>(<(<>{})[<>()]>{<<><>>{[][]}} -{{([{(((({<{[({}{}){{}{}}]{(<>{})[{}{}]}}[{[()[]][{}()]}{(()[])(()())}]><({(<>[])}((())<[]>))>}<{{{{{}<> -({(([({(<<<((({}[])((){}))((<><>)[[][]]))((<()<>><(){}>){{{}()}(()[])})><([[{}<>][()[]]])(([<> -<<<<<{({{([(([{}{}]<{}()>))][<<{<>[]}{<>}>({()<>}{{}()})>[([<><>]{{}()})([[]{}])}]){({[([]<>)<[][]>][{<><> -((<[<<{{<([{{[{}<>]{{}<>}}([[][]]<<>{}>)}{[[[]{}]])]{[<<{}<>>{{}{}}><({}<>)>]([(<><>)[{}()]])})(< -<(((<[(((<([[{(){}}<<>()>]]<{<<>{}><(){}>}<{[][]}{[]{}}>>)>{<<{{<><>}{[]<>}}{{<>[]}<[]()>}>[{{{}()}{[]<> -{[<{((<<[<<([(()()){{}()}](([]{}){<>()>))>{({((){})({}())}[[()][<><>]])<([{}[]][[]{}])(([]{}){()<>} -(<[({[(([[{[[<{}{}><<>{}>][<<>{}>]]([{<>()}<<>{}>]{{[]{}}({}())})}([({{}()}{{}()})][[<<>[]>[<>{}]]{<<>[])}]) -{<{(((<([[[<[(<>())[()[]]]<<()[]><{}<>>>>]<{({<>()}(()<>)){<<><>>{{}[]}}}{(<()<>><<>[]>){{[]()}[[]()]}}>][(<[ -<<[[<(({{{{<{{[]()}({}<>)}[(<>{}){[]{}}]>[<{[][]}{{}{}}>]}{{(<<>()><{}{}>)[{{}[])[(){}]]}(([()[]][{}[]]){< -(<(<<<([{((<[[{}[]]{{}}]<({}<>)<()<>>>})<(<[<>{}]<{}<>>><([]<>)([]<>)>)[{<{}<>>[()()]}[(<>[])] -<{(([([[<<([{{<><>}[<><>}}{[{}<>]{{}<>}}]{([[]()]<()[]>)[({}<>){[][]}]})({[((){})<<>[]>][{<>()}[[]<>] -<<<{{<{[({<<[[[]][[][]]]({[]()}{{}[]})>>{[({{}<>}{[][]})[[{}()]{[]}]]}}([[[[<>[]]<{}[]>]{[{}{ -{<{{([([<{[[{([]<>)[()<>]}][{<()()>}<{{}<>}([]{})>]]{{[{[][]}<{}[]>]([<>()]{{}{}})}{(({}{})(( -<{<((<{<{([<((()<>){()[]}){[[]<>](()[])}><(([]()])<[[]()]{{}<>}>>]{({<()><()()>}[[()<>]<<>[]>] -[<[{[(<<[(<<<(<>[])[[]]>{<(){}>}><([<>[]]{<>{}})[{<><>}{[]()}]>>{[(<[]<>>)<[{}<>]{<>()}>]{<(()())[[][]]>[ -[<<<{[(<<[({{{<>[]}<[]()>}{<<>[]>(<>[]]}})]>>{[[<({([][]){{}()}}[{<>()}({}())])({(()[])(<> -[<[[<{<{{{{{<([]())[<>()]><{()<>}[<><>]>}}}}}><<{(([{<[][]>{[]()}}[{[][]}{{}<>}>][(({}())({}()) -<[[{{[<{<<[<(<<>[]>)<<()()>{{}[]}>>{<{()<>}[<><>]>[{{}{}}{()}]}]{(<([]<>)({}())>{<[]{}>}){[({}())]{( -({{[(([(<{[[{(()<>)({}())}<({}{}){{}}>](((()())<{}()>)[<{}<>><{}()>])]({{([][])({}<>)}<({}())<[] -{[(<[<{[(([<(<[]()><{}()>)<<[][]><()>>>][<<[{}[]]<{}{}>](<<>>{<>[]})>[{(<>())[<>]}<{[]<>}(( -[{{(<{{[{<<<<(<><>)>(({}[]))><<[[]{}][<>()]>>>({[({}{}){<>{}}]<[<><>]>})>}<[<{{<{}{}>{<><>}}}>]<( -{<{<<{[{<[[[<<{}[]>{()<>}>(<()[]>({}<>))]{<((){})[<><>]><{<>{}}{<>()}>}]({([()[]]{[]()})}([{()()}}<(<>() -[<<([(<[<[[([(<>{}){()<>}][<{}()><{}()>])]((([()<>]{()<>})[[<><>]]))][{([{{}{}}]<{<>}[{}()]>)[[{ -<[[{([({<<<(<([]<>)<<><>>>[{[]()}<(){}>])>>>({(([[<>{}]([]<>)]{[(){}](()())})([{<>()}([]<>)]))<[{[{}()]{<>[]} -<(([{<{[[<({[({}()){{}[]}]{<{}[]>[{}<>]}}[[[{}<>](<><>)][<()()>({}<>)]])<{{[{}<>]{<>[]}}}([[{}[]]<<>{}>])>> -{(<[([[[{[<[[<[]()>[{}{}]][<()[]>{[]()}]]>[[[(<>[]){<>[]}][{<>{}}<()[]>]]]](<{{([]())[()()]]<[{}[]][[]( -[([[[<<<{({[[{[][]}<()[]>]][{{[]()}([]<>)}({()<>})]))[<{<[<>{}]{[]{}}>({<>{}}[()()])}><<([<>[]]{{}[]})[<[][] -{(({({<{([[[[<[]{}>(<>{})]{({}())(()<>)}]]<{{<[]()>(()())}{([][])}}<{[[][]]<()<>>}{(<>{})({} -[{{<[{(<{({<[{[]<>}[[]()]][[{}<>]{{}()}]>(<[()()]>([{}[]]{(){}}))}{{{({}<>)<<><>>}({[]<>)<{}>)}})([<({ -(<[{{{{<(<[<{{()()}{[]{}}}<([]{}){<>()}>>[({{}<>}{{}[]})]][[({{}()}(<>[])){<[][]>[<>()]}]]>]>{[( -[{<(<<{[<(<[<({}[])({}{})>]{<{{}()}<<><>>>{<{}{}>(()())}}>)>][({<[[<(){}>(<>())](({}{}){{}()} -{([[{<{<{(([<([]<>)[<>]>{(<>[]){<>[]}}][<[(){}]{{}()}>((<>[]))])<({[()<>](()[])}){<[()<>]{<>{}}>{([])<() -<[{[{(<<({[((<[]{}>{[]{}})([()[]]<(){}>))<{<<>[]>[{}]}{<{}<>>{()}}>]{{{(<>())}(({}<>))}<<{()<>}({}())>([{}< -<(<[{{<{{[([{{(){}}<<>{}>}(<(){}>)][[{{}<>}(()<>)]]){([<<>{}>[()()]][{[]()}<{}()>])}]<{([{[]}([][] -<[[{<{[<{([<[<[]<>][{}]]<({}{})([])>>]({{(<><>)[[]<>]}<<{}[]>[[]<>]>}))}([<(({()()}{[]<>}))<{<()[]><[]()>}((( -({{{<{([{<[{{[{}<>](<><>)}[[<>()]({}[])]}[[<(){}>({}<>)]<(()())({}())>])>[<<<[[][]][(){}]><([ -((<{[<[[(((<[<<>()>([]())]<(()<>){()[]}>>[<{(){}}{{}}>[[(){}}<[]{}>]])<[[[[][]][{}()]]{[{}()][ -(({[[<{({[[[[[<><>]<[]{}>]<(<>{}){[]()}>][(([]<>){()[]})([<>{}]<()<>>)]]]}[[<{<(<><>)<{}[]>>}<<{<> -<{({[{(([[{(<(()[])<(){}>>{<{}{}>{<><>}})[<(()())<[]{}>>]}[{{{[]}[()[]]}[<()[]><<>{}>]}{<[<><>]{[] -[<[<<{<{{<[(<{(){}}[<>()]><({}<>)<<>{}>))<<<()<>>({}<>)><[<><>][()]>>](({({}()){()()}}<[[]<>]<<>{}>>)<[[[] -{<{(<(<[<([{<{{}[]}(()[])>[({}())<[][]>]}<<{()()}[<><>]>>]<{{[[]{}]{<><>}}(({}{})[[]])}({(<>[])<<>{}> -{{{[[((<[(<<[[{}()]<[]<>>]{<()[]>}>[<<()()>>([<><>]((){}))]>{<<[{}{}][{}()]>[(()())[<>[]]]>{{ -<({<{[{<[<({{[<><>]{<>[]}}<{[]<>}<<><>>]}{{[{}{}]{{}{}}}{<[]<>>{[][]}}})(<({()<>}<{}[]>){([]{}) -{<(<<[<{([{[({{}<>}[()()]){(()<>)[{}<>]}]}])}>]{{(<[<<((()())<<>()>)>{([[]{}]((){}))<({}<>)({}< -[<(<[[{{[([[<<[]{}>{[]<>}>{(<>[])[{}{}]>]([[[]<>](()())])])([[<{<>{}}(<><>)><({}<>)<()>>][({[]<>} -[<{({{[<([{<{[()[]][(){}]}>[([<>[]]{{}})]}<<((()<>}(()()))<[(){}]>>((({}())[{}<>]){({}<>)<<>[]>})>]{<<{<{}[] -[[<{<{({(<{<{({}())[{}]}([()[]]{{}()})>}((([{}{}]{()<>})<[<>()]{<>[]}>)[([()<>]<<><>>)[[()[]]{[]}]]]>){([[[ -{<(([<<[<{(((<()<>>{{}()})({[]{}}[[]{}]))(([{}[]]{[]<>})<<[]>(<>{})>))}[{{<(<><>]<<>>>}}({[({}[]) -[[{{[([<[({[{(<>()}[<>[]]}{{<>{}}<[]{}>}]{{{()[]}([]{})}([()<>]{()<>})}}[<{(<>)<<><>>}{{<>[]}<<>[]>}>({< -{{[{{{<([<{<{<{}<>>}{[(){}]{{}()}}><{{[]()}<{}>}>)[[{[{}{}]{()<>}}<(<>{}){[]{}}>][[(()<>)(<>())]({[]<>}[()[] -((<({<{[(<[{[<<>><{}()>][[{}[]>]}{({()<>}[{}[]])[(()())]}][<<{<>{}}<<><>>>[{[][]}{<>()}]>]>[<({({}()){{ -[([<<({({[<{(((){}){<>{}})(({}<>))}{<[[]()][{}{}]>{([][])<[][]>}}>]<<(<{<>()}[()[]]>[<(){}>[<>()>])<<[{}( diff --git a/day10/src/lib.rs b/day10/src/lib.rs deleted file mode 100644 index 6cf54ad..0000000 --- a/day10/src/lib.rs +++ /dev/null @@ -1,191 +0,0 @@ -use std::collections::VecDeque; -use std::str::FromStr; - -pub struct SyntaxLines { - lines: Vec, -} - -impl FromStr for SyntaxLines { - type Err = (); - - fn from_str(input: &str) -> Result { - let lines: Vec<_> = input - .trim() - .split('\n') - .map(|x| x.to_owned()) - .collect::>(); - - Ok(SyntaxLines { lines }) - } -} - -impl SyntaxLines { - pub fn part1(&self) -> u32 { - let mut result: u32 = 0; - - for line in &self.lines { - let mut qopen = VecDeque::new(); - let mut panic_char = ' '; - - for character in line.chars() { - match character { - c if character == '(' - || character == '[' - || character == '{' - || character == '<' => - { - qopen.push_back(c); - } - c if character == ')' - || character == ']' - || character == '}' - || character == '>' => - { - match qopen.pop_back() { - Some(bracket) => { - let mut error = false; - if c == ')' && bracket != '(' { - error = true; - } else if c == ']' && bracket != '[' { - error = true; - } else if c == '}' && bracket != '{' { - error = true; - } else if c == '>' && bracket != '<' { - error = true; - } - - if error { - panic_char = c; - } - } - None => panic!("Wtf?"), - }; - } - _ => {} - }; - - if panic_char != ' ' { - if panic_char == ')' { - result += 3; - } else if panic_char == ']' { - result += 57; - } else if panic_char == '}' { - result += 1197; - } else if panic_char == '>' { - result += 25137; - } - break; - } - } - } - - result - } - - pub fn part2(&self) -> u64 { - let mut scores = Vec::::new(); - - for line in &self.lines { - let mut qopen = VecDeque::new(); - let mut panic_char = ' '; - let mut result: u64 = 0; - - for character in line.chars() { - match character { - c if character == '(' - || character == '[' - || character == '{' - || character == '<' => - { - qopen.push_back(c); - } - c if character == ')' - || character == ']' - || character == '}' - || character == '>' => - { - match qopen.pop_back() { - Some(bracket) => { - let mut error = false; - if c == ')' && bracket != '(' { - error = true; - } else if c == ']' && bracket != '[' { - error = true; - } else if c == '}' && bracket != '{' { - error = true; - } else if c == '>' && bracket != '<' { - error = true; - } - - if error { - panic_char = c; - } - } - None => panic!("Wtf?"), - }; - } - _ => {} - }; - - if panic_char != ' ' { - break; - } - } - - if panic_char == ' ' { - while !qopen.is_empty() { - let v = qopen.pop_back().unwrap(); - result *= 5; - result += if v == '(' { - 1 - } else if v == '[' { - 2 - } else if v == '{' { - 3 - } else { - 4 - }; - } - scores.push(result); - } - } - - let middle = scores.len() / 2 as usize; - scores.sort(); - - scores[middle] - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_example() { - let input: SyntaxLines = include_str!("../example.txt").parse().unwrap(); - let result = input.part1(); - assert_eq!(result, 26397); - } - - #[test] - fn test_example_part2() { - let input: SyntaxLines = include_str!("../example.txt").parse().unwrap(); - let result = input.part2(); - assert_eq!(result, 288957); - } - - #[test] - fn test_puzzle_input() { - let input: SyntaxLines = include_str!("../input.txt").parse().unwrap(); - let result = input.part1(); - assert_eq!(result, 392367); - } - - #[test] - fn test_puzzle_input_part2() { - let input: SyntaxLines = include_str!("../input.txt").parse().unwrap(); - let result = input.part2(); - assert_eq!(result, 2192104158); - } -} diff --git a/day2/Cargo.toml b/day2/Cargo.toml deleted file mode 100644 index 8aa34bb..0000000 --- a/day2/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day2" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day2/input.txt b/day2/input.txt deleted file mode 100644 index 9e714f9..0000000 --- a/day2/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -forward 2 -down 8 -down 1 -up 7 -forward 4 -down 4 -down 3 -forward 2 -forward 5 -forward 2 -forward 7 -forward 8 -down 7 -forward 6 -forward 1 -down 8 -down 8 -up 9 -down 9 -forward 1 -up 1 -forward 6 -forward 7 -down 7 -forward 4 -forward 2 -forward 1 -forward 3 -forward 8 -forward 4 -up 6 -down 2 -forward 4 -down 3 -up 3 -up 2 -up 3 -forward 8 -down 5 -down 8 -down 5 -down 4 -down 2 -up 1 -forward 6 -forward 6 -forward 8 -up 5 -down 5 -forward 8 -forward 7 -down 9 -down 7 -down 6 -down 3 -forward 3 -up 7 -forward 2 -up 6 -forward 7 -forward 9 -down 9 -forward 3 -down 2 -down 2 -down 7 -down 7 -forward 8 -down 7 -forward 9 -up 7 -down 4 -down 8 -forward 2 -forward 2 -up 1 -forward 8 -down 5 -forward 8 -forward 4 -up 1 -forward 2 -forward 2 -forward 2 -down 9 -down 7 -down 9 -forward 9 -forward 4 -up 7 -down 4 -forward 9 -forward 8 -up 5 -up 1 -down 1 -down 9 -down 6 -up 8 -forward 2 -forward 7 -up 7 -forward 7 -forward 6 -down 6 -forward 8 -up 6 -forward 7 -down 7 -forward 4 -forward 9 -up 9 -up 8 -forward 8 -forward 3 -up 1 -up 4 -down 4 -up 9 -up 8 -forward 6 -down 2 -down 2 -up 4 -forward 4 -forward 1 -down 8 -forward 6 -down 5 -forward 6 -down 8 -up 1 -forward 1 -up 9 -down 8 -up 3 -up 9 -forward 9 -forward 2 -down 2 -up 6 -up 6 -forward 8 -up 3 -down 3 -forward 5 -up 2 -forward 1 -forward 1 -forward 8 -down 4 -forward 8 -forward 7 -down 8 -forward 7 -down 7 -down 2 -down 1 -down 7 -up 9 -down 5 -up 1 -forward 7 -down 5 -down 9 -down 2 -down 8 -down 4 -forward 2 -forward 2 -forward 1 -down 6 -up 7 -forward 2 -down 1 -down 5 -forward 3 -forward 8 -down 4 -up 2 -up 9 -up 7 -forward 7 -forward 4 -up 8 -up 3 -up 4 -forward 6 -down 7 -forward 7 -up 6 -down 9 -up 6 -forward 4 -up 3 -down 3 -up 6 -down 9 -down 6 -forward 7 -forward 9 -forward 2 -down 6 -up 3 -up 9 -forward 9 -forward 8 -up 4 -up 5 -forward 6 -down 5 -up 4 -up 9 -down 8 -forward 5 -up 5 -forward 7 -forward 6 -down 8 -down 5 -down 2 -up 5 -down 8 -forward 7 -forward 7 -up 6 -forward 3 -down 8 -forward 5 -forward 8 -down 7 -forward 6 -down 2 -forward 2 -forward 8 -down 4 -forward 5 -forward 7 -forward 5 -forward 8 -forward 9 -forward 6 -down 6 -up 7 -down 9 -forward 7 -forward 1 -up 2 -forward 8 -down 1 -up 9 -forward 7 -down 2 -up 2 -forward 5 -down 4 -down 3 -up 8 -up 6 -forward 3 -up 4 -forward 3 -forward 1 -forward 1 -up 9 -down 2 -down 9 -up 4 -forward 4 -forward 4 -forward 2 -forward 5 -forward 9 -forward 7 -up 4 -up 5 -down 5 -forward 9 -down 1 -forward 2 -down 6 -forward 9 -down 4 -down 2 -forward 2 -up 7 -forward 7 -forward 8 -up 9 -forward 3 -up 1 -down 5 -forward 5 -down 1 -up 5 -forward 4 -forward 5 -up 3 -down 4 -up 6 -up 1 -down 2 -forward 6 -down 8 -up 9 -down 7 -forward 9 -down 8 -forward 3 -forward 8 -down 1 -down 7 -forward 6 -up 6 -down 1 -down 5 -forward 6 -down 7 -down 2 -forward 6 -forward 2 -forward 8 -forward 7 -forward 2 -down 7 -up 2 -down 7 -forward 8 -forward 8 -forward 2 -forward 4 -down 1 -down 6 -down 1 -down 4 -down 4 -down 2 -down 7 -up 5 -up 5 -down 1 -forward 3 -up 1 -down 3 -forward 9 -forward 4 -forward 7 -down 4 -down 4 -down 2 -forward 2 -forward 1 -forward 9 -down 1 -down 4 -down 1 -forward 4 -up 8 -forward 3 -down 6 -forward 5 -forward 9 -forward 1 -up 8 -down 7 -down 8 -forward 4 -down 4 -up 5 -down 3 -forward 3 -down 6 -down 1 -down 9 -forward 8 -up 5 -down 7 -up 7 -forward 3 -up 5 -up 7 -down 4 -up 2 -down 2 -down 8 -up 6 -down 4 -up 1 -down 8 -down 4 -forward 7 -down 4 -up 3 -down 9 -forward 3 -up 4 -up 1 -up 5 -down 4 -forward 4 -forward 4 -down 2 -down 3 -down 4 -forward 2 -down 9 -down 9 -down 6 -forward 5 -forward 7 -down 3 -forward 2 -up 8 -down 6 -down 8 -down 2 -up 9 -down 1 -forward 8 -forward 1 -forward 8 -up 4 -up 1 -down 8 -up 2 -forward 5 -down 3 -forward 5 -forward 4 -forward 1 -down 9 -forward 2 -forward 5 -forward 4 -forward 3 -down 7 -up 9 -forward 7 -up 8 -forward 3 -forward 3 -down 5 -forward 7 -forward 5 -down 4 -forward 6 -down 6 -up 3 -down 3 -forward 7 -forward 8 -up 3 -up 8 -forward 8 -up 4 -forward 5 -up 4 -down 7 -forward 4 -down 8 -down 6 -forward 7 -down 4 -up 7 -down 6 -up 5 -down 2 -forward 7 -down 7 -up 3 -up 3 -down 3 -down 5 -forward 3 -forward 5 -forward 8 -down 3 -down 8 -forward 3 -down 1 -forward 4 -up 5 -forward 8 -up 1 -up 4 -down 4 -forward 1 -forward 6 -up 7 -up 1 -up 7 -down 5 -forward 8 -down 1 -forward 1 -forward 6 -up 9 -up 6 -down 4 -forward 5 -down 1 -forward 7 -down 8 -up 3 -down 9 -down 1 -up 7 -up 6 -forward 8 -down 9 -down 4 -forward 4 -up 7 -down 3 -forward 5 -forward 8 -up 5 -down 7 -up 2 -forward 3 -forward 3 -forward 4 -down 1 -forward 5 -forward 7 -up 7 -forward 7 -forward 1 -forward 3 -forward 9 -down 3 -forward 5 -down 9 -down 7 -down 4 -down 8 -up 3 -down 1 -up 5 -down 5 -forward 2 -down 6 -down 5 -forward 2 -forward 6 -down 6 -up 6 -down 8 -up 1 -forward 4 -forward 2 -forward 1 -up 1 -forward 5 -forward 3 -forward 7 -down 9 -forward 3 -down 9 -up 5 -down 7 -down 2 -down 3 -up 5 -up 3 -down 2 -forward 4 -forward 1 -down 3 -up 4 -down 8 -down 1 -forward 6 -down 3 -forward 9 -down 7 -down 3 -down 4 -down 5 -up 1 -forward 8 -forward 2 -up 3 -up 7 -up 1 -forward 3 -forward 9 -up 5 -forward 6 -down 8 -down 9 -down 5 -forward 6 -forward 3 -forward 8 -forward 7 -forward 9 -forward 2 -up 9 -forward 8 -down 2 -down 6 -down 9 -down 5 -forward 1 -down 7 -forward 2 -down 4 -down 1 -up 1 -down 2 -forward 5 -forward 8 -down 9 -up 6 -forward 8 -forward 3 -up 6 -up 2 -forward 8 -down 8 -up 1 -down 6 -down 2 -down 6 -forward 5 -forward 6 -down 4 -forward 1 -down 4 -up 7 -forward 4 -up 1 -forward 9 -forward 7 -up 3 -down 7 -down 4 -forward 3 -forward 8 -forward 6 -forward 6 -up 1 -up 2 -up 8 -down 7 -forward 8 -down 5 -forward 6 -down 1 -down 9 -down 2 -forward 6 -up 3 -down 5 -down 6 -forward 1 -forward 2 -down 3 -forward 8 -forward 1 -up 5 -down 8 -down 4 -up 9 -up 2 -forward 7 -forward 9 -up 8 -up 6 -forward 1 -down 7 -up 1 -down 3 -forward 2 -forward 3 -down 3 -down 2 -forward 3 -down 7 -forward 3 -forward 7 -forward 7 -down 8 -down 4 -forward 3 -forward 4 -down 7 -down 9 -down 4 -down 2 -forward 7 -up 8 -down 4 -down 3 -forward 9 -down 5 -up 6 -up 2 -down 5 -down 6 -forward 2 -forward 8 -down 1 -forward 6 -up 7 -down 6 -forward 4 -down 2 -down 5 -down 9 -forward 7 -up 4 -forward 9 -up 7 -down 4 -down 6 -up 9 -forward 1 -up 7 -down 5 -forward 3 -forward 3 -down 7 -down 1 -down 7 -down 7 -down 1 -forward 8 -forward 9 -forward 8 -down 9 -down 8 -down 5 -down 3 -forward 4 -forward 1 -down 1 -forward 1 -down 7 -forward 7 -forward 3 -down 8 -forward 3 -forward 9 -forward 8 -down 7 -forward 8 -down 2 -up 5 -forward 7 -forward 4 -down 2 -up 6 -up 8 -forward 7 -down 9 -up 3 -forward 4 -up 9 -up 5 -up 5 -up 6 -down 4 -down 5 -up 5 -forward 7 -forward 6 -down 4 -forward 5 -forward 4 -up 7 -forward 8 -down 2 -forward 1 -down 9 -down 8 -forward 7 -down 7 -down 1 -forward 9 -down 7 -forward 6 -down 2 -up 9 -forward 1 -up 9 -down 3 -up 9 -down 1 -forward 1 -down 1 -up 6 -down 8 -up 2 -down 3 -forward 1 -down 4 -up 5 -down 5 -down 4 -forward 5 -forward 4 -down 9 -up 7 -down 7 -forward 7 -forward 6 -forward 8 -down 8 -forward 8 -down 1 -down 1 -down 8 -down 2 -up 2 -up 1 -forward 5 -down 1 -up 5 -up 2 -down 6 -up 8 -forward 5 -down 8 -down 1 -up 5 -down 1 -forward 4 -down 6 -down 4 -forward 2 -forward 2 -down 1 -up 4 -up 8 -down 6 -down 2 -forward 5 -forward 8 -forward 7 -down 5 -down 7 -down 3 -forward 6 -down 3 -down 3 -forward 6 -forward 6 -forward 6 -up 7 -forward 1 -down 5 -down 2 -up 8 -forward 6 -down 7 -down 6 -forward 1 -up 5 -down 4 -up 9 -forward 3 -up 3 -forward 9 -forward 9 -forward 7 -forward 5 -down 9 -forward 1 -forward 6 -up 8 -down 7 -forward 9 -forward 5 -up 4 -down 8 -forward 8 -forward 4 -down 9 -up 2 -forward 5 -forward 8 -down 8 -down 9 -down 9 -forward 4 -forward 8 -down 5 -down 5 -forward 5 -forward 5 -up 9 -up 7 -forward 3 -up 4 -down 8 -up 6 -up 6 -down 4 -down 3 -forward 2 -forward 9 -down 4 -down 2 -forward 4 -up 9 -forward 1 -down 8 -down 9 -down 9 -down 3 -forward 1 -down 5 -up 9 -forward 6 -up 4 -forward 2 -forward 2 -forward 4 -down 9 -up 5 -up 1 -down 6 -forward 7 -down 8 -forward 4 -forward 9 -up 9 -up 4 -down 5 -down 3 -forward 2 -down 8 -down 6 -forward 3 -down 2 -forward 6 -up 2 -forward 6 -down 7 -up 4 -forward 1 -forward 4 -up 4 -forward 6 -forward 8 -down 7 -down 6 -up 7 -down 2 -down 4 -down 5 -forward 1 -up 4 -forward 8 -forward 6 -down 8 -up 5 -up 2 -up 9 -up 5 -forward 6 -down 4 -up 3 -down 8 -down 6 -down 2 -up 3 -up 5 -down 1 -forward 9 -up 8 -up 2 -down 3 -forward 6 -down 1 -forward 5 -down 3 -up 1 -up 2 -down 5 -down 7 -forward 8 -down 8 -up 9 -forward 3 -down 8 -down 8 -forward 1 -down 4 -down 4 -forward 3 -up 6 -down 3 -down 7 -down 7 -up 1 -forward 3 -forward 2 diff --git a/day2/src/main.rs b/day2/src/main.rs deleted file mode 100644 index e0153a3..0000000 --- a/day2/src/main.rs +++ /dev/null @@ -1,34 +0,0 @@ -use std::fs::File; -use std::io::prelude::*; -use std::io::BufReader; - -fn main() { - let file = File::open("input.txt").unwrap(); - let reader = BufReader::new(&file); - let tokens: Vec = reader.lines().map(|x| x.unwrap()).collect::>(); - let mut xpos: u32 = 0; - let mut ypos: u32 = 0; - let mut aim: u32 = 0; - - for line in tokens { - let command: Vec<&str> = line.split(" ").collect(); - let (action, value) = (command[0], command[1].parse::().unwrap()); - - match action { - "forward" => { - xpos += value; - ypos += aim * value; - } - "down" => { - // ypos += value; - aim += value; - } - "up" => { - // ypos -= value; - aim -= value; - } - _ => {} - } - } - println!("{}", ypos * xpos); -} diff --git a/day3/Cargo.toml b/day3/Cargo.toml deleted file mode 100644 index 898e70d..0000000 --- a/day3/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day3" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day3/input.txt b/day3/input.txt deleted file mode 100644 index b380427..0000000 --- a/day3/input.txt +++ /dev/null @@ -1,1000 +0,0 @@ -011110011110 -101101001111 -000000010101 -100111001010 -110000011010 -011101010101 -011110001100 -010111111001 -111011100101 -011110000110 -010100001111 -000001001100 -110001001000 -001000100101 -010100011110 -010111011110 -110101001111 -011010111011 -000011010101 -100111011100 -010010100011 -010010011001 -000111010011 -111001000111 -100101111111 -011001101110 -110010101100 -001000010001 -110101100011 -101110001011 -010100000110 -001110011110 -011101100110 -001111101101 -000101101000 -100110000111 -000001010100 -111100010110 -000100100100 -001000110001 -101000001011 -101000100110 -110000101010 -010111110000 -111110010110 -011011111111 -111010100000 -100001000111 -011000001010 -011000010001 -101101100001 -011001101011 -111001001010 -000010110101 -101110100010 -001111111101 -011110001001 -000111100011 -010101001001 -111110111111 -111000111010 -001001111100 -000011000001 -011100010110 -110010000111 -000010010101 -110000001110 -010011111011 -001010100100 -111001010101 -001101000011 -110100110011 -110010100101 -001000001011 -111110011000 -110111011011 -110110101001 -010010100100 -111100001100 -100100001100 -110001111010 -111011001011 -010000010001 -110010100000 -010100011100 -000110001001 -010011000001 -111011010001 -010011111101 -111101110100 -110110101100 -010100111110 -100011001101 -000010000010 -011111100001 -100000101100 -100001110011 -100101100100 -000100001001 -101000000011 -110111101100 -100100101001 -001001101001 -000001010000 -001001111110 -111011111010 -001000011110 -110000100111 -010010010101 -011010001011 -100010010101 -010110101010 -011111001011 -110010011100 -111110101010 -000001111010 -111101110101 -101010110111 -100010101111 -000110101110 -000000010000 -000010100110 -111110010001 -000100110000 -110010011011 -101001000010 -010110000101 -100011100100 -110000110100 -110011000001 -101110001000 -010100011111 -111000100111 -110001100010 -100001101000 -101001000111 -111110100000 -000011000010 -110000000001 -111010000111 -100100111011 -101101110001 -111100110100 -100110010000 -001001001110 -100010001001 -101000110100 -011100001111 -001110100110 -110100001100 -101101001011 -000011111110 -101101010100 -000110110001 -011100011001 -111000111111 -011010101100 -111000100101 -100111011110 -011010100110 -110000101111 -110010000001 -100001110101 -110101011111 -111111000011 -101010010010 -000111111111 -000001001111 -101101010010 -111111001000 -001001110000 -110010011110 -110011001111 -100111101011 -011111000111 -110010111100 -010110000000 -110001100011 -111000100001 -011000101000 -100110001100 -001101011011 -011001111110 -011101000110 -110110111001 -110101001010 -111000111011 -100111010001 -100110000011 -010001000100 -001001001000 -010010001010 -010101101101 -001110001001 -101110011111 -010111001111 -110111001110 -100000101011 -010000111111 -101000101011 -101011010111 -000101110001 -100100010010 -100111011101 -111100000100 -100110000001 -000001000101 -101100001111 -100000101001 -010101010110 -000110010111 -011101001100 -000111111011 -000001100101 -100001011011 -111000101110 -111101100111 -011010010100 -101001001010 -110100110001 -111101011101 -000011101110 -011000100100 -101110000111 -011101110110 -111001010001 -011110000100 -011110001101 -100111100001 -010011100001 -001001101101 -001111111010 -010101000101 -011100000110 -100010001101 -011011101011 -110111001010 -101000010010 -111111100011 -000101111011 -001101010011 -100101000001 -101101100011 -101110010011 -011001100000 -110001111111 -011100101100 -010010001110 -111110101101 -010110001000 -000011000110 -101010011011 -000100111011 -001000111101 -010011111111 -011101100111 -111111011111 -001100000000 -101100001110 -101100001000 -100001011111 -100001000101 -000101011001 -010100111100 -110000111011 -010000111100 -011100110000 -101111110010 -100011110101 -100100110101 -100001100000 -101000100101 -111000001100 -010000001011 -110101010111 -011011001000 -100111000101 -011000000100 -110110011000 -101101101101 -100101110010 -001100001010 -010111000011 -111111100001 -100010111011 -110011001001 -000011011101 -001100101101 -010110011001 -111100110010 -011111001110 -100110001111 -000111101111 -011000110001 -001010001010 -000111010100 -010011110101 -011111000010 -000101000010 -111101011010 -110011111100 -100000001000 -100001000110 -101010100001 -000101000101 -100100011111 -110000101110 -000110000101 -001001011111 -100010011100 -000001110001 -110000010100 -011111010100 -001000001111 -000111000001 -110010001000 -001001111101 -111000001001 -001011000001 -111110010100 -110010001100 -010110110000 -011100100010 -011000101011 -001001000001 -011001001110 -111000010100 -000110000110 -011011000100 -011000010111 -110001011000 -010111011000 -000101110100 -000000011111 -001100111100 -000010100101 -000111110000 -000110000001 -000100101001 -101111110100 -010010000001 -001100010001 -101111001101 -111011111101 -000011110011 -111001011100 -010110110110 -000000001101 -010010000000 -000001010011 -101000010000 -101000001110 -010001000111 -111010011011 -101001111110 -000110101100 -100110101001 -100111111111 -101001101001 -110010010011 -011001011111 -111111110110 -101110010110 -100100001101 -010001111110 -111111101000 -100010100001 -011110010100 -101000110011 -010110110011 -011111001000 -100010100101 -110010010110 -111011001000 -101110001101 -000010110011 -001110100100 -100000011101 -011001100001 -011001101010 -001100011101 -000111101100 -001010001001 -111001101110 -110110001111 -001111001010 -001001000011 -001000010000 -000001111110 -000101101111 -001001000110 -100001101110 -101111011100 -111110010010 -010001100011 -101000100111 -001101000111 -111011110011 -000011000101 -111101001110 -110111111111 -011100010100 -110011110001 -001011011001 -000011010111 -011000001110 -000101010111 -110101110001 -001100001111 -110111010111 -110010010101 -100111100111 -101000000111 -101111000100 -100011100010 -000100100101 -111011110110 -001111100110 -011011000010 -100010010100 -010111110010 -100010110011 -111111111000 -011010101111 -101110111011 -101110101010 -001011001000 -110110001011 -110100101111 -001011001011 -110011010000 -000000100000 -100000110000 -101110011011 -100101101111 -010110100010 -000010100011 -000110110000 -111101000001 -011001010011 -000000001110 -000100110101 -111111111110 -001010101001 -001101100111 -010100000101 -000111001001 -101100101110 -011011110111 -011010000011 -000100101011 -100001100110 -000111011101 -000100011100 -000101100101 -011111111110 -111010111011 -100000100101 -011001011110 -010101100010 -010101111101 -100001000001 -001000100001 -010010111110 -100011001011 -011011000111 -110011010101 -111101100100 -001110001010 -110011111101 -111011011101 -001101000001 -101011011011 -100000111010 -010101110101 -000101011100 -011000011001 -111001010011 -100100010110 -111101010001 -110110011011 -011110110100 -101000110101 -101110111101 -011011011110 -000100110110 -100011011111 -111010101001 -011111011000 -101000101110 -110010111001 -111010000010 -110011011001 -110110010100 -111010011010 -000010110001 -011101100010 -110010110111 -010101001111 -011011001101 -101111000110 -010111010010 -101111011011 -100111101100 -001000001101 -010110100000 -001010100110 -111111000111 -100101000100 -100101001100 -110111010110 -101000101000 -100001001111 -110011110010 -111111101111 -110001111000 -010001110110 -101100000010 -000110000111 -001011100101 -101010100101 -110110001001 -000011011111 -110110101110 -101100110010 -101110101110 -101010110101 -000111000011 -101000011111 -001100000111 -101001111111 -100100011101 -111100011011 -000010111010 -111010101010 -101001010010 -101100010011 -010000110110 -011110110011 -001101110111 -110111110110 -001011000100 -101111100010 -011010011100 -110100001010 -100100110111 -000011010011 -000110111010 -001100100000 -100111011011 -001101101011 -101011101111 -001101100100 -111010010111 -100111111100 -101101000100 -000011111100 -011111001101 -110101001101 -011100100110 -101011000000 -100001010011 -011110111110 -011011100110 -110001011010 -111111110101 -001111111000 -100010011011 -100001101100 -110011010100 -100011000001 -011110111001 -010111110110 -100110001010 -100000000011 -001001101111 -101111011010 -010000110100 -101001011110 -100100011000 -101101000111 -011101001001 -010101110010 -000110000000 -000100111000 -010110111010 -110000011111 -011001011100 -010100110110 -011111110011 -111011011010 -001000101011 -000010110100 -011100101000 -111111100110 -011001110100 -000100011000 -010101010111 -001011101000 -001000011100 -110101101100 -010001000010 -001010010000 -111000110001 -101111111111 -011101011110 -001001111010 -001000100110 -000011011001 -100101100001 -110111000000 -100111011111 -111000110000 -110010111111 -000010010011 -100001100111 -010110100100 -001101001010 -101001100110 -010001110101 -001011000010 -010111110101 -000001001110 -010010100110 -111011001110 -101011111001 -000100000000 -111101001100 -100111011010 -000010010001 -100000010000 -101101000010 -110100010100 -111011111000 -101001100100 -001110101011 -000111001010 -111110000011 -001110100101 -101010000101 -010101010011 -110000111100 -101011001010 -010001011011 -010000011010 -000010101011 -100110110101 -100111011001 -100111010111 -000101100000 -101110000001 -100100001000 -010111000010 -000101001010 -001110010010 -111011000111 -001110110010 -111010000001 -011000100101 -000111100101 -100000100111 -100110011011 -001011100001 -101010100111 -011001111000 -000011011010 -001011101100 -010011011001 -000111111100 -010001011110 -111111011010 -111010010101 -110000010011 -001001101010 -000101011011 -100111111110 -110010101001 -111000011000 -011100101110 -011100010001 -001101110010 -101000111111 -101011011001 -110111000110 -001000010100 -000111000100 -010000101110 -001100100001 -111100000011 -111011101010 -000001111000 -100100010000 -110110000110 -000010111100 -110110110111 -010000011011 -101110000100 -011100100100 -010111001011 -001011010000 -000111010001 -110010111000 -001011011110 -000001100111 -010000101111 -110001100100 -111000001101 -000110011001 -010000010110 -101010001110 -111000111000 -011111011100 -111001110110 -111100010001 -110101111001 -001001010011 -010001111001 -001101101110 -010011000010 -000100011011 -000001101000 -001110100001 -100011010011 -100000011100 -011001010111 -110011011010 -100110001011 -011001110111 -001010001100 -000111010111 -110111111101 -111001101010 -001110001000 -011100001010 -010011101010 -111011010011 -000011001010 -100101000110 -100101010111 -110010100010 -010100101111 -111011011100 -100011100101 -101111111101 -001001110011 -110111101001 -100100010101 -010101100001 -100011000011 -001010010111 -011001001001 -110001101001 -010011100010 -111000001111 -010101111111 -001001001011 -000111110111 -100110111101 -011011110000 -001001011110 -011010101101 -111011101011 -010001100111 -110100001111 -100010110111 -000000010100 -100000010001 -010011010101 -010011100110 -100011111011 -110110100001 -110000100110 -110101100000 -110001101011 -110110100110 -101111101110 -011010101011 -101001010101 -110110111101 -100111100010 -101100100010 -101011101101 -010011010011 -001111011100 -100101010100 -101010101010 -010000011101 -011100000010 -100111101000 -111111010101 -011010101000 -001010110010 -111110010011 -110111011010 -010010111111 -111001100111 -010101111000 -000111110011 -111101000110 -001011000000 -110100100110 -101001110010 -101111011001 -111110000001 -011101110010 -011000010110 -101011010010 -100110011101 -000010011101 -001111110100 -110011001100 -111110111100 -011001011000 -001110000011 -110001001101 -111110111011 -110000000000 -010000110001 -000100110001 -001000101101 -001100110111 -101011001111 -110011110011 -010011100101 -001001000000 -011110100000 -001010110111 -110101111101 -001111000000 -100011011001 -100000001001 -000010101010 -110000100000 -111111101001 -111010101100 -101100110111 -110100011000 -010011000111 -010010001000 -001011001111 -001001001100 -100010110110 -111100111011 -111100101100 -000111111101 -101110000011 -100001011101 -111101110011 -100100000011 -111110011001 -100010111101 -110001001010 -111111100100 -010000110101 -001100001101 -001001110111 -110110101010 -011110010010 -101011010000 -101101110010 -010010110000 -011110100111 -010111000100 -010100000010 -000011110100 -111001011101 -010111100101 -110010101101 -011100010010 -001110111100 -011111110110 -001110100010 -000001100001 -011011110010 -000010111101 -001011111110 -111110111010 -001010101101 -100011110010 -001111110010 -011001110010 -100110101100 -010111010011 -001000010011 -111110110010 -011000000110 -011111111100 -000111110110 -110001110100 -101110010101 -010000111101 -011011101110 -011010100111 -001010000010 -100001100011 -110001000000 -101111100111 -101111110011 -001101110011 -110001110101 -100101010010 -010101011110 -000011111000 -000100001000 -101001110011 -011100110001 -000000011100 -111110010111 -101011101100 -110011101100 -110101011000 -010111001000 -111100001010 -001000011111 -010100111011 -101010101011 -001110001110 -100011000110 -000101101011 -110011010111 -111001011110 -111010100110 -010001110001 -011010101110 -101011110000 -001101010010 -001010000011 -011001000111 -010001000110 -010110011111 -001111011000 -000010010111 -100011110111 -111100111100 -010101010001 -100011101111 -011101011001 -001011001100 -001111000101 -110111011000 -011001001010 -010000000100 -100110111010 -000000111110 -011100100011 -100100111110 -000010011010 -111000000100 -001110001111 -011000101010 -011100110010 -110101000111 -110110111111 -101110110010 -000110100000 -110100001101 -000111101110 -111000111001 -000111111010 -010110111011 -000101110111 -111000011011 -010110001010 -001011111011 -100100100011 -011110110010 -000111110101 -110110011101 -000011000011 -110011001010 -000100101100 -101100100011 -010111000001 -110101100001 -011110111010 -111100101000 -010000100010 -110011000111 -010011011100 -100110101011 -000100001011 -101111000010 -010000010000 -111110000100 -111100011110 -010100111001 -100000011111 -010111110100 -100100110011 -111101111001 -100010011000 -111110101111 -010111001010 -110000101000 -001111111111 -000111100110 -000011101100 -011010001000 -001011010011 -110011111011 diff --git a/day3/src/main.rs b/day3/src/main.rs deleted file mode 100644 index 10c1f81..0000000 --- a/day3/src/main.rs +++ /dev/null @@ -1,36 +0,0 @@ -use std::fs::File; -use std::io::prelude::*; -use std::io::BufReader; - -fn main() -> Result<(), std::io::Error> { - let file = File::open("input.txt")?; - let reader = BufReader::new(&file); - - let lines: Vec<_> = reader.lines().map(|x| x.unwrap()).collect::>(); - let mut bits: Vec = vec![0; lines[0].len()]; - let half: u32 = (lines.len() / 2) as u32; - let mut gamma_string = String::new(); - let mut epsilon_string = String::new(); - - for line in lines { - for (index, character) in line.chars().enumerate() { - bits[index] += character.to_digit(10).unwrap(); - } - } - - for bit in bits { - if bit >= half { - gamma_string.push('1'); - epsilon_string.push('0'); - } else { - gamma_string.push('0'); - epsilon_string.push('1'); - } - } - let gamma_rate = isize::from_str_radix(&gamma_string, 2).unwrap(); - let epsilon_rate = isize::from_str_radix(&epsilon_string, 2).unwrap(); - - println!("{}", gamma_rate * epsilon_rate); - - Ok(()) -} diff --git a/day4/Cargo.toml b/day4/Cargo.toml deleted file mode 100644 index 8842130..0000000 --- a/day4/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day4" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day4/input.txt b/day4/input.txt deleted file mode 100644 index 4c28ac7..0000000 --- a/day4/input.txt +++ /dev/null @@ -1,601 +0,0 @@ -76,69,38,62,33,48,81,2,64,21,80,90,29,99,37,15,93,46,75,0,89,56,58,40,92,47,8,6,54,96,12,66,83,4,70,19,17,5,50,52,45,51,18,27,49,71,28,86,74,77,11,20,84,72,23,31,16,78,91,65,87,79,73,94,24,68,63,9,88,82,30,42,60,13,67,85,44,59,7,53,22,1,26,41,61,55,43,39,3,35,25,34,57,10,14,32,97,95,36,98 - -17 45 62 28 73 -39 12 0 52 5 -87 48 50 85 44 -66 57 78 94 3 -91 37 69 16 1 - - 1 67 4 58 13 -25 54 34 63 87 -59 70 66 72 71 -33 17 8 20 85 -69 46 50 41 88 - -47 63 80 15 90 -24 1 40 94 13 -56 62 74 81 95 -43 88 37 99 22 -57 52 33 84 49 - -33 58 54 28 10 - 7 82 97 66 92 -95 77 5 86 84 -85 91 94 21 69 -23 12 13 98 46 - - 1 63 58 23 0 -67 14 45 42 32 -48 64 83 10 13 -74 16 3 79 46 -44 52 95 25 6 - -93 47 5 96 28 -88 76 70 0 72 -77 1 36 54 9 -14 17 75 64 15 -79 66 61 78 26 - -23 75 96 71 76 -63 59 39 65 36 -95 21 67 41 74 - 9 97 4 2 49 -32 17 81 0 56 - -77 53 30 94 5 - 4 42 87 25 24 -52 15 68 9 45 -56 89 98 47 34 -99 32 27 78 46 - -75 70 99 65 41 -87 6 11 88 1 - 4 42 64 98 78 -63 50 69 79 39 -67 46 17 97 26 - -26 73 6 79 47 -67 51 64 16 60 - 8 1 61 76 39 -13 57 48 65 46 -63 83 4 92 71 - -97 93 21 88 80 -58 42 53 95 90 -49 29 30 26 22 -66 51 75 8 13 - 5 39 19 4 96 - -77 16 33 1 6 -54 91 60 56 88 - 4 59 24 79 22 -36 49 17 97 27 -67 99 92 62 86 - -78 18 59 74 54 -79 68 23 51 85 -47 42 92 58 12 -30 97 19 26 15 - 1 62 94 65 70 - - 6 91 56 55 11 -58 96 21 50 53 -51 60 67 64 71 -12 25 44 47 39 -15 92 81 9 38 - -98 16 31 21 30 -58 10 3 89 7 -79 20 60 74 26 -86 4 83 96 15 -94 29 44 41 34 - -50 75 83 20 52 -65 85 41 78 38 -31 64 86 32 10 -25 82 13 61 22 -11 73 4 77 24 - -56 74 26 20 62 -83 46 41 24 52 -34 28 76 80 36 -75 48 63 17 55 -69 47 22 45 60 - -17 15 71 28 68 -12 76 27 25 14 -34 39 31 58 13 -75 67 2 26 42 -72 43 0 23 54 - -37 43 18 76 47 -96 1 80 77 27 -13 89 16 4 6 -74 92 55 99 38 -19 75 52 85 81 - -69 51 39 95 98 -90 61 91 6 21 -25 57 81 10 49 -67 55 43 96 17 -78 11 3 64 77 - -51 66 8 62 60 -82 94 24 54 26 -59 91 97 37 77 -20 25 69 98 84 -38 12 65 35 61 - - 7 26 91 84 17 -23 52 86 19 24 -58 44 5 32 40 - 6 27 89 76 92 -33 10 90 83 82 - -44 61 68 70 87 -23 17 90 93 21 -92 54 95 46 14 -47 24 89 33 31 -26 80 35 42 78 - -88 80 50 46 26 - 1 97 92 51 74 -16 24 40 31 95 -47 85 61 99 12 -27 8 25 42 13 - - 8 59 37 87 44 -62 0 67 39 92 -79 81 54 24 93 -56 84 23 18 34 -72 68 29 11 91 - -64 51 81 44 12 -49 20 23 36 53 -59 73 37 60 57 -96 65 5 43 14 -46 31 47 87 1 - -11 13 72 30 3 -67 20 84 59 77 -52 87 97 51 16 -43 36 21 33 82 -41 96 91 93 29 - - 7 31 19 87 94 -92 68 18 57 23 - 5 88 81 86 10 -99 50 37 33 25 -97 22 0 53 91 - -78 39 41 44 89 -91 82 71 42 37 -25 93 67 53 9 -84 23 33 92 14 -74 45 57 86 50 - -79 83 10 85 48 -51 29 93 87 21 -58 5 52 37 99 -80 1 18 46 42 -60 92 0 44 59 - -79 76 54 14 42 -57 11 39 66 33 -86 62 27 61 26 -48 68 47 99 46 -78 90 9 36 98 - -76 79 66 38 65 -67 91 90 41 93 - 2 1 33 56 50 -46 9 0 61 62 -26 58 16 24 10 - -20 22 86 58 14 -53 74 54 85 6 - 2 96 40 72 78 -99 81 16 31 55 -11 57 62 51 32 - - 8 51 73 40 88 -83 35 37 98 27 - 3 42 15 14 33 - 2 38 52 82 71 -67 55 9 66 53 - -94 99 54 18 14 -40 56 57 66 68 -28 74 48 30 0 -59 1 22 50 23 -13 71 6 26 15 - -28 60 66 25 56 -49 68 84 10 38 -73 50 87 16 14 -79 26 29 18 2 -57 22 5 48 91 - -61 78 3 95 87 - 6 62 25 74 84 -22 71 93 57 20 -81 33 15 45 96 -38 14 19 72 26 - -51 19 62 72 39 -36 83 6 33 9 -95 43 42 2 22 -94 99 23 97 11 -66 61 16 30 35 - -51 38 7 24 82 -23 12 46 55 85 -43 97 45 61 67 -53 2 77 99 34 -17 93 25 9 72 - -37 32 35 63 93 -40 16 51 99 88 -73 69 49 80 33 -56 54 18 87 71 -29 98 85 58 17 - -38 4 55 72 33 -29 63 86 52 75 - 7 47 34 53 14 -89 39 83 36 78 - 6 21 15 18 96 - -56 19 40 0 7 -61 33 50 66 54 -93 91 64 6 45 -51 90 94 18 37 -15 28 13 2 44 - -18 79 4 56 15 -38 80 8 42 5 -60 11 53 23 27 - 9 71 19 83 72 -39 97 98 99 7 - -90 22 41 95 15 -20 18 7 70 49 -97 51 79 94 77 -31 89 50 40 9 -37 84 6 98 35 - -38 56 94 55 0 -92 84 8 85 73 -86 81 76 35 1 -62 5 59 77 72 -79 97 60 11 70 - -43 98 87 97 70 -53 55 35 8 64 -80 59 75 11 2 -17 95 13 38 90 -31 20 60 84 4 - -38 19 10 73 86 -37 72 66 22 53 - 6 41 20 21 92 - 0 13 9 89 17 -43 61 80 60 65 - -61 50 42 99 26 -11 51 52 83 64 -92 60 2 91 20 -95 10 14 94 98 - 5 37 90 17 69 - -82 48 51 32 78 -30 39 10 84 69 -94 5 60 92 89 -95 31 64 67 23 -96 20 33 66 61 - -33 92 78 24 74 -45 34 73 5 57 -18 37 69 44 38 -25 30 53 87 64 -28 23 14 10 81 - -39 82 40 64 86 -26 81 3 85 50 -71 75 91 65 96 -17 55 8 56 59 -22 36 73 90 0 - -18 67 50 70 71 -83 8 75 55 29 -66 33 39 88 16 -32 84 78 59 0 -11 3 61 65 36 - - 1 12 66 59 9 -24 97 75 83 11 -45 16 14 31 71 -85 43 99 18 15 -61 56 80 69 29 - -18 50 86 53 71 -67 36 14 24 55 -52 30 33 54 81 -72 51 39 28 42 -45 98 78 35 73 - -60 86 68 58 37 -17 78 43 31 96 -33 61 34 45 36 -10 29 83 98 2 -88 73 7 84 50 - -30 21 94 31 4 -20 68 91 55 51 -10 98 2 25 84 -64 97 29 28 58 -75 17 76 54 65 - -17 11 88 9 66 - 1 59 60 79 55 -30 46 83 67 91 -23 45 99 90 6 -81 33 8 13 76 - -25 68 43 59 51 -56 14 41 52 16 -62 36 12 37 71 -83 90 81 91 0 -95 92 29 54 26 - -53 84 85 18 10 -51 44 87 86 67 - 4 81 82 77 30 -26 68 80 57 71 -22 83 47 61 14 - -41 89 38 14 66 -70 92 26 97 53 -78 25 5 4 48 -54 86 31 23 0 -99 73 6 20 98 - -18 81 96 60 47 -59 87 95 15 57 -34 17 26 7 42 -25 90 45 94 5 -10 41 32 20 98 - -37 9 20 82 83 -84 14 62 3 76 -86 67 95 40 65 -57 26 1 19 69 -49 41 29 35 13 - -29 74 69 92 48 -80 47 59 18 13 -98 5 64 89 83 -37 97 90 32 49 -25 87 39 21 63 - - 1 61 5 82 66 -87 75 18 23 63 -38 51 33 59 4 -21 14 17 97 92 -94 45 84 22 10 - -86 93 8 99 54 - 1 4 37 30 34 -80 17 50 74 97 -28 11 6 85 78 -94 76 92 63 79 - -63 87 89 19 81 -72 90 71 96 16 -85 92 78 11 37 -50 17 68 82 66 -21 9 39 69 73 - -30 63 90 5 45 -26 15 28 84 65 - 1 23 0 12 17 -61 98 21 39 56 -67 51 3 8 42 - -54 91 9 70 93 -75 58 89 53 19 -77 64 45 78 14 - 7 31 99 42 51 -87 95 60 10 84 - -98 35 66 42 85 -75 27 97 54 9 -16 15 60 44 49 -28 19 51 24 50 -59 18 37 88 39 - -69 29 49 9 76 - 4 83 64 33 2 -67 81 88 70 39 -85 73 97 15 8 - 7 13 26 12 1 - -57 3 65 28 87 -36 31 51 19 0 -56 77 41 20 76 -79 29 80 60 66 -55 61 8 30 15 - - 2 42 3 17 40 -10 56 91 52 23 -76 39 75 82 49 -50 36 99 9 53 -92 66 48 31 41 - -16 51 80 95 23 -36 84 33 56 11 -49 46 32 78 85 -67 29 94 26 22 -76 6 30 37 0 - -27 94 79 48 4 -55 81 22 18 88 -93 15 59 41 11 -67 43 24 92 65 - 5 1 60 99 62 - - 2 51 42 84 82 -80 28 43 93 72 -81 57 13 45 66 -34 22 53 37 3 -31 46 70 77 79 - -17 12 22 53 74 -23 49 52 60 40 -64 98 97 75 57 -58 81 85 89 92 -42 34 65 87 18 - -13 8 54 25 11 -84 72 66 78 1 -22 82 48 85 62 -68 99 18 3 57 -64 41 80 94 71 - -45 5 56 30 62 -10 50 78 13 34 -90 97 85 36 0 -86 35 80 55 74 -47 99 59 61 18 - -79 87 81 45 95 -24 91 27 18 16 -51 35 34 46 48 -39 40 6 70 99 - 1 82 63 32 50 - -78 68 27 17 65 -74 15 21 38 24 -82 97 49 7 58 -19 23 87 79 22 -57 93 30 1 69 - -64 13 40 21 89 - 3 95 20 79 59 -80 46 91 54 1 -62 66 30 60 47 -26 99 55 25 2 - -47 83 7 71 81 - 9 72 12 20 96 -28 57 82 98 42 -34 59 18 69 1 -68 38 46 19 80 - -43 39 48 84 87 -32 78 5 65 50 -86 13 20 22 70 -31 6 52 53 18 -73 25 4 60 99 - -48 15 59 50 33 -93 99 46 70 21 -91 26 76 65 87 -10 27 78 5 96 - 4 63 22 82 20 - -88 63 66 48 37 -39 47 56 52 27 -81 18 33 12 59 - 3 96 55 26 43 -42 4 7 28 22 - -95 12 98 84 23 -37 35 78 9 61 -52 47 24 90 17 -55 87 18 80 41 -38 0 14 36 48 - -62 72 56 78 8 -75 26 11 58 91 -38 74 52 65 45 -43 41 15 82 35 -89 27 21 54 0 - -43 36 85 68 60 -26 89 84 10 80 -87 50 75 81 35 -12 46 6 70 59 -93 51 66 33 49 - -68 32 0 63 54 -20 92 39 89 17 -48 60 87 36 14 -93 76 83 10 55 -64 74 80 11 41 - - 9 32 11 41 87 -78 22 8 72 75 - 6 51 29 90 50 -21 68 47 2 7 -52 19 36 57 58 - -83 36 25 31 99 -86 29 47 77 38 -13 51 20 59 27 -74 50 9 11 44 -52 95 81 2 70 - -96 47 14 73 59 -84 87 7 4 46 -60 27 79 53 30 -58 28 55 5 43 -91 75 63 35 52 - -41 66 27 50 56 -76 60 80 85 23 - 3 21 37 74 95 - 9 92 43 5 98 -79 49 88 24 70 - -59 18 57 90 13 -79 29 12 2 0 -84 58 38 77 96 -33 89 43 11 44 -93 23 98 60 51 - -58 86 28 17 1 - 6 4 81 55 53 -84 27 38 12 83 -50 43 40 85 88 -26 72 25 41 44 - -14 92 7 98 12 -44 11 71 64 26 -88 8 2 56 6 -59 0 15 33 51 -10 52 89 53 34 - -52 4 5 63 50 -15 8 60 70 13 -33 79 21 39 34 -84 91 30 12 71 -61 31 41 9 66 - -43 67 52 92 54 -17 21 71 78 60 -19 0 88 61 2 -14 66 87 12 37 -89 23 25 4 24 - -41 62 7 66 33 -59 87 84 80 71 -73 97 25 85 60 -86 64 61 54 83 -22 18 63 81 27 - -92 89 50 11 73 -41 48 62 80 78 -46 55 81 16 94 -97 45 5 13 40 -14 75 22 42 2 diff --git a/day4/src/main.rs b/day4/src/main.rs deleted file mode 100644 index 4b2f9b3..0000000 --- a/day4/src/main.rs +++ /dev/null @@ -1,107 +0,0 @@ -use std::fs::File; -use std::io::{BufRead, BufReader}; - -fn part1(grids: &Vec>, mut inputs: Vec) -> u32 { - let mut values = Vec::::new(); - - for _ in 0..4 { - values.push(inputs.remove(0)); - } - - let mut winner: i8 = -1; - for input in inputs { - if winner >= 0 { - break; - } - values.push(input); - for i in 0..grids.len() { - // Search by rows - for j in [0, 5, 10, 15, 20] { - let mut n = 0; - for k in 0..5 { - let x = grids[i][j + k]; - if values.iter().any(|&i| i == x) { - n += 1; - } - } - if n == 5 { - winner = i as i8; - } - } - - // Search by cols - if winner < 0 { - for j in 0..5 { - let mut n = 0; - for k in [0, 5, 10, 15, 20] { - let x = grids[i][j + k]; - if values.iter().any(|&i| i == x) { - n += 1; - } - } - if n == 5 { - winner = i as i8; - } - } - } - - if winner >= 0 { - break; - } - } - } - - let mut sum = 0; - for x in &grids[winner as usize] { - if values.iter().any(|&i| i == *x) { - continue; - } - - sum += x; - } - - sum * values.pop().unwrap() -} - -fn main() -> std::io::Result<()> { - let file = File::open("input.txt")?; - let reader = BufReader::new(file); - let mut lines = reader.lines(); - - let inputs: Vec<_> = lines - .next() - .unwrap() - .unwrap() - .trim() - .split(',') - .map(|x| x.parse::().unwrap()) - .collect::>(); - - let mut grids: Vec> = vec![]; - let mut n: usize = 0; - - lines.next(); // Ignore the first empty line - while let Some(line) = lines.next() { - let mut line = line.unwrap(); - grids.push(Vec::with_capacity(5 * 5)); - - for _ in 0..5 { - grids[n].extend( - line.trim() - .split(' ') - .filter(|x| !x.is_empty()) - .map(|x| x.parse::().unwrap()) - .collect::>(), - ); - line = match lines.next() { - Some(x) => x.unwrap(), - None => "".to_string(), - }; - } - n += 1; - } - - println!("{}", part1(&grids, inputs.clone())); - - Ok(()) -} diff --git a/day6/Cargo.toml b/day6/Cargo.toml deleted file mode 100644 index 89d04ae..0000000 --- a/day6/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day6" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day6/input.txt b/day6/input.txt deleted file mode 100644 index de918c7..0000000 --- a/day6/input.txt +++ /dev/null @@ -1 +0,0 @@ -1,1,3,5,1,1,1,4,1,5,1,1,1,1,1,1,1,3,1,1,1,1,2,5,1,1,1,1,1,2,1,4,1,4,1,1,1,1,1,3,1,1,5,1,1,1,4,1,1,1,4,1,1,3,5,1,1,1,1,4,1,5,4,1,1,2,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,1,1,1,1,2,2,1,1,1,1,1,5,1,1,1,3,4,1,1,1,1,3,1,1,1,1,1,4,1,1,3,1,1,3,1,1,1,1,1,3,1,5,2,3,1,2,3,1,1,2,1,2,4,5,1,5,1,4,1,1,1,1,2,1,5,1,1,1,1,1,5,1,1,3,1,1,1,1,1,1,4,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,1,1,2,2,1,2,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,4,2,1,4,1,1,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,5,1,1,1,1,1,1,1,1,3,1,1,3,3,1,1,1,3,5,1,1,4,1,1,1,1,1,4,1,1,3,1,1,1,1,1,1,1,1,2,1,5,1,1,1,1,1,1,1,1,1,1,4,1,1,1,1 diff --git a/day6/src/main.rs b/day6/src/main.rs deleted file mode 100644 index 46a148c..0000000 --- a/day6/src/main.rs +++ /dev/null @@ -1,36 +0,0 @@ -use std::fs::File; -use std::io::{BufRead, BufReader}; - -fn main() -> std::io::Result<()> { - let file = File::open("input.txt")?; - let mut reader = BufReader::new(file); - let mut buffer = String::new(); - - reader.read_line(&mut buffer)?; - - let mut lanternfishes: Vec<_> = buffer - .trim() - .split(',') - .map(|x| x.parse::().unwrap()) - .collect::>(); - - for _ in 0..80 { - let mut n = 0; - for lanternfish in lanternfishes.iter_mut() { - if *lanternfish == 0 { - *lanternfish = 6; - n += 1; - } else { - *lanternfish -= 1; - } - } - - for _ in 0..n { - lanternfishes.push(8); - } - } - - println!("{}", lanternfishes.len()); - - Ok(()) -} diff --git a/day7/Cargo.toml b/day7/Cargo.toml deleted file mode 100644 index b170ccb..0000000 --- a/day7/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day7" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day7/input.txt b/day7/input.txt deleted file mode 100644 index 3e0fecf..0000000 --- a/day7/input.txt +++ /dev/null @@ -1 +0,0 @@ -1101,1,29,67,1102,0,1,65,1008,65,35,66,1005,66,28,1,67,65,20,4,0,1001,65,1,65,1106,0,8,99,35,67,101,99,105,32,110,39,101,115,116,32,112,97,115,32,117,110,101,32,105,110,116,99,111,100,101,32,112,114,111,103,114,97,109,10,62,461,1087,183,1096,431,412,200,486,1543,25,580,1030,15,65,1186,9,226,173,77,119,691,855,451,88,741,221,1465,190,779,327,179,627,366,288,174,1147,49,773,3,5,65,20,172,601,307,611,699,1168,933,1295,832,242,62,8,4,226,768,33,566,21,10,937,15,760,100,574,181,89,72,1054,225,28,0,685,661,131,281,933,90,233,109,1345,81,106,636,1262,193,172,1056,709,1176,447,536,1054,929,171,226,127,274,710,917,218,192,25,128,321,1816,515,181,759,20,258,134,281,151,99,479,623,534,72,576,534,337,54,293,450,230,963,14,357,446,1244,964,16,865,52,1,1171,77,7,275,313,894,577,305,1119,393,285,354,136,1147,241,441,166,1024,650,101,178,1514,186,902,367,5,431,374,56,507,857,1316,0,186,63,118,1062,62,446,266,47,354,168,65,1036,447,689,160,749,728,791,1066,99,675,194,891,153,737,801,254,905,1046,21,413,386,204,603,373,218,440,137,1340,1616,121,903,722,841,731,213,219,405,336,1345,144,329,285,213,272,717,47,126,1137,548,32,21,755,219,595,187,143,636,476,397,185,70,345,89,319,80,867,26,1166,509,24,16,151,605,1415,893,814,473,289,377,407,44,184,290,447,1669,116,319,455,294,145,513,58,247,186,1565,31,297,1,226,1051,1561,1233,254,1274,422,547,1638,354,1855,419,71,1003,626,519,109,96,996,117,32,226,424,184,181,720,1311,1162,11,86,438,408,1269,887,612,327,133,1117,1390,345,10,370,175,37,1154,659,707,193,665,65,359,758,1253,498,219,601,59,919,1371,289,9,437,392,626,981,2,51,733,780,101,541,770,464,28,616,81,1708,1515,719,780,1214,673,268,246,25,252,301,205,27,160,0,298,69,285,58,809,1369,812,628,353,47,632,123,168,135,277,303,614,365,330,1385,1117,1346,737,744,1403,385,215,437,276,726,673,668,494,164,1,763,696,487,252,375,1253,42,1111,963,58,63,11,1648,1080,964,526,454,1349,1098,95,59,78,36,42,654,1441,1129,464,740,355,370,44,4,154,986,439,828,287,969,765,565,836,196,387,556,34,586,438,1205,760,798,6,61,260,25,418,1628,566,3,530,753,758,16,92,30,1388,109,240,513,1048,1056,588,1634,418,297,195,447,1145,198,466,0,607,180,57,58,72,319,221,869,744,339,195,1295,268,1336,1310,38,714,326,393,445,422,102,389,188,147,21,805,381,520,561,282,438,115,431,156,482,50,890,470,22,60,46,1588,971,1219,82,380,1061,948,455,99,255,400,1832,91,225,280,520,279,91,172,92,946,434,182,164,142,83,91,281,538,962,77,1104,1522,310,4,961,62,9,1257,596,464,733,338,1166,334,380,509,773,90,498,480,1523,1632,530,543,413,589,748,4,861,11,233,192,699,33,615,1853,205,270,624,1132,1100,227,1402,349,183,179,645,4,1120,962,317,326,128,422,281,302,701,53,179,34,802,272,1254,375,764,418,16,160,943,479,416,717,644,1029,372,140,114,449,351,159,305,1299,749,488,502,180,210,17,533,258,120,333,1097,185,1911,451,360,66,1329,1260,209,1611,454,809,336,783,1438,20,26,609,720,155,578,367,231,1715,64,610,465,752,81,108,389,995,244,1291,1144,159,161,1630,561,813,261,67,1604,124,231,833,14,15,1245,1309,1165,103,1270,228,1,133,644,581,218,481,716,237,155,360,110,1408,931,99,216,5,21,67,348,927,325,759,1127,557,584,696,428,653,548,247,1519,1682,132,3,1648,230,229,136,253,543,1153,204,669,58,81,357,85,82,749,503,139,32,1170,1352,151,653,1441,51,392,474,2,114,64,418,125,514,838,473,794,331,13,327,1476,836,37,3,0,115,18,1784,300,190,99,997,1164,31,1255,96,64,1101,354,698,372,852,1508,100,289,32,704,292,504,191,1342,231,692,12,369,1182,62,809,566,688,218,2,539,234,996,444,228,456,369,115,23,29,226,940,95,404,349,1254,171,69,711,2,1405,1181,34,8,92,173,533,20,181,921,201,1236,185,457,526,2,106,12,601,58,339,457,590,15,1583,473,451,1124,1569,401,72,154,9,1331,471,165,516,463,543,298,197,43,1294,101,1058,1025,1099,4,634,90,104,870,480,412,290,11,924,338,30,281,83,268,20,848,1722,1060,987,9,196,266,28,402,267,199,814,986,440,906,796,1403,1394,62,136,442,412,1729,571,459,91,730,269,172,202,772,305 diff --git a/day7/src/main.rs b/day7/src/main.rs deleted file mode 100644 index 26e1e30..0000000 --- a/day7/src/main.rs +++ /dev/null @@ -1,29 +0,0 @@ -use std::fs::File; -use std::io::{BufRead, BufReader}; - -fn main() -> std::io::Result<()> { - let file = File::open("input.txt")?; - let mut reader = BufReader::new(file); - let mut buffer = String::new(); - reader.read_line(&mut buffer)?; - - let mut inputs: Vec<_> = buffer - .trim() - .split(',') - .map(|x| x.parse::().unwrap()) - .collect::>(); - - inputs.sort(); - - let half: usize = inputs.len() / 2; - let middle = inputs[half]; - let mut sum: u32 = 0; - - for input in inputs { - sum += (input - middle).abs() as u32; - } - - println!("{}", sum); - - Ok(()) -} diff --git a/day9/Cargo.toml b/day9/Cargo.toml deleted file mode 100644 index b5e5273..0000000 --- a/day9/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "day9" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day9/example.txt b/day9/example.txt deleted file mode 100644 index 6dee4a4..0000000 --- a/day9/example.txt +++ /dev/null @@ -1,5 +0,0 @@ -2199943210 -3987894921 -9856789892 -8767896789 -9899965678 diff --git a/day9/input.txt b/day9/input.txt deleted file mode 100644 index 10120f9..0000000 --- a/day9/input.txt +++ /dev/null @@ -1,100 +0,0 @@ -9876543234679310943456798433456798998764321357921025689921987899896498799923491297654545679876212347 -6987675036678939874567987012567897899975532467892334567890996789789989679895989398743236789865101456 -5598983124589598765689765423678956789876543568943565678999765395679876598789678987654345998764313689 -4349994235695329976789998634678946789987987679757678989398653234598767459654567998767499899875424568 -3298987656795419899896459745989134568998998789968789699219772123987654398753456899989989689986576789 -2126598787896998788902349897991013457899999997989994567909765244598875697542346789798764593987897897 -1012349898999887567893956999543234967967988656799323459898954355699876989331238996659875691298998956 -4123467999598765456789897987654347899659876545678912398767896466789987979210349965545996789399659235 -3234598985439878567896789198795456789898765434189329987546789998994699867991467894534987899985432123 -4347899876567989678965994349987897899909996521034998675323597899123989659889578943023498999875321014 -5456987997689299989254789498798998999919989992129876543213456789239877545678989432145999998989432345 -6567896798792109892123569987679999998898767889234997854324597994399765434689996565236789987698544456 -7898945689899998763012458976597989987784345678949998985434989219987654323456899854345699996597655678 -8949239796958899954124567895435678996543234567897889876599878998698765435678998765496978989498966899 -9932198965346789867258789932124567987655123458976778987988769876569876646889019887989869979329987957 -9893987896234568954345898743245798998766234567894567899875457987421987756799934999876649868912398946 -8789876789195689875457999655466799679879845678913348987654346987630298867897895988965432946794459435 -7653245678989799876767899867578954568989658799101234999869234598541349998976789876894321987895568910 -9654134789678986988979989878989243456799767895312349898998945987676556789345698765789210398996678999 -8765245696567895399898979999599012367899898986423498776566899999887687990296987984694331239989989888 -9954346897379964219787767893478943479901999597434569653465678999998798921989896593789452398978998767 -0976557898298965398656456794569894998919589439765698542324599689929899439976789432599543987767999656 -2998678999997897987642347895698769867898478929876987321015689599845996598765678953498959876656897545 -9859789899886789998756468998789655456797569999989996432326796498656789987654567894997899965545998968 -7643996798654567949898979659897643245698979989994987543689895329868999998765678949876778964234899879 -5432345697543458957999989545998732124569998967943198964599943210979098969876899129875467996446789989 -8584557987654569767899993123989841034979987654599979989679985341989197854987989039654346789677899899 -7675678998765699898988932034976432149898998863278954393989876832698986543298968998765956799898998789 -8776789439897789909977794255987543298787899985369893212399989764567997432129456789979899989949987699 -9899899524989896429865689356898655398656799876456789105679899895678987521012359891398797778932397569 -9987978939878987898754578967898786499545892998968994323456789989989498432154467910987676567891986478 -9876568998767898999743679879969897987656901239879895544678999879897599543265998934977567456789765399 -7765459876546999898654798989456998998767893446989796665678998768789987654399899949765432345996996989 -6984345995437898759995987892399999439978998669995689776889997656667998969989789899986645567895789878 -5493234989425789647889876891987899321989998778934578987999876543459549998875569789998786688934899767 -4321049875414678936979965789976678910198989989323469998967987652368932987654414579989887999023987656 -5493959954323469324767894679864567891987878993212378999545698710456891099843203458976998942125998543 -7989898965434568913456893589653456789876567992105567894434789322567992129874212367895459993349879432 -8979767996576679102378921098732345898676456789213458943226798763456789298765673456789345989659765310 -9865656889677889293467892129641237899545345698924567899012999654567899349876654597891299978978987821 -8654345679898999989679953498432356789321234567897698978929898765678998956987875698910987567899398932 -7543234578929898878989769976544578996532356878998789567998769888789987897898986789321297478921239543 -5432143456919657667899898989757689987653479989019893478987847999898796789949997996548396567890198656 -8961012367898943456789987698768789998954568998929989569876435445989654678929898987657987678954239967 -7642123456976432367893297569899898769765679456998678978987321334678965799898769598767998999876349879 -8843234568965321245892195479901989859887894367899568989765410123457896893799654329878999899987456989 -9754545678976432496789989567899876543998999578965467999876923245569987932679954212989898789998567894 -9898758789876545789897678998967989862369998679754345699989874356998898921569896102398767678999978943 -9998767894988656896935569549459898973456899789643234987998765459876789932499789213988654589989899432 -8789978943299767965423478921298767895569964996532146986799878598765999893987689929876542679878798921 -9689989652129878987314567890989856789678953987844299875989989679754666789986567898986321299767687899 -6567897541012989796205679999976545679999654598765987654678998798673245678965438957895410987954576778 -4489995432123497654317895798765432459898767679876798763567899899542134589875312346689929996543134567 -3235789543235698785456954349876721248789878789989899874698999998753234696543201234567898987654235678 -2124678965346789896787893212987210187678989892198942976789998769876545987654415345698976798966547899 -1014589878456893987899954301297321234589899999977893988894987456998668998765623466989765429987858943 -2123578989569902398978975212976542475789789998756789199953986568989889679876734569879954312398969652 -3234567897698943469869865323987643567898699999547894349992197689679995566987655698767893202459878943 -4345978998997899598756998764598764678987569898769976998989999796598754324499878999859994312378989965 -5656899569866968965431279879689985789998498769878989876865778965469843212347989898948975459459999876 -6787932499754357896542456998789699899886329856989999765954567894345954353456798797837988678969878997 -7898953987643239919757567899897543998765498745899886644212678901234969754668997655126898789998868998 -8999654996544128929898978934998631349877899635789765432103789212349898975678986543235679892987657899 -9998969875431017999939989325698752356989998523489876643214897423598787896999697655356799921098545989 -9997978996652126789129893216799763467899896412678999765625996545987676569896598766587898943985432877 -9886899429863245679399789109999878978998765324569769889436789679876543456789439898698987899874321466 -8765678910964376899987698998784989989549995445678945996547899798965432387696429999789556789766440355 -7654569899875487999896587899543494399929987678799434987667934977994321234597998998995445678954321234 -6543456789989568998785476998932359239898998989893223699788999866789410165789896987654324479765535445 -5432567899987678997665365767899498998767999699932104567999987654789421256899765698985212356986787568 -4321256789999789886543214456798997987656789569543213469765498765678933345998754109876323567897898679 -5434345678998998765432102349987856798545993498994999578954329878989654658987653212987434878998929989 -6565656799567899876545214498986534987656789597789878989865912989498768767899864324598546789989939999 -7676768923456999987756725987995423898967896986678767993999894994239989878998975435987659896765798989 -8787879734567898998998999876789545789989954965483458912987789892129796989787896745898789975454447678 -9898989656789987889999987494899656789195899754312379909876556789097645692546999856789897654322334589 -8969398797996545978899976323678967991024789876106567899985434567998732101235678969897998854310123459 -7654249899975323456789985214567898942195678998217879999876524567986544212346989989976799965924265678 -8652135987976896568999953107998929769989899999356989998765213456987656434587896492455678999895696799 -9543299876989987689659864315789319898878989876467999989874301345699786547998954321234589987689989892 -7654987664698998796549874323498901997659878987578997779765432456789987856899967432355678996578678921 -9965799543567899987856975434567892987543656898989986569876753697897598767977898645698789975457568910 -9899898632356792198977896565678969876532345689995987432987884789966449878956789876899899764325457891 -6678997653458999299989979876799349865431334678953294321098765789654323989345999988967998955212345789 -4599298964578998988998968987891234986210123689964498753129877897654312993234789999654987742101234699 -3989129765679997667987899998910129876433234589876569876534988998973209894365678919869876543232348789 -2878939876799896543566999879321236997645345679987893997699999529994698765489799201978997654343469892 -3467899987986789432355698765432345698987456789298932398988965410989989876569895412399989765499598921 -5679979999895678921234569989543456789998987891019643599877896329879879999678976523989878979988987932 -6789568987784569990146678998656567899969898989998754988756899499764768998789897949876767989877656893 -9893499976543478989236789239767898998756789878899869876645798987653456799898789498765456799765346789 -6912987665421299879345678949879989976545698765789979865434687898432567895965689398754345678974235699 -5439876543210987769967899999989567895431987543695491984323456989943458954397899999665265667895127678 -6545997654521976458899910989996468986532398654599392395664677979894568965989959876543123456789024568 -7666798766439894346778929878987347897747498765678989987775899866789789999878943997651016567892123456 -8789899876598789234567898969876456798856569876789778998986798754989899989766959898764323456789236768 -9898999987697655139879987655987898949987899987894566989987986543478999876745898759877467897897345679 -8967998799798743016791098943498929956798999898913455678999876542359998765636789542976578949985498789 -7649876549899752145892987632349547897899498769101234589212987656767899443323498931987989539876569893 -8432987632999863236789876545678956789902349854213455678903498987898954321014567890198994321987689912 diff --git a/day9/src/lib.rs b/day9/src/lib.rs deleted file mode 100644 index 3391a74..0000000 --- a/day9/src/lib.rs +++ /dev/null @@ -1,90 +0,0 @@ -use std::str::FromStr; - -#[derive(Debug)] -struct Heightmap { - data: Vec>, - rows: usize, - cols: usize, -} - -impl FromStr for Heightmap { - type Err = (); - - fn from_str(s: &str) -> Result { - let rows: Vec<_> = s.trim().split('\n').collect::>(); - let mut data: Vec> = vec![]; - for row in &rows { - data.push( - row.chars() - .map(|x| x.to_digit(10).unwrap() as u8) - .collect::>(), - ); - } - Ok(Heightmap { - data, - rows: rows.len(), - cols: rows[0].chars().count(), - }) - } -} - -impl Heightmap { - fn resolve(&self) -> usize { - let mut count: usize = 0; - - for i in 0..self.rows { - for j in 0..self.cols { - let top = if i > 0 { self.data[i - 1][j] } else { 10 }; - - let bottom = if i < self.rows - 1 { - self.data[i + 1][j] - } else { - 10 - }; - - let left = if j > 0 { self.data[i][j - 1] } else { 10 }; - - let right = if j < self.cols - 1 { - self.data[i][j + 1] - } else { - 10 - }; - let center = self.data[i][j]; - - if center < top && center < bottom && center < left && center < right { - count += (center + 1) as usize; - } - } - } - - count - } -} - -pub fn part1(input: &str) -> usize { - let grid: Heightmap = input.parse().unwrap(); - let result = grid.resolve(); - - result -} - -#[cfg(test)] -mod day9_test { - use super::*; - - #[test] - fn test_with_example_data() { - let data = include_str!("../example.txt"); - let result = part1(data); - - assert_eq!(result, 15); - } - - #[test] - fn test_puzzle_input_part1() { - let data = include_str!("../input.txt"); - let result = part1(data); - - assert_eq!(result, 541); - } -} -- cgit v1.2.3-18-g5258