diff --git a/2022/day1/Cargo.lock b/2022/day1/Cargo.lock new file mode 100644 index 0000000..dcddf63 --- /dev/null +++ b/2022/day1/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "day1" +version = "0.1.0" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.167" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" diff --git a/2022/day1/Cargo.toml b/2022/day1/Cargo.toml new file mode 100644 index 0000000..c356738 --- /dev/null +++ b/2022/day1/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "day1" +version = "0.1.0" +edition = "2021" + +[dependencies] +libc = "0.2.167" diff --git a/2022/day1/src/input.txt b/2022/day1/src/input.txt new file mode 100644 index 0000000..1f757be --- /dev/null +++ b/2022/day1/src/input.txt @@ -0,0 +1,2236 @@ +7896 +4992 +1382 +2920 +7533 +2709 +6020 +5321 +2698 +6806 +8008 + +1340 +1472 +7147 +2707 +5491 +7003 +2337 +1401 +5309 +4385 +2805 + +6019 +1924 +8917 +6303 +9358 +3640 +1563 +1902 + +10946 +10333 +8504 +6110 +10157 + +4578 +1711 +3343 +6159 +4045 +3487 +3070 +5663 +3518 +5839 +5911 +4970 +4852 +4512 + +4277 +3324 +6172 +8272 +2707 +3292 +6599 +1204 +7030 +3075 + +6907 +5595 +10251 +8654 +4036 +11545 + +16787 +11035 +12217 + +2196 +1519 +5810 +6837 +1193 +6480 +1237 +1659 +4323 +2896 +3878 +2894 + +15886 +20356 +23636 + +8795 +7986 +14228 +15738 +13503 + +6598 +17951 +17508 +2446 + +1382 +3232 +6467 +2791 +6250 +2704 +3898 +5569 +8676 + +2582 +8767 +3195 +7957 +6614 + +24737 +34912 + +28868 +34308 + +2703 +20947 + +5548 +5930 +6705 +4227 +6120 +8723 +4597 + +5877 +1223 +5789 +2207 +3488 +5210 +3056 +4300 +3880 +1826 +5366 +4531 +2016 +5304 + +4226 +5314 +6437 +1737 +1229 +3757 +5128 +1058 +5940 +3344 +5188 +4963 +1403 +5498 + +4969 +3096 +7035 +2695 +4747 +5109 +6294 +7990 +1539 +2608 +2944 + +14127 +9751 +4842 +1106 +2779 + +11896 +6643 +15874 +10487 +4141 + +4696 +6644 +6285 +4321 +4080 +6888 +5213 +5048 +6545 +5848 +1690 +5351 +2560 + +17296 +4277 +8327 +7931 + +8374 +3794 +5435 +6968 +4768 +3458 + +5090 +5614 +9448 +10331 +1311 +12604 + +5126 +4860 +1299 +6934 +11746 +2628 +12132 + +6648 +8567 +10219 +2385 +3642 +10478 +7662 + +9206 +2176 +6472 +12314 + +7006 +9478 +2742 +12074 +11993 +3221 + +2458 +4271 +6417 +13749 +5411 + +7826 +4566 +10845 +4535 +5673 +8305 + +8264 +11302 +7040 +9481 +9935 +6624 +8376 + +10460 +20936 + +3456 +3498 +6808 +7408 +5543 +3673 +6672 +6650 +7560 +2477 +6505 + +6943 +3217 +6235 +5079 +1386 +3453 +1736 +4569 +1422 +2804 +5807 + +2241 +1925 +3348 +4805 +2575 +3656 +1379 +5628 +2348 +4652 +5052 +5788 +4128 +2160 + +4839 +3854 +3192 +4055 +1892 +5418 +6415 +1645 +1609 +3844 +3097 +2117 +4043 + +6996 +16021 +23549 + +5493 +5824 +7101 +5017 +8221 +5407 +1963 +6083 + +4896 +18916 +17584 +19464 + +2897 +1198 +1847 +4416 +3086 +2006 +1743 +1387 +3390 +1416 +4713 +3831 +2789 +5146 +2220 + +9452 +8265 +6453 +2831 +3803 +1928 +1047 +5087 +9454 + +2885 +1518 +5218 +2629 +5204 +3715 +4468 +4399 +3020 +5194 +5361 +4566 +5875 +3995 +3081 + +5435 +3159 +1378 +1333 +4491 +5405 +4858 +3744 +5468 +2313 +3014 +2236 + +7027 +5112 +6675 +1149 +5519 +7197 +5210 +3811 +1259 +3794 +2700 +6518 + +6066 +2040 +1948 +2972 +3816 +1477 +4477 +3085 +4169 +1245 +5008 +2016 +4449 +1544 +1511 + +5909 +3378 +12050 +6988 +11093 +8034 +2552 + +5647 +7225 +1416 +4531 +2148 +5176 +1086 +1268 +3907 + +8824 +12672 +6094 +4105 + +9982 +1255 +5102 +2060 +8348 +8610 +9019 + +6442 +8353 +2849 +6823 +5061 +8540 + +1020 +4819 +2371 +6452 +2589 +2140 +3018 +6422 +2079 +1049 +4183 +1959 +6889 + +3370 +20341 +6283 + +3568 +8914 +2474 +1840 +1092 +2901 +4619 + +5489 +5048 +2151 +1275 +4555 +6105 +6393 +5439 +1175 +3143 +1039 +6159 +4280 + +25302 +11104 + +16342 +19486 +6818 +5872 + +4287 +7300 +5106 +6009 +5397 +4743 +8786 +5374 +7723 +3342 + +7830 +4687 +3639 +5942 +8019 +7531 +4763 +8086 + +2928 +12662 +1729 +15599 +7031 + +4504 +8351 +3310 +2860 +7474 +1052 +7088 +7300 +7653 + +3800 +3285 +2244 +6146 +1527 +2496 +3373 +2935 +4073 +2708 +5854 +4532 +4265 + +38782 + +3895 +2886 +3397 +10665 +7954 +5994 + +3830 +4381 +4042 +3631 +2109 +2742 +2748 +1117 +2772 +1921 +4357 +2960 +4504 +6021 +2300 + +5684 +30508 + +5467 +4827 +7991 +4299 +4152 +7070 +1911 +1345 +5607 +6490 +5631 + +2288 +4534 +1402 +2221 +2137 +4623 +5745 +1848 +1638 +2562 +1095 +2539 +4090 +3929 +4330 + +3776 +11693 +1189 +2039 +2662 +11224 +9212 + +3778 +1619 +4008 +1706 +1926 +3844 +5194 +3554 +6272 +2988 +4779 +5481 +1443 +6297 + +1712 +6076 +7332 +5267 +6685 +2555 +4517 +8692 +1819 + +23640 +10894 +25482 + +10592 +9277 +1228 +1197 +9162 +4838 +3783 +2691 + +15579 +16090 +5228 +4273 +5288 + +4044 +10911 +4767 +8658 +5775 +9369 +5332 + +8063 +4322 +5109 +6744 +5653 +9544 +2610 +2241 + +3885 +1140 +10508 +11910 +6096 + +7234 +15371 +10892 +15338 +12191 + +3698 +3413 +3783 +3362 +1828 +1302 +3426 +3147 +5558 +2644 +3636 +5842 +5261 +3312 +3164 + +3088 +1303 +2194 +5841 +5330 +5986 +4108 +4571 +7161 +6276 +5920 +5011 + +6546 +30555 + +5922 +2401 +4792 +7175 +7942 +5040 +3601 +2213 +6802 +2244 +6891 + +2694 +7905 +6046 +3782 +5591 +3665 +4195 +4579 +4300 +1822 + +6308 +2993 +5663 +4780 +6638 +6503 +6307 +4682 +7281 +4580 +7441 +5611 + +9706 +4619 +2108 +8345 +2422 +12140 +9146 + +4984 +10121 +4062 +3797 +5130 +1641 +11492 + +7592 +9412 +5474 +7809 +8073 +2056 +3839 +3557 + +7893 +3556 +9427 +2836 +10256 + +4410 +3041 +2124 +5830 +4200 +4102 +5146 +3355 +4318 +5422 +4992 +1979 +2696 +5277 +4058 + +13134 +35366 + +5363 +1706 +4925 +5967 +8514 +3362 +1424 +4427 +8906 + +2891 +4388 +10112 +3409 +2477 +1138 +3790 +4712 + +9130 +4622 +9723 +4660 +2778 +1083 +2326 +9254 + +3221 +4739 +3752 +1220 +10337 +1159 +2367 +1900 + +2038 +5545 +5904 +5378 +4334 +2897 +5745 +3670 +4773 +3087 +5760 +4026 +3719 +3084 + +8674 +8656 +4162 +5125 +4183 +3496 +7379 +6150 +5225 +8014 + +10321 +16081 +6163 +2030 + +31755 +18352 + +1666 +15493 +8858 +15689 + +1903 +7006 +9002 +5067 +9397 +8703 +7534 +8188 +4983 + +4398 +12055 +6820 +2412 +10308 +11231 + +5914 +9582 +4568 +7679 +5867 +5798 +2955 +7834 +1833 + +2554 +1886 +4590 +3753 +3161 +4039 +2435 +1172 +2690 +4564 +5160 +3715 +2834 +6074 +1251 + +9837 +4501 +3669 +7682 +2762 +6072 +8731 +2324 + +7030 +6956 +3040 +2185 +4717 +2907 +5255 +1194 +1309 +5100 +5630 +5164 + +18808 +5780 +13062 +16131 + +5436 +13758 +12390 +14884 + +5344 +3178 +1907 +6945 +6435 +3985 +3637 +6984 +2108 +2282 + +6870 +3774 +4149 +3361 +3208 +3696 +4265 +2295 +7068 +4365 +6729 + +9828 +3819 +7654 +2391 +11354 +6751 + +5409 +6025 +6772 +4005 +6894 +2723 +2485 +5866 +5744 +1804 +2509 +3285 +5663 + +6630 +7966 +6366 +2854 +3478 +6566 +3790 +4047 +8471 +5911 + +5930 +4813 +10365 +1430 + +13119 +11915 +4732 +9949 +13699 +9790 + +3413 +3027 +5513 +3320 +4421 +2507 +5781 +2622 +5472 +6590 +2021 +2164 +4106 + +49386 + +3656 +7422 +6157 +5982 +3944 +5726 +2628 +6618 +6138 +2186 +4744 + +33805 + +9976 +4213 +4359 +3723 + +4106 +1423 +3334 +5115 +3819 +1308 +2652 +5954 +4439 +2188 +3415 +1104 +2973 +1681 +4704 + +64085 + +1097 +4369 +3803 +3247 +5135 +6928 +3419 +2418 +5130 +2555 +3043 + +4831 +2425 +2023 +1667 +6410 +6422 +5851 +4966 +6721 +5312 +3792 +6700 +1545 + +1742 +5176 +8587 +9261 +15254 + +3097 +6016 +5558 +3004 +4372 +1986 +5576 +6105 +1709 +1326 +4997 +5528 +2823 +3072 + +1228 +2891 +3056 +5874 +2267 +2232 +1754 +3979 +1881 +6633 +1889 +5506 +4377 + +3703 +6310 +1020 +4891 +4911 +2913 +3888 +4642 +1963 +3716 +2222 +4528 +1030 +6081 + +10172 +1472 +6212 +9125 +9365 +7866 +3525 +4752 + +2546 +2326 +5739 +1010 +4724 +5324 +2495 +2999 +5272 +1937 +4396 +6333 +3632 + +2944 +1285 +3457 +1980 +2346 +5712 +5088 +3718 +2036 +6725 + +4335 +5577 +4533 +3275 +4297 +2774 +5029 + +1396 +5993 +4058 +1095 +4388 +1843 +1643 +6192 +2801 +2583 +4286 +5483 +2308 +1577 + +1584 +7552 +8133 +9503 +1989 + +4584 +7691 +4707 +5757 +2519 +2097 +1460 +6651 +3569 +1159 + +9366 +3998 +2020 +2598 +2166 +3298 +6533 +1323 + +10007 +2282 +10952 +3217 +8819 +7164 + +3095 +1126 +1893 +1540 +3172 +2310 +2566 +2438 +4431 +3423 +6675 + +4131 +9513 +11678 +5248 +7769 +3887 +3494 + +5382 +1013 +4021 +7366 +12330 +13746 + +3536 +4407 +1205 +6210 +1388 +6202 +5314 +3286 +6888 +3049 +3946 +3684 +4187 + +1934 +1285 +3262 +4136 +5790 +1340 +2597 +2992 +3008 +5698 +3688 +3086 +2459 +2413 +4769 + +2150 +1030 +3068 +3747 +5417 +4237 +3311 +5081 +4846 +5555 +4650 +3830 +2209 +3069 + +9935 +9564 +15110 + +3038 +2079 +1059 +4905 +4104 +3502 +6338 +1366 +5990 +6073 +4692 +4706 +3474 +3469 + +5845 +1176 +5553 +4578 +3868 +6154 +4799 +5079 +5927 +4185 +1806 +4449 +6248 + +1280 +2823 +1372 +5899 +2547 +5738 +1545 +1046 +2917 +4931 +6094 +3690 +5021 +4657 +1214 + +3046 +4952 +1138 +2373 +1412 +4848 +5772 +4750 +4741 +5752 +5977 +5270 +5526 +3509 +1793 + +3228 +9849 +11815 +6507 +10144 +4756 + +5119 +1764 +1718 +4813 +3662 +4731 +2755 +1315 +1975 +5716 +4859 +4748 +4809 +1296 +1689 + +2909 +7209 +6124 +3235 +4089 +1271 +6220 +10328 + +5630 +10237 +5572 +1065 +2126 +7181 + +32487 +2379 + +2718 +4228 +7834 +6711 +7619 +6321 +1080 +8584 +6860 +6542 + +5106 +8514 +6109 +1204 +5159 +7935 +7292 +8114 + +5898 +4837 +6825 +4587 +1021 +5713 +4862 +3864 +2022 +1129 +4444 +6439 +4369 + +8875 +7916 +2177 +2085 +8103 +7908 +6266 +9099 + +23274 +30650 + +5537 +21092 +21841 + +5852 +9025 +4459 +4883 +2577 +4679 +5673 +1548 +6726 + +4034 +2542 +15179 +6499 +3472 + +2228 +5558 +7863 +5080 +6441 +2064 +1676 +8473 + +18854 +5610 +18471 + +1196 +3063 +13221 +19006 + +37369 +24756 + +4271 +6806 +6381 +6363 +5221 +5729 +3829 +7832 +1150 +3352 +3210 + +1422 +2606 +6070 +4950 +4300 +4023 +1862 +5027 +5668 +5058 +3969 +2359 +5394 +6001 + +12165 +13318 +11945 +12507 +11398 + +9539 +8607 +7451 +11189 +11056 +3209 + +5845 +2759 +4046 +3838 +2768 +1168 +1237 +6370 +3384 +3938 +3946 +5028 +2603 + +20671 +8067 +7232 + +7376 +3530 +3343 +4917 +6712 +5080 +5846 +2774 +3020 +5738 +5500 + +5185 +2455 +6887 +7349 +1917 +2435 +2458 +3676 +1783 +8567 + +5585 +3750 +2664 +6867 +1506 +6830 +1279 +7877 +2757 +4091 +2731 + +11132 + +6128 +2421 +5519 +4390 +6457 +2769 +1410 +3365 +5682 +5685 +1502 +3245 + +1265 +7559 +8923 +1805 +9738 +3780 +9131 + +3052 +5440 +1672 +3462 +1053 +2902 +2137 +5053 +4905 +3544 +4374 +2718 +5799 + +24868 +18500 +13495 + +4653 +5142 +2117 +2908 +2324 +4335 +1096 +6733 +2380 +5352 +1830 +1893 +2491 + +3142 +4111 +4577 +6019 +1075 +2596 +4950 +5814 +5880 +5573 +3672 +2623 +5602 +1032 +5599 + +7365 +2959 +6303 +6111 +4607 +6530 +4873 +4367 +3776 + +16700 +7439 +4758 +6160 + +4203 +1817 +2941 +5662 +1387 +1698 +3031 +3718 +6087 +4971 +5592 +4460 +5271 +3867 +4998 + +22671 +4704 +23657 + +5028 +5059 +4212 +1200 +2284 +6082 +4589 +4383 +4682 +1243 +6449 +1380 +4515 + +10431 +11132 +13078 +3070 +8963 +1329 + +3931 +6924 +5760 +2448 +4709 +13742 + +4493 +4759 +5130 +5004 +7898 +8508 +6718 +2769 +5103 +4254 + +2261 +4383 +1602 +3767 +4634 +3704 +4242 +6316 +5351 +3531 +3470 +3904 + +3541 +2879 +1596 +4477 +1209 +2089 +4365 +4813 +1830 +1069 +2994 +6076 +3379 +4130 +4102 + +11774 +16285 +15432 + +1364 +3558 +5162 +4115 +2730 +3464 +2673 +4541 +5020 +5299 +3199 +3221 +4372 + +2696 +2080 +4206 +1901 +6091 +4955 +2674 +2184 +4977 +4339 +1011 +3766 +5911 +5316 +3703 + +21030 + +6714 +3093 +1168 +1507 +5134 +6516 +1572 +8383 + +5080 +7055 +6559 +4514 +7036 +7348 +5836 +2223 +1996 +4888 +3666 + +25117 +18822 + +2855 +4165 +4812 +8068 +6471 +4447 +4482 +4775 +1002 + +5999 +5674 +4022 +7403 +5593 +6164 +5109 +6856 +3449 +1689 +3727 +2115 + +5781 +4639 +3684 +4010 +4018 +1004 +3081 +1003 +1702 +1457 +1301 +2122 +2014 +5790 + +6373 +1849 +4389 +5772 +4888 +7981 +4238 +1476 +5550 +2922 + +1513 +8603 +5489 +6664 +4505 +7378 +4185 +8087 +6799 + +6482 +3622 +5516 +6214 +6243 +6214 +4711 +3038 +3398 +5483 +3145 +3536 + +9125 +5549 +8576 +5240 +6032 +7952 +5140 +7580 + +6079 +2048 +4407 +5706 +2535 +4588 +5182 +3204 +5287 +5221 +2457 +6932 +4174 + +5505 +1576 +13849 +5436 +2535 +3865 + +2178 +5420 +1013 +6435 +3810 +2903 +5079 +4332 +6257 +1344 +4511 +3127 +6464 + +3805 +2215 +1614 +2501 +1067 +1874 +6199 +1733 +2146 +6581 +3514 +1175 +1099 + +6473 +3376 +4934 +5773 +4970 +7229 +5716 +1014 +7507 +6012 + +3636 +3377 +5729 +2413 +6252 +3314 +2928 +2317 +1157 +2788 +3842 +3906 +4650 +5338 + +5103 +2724 +3794 +1431 +5838 +3971 +2107 +6475 +1746 +5986 +3736 +6345 +4124 +5664 + +3774 +2420 +1478 +2100 +2608 +1168 +1584 +1266 +1346 +1262 +6217 +6392 +2148 +4525 + +3294 +14112 +2438 +13482 +4287 + +10170 +4078 +4238 +3724 +8472 +9110 +5386 +3743 + +10397 +11155 +4476 +7990 +8374 +3340 +4575 + +27723 + +7777 +9699 +8470 +1721 +7728 +1288 +4458 +3428 + +12000 +5191 +8549 +9184 +3081 +11587 +9430 + +13626 +2596 +12534 +7672 +5161 +1160 + +7830 +3505 +7940 +4756 +6977 +3085 +2639 +6439 +4919 +1421 +5196 + +2714 +1424 +7020 +8593 +1436 +7652 +1146 +4168 +2069 +5958 + +38215 + +1436 +6327 +10725 +4280 +4509 +10301 +5183 +5166 + +6068 +8243 +6171 +5575 +9093 +6123 +2831 +5664 +6278 + +4093 +4619 +2578 +5902 +1131 +3288 +4886 +4994 +6088 +6377 +1852 +4254 +1419 +1504 + +7127 +8649 +2523 +8023 +3063 +2677 +1759 +8632 +7805 +2999 + +3419 +1111 +5599 +1055 +3407 +4964 +3556 +7249 +1100 +7148 +1852 +1549 + +5414 +11474 +1685 +8818 +10288 +6138 +1983 + +23129 +2195 + +3104 +1599 +2327 +3640 +2230 +2791 +2344 +1035 +1046 +3399 +5096 +1067 +1987 +5786 +1395 + +32647 +10609 + +6020 +2279 +8718 +3103 +7022 +6464 +6180 +3968 +3275 + +3221 +5381 +6110 +1860 +4557 +4705 +3658 +4172 +5002 +5578 +1355 +4114 +3501 +4821 + +1312 +1921 +2644 +5044 +3336 +4520 +1253 +3184 +3732 +6754 +2139 diff --git a/2022/day1/src/main.rs b/2022/day1/src/main.rs new file mode 100644 index 0000000..3624614 --- /dev/null +++ b/2022/day1/src/main.rs @@ -0,0 +1,44 @@ +use std::io::{stdin, Read}; +use libc::{clock_gettime, timespec, CLOCK_PROCESS_CPUTIME_ID}; + +fn main() { + + let mut biggest = 0; + let mut data = String::new(); + stdin().read_to_string(&mut data).unwrap(); + let mut begin = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut begin); + }; + + let calories = data.replace('\n', " "); + let lines = calories.split(" "); + for line in lines { + let mut cal_count = vec![]; + let nums = line.split_whitespace(); + for num in nums { + let num: i32 = num.trim().parse().unwrap(); + cal_count.push(num); + } + let total_sum: i32 = cal_count.iter().sum(); + if total_sum > biggest { + biggest = total_sum; + } + } + + let mut end = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut end); + }; + println!("{biggest:?}"); + println!( + "time: {:.6}ms", + (end.tv_nsec - begin.tv_nsec) as f32 / 1000.0 / 1000.0 + ); +} diff --git a/2022/day1p2/Cargo.lock b/2022/day1p2/Cargo.lock new file mode 100644 index 0000000..e3e759e --- /dev/null +++ b/2022/day1p2/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "day1p2" +version = "0.1.0" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.167" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" diff --git a/2022/day1p2/Cargo.toml b/2022/day1p2/Cargo.toml new file mode 100644 index 0000000..73e2dd1 --- /dev/null +++ b/2022/day1p2/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "day1p2" +version = "0.1.0" +edition = "2021" + +[dependencies] +libc = "0.2.167" diff --git a/2022/day1p2/src/input.txt b/2022/day1p2/src/input.txt new file mode 100644 index 0000000..1f757be --- /dev/null +++ b/2022/day1p2/src/input.txt @@ -0,0 +1,2236 @@ +7896 +4992 +1382 +2920 +7533 +2709 +6020 +5321 +2698 +6806 +8008 + +1340 +1472 +7147 +2707 +5491 +7003 +2337 +1401 +5309 +4385 +2805 + +6019 +1924 +8917 +6303 +9358 +3640 +1563 +1902 + +10946 +10333 +8504 +6110 +10157 + +4578 +1711 +3343 +6159 +4045 +3487 +3070 +5663 +3518 +5839 +5911 +4970 +4852 +4512 + +4277 +3324 +6172 +8272 +2707 +3292 +6599 +1204 +7030 +3075 + +6907 +5595 +10251 +8654 +4036 +11545 + +16787 +11035 +12217 + +2196 +1519 +5810 +6837 +1193 +6480 +1237 +1659 +4323 +2896 +3878 +2894 + +15886 +20356 +23636 + +8795 +7986 +14228 +15738 +13503 + +6598 +17951 +17508 +2446 + +1382 +3232 +6467 +2791 +6250 +2704 +3898 +5569 +8676 + +2582 +8767 +3195 +7957 +6614 + +24737 +34912 + +28868 +34308 + +2703 +20947 + +5548 +5930 +6705 +4227 +6120 +8723 +4597 + +5877 +1223 +5789 +2207 +3488 +5210 +3056 +4300 +3880 +1826 +5366 +4531 +2016 +5304 + +4226 +5314 +6437 +1737 +1229 +3757 +5128 +1058 +5940 +3344 +5188 +4963 +1403 +5498 + +4969 +3096 +7035 +2695 +4747 +5109 +6294 +7990 +1539 +2608 +2944 + +14127 +9751 +4842 +1106 +2779 + +11896 +6643 +15874 +10487 +4141 + +4696 +6644 +6285 +4321 +4080 +6888 +5213 +5048 +6545 +5848 +1690 +5351 +2560 + +17296 +4277 +8327 +7931 + +8374 +3794 +5435 +6968 +4768 +3458 + +5090 +5614 +9448 +10331 +1311 +12604 + +5126 +4860 +1299 +6934 +11746 +2628 +12132 + +6648 +8567 +10219 +2385 +3642 +10478 +7662 + +9206 +2176 +6472 +12314 + +7006 +9478 +2742 +12074 +11993 +3221 + +2458 +4271 +6417 +13749 +5411 + +7826 +4566 +10845 +4535 +5673 +8305 + +8264 +11302 +7040 +9481 +9935 +6624 +8376 + +10460 +20936 + +3456 +3498 +6808 +7408 +5543 +3673 +6672 +6650 +7560 +2477 +6505 + +6943 +3217 +6235 +5079 +1386 +3453 +1736 +4569 +1422 +2804 +5807 + +2241 +1925 +3348 +4805 +2575 +3656 +1379 +5628 +2348 +4652 +5052 +5788 +4128 +2160 + +4839 +3854 +3192 +4055 +1892 +5418 +6415 +1645 +1609 +3844 +3097 +2117 +4043 + +6996 +16021 +23549 + +5493 +5824 +7101 +5017 +8221 +5407 +1963 +6083 + +4896 +18916 +17584 +19464 + +2897 +1198 +1847 +4416 +3086 +2006 +1743 +1387 +3390 +1416 +4713 +3831 +2789 +5146 +2220 + +9452 +8265 +6453 +2831 +3803 +1928 +1047 +5087 +9454 + +2885 +1518 +5218 +2629 +5204 +3715 +4468 +4399 +3020 +5194 +5361 +4566 +5875 +3995 +3081 + +5435 +3159 +1378 +1333 +4491 +5405 +4858 +3744 +5468 +2313 +3014 +2236 + +7027 +5112 +6675 +1149 +5519 +7197 +5210 +3811 +1259 +3794 +2700 +6518 + +6066 +2040 +1948 +2972 +3816 +1477 +4477 +3085 +4169 +1245 +5008 +2016 +4449 +1544 +1511 + +5909 +3378 +12050 +6988 +11093 +8034 +2552 + +5647 +7225 +1416 +4531 +2148 +5176 +1086 +1268 +3907 + +8824 +12672 +6094 +4105 + +9982 +1255 +5102 +2060 +8348 +8610 +9019 + +6442 +8353 +2849 +6823 +5061 +8540 + +1020 +4819 +2371 +6452 +2589 +2140 +3018 +6422 +2079 +1049 +4183 +1959 +6889 + +3370 +20341 +6283 + +3568 +8914 +2474 +1840 +1092 +2901 +4619 + +5489 +5048 +2151 +1275 +4555 +6105 +6393 +5439 +1175 +3143 +1039 +6159 +4280 + +25302 +11104 + +16342 +19486 +6818 +5872 + +4287 +7300 +5106 +6009 +5397 +4743 +8786 +5374 +7723 +3342 + +7830 +4687 +3639 +5942 +8019 +7531 +4763 +8086 + +2928 +12662 +1729 +15599 +7031 + +4504 +8351 +3310 +2860 +7474 +1052 +7088 +7300 +7653 + +3800 +3285 +2244 +6146 +1527 +2496 +3373 +2935 +4073 +2708 +5854 +4532 +4265 + +38782 + +3895 +2886 +3397 +10665 +7954 +5994 + +3830 +4381 +4042 +3631 +2109 +2742 +2748 +1117 +2772 +1921 +4357 +2960 +4504 +6021 +2300 + +5684 +30508 + +5467 +4827 +7991 +4299 +4152 +7070 +1911 +1345 +5607 +6490 +5631 + +2288 +4534 +1402 +2221 +2137 +4623 +5745 +1848 +1638 +2562 +1095 +2539 +4090 +3929 +4330 + +3776 +11693 +1189 +2039 +2662 +11224 +9212 + +3778 +1619 +4008 +1706 +1926 +3844 +5194 +3554 +6272 +2988 +4779 +5481 +1443 +6297 + +1712 +6076 +7332 +5267 +6685 +2555 +4517 +8692 +1819 + +23640 +10894 +25482 + +10592 +9277 +1228 +1197 +9162 +4838 +3783 +2691 + +15579 +16090 +5228 +4273 +5288 + +4044 +10911 +4767 +8658 +5775 +9369 +5332 + +8063 +4322 +5109 +6744 +5653 +9544 +2610 +2241 + +3885 +1140 +10508 +11910 +6096 + +7234 +15371 +10892 +15338 +12191 + +3698 +3413 +3783 +3362 +1828 +1302 +3426 +3147 +5558 +2644 +3636 +5842 +5261 +3312 +3164 + +3088 +1303 +2194 +5841 +5330 +5986 +4108 +4571 +7161 +6276 +5920 +5011 + +6546 +30555 + +5922 +2401 +4792 +7175 +7942 +5040 +3601 +2213 +6802 +2244 +6891 + +2694 +7905 +6046 +3782 +5591 +3665 +4195 +4579 +4300 +1822 + +6308 +2993 +5663 +4780 +6638 +6503 +6307 +4682 +7281 +4580 +7441 +5611 + +9706 +4619 +2108 +8345 +2422 +12140 +9146 + +4984 +10121 +4062 +3797 +5130 +1641 +11492 + +7592 +9412 +5474 +7809 +8073 +2056 +3839 +3557 + +7893 +3556 +9427 +2836 +10256 + +4410 +3041 +2124 +5830 +4200 +4102 +5146 +3355 +4318 +5422 +4992 +1979 +2696 +5277 +4058 + +13134 +35366 + +5363 +1706 +4925 +5967 +8514 +3362 +1424 +4427 +8906 + +2891 +4388 +10112 +3409 +2477 +1138 +3790 +4712 + +9130 +4622 +9723 +4660 +2778 +1083 +2326 +9254 + +3221 +4739 +3752 +1220 +10337 +1159 +2367 +1900 + +2038 +5545 +5904 +5378 +4334 +2897 +5745 +3670 +4773 +3087 +5760 +4026 +3719 +3084 + +8674 +8656 +4162 +5125 +4183 +3496 +7379 +6150 +5225 +8014 + +10321 +16081 +6163 +2030 + +31755 +18352 + +1666 +15493 +8858 +15689 + +1903 +7006 +9002 +5067 +9397 +8703 +7534 +8188 +4983 + +4398 +12055 +6820 +2412 +10308 +11231 + +5914 +9582 +4568 +7679 +5867 +5798 +2955 +7834 +1833 + +2554 +1886 +4590 +3753 +3161 +4039 +2435 +1172 +2690 +4564 +5160 +3715 +2834 +6074 +1251 + +9837 +4501 +3669 +7682 +2762 +6072 +8731 +2324 + +7030 +6956 +3040 +2185 +4717 +2907 +5255 +1194 +1309 +5100 +5630 +5164 + +18808 +5780 +13062 +16131 + +5436 +13758 +12390 +14884 + +5344 +3178 +1907 +6945 +6435 +3985 +3637 +6984 +2108 +2282 + +6870 +3774 +4149 +3361 +3208 +3696 +4265 +2295 +7068 +4365 +6729 + +9828 +3819 +7654 +2391 +11354 +6751 + +5409 +6025 +6772 +4005 +6894 +2723 +2485 +5866 +5744 +1804 +2509 +3285 +5663 + +6630 +7966 +6366 +2854 +3478 +6566 +3790 +4047 +8471 +5911 + +5930 +4813 +10365 +1430 + +13119 +11915 +4732 +9949 +13699 +9790 + +3413 +3027 +5513 +3320 +4421 +2507 +5781 +2622 +5472 +6590 +2021 +2164 +4106 + +49386 + +3656 +7422 +6157 +5982 +3944 +5726 +2628 +6618 +6138 +2186 +4744 + +33805 + +9976 +4213 +4359 +3723 + +4106 +1423 +3334 +5115 +3819 +1308 +2652 +5954 +4439 +2188 +3415 +1104 +2973 +1681 +4704 + +64085 + +1097 +4369 +3803 +3247 +5135 +6928 +3419 +2418 +5130 +2555 +3043 + +4831 +2425 +2023 +1667 +6410 +6422 +5851 +4966 +6721 +5312 +3792 +6700 +1545 + +1742 +5176 +8587 +9261 +15254 + +3097 +6016 +5558 +3004 +4372 +1986 +5576 +6105 +1709 +1326 +4997 +5528 +2823 +3072 + +1228 +2891 +3056 +5874 +2267 +2232 +1754 +3979 +1881 +6633 +1889 +5506 +4377 + +3703 +6310 +1020 +4891 +4911 +2913 +3888 +4642 +1963 +3716 +2222 +4528 +1030 +6081 + +10172 +1472 +6212 +9125 +9365 +7866 +3525 +4752 + +2546 +2326 +5739 +1010 +4724 +5324 +2495 +2999 +5272 +1937 +4396 +6333 +3632 + +2944 +1285 +3457 +1980 +2346 +5712 +5088 +3718 +2036 +6725 + +4335 +5577 +4533 +3275 +4297 +2774 +5029 + +1396 +5993 +4058 +1095 +4388 +1843 +1643 +6192 +2801 +2583 +4286 +5483 +2308 +1577 + +1584 +7552 +8133 +9503 +1989 + +4584 +7691 +4707 +5757 +2519 +2097 +1460 +6651 +3569 +1159 + +9366 +3998 +2020 +2598 +2166 +3298 +6533 +1323 + +10007 +2282 +10952 +3217 +8819 +7164 + +3095 +1126 +1893 +1540 +3172 +2310 +2566 +2438 +4431 +3423 +6675 + +4131 +9513 +11678 +5248 +7769 +3887 +3494 + +5382 +1013 +4021 +7366 +12330 +13746 + +3536 +4407 +1205 +6210 +1388 +6202 +5314 +3286 +6888 +3049 +3946 +3684 +4187 + +1934 +1285 +3262 +4136 +5790 +1340 +2597 +2992 +3008 +5698 +3688 +3086 +2459 +2413 +4769 + +2150 +1030 +3068 +3747 +5417 +4237 +3311 +5081 +4846 +5555 +4650 +3830 +2209 +3069 + +9935 +9564 +15110 + +3038 +2079 +1059 +4905 +4104 +3502 +6338 +1366 +5990 +6073 +4692 +4706 +3474 +3469 + +5845 +1176 +5553 +4578 +3868 +6154 +4799 +5079 +5927 +4185 +1806 +4449 +6248 + +1280 +2823 +1372 +5899 +2547 +5738 +1545 +1046 +2917 +4931 +6094 +3690 +5021 +4657 +1214 + +3046 +4952 +1138 +2373 +1412 +4848 +5772 +4750 +4741 +5752 +5977 +5270 +5526 +3509 +1793 + +3228 +9849 +11815 +6507 +10144 +4756 + +5119 +1764 +1718 +4813 +3662 +4731 +2755 +1315 +1975 +5716 +4859 +4748 +4809 +1296 +1689 + +2909 +7209 +6124 +3235 +4089 +1271 +6220 +10328 + +5630 +10237 +5572 +1065 +2126 +7181 + +32487 +2379 + +2718 +4228 +7834 +6711 +7619 +6321 +1080 +8584 +6860 +6542 + +5106 +8514 +6109 +1204 +5159 +7935 +7292 +8114 + +5898 +4837 +6825 +4587 +1021 +5713 +4862 +3864 +2022 +1129 +4444 +6439 +4369 + +8875 +7916 +2177 +2085 +8103 +7908 +6266 +9099 + +23274 +30650 + +5537 +21092 +21841 + +5852 +9025 +4459 +4883 +2577 +4679 +5673 +1548 +6726 + +4034 +2542 +15179 +6499 +3472 + +2228 +5558 +7863 +5080 +6441 +2064 +1676 +8473 + +18854 +5610 +18471 + +1196 +3063 +13221 +19006 + +37369 +24756 + +4271 +6806 +6381 +6363 +5221 +5729 +3829 +7832 +1150 +3352 +3210 + +1422 +2606 +6070 +4950 +4300 +4023 +1862 +5027 +5668 +5058 +3969 +2359 +5394 +6001 + +12165 +13318 +11945 +12507 +11398 + +9539 +8607 +7451 +11189 +11056 +3209 + +5845 +2759 +4046 +3838 +2768 +1168 +1237 +6370 +3384 +3938 +3946 +5028 +2603 + +20671 +8067 +7232 + +7376 +3530 +3343 +4917 +6712 +5080 +5846 +2774 +3020 +5738 +5500 + +5185 +2455 +6887 +7349 +1917 +2435 +2458 +3676 +1783 +8567 + +5585 +3750 +2664 +6867 +1506 +6830 +1279 +7877 +2757 +4091 +2731 + +11132 + +6128 +2421 +5519 +4390 +6457 +2769 +1410 +3365 +5682 +5685 +1502 +3245 + +1265 +7559 +8923 +1805 +9738 +3780 +9131 + +3052 +5440 +1672 +3462 +1053 +2902 +2137 +5053 +4905 +3544 +4374 +2718 +5799 + +24868 +18500 +13495 + +4653 +5142 +2117 +2908 +2324 +4335 +1096 +6733 +2380 +5352 +1830 +1893 +2491 + +3142 +4111 +4577 +6019 +1075 +2596 +4950 +5814 +5880 +5573 +3672 +2623 +5602 +1032 +5599 + +7365 +2959 +6303 +6111 +4607 +6530 +4873 +4367 +3776 + +16700 +7439 +4758 +6160 + +4203 +1817 +2941 +5662 +1387 +1698 +3031 +3718 +6087 +4971 +5592 +4460 +5271 +3867 +4998 + +22671 +4704 +23657 + +5028 +5059 +4212 +1200 +2284 +6082 +4589 +4383 +4682 +1243 +6449 +1380 +4515 + +10431 +11132 +13078 +3070 +8963 +1329 + +3931 +6924 +5760 +2448 +4709 +13742 + +4493 +4759 +5130 +5004 +7898 +8508 +6718 +2769 +5103 +4254 + +2261 +4383 +1602 +3767 +4634 +3704 +4242 +6316 +5351 +3531 +3470 +3904 + +3541 +2879 +1596 +4477 +1209 +2089 +4365 +4813 +1830 +1069 +2994 +6076 +3379 +4130 +4102 + +11774 +16285 +15432 + +1364 +3558 +5162 +4115 +2730 +3464 +2673 +4541 +5020 +5299 +3199 +3221 +4372 + +2696 +2080 +4206 +1901 +6091 +4955 +2674 +2184 +4977 +4339 +1011 +3766 +5911 +5316 +3703 + +21030 + +6714 +3093 +1168 +1507 +5134 +6516 +1572 +8383 + +5080 +7055 +6559 +4514 +7036 +7348 +5836 +2223 +1996 +4888 +3666 + +25117 +18822 + +2855 +4165 +4812 +8068 +6471 +4447 +4482 +4775 +1002 + +5999 +5674 +4022 +7403 +5593 +6164 +5109 +6856 +3449 +1689 +3727 +2115 + +5781 +4639 +3684 +4010 +4018 +1004 +3081 +1003 +1702 +1457 +1301 +2122 +2014 +5790 + +6373 +1849 +4389 +5772 +4888 +7981 +4238 +1476 +5550 +2922 + +1513 +8603 +5489 +6664 +4505 +7378 +4185 +8087 +6799 + +6482 +3622 +5516 +6214 +6243 +6214 +4711 +3038 +3398 +5483 +3145 +3536 + +9125 +5549 +8576 +5240 +6032 +7952 +5140 +7580 + +6079 +2048 +4407 +5706 +2535 +4588 +5182 +3204 +5287 +5221 +2457 +6932 +4174 + +5505 +1576 +13849 +5436 +2535 +3865 + +2178 +5420 +1013 +6435 +3810 +2903 +5079 +4332 +6257 +1344 +4511 +3127 +6464 + +3805 +2215 +1614 +2501 +1067 +1874 +6199 +1733 +2146 +6581 +3514 +1175 +1099 + +6473 +3376 +4934 +5773 +4970 +7229 +5716 +1014 +7507 +6012 + +3636 +3377 +5729 +2413 +6252 +3314 +2928 +2317 +1157 +2788 +3842 +3906 +4650 +5338 + +5103 +2724 +3794 +1431 +5838 +3971 +2107 +6475 +1746 +5986 +3736 +6345 +4124 +5664 + +3774 +2420 +1478 +2100 +2608 +1168 +1584 +1266 +1346 +1262 +6217 +6392 +2148 +4525 + +3294 +14112 +2438 +13482 +4287 + +10170 +4078 +4238 +3724 +8472 +9110 +5386 +3743 + +10397 +11155 +4476 +7990 +8374 +3340 +4575 + +27723 + +7777 +9699 +8470 +1721 +7728 +1288 +4458 +3428 + +12000 +5191 +8549 +9184 +3081 +11587 +9430 + +13626 +2596 +12534 +7672 +5161 +1160 + +7830 +3505 +7940 +4756 +6977 +3085 +2639 +6439 +4919 +1421 +5196 + +2714 +1424 +7020 +8593 +1436 +7652 +1146 +4168 +2069 +5958 + +38215 + +1436 +6327 +10725 +4280 +4509 +10301 +5183 +5166 + +6068 +8243 +6171 +5575 +9093 +6123 +2831 +5664 +6278 + +4093 +4619 +2578 +5902 +1131 +3288 +4886 +4994 +6088 +6377 +1852 +4254 +1419 +1504 + +7127 +8649 +2523 +8023 +3063 +2677 +1759 +8632 +7805 +2999 + +3419 +1111 +5599 +1055 +3407 +4964 +3556 +7249 +1100 +7148 +1852 +1549 + +5414 +11474 +1685 +8818 +10288 +6138 +1983 + +23129 +2195 + +3104 +1599 +2327 +3640 +2230 +2791 +2344 +1035 +1046 +3399 +5096 +1067 +1987 +5786 +1395 + +32647 +10609 + +6020 +2279 +8718 +3103 +7022 +6464 +6180 +3968 +3275 + +3221 +5381 +6110 +1860 +4557 +4705 +3658 +4172 +5002 +5578 +1355 +4114 +3501 +4821 + +1312 +1921 +2644 +5044 +3336 +4520 +1253 +3184 +3732 +6754 +2139 diff --git a/2022/day1p2/src/main.rs b/2022/day1p2/src/main.rs new file mode 100644 index 0000000..5817a51 --- /dev/null +++ b/2022/day1p2/src/main.rs @@ -0,0 +1,45 @@ +use std::io::{stdin, Read}; +use libc::{clock_gettime, timespec, CLOCK_PROCESS_CPUTIME_ID}; + +fn main() { + + let mut data = String::new(); + stdin().read_to_string(&mut data).unwrap(); + let mut begin = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut begin); + }; + + let calories = data.replace('\n', " "); + let lines = calories.split(" "); + let mut all_cals = vec![]; + for line in lines { + let mut cal_count = vec![]; + let nums = line.split_whitespace(); + for num in nums { + let num: i32 = num.trim().parse().unwrap(); + cal_count.push(num); + } + let total_sum: i32 = cal_count.iter().sum(); + all_cals.push(total_sum); + } + all_cals.sort_unstable(); + all_cals.reverse(); + let sum = all_cals[0] + all_cals[1] + all_cals[2]; + + let mut end = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut end); + }; + println!("{sum:?}"); + println!( + "time: {:.6}ms", + (end.tv_nsec - begin.tv_nsec) as f32 / 1000.0 / 1000.0 + ); +} diff --git a/2023/day2p2/src/main.rs b/2023/day2p2/src/main.rs index 80c19c2..5655103 100644 --- a/2023/day2p2/src/main.rs +++ b/2023/day2p2/src/main.rs @@ -42,7 +42,9 @@ fn main() { let blue_largest = blue.iter().max(); let green_largest = green.iter().max(); let temp = red_largest.unwrap() * blue_largest.unwrap() * green_largest.unwrap(); + let before_sum = sum; sum += temp; + println!("{red_largest:?} * {blue_largest:?} * {green_largest:?} + {before_sum:?} = {sum:?}") } println!("{sum}"); diff --git a/2024/day1/Cargo.lock b/2024/day1/Cargo.lock new file mode 100644 index 0000000..dcddf63 --- /dev/null +++ b/2024/day1/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "day1" +version = "0.1.0" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.167" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" diff --git a/2024/day1/Cargo.toml b/2024/day1/Cargo.toml new file mode 100644 index 0000000..c356738 --- /dev/null +++ b/2024/day1/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "day1" +version = "0.1.0" +edition = "2021" + +[dependencies] +libc = "0.2.167" diff --git a/2024/day1/src/input.txt b/2024/day1/src/input.txt new file mode 100644 index 0000000..aeffb6a --- /dev/null +++ b/2024/day1/src/input.txt @@ -0,0 +1,1000 @@ +69214 60950 +83241 49638 +37930 31308 +50722 94914 +93164 82798 +80918 72850 +17490 79421 +64372 87820 +89659 98375 +91555 95812 +48924 93602 +38031 64096 +57853 20530 +88521 43214 +68331 14770 +32767 19574 +95030 92579 +80448 10870 +27268 86384 +18742 65926 +50258 95193 +88830 17352 +73007 82798 +95145 42403 +58976 17352 +22476 68379 +21785 17811 +21560 90827 +82909 37527 +55371 69778 +73607 32404 +88276 44965 +86274 46099 +61163 63445 +52231 27046 +84647 20530 +37515 57298 +44394 99003 +58258 74954 +56060 34105 +79808 73814 +96748 51318 +87301 46022 +93991 44642 +45674 96969 +10870 49159 +13175 23840 +12881 86704 +11425 89064 +71044 92543 +70247 88369 +97814 73317 +78003 44160 +45779 14598 +95915 46875 +51055 99003 +14500 19574 +40956 23840 +64791 99735 +95406 51318 +18800 72878 +85004 33238 +16723 31504 +14333 69398 +40419 10870 +81499 79136 +31696 24276 +71897 55421 +63928 46875 +46875 33198 +40086 76959 +67622 29550 +63819 88369 +74694 35769 +63615 20200 +88828 58414 +58917 20414 +86066 24696 +84677 47814 +87339 89616 +30182 36007 +71811 63762 +26364 18927 +45435 54026 +65473 83062 +40764 12795 +86131 19574 +46984 71532 +94658 36666 +34864 85172 +74271 85172 +37126 63381 +26701 91608 +11846 99003 +91698 44394 +19986 17352 +31279 82252 +25542 10870 +43023 98869 +25001 25208 +39137 44758 +75796 94436 +93491 42015 +16837 69895 +78167 59486 +56738 17811 +66303 49575 +91100 33987 +99100 41554 +46126 41472 +31826 20530 +61208 20200 +98875 49776 +89960 23840 +87445 88369 +90701 59605 +48604 24766 +49830 60581 +32422 32404 +48321 49338 +91545 51318 +30591 23840 +76791 25366 +47653 64300 +70447 10870 +96337 10870 +40822 99003 +50985 36666 +45600 58520 +78539 21021 +11792 39770 +89999 23840 +22229 24252 +79514 31414 +93645 99874 +39916 12567 +63722 87301 +85209 12845 +78460 94436 +79669 33420 +89396 36762 +12518 91072 +70992 20530 +92482 51318 +50977 39809 +59666 93602 +69358 24889 +30774 85209 +50495 88117 +74843 68135 +64043 93602 +42690 14598 +95474 99003 +31999 10870 +77935 30381 +86471 46022 +82671 23840 +21996 17352 +25301 68950 +45903 49209 +88433 15186 +18897 13349 +23742 38006 +29440 44394 +77679 19534 +67503 19006 +22862 87523 +68125 36752 +32102 85209 +57298 32444 +44985 10870 +76984 88369 +96974 44648 +22496 17352 +19906 88369 +53085 69481 +49762 39320 +23508 13349 +73366 19574 +39420 85172 +21487 20200 +49538 31279 +58985 33747 +78834 86304 +83207 77460 +26624 39320 +33276 87130 +62119 15410 +72488 72850 +69108 46022 +28383 64125 +45283 60950 +56242 88580 +47120 46022 +20917 12845 +91088 67959 +30625 92579 +81302 98117 +14883 22568 +45215 46818 +36185 72873 +47369 19661 +39320 48658 +35775 60950 +20573 66758 +92168 46875 +85925 23570 +83017 28941 +88673 62352 +85790 46022 +40389 17811 +13925 14598 +65265 98819 +21058 70060 +81605 36401 +49669 63107 +58410 60950 +20993 32404 +89320 36606 +93679 89908 +24396 66724 +26960 82887 +35749 98507 +67814 60950 +95966 99777 +45832 90281 +21396 69067 +70924 77174 +51921 31279 +86430 41554 +60703 76733 +55109 86032 +64568 34984 +61181 39320 +76019 80530 +93405 35718 +40732 73310 +27676 56302 +46615 12644 +94412 32659 +42651 46875 +22911 88369 +37891 61401 +39505 19574 +30551 99381 +52001 99003 +94890 77236 +12845 10870 +60037 99735 +17811 93480 +39461 52563 +70835 99003 +26239 32404 +21199 53413 +29427 61865 +99745 52578 +58368 85172 +32844 17811 +25356 61341 +55087 39124 +73711 94153 +23878 15193 +19011 15821 +55522 76895 +25442 85172 +43553 23840 +79059 51318 +45546 85172 +18253 46875 +13486 98333 +85621 78640 +94812 14598 +35976 22851 +95446 35811 +68679 86540 +35048 32404 +32404 58367 +54639 82218 +46890 99735 +54797 64140 +58043 28678 +38310 78102 +96824 19574 +82010 90281 +44558 88560 +25947 55410 +39754 90281 +85172 77816 +38409 72850 +93847 79705 +70670 31866 +66466 72850 +14378 85172 +10594 82798 +88488 36494 +80919 90281 +15539 60764 +76757 20530 +73014 80854 +10103 28777 +63011 51318 +97931 72850 +11511 23511 +90999 46778 +10581 17352 +24639 84344 +12573 87301 +94628 73454 +68709 60950 +69611 36666 +77840 32404 +56046 43452 +64975 36666 +35086 27046 +21044 63339 +27003 32404 +99990 41554 +92558 76384 +10676 51318 +79869 34929 +41478 23840 +40010 17811 +57724 13349 +36886 20530 +52799 39658 +74618 28890 +37677 39602 +25056 19780 +37249 60950 +16420 21533 +92579 91814 +32467 76018 +50446 40645 +20800 27046 +25367 93602 +20200 50429 +67153 82421 +99387 85172 +99003 99003 +21079 68678 +21496 45196 +10244 85172 +60317 96967 +89792 64416 +66971 28760 +48409 49209 +87836 13036 +94588 25049 +19574 80163 +43975 90281 +54578 22870 +24412 17352 +66935 85209 +75103 46748 +99675 13318 +63283 86570 +38622 17811 +76156 12554 +18868 31279 +95097 28731 +87940 25307 +31588 20683 +86721 51679 +40662 60665 +61441 46875 +95742 96428 +12500 48663 +69704 83722 +52150 52130 +94648 71064 +34905 72850 +90241 81541 +22820 88917 +84893 82798 +35291 13349 +91607 69674 +91250 89186 +12934 76205 +50355 10870 +11918 93561 +11981 87504 +90011 97792 +19160 99003 +38536 95219 +47433 72254 +71173 20241 +58871 49592 +99297 46875 +14256 36666 +42700 92579 +65952 26453 +38344 17352 +31939 66675 +88319 31279 +48532 69055 +54160 37364 +51367 98234 +63774 67948 +91398 52760 +19606 98639 +15722 27046 +11670 27046 +11752 90281 +57229 24766 +92900 82069 +35472 17352 +11762 10464 +52327 51318 +49806 24252 +83152 27046 +66672 11070 +13349 20530 +10860 67520 +34902 74641 +36500 14208 +90699 24766 +65392 68056 +67360 23840 +20770 12845 +27579 17811 +52424 20530 +88044 70562 +82234 32404 +38116 23840 +71095 60884 +35234 10870 +74397 36937 +59605 79377 +33516 82798 +83961 17811 +17934 81965 +58619 60950 +24784 46183 +60415 32404 +33999 62356 +70899 42550 +71992 61565 +31607 48168 +82993 27705 +98377 72447 +19236 97390 +69248 97543 +12305 39320 +12750 72850 +67143 47302 +51085 13713 +21283 84586 +58438 20530 +61450 84960 +77223 87301 +40730 18648 +61388 92620 +10697 95051 +29817 46022 +44526 85172 +42126 23970 +91131 24766 +53762 23485 +99711 24766 +41168 12845 +89661 97679 +19509 87301 +46491 87301 +82876 90281 +57530 99003 +30070 12845 +37182 33467 +98660 94041 +53088 49209 +23056 33662 +59488 88369 +27659 76043 +85486 46875 +33558 87301 +64995 54418 +58406 20530 +52353 12845 +52674 84792 +97158 41554 +36966 65903 +96617 15049 +17881 23393 +38135 27655 +35640 10870 +75976 78468 +54361 85172 +70827 74733 +23840 16180 +93190 51318 +75051 18196 +64409 85172 +20040 48165 +92938 97826 +43465 51609 +11298 78526 +99421 92903 +21674 62444 +68613 17352 +40038 68779 +90984 49209 +72223 99735 +99618 84903 +96274 37409 +54840 85533 +77678 96379 +79087 33036 +27866 23840 +94127 87366 +83829 46731 +21118 27046 +54767 58444 +31592 39320 +84251 80340 +16359 47980 +33404 86692 +30167 53720 +54633 57298 +64214 85172 +65936 94436 +26779 72257 +56981 16995 +88384 14598 +16954 12845 +19265 34877 +20882 10870 +24268 37193 +73896 73107 +17491 64788 +34135 96478 +97863 20530 +33458 41554 +87234 13349 +17021 43950 +43735 46022 +41413 51318 +23370 27518 +40859 52659 +20847 55643 +78780 46875 +89412 44659 +44732 85942 +15416 41554 +20026 13573 +20447 20530 +92208 27046 +22919 47883 +19025 66716 +78537 94436 +21990 13835 +57022 47578 +23379 27046 +10223 40352 +70096 99003 +27889 86884 +73766 50077 +17352 59737 +18766 53132 +85353 82798 +16699 76756 +18043 80464 +67635 32404 +89066 32404 +96095 36666 +80193 17352 +83111 24567 +82714 51318 +15568 62699 +46071 88369 +24766 17393 +24252 51318 +90799 65043 +45593 42548 +42434 88369 +76708 19788 +44049 17352 +26070 23840 +89487 60950 +75405 50409 +61151 50949 +55659 87976 +97690 10769 +23955 41554 +51413 44394 +93303 74623 +88340 46875 +36666 86119 +68983 36666 +97452 18100 +77775 28288 +93498 85175 +35180 73788 +88369 40289 +60950 89290 +80469 99735 +44830 26094 +56953 12845 +14598 32404 +48010 43254 +51318 16119 +70157 59605 +29536 27046 +97148 24766 +88940 99003 +94267 12845 +80689 82798 +51360 63373 +22949 85172 +61037 87301 +12068 65294 +29715 85209 +90504 28648 +31564 88812 +33933 82995 +29523 72320 +77893 80865 +55688 78887 +24079 24766 +13322 32095 +89943 48334 +29072 58704 +53586 12845 +23918 14598 +56128 88548 +66658 69626 +10133 67845 +99815 85172 +68216 99003 +46022 15395 +83063 21232 +62075 23840 +53883 14598 +66467 32404 +47896 69944 +71785 51318 +84153 16006 +29778 85209 +31766 24766 +16108 35318 +45369 94436 +40723 88485 +65628 31279 +22238 45332 +91501 92579 +17080 83343 +27106 17811 +52006 13517 +10554 96843 +42902 54855 +78074 59112 +76079 19574 +66574 37842 +30704 87301 +61970 72591 +75806 89415 +65083 36666 +44142 88369 +89309 18398 +14755 24252 +31582 10397 +71879 12845 +50300 19574 +55843 62837 +70241 67656 +13864 12845 +56863 36666 +28825 19574 +93845 22897 +20530 17811 +44137 13349 +47611 49209 +76632 71061 +96396 85003 +21784 28828 +10465 28473 +76247 12845 +90281 62295 +68036 85383 +98495 49331 +66489 17352 +73992 89989 +27262 24766 +46644 88369 +27046 58715 +68306 32404 +56759 84611 +59597 99003 +35807 11412 +81247 66456 +28886 94970 +93602 74875 +28876 50501 +83548 98501 +42548 74927 +17737 60997 +39564 95234 +38730 39320 +15305 62977 +64475 20570 +88203 27046 +49209 46875 +58403 94223 +33211 79621 +12588 80687 +38930 17322 +57720 87301 +70408 29585 +35638 23840 +97473 19574 +79297 10870 +82229 27046 +86569 17352 +25113 78295 +16476 24791 +75345 94436 +15696 12845 +24138 49905 +82572 27046 +88539 39320 +59729 87301 +20283 39331 +31336 21205 +93878 31692 +69846 72850 +54419 91006 +82798 84255 +49394 40818 +69345 52987 +39250 60950 +26399 87538 +32384 19159 +97484 43143 +63090 32208 +76597 23840 +14020 32404 +62045 75497 +18689 32404 +52623 31279 +52491 98683 +87906 85172 +82114 99003 +26961 70112 +17367 46022 +98279 88369 +71505 25937 +19537 25375 +21670 28451 +56125 19574 +60764 46875 +77962 17811 +91463 54069 +47556 59029 +83067 87301 +55521 80404 +51846 52594 +34746 10952 +41554 91631 +87263 59965 +22625 42548 +44644 80377 +66676 31212 +10499 11321 +70675 99003 +40581 51732 +87994 39961 +94436 46875 +97737 62666 +79484 41644 +53333 41554 +42911 19574 +37210 96788 +12286 93469 +86302 78835 +89841 90378 +79773 45455 +91417 19811 +61800 38053 +23495 95310 +31663 12652 +26644 88369 +46904 97345 +26299 32404 +81023 72850 +20782 94436 +48451 85172 +42895 83143 +53844 46875 +49912 17811 +86234 53747 +98733 85172 +90395 51318 +87860 36666 +62319 36666 +81832 87028 +96801 48785 +34060 94915 +19206 46022 +61175 74300 +38749 61982 +35243 89642 +94052 22838 +68544 23840 +38895 31279 +13279 49209 +47468 46826 +94318 87301 +71918 17811 +86789 41554 +83931 71452 +71126 88369 +16125 55867 +39086 95213 +16328 12845 +71229 20530 +79671 67001 +91145 23840 +53528 48955 +23966 39867 +36677 77019 +77291 20530 +32335 93201 +94998 17586 +16372 41181 +99014 80727 +61040 99055 +93576 82718 +92791 61735 +79499 80967 +71009 12845 +16657 20530 +75219 41824 +49208 87301 +65336 94436 +39833 67725 +39788 22450 +15097 96722 +13674 82562 +35721 69206 +46963 17811 +90463 24766 +78488 41554 +78916 60727 +59443 90281 +43680 13349 +36601 60950 +41176 94271 +43717 80804 +37766 20530 +82109 88369 +17559 32947 +28284 49209 +22341 88369 +31223 60082 +39647 82580 +64525 13349 +29368 12845 +98386 28932 +64817 77829 +46178 39365 +95082 92579 +70089 81861 +72539 51350 +11579 42548 +63864 77114 +13611 87301 +71054 84124 +49549 56474 +98626 76586 +21372 87832 +42043 32404 +51898 88369 +29323 22433 +64305 30520 +70362 18267 +26501 73191 +10172 41554 +19438 36666 +17316 20200 +13127 51318 +11331 23840 +37354 22773 +34872 20249 +48467 85209 +36745 10870 +97478 88369 +29324 10246 +24179 63888 +24371 39320 +61932 45220 +55020 10320 +64150 36160 +68372 52644 +10714 64027 +68990 57768 +72825 40811 +85765 77880 +32558 20200 +78846 93936 +71711 85172 +90337 94436 +32298 76808 +86944 38430 +36174 29108 +53613 72165 +79549 43129 +43539 44170 +61122 88369 +30084 56992 +49969 39320 +38272 86708 +11594 30429 +69508 70293 +21588 68766 +97316 76575 +97425 41520 +62763 31254 +63345 23840 +43015 93602 +52670 82798 +58251 48255 +33771 20530 +12901 25496 +42101 41554 +43970 67658 +90983 88369 +33538 93514 +89043 26380 +65451 82798 +73769 28981 +78129 70224 +84083 78572 +72978 28610 +81230 47914 +97477 75916 +96888 42548 +24917 39320 +97486 78173 +13312 51318 +27167 93602 +76762 20600 +72850 47594 +24623 58718 +99735 87301 +92737 39670 +33120 59605 +63398 20200 +38385 98299 +81987 53969 +62260 51318 +67235 63713 +85100 42047 +27762 90281 +13906 51318 +85558 36666 +42148 12845 +88468 20200 +92033 32404 +39309 32404 +99521 99391 +80929 17352 +28236 46875 +83442 20530 +50329 10870 +75224 47197 +71764 99003 +22012 82219 +89620 28881 +60052 88379 +98379 44694 +47207 94436 +47361 40762 +96159 17352 +61549 84760 +36863 80773 +28638 90281 +28879 24766 +24022 55460 +25334 10870 +25095 46875 +14190 63285 +66088 70993 +36470 50008 +47970 87301 +35396 17811 +24123 47037 +26462 52299 +49162 12845 +88098 87301 +53920 59862 +84177 10870 +18969 36666 +55280 11340 +14058 68145 +13245 14598 +23434 46622 +56966 78829 +77060 71967 +25997 57796 +41947 82348 +52576 12845 +91921 51318 diff --git a/2024/day1/src/main.rs b/2024/day1/src/main.rs new file mode 100644 index 0000000..73fa7a7 --- /dev/null +++ b/2024/day1/src/main.rs @@ -0,0 +1,47 @@ +use std::io::{stdin, Read}; +use libc::{clock_gettime, timespec, CLOCK_PROCESS_CPUTIME_ID}; + +fn main() { + let mut data = String::new(); + stdin().read_to_string(&mut data).unwrap(); + + let mut begin = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut begin); + }; + + let mut num1 = vec![]; + let mut num2 = vec![]; + + for line in data.lines() { + let numbers: Vec<&str> = line.split(" ").collect(); + let num11: i32 = numbers[0].parse().unwrap(); + let num22: i32 = numbers[1].parse().unwrap(); + num1.push(num11); + num2.push(num22); + } + num1.sort_unstable(); + num2.sort_unstable(); + + let mut sum = 0; + for i in 0..num1.len() { + let num_sum = num1[i].abs_diff(num2[i]); + sum += num_sum; + } + + let mut end = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut end); + }; + println!("{sum:?}"); + println!( + "time: {:.6}ms", + (end.tv_nsec - begin.tv_nsec) as f32 / 1000.0 / 1000.0 + ); +} diff --git a/2024/day1p2/Cargo.lock b/2024/day1p2/Cargo.lock new file mode 100644 index 0000000..e3e759e --- /dev/null +++ b/2024/day1p2/Cargo.lock @@ -0,0 +1,16 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "day1p2" +version = "0.1.0" +dependencies = [ + "libc", +] + +[[package]] +name = "libc" +version = "0.2.167" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d6582e104315a817dff97f75133544b2e094ee22447d2acf4a74e189ba06fc" diff --git a/2024/day1p2/Cargo.toml b/2024/day1p2/Cargo.toml new file mode 100644 index 0000000..73e2dd1 --- /dev/null +++ b/2024/day1p2/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "day1p2" +version = "0.1.0" +edition = "2021" + +[dependencies] +libc = "0.2.167" diff --git a/2024/day1p2/src/input.txt b/2024/day1p2/src/input.txt new file mode 100644 index 0000000..aeffb6a --- /dev/null +++ b/2024/day1p2/src/input.txt @@ -0,0 +1,1000 @@ +69214 60950 +83241 49638 +37930 31308 +50722 94914 +93164 82798 +80918 72850 +17490 79421 +64372 87820 +89659 98375 +91555 95812 +48924 93602 +38031 64096 +57853 20530 +88521 43214 +68331 14770 +32767 19574 +95030 92579 +80448 10870 +27268 86384 +18742 65926 +50258 95193 +88830 17352 +73007 82798 +95145 42403 +58976 17352 +22476 68379 +21785 17811 +21560 90827 +82909 37527 +55371 69778 +73607 32404 +88276 44965 +86274 46099 +61163 63445 +52231 27046 +84647 20530 +37515 57298 +44394 99003 +58258 74954 +56060 34105 +79808 73814 +96748 51318 +87301 46022 +93991 44642 +45674 96969 +10870 49159 +13175 23840 +12881 86704 +11425 89064 +71044 92543 +70247 88369 +97814 73317 +78003 44160 +45779 14598 +95915 46875 +51055 99003 +14500 19574 +40956 23840 +64791 99735 +95406 51318 +18800 72878 +85004 33238 +16723 31504 +14333 69398 +40419 10870 +81499 79136 +31696 24276 +71897 55421 +63928 46875 +46875 33198 +40086 76959 +67622 29550 +63819 88369 +74694 35769 +63615 20200 +88828 58414 +58917 20414 +86066 24696 +84677 47814 +87339 89616 +30182 36007 +71811 63762 +26364 18927 +45435 54026 +65473 83062 +40764 12795 +86131 19574 +46984 71532 +94658 36666 +34864 85172 +74271 85172 +37126 63381 +26701 91608 +11846 99003 +91698 44394 +19986 17352 +31279 82252 +25542 10870 +43023 98869 +25001 25208 +39137 44758 +75796 94436 +93491 42015 +16837 69895 +78167 59486 +56738 17811 +66303 49575 +91100 33987 +99100 41554 +46126 41472 +31826 20530 +61208 20200 +98875 49776 +89960 23840 +87445 88369 +90701 59605 +48604 24766 +49830 60581 +32422 32404 +48321 49338 +91545 51318 +30591 23840 +76791 25366 +47653 64300 +70447 10870 +96337 10870 +40822 99003 +50985 36666 +45600 58520 +78539 21021 +11792 39770 +89999 23840 +22229 24252 +79514 31414 +93645 99874 +39916 12567 +63722 87301 +85209 12845 +78460 94436 +79669 33420 +89396 36762 +12518 91072 +70992 20530 +92482 51318 +50977 39809 +59666 93602 +69358 24889 +30774 85209 +50495 88117 +74843 68135 +64043 93602 +42690 14598 +95474 99003 +31999 10870 +77935 30381 +86471 46022 +82671 23840 +21996 17352 +25301 68950 +45903 49209 +88433 15186 +18897 13349 +23742 38006 +29440 44394 +77679 19534 +67503 19006 +22862 87523 +68125 36752 +32102 85209 +57298 32444 +44985 10870 +76984 88369 +96974 44648 +22496 17352 +19906 88369 +53085 69481 +49762 39320 +23508 13349 +73366 19574 +39420 85172 +21487 20200 +49538 31279 +58985 33747 +78834 86304 +83207 77460 +26624 39320 +33276 87130 +62119 15410 +72488 72850 +69108 46022 +28383 64125 +45283 60950 +56242 88580 +47120 46022 +20917 12845 +91088 67959 +30625 92579 +81302 98117 +14883 22568 +45215 46818 +36185 72873 +47369 19661 +39320 48658 +35775 60950 +20573 66758 +92168 46875 +85925 23570 +83017 28941 +88673 62352 +85790 46022 +40389 17811 +13925 14598 +65265 98819 +21058 70060 +81605 36401 +49669 63107 +58410 60950 +20993 32404 +89320 36606 +93679 89908 +24396 66724 +26960 82887 +35749 98507 +67814 60950 +95966 99777 +45832 90281 +21396 69067 +70924 77174 +51921 31279 +86430 41554 +60703 76733 +55109 86032 +64568 34984 +61181 39320 +76019 80530 +93405 35718 +40732 73310 +27676 56302 +46615 12644 +94412 32659 +42651 46875 +22911 88369 +37891 61401 +39505 19574 +30551 99381 +52001 99003 +94890 77236 +12845 10870 +60037 99735 +17811 93480 +39461 52563 +70835 99003 +26239 32404 +21199 53413 +29427 61865 +99745 52578 +58368 85172 +32844 17811 +25356 61341 +55087 39124 +73711 94153 +23878 15193 +19011 15821 +55522 76895 +25442 85172 +43553 23840 +79059 51318 +45546 85172 +18253 46875 +13486 98333 +85621 78640 +94812 14598 +35976 22851 +95446 35811 +68679 86540 +35048 32404 +32404 58367 +54639 82218 +46890 99735 +54797 64140 +58043 28678 +38310 78102 +96824 19574 +82010 90281 +44558 88560 +25947 55410 +39754 90281 +85172 77816 +38409 72850 +93847 79705 +70670 31866 +66466 72850 +14378 85172 +10594 82798 +88488 36494 +80919 90281 +15539 60764 +76757 20530 +73014 80854 +10103 28777 +63011 51318 +97931 72850 +11511 23511 +90999 46778 +10581 17352 +24639 84344 +12573 87301 +94628 73454 +68709 60950 +69611 36666 +77840 32404 +56046 43452 +64975 36666 +35086 27046 +21044 63339 +27003 32404 +99990 41554 +92558 76384 +10676 51318 +79869 34929 +41478 23840 +40010 17811 +57724 13349 +36886 20530 +52799 39658 +74618 28890 +37677 39602 +25056 19780 +37249 60950 +16420 21533 +92579 91814 +32467 76018 +50446 40645 +20800 27046 +25367 93602 +20200 50429 +67153 82421 +99387 85172 +99003 99003 +21079 68678 +21496 45196 +10244 85172 +60317 96967 +89792 64416 +66971 28760 +48409 49209 +87836 13036 +94588 25049 +19574 80163 +43975 90281 +54578 22870 +24412 17352 +66935 85209 +75103 46748 +99675 13318 +63283 86570 +38622 17811 +76156 12554 +18868 31279 +95097 28731 +87940 25307 +31588 20683 +86721 51679 +40662 60665 +61441 46875 +95742 96428 +12500 48663 +69704 83722 +52150 52130 +94648 71064 +34905 72850 +90241 81541 +22820 88917 +84893 82798 +35291 13349 +91607 69674 +91250 89186 +12934 76205 +50355 10870 +11918 93561 +11981 87504 +90011 97792 +19160 99003 +38536 95219 +47433 72254 +71173 20241 +58871 49592 +99297 46875 +14256 36666 +42700 92579 +65952 26453 +38344 17352 +31939 66675 +88319 31279 +48532 69055 +54160 37364 +51367 98234 +63774 67948 +91398 52760 +19606 98639 +15722 27046 +11670 27046 +11752 90281 +57229 24766 +92900 82069 +35472 17352 +11762 10464 +52327 51318 +49806 24252 +83152 27046 +66672 11070 +13349 20530 +10860 67520 +34902 74641 +36500 14208 +90699 24766 +65392 68056 +67360 23840 +20770 12845 +27579 17811 +52424 20530 +88044 70562 +82234 32404 +38116 23840 +71095 60884 +35234 10870 +74397 36937 +59605 79377 +33516 82798 +83961 17811 +17934 81965 +58619 60950 +24784 46183 +60415 32404 +33999 62356 +70899 42550 +71992 61565 +31607 48168 +82993 27705 +98377 72447 +19236 97390 +69248 97543 +12305 39320 +12750 72850 +67143 47302 +51085 13713 +21283 84586 +58438 20530 +61450 84960 +77223 87301 +40730 18648 +61388 92620 +10697 95051 +29817 46022 +44526 85172 +42126 23970 +91131 24766 +53762 23485 +99711 24766 +41168 12845 +89661 97679 +19509 87301 +46491 87301 +82876 90281 +57530 99003 +30070 12845 +37182 33467 +98660 94041 +53088 49209 +23056 33662 +59488 88369 +27659 76043 +85486 46875 +33558 87301 +64995 54418 +58406 20530 +52353 12845 +52674 84792 +97158 41554 +36966 65903 +96617 15049 +17881 23393 +38135 27655 +35640 10870 +75976 78468 +54361 85172 +70827 74733 +23840 16180 +93190 51318 +75051 18196 +64409 85172 +20040 48165 +92938 97826 +43465 51609 +11298 78526 +99421 92903 +21674 62444 +68613 17352 +40038 68779 +90984 49209 +72223 99735 +99618 84903 +96274 37409 +54840 85533 +77678 96379 +79087 33036 +27866 23840 +94127 87366 +83829 46731 +21118 27046 +54767 58444 +31592 39320 +84251 80340 +16359 47980 +33404 86692 +30167 53720 +54633 57298 +64214 85172 +65936 94436 +26779 72257 +56981 16995 +88384 14598 +16954 12845 +19265 34877 +20882 10870 +24268 37193 +73896 73107 +17491 64788 +34135 96478 +97863 20530 +33458 41554 +87234 13349 +17021 43950 +43735 46022 +41413 51318 +23370 27518 +40859 52659 +20847 55643 +78780 46875 +89412 44659 +44732 85942 +15416 41554 +20026 13573 +20447 20530 +92208 27046 +22919 47883 +19025 66716 +78537 94436 +21990 13835 +57022 47578 +23379 27046 +10223 40352 +70096 99003 +27889 86884 +73766 50077 +17352 59737 +18766 53132 +85353 82798 +16699 76756 +18043 80464 +67635 32404 +89066 32404 +96095 36666 +80193 17352 +83111 24567 +82714 51318 +15568 62699 +46071 88369 +24766 17393 +24252 51318 +90799 65043 +45593 42548 +42434 88369 +76708 19788 +44049 17352 +26070 23840 +89487 60950 +75405 50409 +61151 50949 +55659 87976 +97690 10769 +23955 41554 +51413 44394 +93303 74623 +88340 46875 +36666 86119 +68983 36666 +97452 18100 +77775 28288 +93498 85175 +35180 73788 +88369 40289 +60950 89290 +80469 99735 +44830 26094 +56953 12845 +14598 32404 +48010 43254 +51318 16119 +70157 59605 +29536 27046 +97148 24766 +88940 99003 +94267 12845 +80689 82798 +51360 63373 +22949 85172 +61037 87301 +12068 65294 +29715 85209 +90504 28648 +31564 88812 +33933 82995 +29523 72320 +77893 80865 +55688 78887 +24079 24766 +13322 32095 +89943 48334 +29072 58704 +53586 12845 +23918 14598 +56128 88548 +66658 69626 +10133 67845 +99815 85172 +68216 99003 +46022 15395 +83063 21232 +62075 23840 +53883 14598 +66467 32404 +47896 69944 +71785 51318 +84153 16006 +29778 85209 +31766 24766 +16108 35318 +45369 94436 +40723 88485 +65628 31279 +22238 45332 +91501 92579 +17080 83343 +27106 17811 +52006 13517 +10554 96843 +42902 54855 +78074 59112 +76079 19574 +66574 37842 +30704 87301 +61970 72591 +75806 89415 +65083 36666 +44142 88369 +89309 18398 +14755 24252 +31582 10397 +71879 12845 +50300 19574 +55843 62837 +70241 67656 +13864 12845 +56863 36666 +28825 19574 +93845 22897 +20530 17811 +44137 13349 +47611 49209 +76632 71061 +96396 85003 +21784 28828 +10465 28473 +76247 12845 +90281 62295 +68036 85383 +98495 49331 +66489 17352 +73992 89989 +27262 24766 +46644 88369 +27046 58715 +68306 32404 +56759 84611 +59597 99003 +35807 11412 +81247 66456 +28886 94970 +93602 74875 +28876 50501 +83548 98501 +42548 74927 +17737 60997 +39564 95234 +38730 39320 +15305 62977 +64475 20570 +88203 27046 +49209 46875 +58403 94223 +33211 79621 +12588 80687 +38930 17322 +57720 87301 +70408 29585 +35638 23840 +97473 19574 +79297 10870 +82229 27046 +86569 17352 +25113 78295 +16476 24791 +75345 94436 +15696 12845 +24138 49905 +82572 27046 +88539 39320 +59729 87301 +20283 39331 +31336 21205 +93878 31692 +69846 72850 +54419 91006 +82798 84255 +49394 40818 +69345 52987 +39250 60950 +26399 87538 +32384 19159 +97484 43143 +63090 32208 +76597 23840 +14020 32404 +62045 75497 +18689 32404 +52623 31279 +52491 98683 +87906 85172 +82114 99003 +26961 70112 +17367 46022 +98279 88369 +71505 25937 +19537 25375 +21670 28451 +56125 19574 +60764 46875 +77962 17811 +91463 54069 +47556 59029 +83067 87301 +55521 80404 +51846 52594 +34746 10952 +41554 91631 +87263 59965 +22625 42548 +44644 80377 +66676 31212 +10499 11321 +70675 99003 +40581 51732 +87994 39961 +94436 46875 +97737 62666 +79484 41644 +53333 41554 +42911 19574 +37210 96788 +12286 93469 +86302 78835 +89841 90378 +79773 45455 +91417 19811 +61800 38053 +23495 95310 +31663 12652 +26644 88369 +46904 97345 +26299 32404 +81023 72850 +20782 94436 +48451 85172 +42895 83143 +53844 46875 +49912 17811 +86234 53747 +98733 85172 +90395 51318 +87860 36666 +62319 36666 +81832 87028 +96801 48785 +34060 94915 +19206 46022 +61175 74300 +38749 61982 +35243 89642 +94052 22838 +68544 23840 +38895 31279 +13279 49209 +47468 46826 +94318 87301 +71918 17811 +86789 41554 +83931 71452 +71126 88369 +16125 55867 +39086 95213 +16328 12845 +71229 20530 +79671 67001 +91145 23840 +53528 48955 +23966 39867 +36677 77019 +77291 20530 +32335 93201 +94998 17586 +16372 41181 +99014 80727 +61040 99055 +93576 82718 +92791 61735 +79499 80967 +71009 12845 +16657 20530 +75219 41824 +49208 87301 +65336 94436 +39833 67725 +39788 22450 +15097 96722 +13674 82562 +35721 69206 +46963 17811 +90463 24766 +78488 41554 +78916 60727 +59443 90281 +43680 13349 +36601 60950 +41176 94271 +43717 80804 +37766 20530 +82109 88369 +17559 32947 +28284 49209 +22341 88369 +31223 60082 +39647 82580 +64525 13349 +29368 12845 +98386 28932 +64817 77829 +46178 39365 +95082 92579 +70089 81861 +72539 51350 +11579 42548 +63864 77114 +13611 87301 +71054 84124 +49549 56474 +98626 76586 +21372 87832 +42043 32404 +51898 88369 +29323 22433 +64305 30520 +70362 18267 +26501 73191 +10172 41554 +19438 36666 +17316 20200 +13127 51318 +11331 23840 +37354 22773 +34872 20249 +48467 85209 +36745 10870 +97478 88369 +29324 10246 +24179 63888 +24371 39320 +61932 45220 +55020 10320 +64150 36160 +68372 52644 +10714 64027 +68990 57768 +72825 40811 +85765 77880 +32558 20200 +78846 93936 +71711 85172 +90337 94436 +32298 76808 +86944 38430 +36174 29108 +53613 72165 +79549 43129 +43539 44170 +61122 88369 +30084 56992 +49969 39320 +38272 86708 +11594 30429 +69508 70293 +21588 68766 +97316 76575 +97425 41520 +62763 31254 +63345 23840 +43015 93602 +52670 82798 +58251 48255 +33771 20530 +12901 25496 +42101 41554 +43970 67658 +90983 88369 +33538 93514 +89043 26380 +65451 82798 +73769 28981 +78129 70224 +84083 78572 +72978 28610 +81230 47914 +97477 75916 +96888 42548 +24917 39320 +97486 78173 +13312 51318 +27167 93602 +76762 20600 +72850 47594 +24623 58718 +99735 87301 +92737 39670 +33120 59605 +63398 20200 +38385 98299 +81987 53969 +62260 51318 +67235 63713 +85100 42047 +27762 90281 +13906 51318 +85558 36666 +42148 12845 +88468 20200 +92033 32404 +39309 32404 +99521 99391 +80929 17352 +28236 46875 +83442 20530 +50329 10870 +75224 47197 +71764 99003 +22012 82219 +89620 28881 +60052 88379 +98379 44694 +47207 94436 +47361 40762 +96159 17352 +61549 84760 +36863 80773 +28638 90281 +28879 24766 +24022 55460 +25334 10870 +25095 46875 +14190 63285 +66088 70993 +36470 50008 +47970 87301 +35396 17811 +24123 47037 +26462 52299 +49162 12845 +88098 87301 +53920 59862 +84177 10870 +18969 36666 +55280 11340 +14058 68145 +13245 14598 +23434 46622 +56966 78829 +77060 71967 +25997 57796 +41947 82348 +52576 12845 +91921 51318 diff --git a/2024/day1p2/src/main.rs b/2024/day1p2/src/main.rs new file mode 100644 index 0000000..b572f0b --- /dev/null +++ b/2024/day1p2/src/main.rs @@ -0,0 +1,50 @@ +use std::io::{stdin, Read}; +use libc::{clock_gettime, timespec, CLOCK_PROCESS_CPUTIME_ID}; + +fn main() { + let mut data = String::new(); + stdin().read_to_string(&mut data).unwrap(); + + let mut begin = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut begin); + }; + + let mut num1 = vec![]; + let mut num2 = vec![]; + + for line in data.lines() { + let numbers: Vec<&str> = line.split(" ").collect(); + let num11: i32 = numbers[0].parse().unwrap(); + let num22: i32 = numbers[1].parse().unwrap(); + num1.push(num11); + num2.push(num22); + } + + let mut sum = 0; + + for i in num1 { + let mut count = 0; + for num in &num2 { + if i == *num { + count += 1; + } + } + sum += i * count; + } + println!("{sum:?}"); + let mut end = timespec { + tv_sec: 0, + tv_nsec: 0, + }; + unsafe { + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &mut end); + }; + println!( + "time: {:.6}ms", + (end.tv_nsec - begin.tv_nsec) as f32 / 1000.0 / 1000.0 + ); +}