Advent of Code

feat: init & day 1 complete

+1243
+1
.envrc
··· 1 + use_flake .
+1
.gitignore
··· 1 + .direnv
+1
day_1/.gitignore
··· 1 + /target
+7
day_1/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 3 4 + 5 + [[package]] 6 + name = "day_1" 7 + version = "0.1.0"
+6
day_1/Cargo.toml
··· 1 + [package] 2 + name = "day_1" 3 + version = "0.1.0" 4 + edition = "2021" 5 + 6 + [dependencies]
+1000
day_1/input.txt
··· 1 + 77221 93653 2 + 61169 27995 3 + 49546 69782 4 + 11688 41563 5 + 15820 48282 6 + 63235 37517 7 + 28850 68189 8 + 80735 25255 9 + 42616 65322 10 + 55068 99897 11 + 30851 35509 12 + 14907 49013 13 + 64732 92011 14 + 16709 68830 15 + 67643 36207 16 + 44080 23559 17 + 96480 58330 18 + 99450 40186 19 + 21169 63410 20 + 58096 21671 21 + 53828 79572 22 + 47026 44529 23 + 90101 28656 24 + 45773 73412 25 + 71303 85991 26 + 45304 78294 27 + 96528 23559 28 + 19794 17882 29 + 74831 17211 30 + 88912 11644 31 + 98961 80435 32 + 15788 96101 33 + 16350 86995 34 + 96806 19028 35 + 99959 77868 36 + 58887 90255 37 + 42568 25255 38 + 29278 88912 39 + 94028 63269 40 + 42810 21548 41 + 97490 71747 42 + 89051 24477 43 + 73916 31808 44 + 97751 88912 45 + 73608 77868 46 + 62426 13754 47 + 29429 36177 48 + 11070 10894 49 + 78656 85185 50 + 31308 60500 51 + 96166 91114 52 + 36906 85134 53 + 99662 77868 54 + 66402 41563 55 + 37085 14475 56 + 80907 53324 57 + 61650 53324 58 + 84223 63753 59 + 83891 47827 60 + 15973 77536 61 + 68843 40593 62 + 98854 31274 63 + 42426 97404 64 + 25255 67531 65 + 44559 50141 66 + 93909 50674 67 + 28070 32858 68 + 24880 24813 69 + 29338 89795 70 + 64883 77868 71 + 66924 57646 72 + 32984 66502 73 + 32238 39062 74 + 38816 23559 75 + 58770 65322 76 + 74953 91636 77 + 70592 19028 78 + 93111 11644 79 + 31065 23537 80 + 67370 19028 81 + 18314 47412 82 + 71075 74334 83 + 21544 44529 84 + 59137 50980 85 + 20440 80749 86 + 14393 38495 87 + 72130 90255 88 + 43828 68830 89 + 23262 73660 90 + 11923 50980 91 + 47754 14164 92 + 96043 34362 93 + 27162 28090 94 + 20838 50713 95 + 75009 11121 96 + 92099 31274 97 + 22054 38248 98 + 43518 80106 99 + 68189 13153 100 + 50520 12727 101 + 51425 40674 102 + 42998 31053 103 + 52443 33051 104 + 37256 54436 105 + 16648 95555 106 + 81123 17329 107 + 46974 79835 108 + 36328 77868 109 + 76373 23559 110 + 82592 70046 111 + 70600 22417 112 + 27116 89690 113 + 28090 34969 114 + 86348 23559 115 + 53145 50980 116 + 30203 83301 117 + 23347 77681 118 + 76433 26236 119 + 28046 92869 120 + 58920 50980 121 + 25518 28090 122 + 12791 44529 123 + 61967 31808 124 + 98022 53056 125 + 24326 12263 126 + 41095 13121 127 + 24045 82448 128 + 31274 16530 129 + 78021 21589 130 + 63029 19658 131 + 75684 14475 132 + 31258 36493 133 + 40561 48589 134 + 20457 54974 135 + 14783 88465 136 + 39433 23537 137 + 34774 53324 138 + 10455 14329 139 + 26338 74416 140 + 55227 37003 141 + 36963 40380 142 + 31910 68189 143 + 94894 18220 144 + 23166 44111 145 + 48884 46787 146 + 73036 89795 147 + 83519 25205 148 + 50205 93653 149 + 85926 50141 150 + 69194 23559 151 + 25529 11642 152 + 10182 31274 153 + 13638 61987 154 + 83588 19028 155 + 75911 20768 156 + 44692 24325 157 + 43278 94888 158 + 48148 24394 159 + 86205 99327 160 + 82605 58818 161 + 52770 68189 162 + 89068 84917 163 + 66452 83679 164 + 50217 85099 165 + 64914 52073 166 + 76460 78294 167 + 43026 24410 168 + 44179 50980 169 + 47653 90255 170 + 78061 50980 171 + 14475 71478 172 + 77868 37150 173 + 99645 28090 174 + 86267 70055 175 + 58072 68830 176 + 96428 66585 177 + 77501 50141 178 + 52344 93653 179 + 49534 35509 180 + 46925 12437 181 + 40005 87987 182 + 17329 86995 183 + 17585 89795 184 + 32296 59660 185 + 81836 11644 186 + 89435 65322 187 + 55149 59423 188 + 56971 50141 189 + 26342 95142 190 + 57894 56227 191 + 49762 33007 192 + 48949 65641 193 + 40453 53505 194 + 67613 23537 195 + 27110 87987 196 + 25231 63910 197 + 92546 50713 198 + 70074 27554 199 + 39649 93653 200 + 93231 30520 201 + 60008 79179 202 + 18449 47209 203 + 68828 36207 204 + 18908 72254 205 + 55426 44661 206 + 62522 87987 207 + 60923 25255 208 + 85721 68107 209 + 35153 71814 210 + 20053 24813 211 + 24233 22904 212 + 36237 92731 213 + 92077 68189 214 + 30105 50674 215 + 37032 90255 216 + 12745 54116 217 + 41563 53324 218 + 24700 29145 219 + 60226 85335 220 + 50713 64775 221 + 29972 51790 222 + 79176 19794 223 + 40017 96101 224 + 90724 41345 225 + 51608 39176 226 + 46178 50141 227 + 26151 23489 228 + 19569 44529 229 + 34368 86052 230 + 18948 50801 231 + 62091 17329 232 + 89749 38984 233 + 68315 37514 234 + 52396 19794 235 + 14981 14475 236 + 36038 69571 237 + 50048 50980 238 + 60796 41563 239 + 69942 72877 240 + 80976 25234 241 + 56722 90255 242 + 49489 28090 243 + 60768 65557 244 + 70753 85065 245 + 15233 23522 246 + 94697 87600 247 + 40958 41532 248 + 91709 40116 249 + 83586 19028 250 + 88140 24977 251 + 56993 50980 252 + 17980 53324 253 + 12421 97982 254 + 30183 40884 255 + 50452 53324 256 + 91314 90651 257 + 69995 19028 258 + 16588 28090 259 + 22432 98658 260 + 86088 77868 261 + 46361 65322 262 + 97178 75705 263 + 37444 79320 264 + 12275 96101 265 + 47016 16942 266 + 36822 87327 267 + 62082 31274 268 + 68265 64314 269 + 87344 24603 270 + 40642 23559 271 + 87254 38755 272 + 62372 50713 273 + 89026 68830 274 + 88519 96101 275 + 53514 31808 276 + 24686 41563 277 + 23817 68705 278 + 26704 89031 279 + 37908 65322 280 + 22665 35601 281 + 75378 59200 282 + 16797 86995 283 + 55847 68189 284 + 55932 72688 285 + 41470 96101 286 + 43557 17329 287 + 45439 77868 288 + 41230 76226 289 + 25104 92869 290 + 43736 93653 291 + 85938 93653 292 + 74153 54726 293 + 73956 70350 294 + 70419 37102 295 + 81275 64160 296 + 30656 32684 297 + 46218 32617 298 + 67969 31808 299 + 61544 81806 300 + 39376 56568 301 + 14769 60336 302 + 10199 97703 303 + 61064 40091 304 + 75531 30486 305 + 17211 31808 306 + 75184 74633 307 + 24565 61765 308 + 83922 44529 309 + 11644 25255 310 + 71836 14393 311 + 53030 19028 312 + 83437 33190 313 + 33687 54998 314 + 92054 82083 315 + 48250 68533 316 + 10977 34363 317 + 51050 19028 318 + 80898 68276 319 + 26442 68830 320 + 39875 65514 321 + 24976 76417 322 + 31946 23537 323 + 95278 90255 324 + 71678 26450 325 + 49641 28580 326 + 12962 13674 327 + 13598 30362 328 + 40620 21256 329 + 49062 92869 330 + 88449 79529 331 + 80153 94081 332 + 36918 70556 333 + 77902 99228 334 + 41848 99097 335 + 26032 39378 336 + 23830 50980 337 + 49712 78294 338 + 95464 65322 339 + 76971 27393 340 + 67074 22132 341 + 17629 71246 342 + 92019 92869 343 + 20780 96521 344 + 68372 16880 345 + 49710 88060 346 + 94680 52634 347 + 28626 57101 348 + 31808 60809 349 + 25578 28090 350 + 12020 25255 351 + 46008 33046 352 + 27712 36207 353 + 17168 53033 354 + 92923 87987 355 + 94668 65843 356 + 59490 48858 357 + 69085 38485 358 + 28242 14664 359 + 18302 96101 360 + 64047 71241 361 + 62752 73532 362 + 28873 59278 363 + 22206 18029 364 + 57298 85374 365 + 26420 78294 366 + 74055 30817 367 + 74377 45566 368 + 81846 17058 369 + 35184 27305 370 + 72054 89795 371 + 78666 41563 372 + 80545 96101 373 + 69240 51322 374 + 76319 36831 375 + 23617 14475 376 + 53848 93653 377 + 65082 36888 378 + 18802 93491 379 + 63942 23559 380 + 80208 22876 381 + 17018 68830 382 + 78018 51611 383 + 35520 75130 384 + 43479 88543 385 + 18522 96101 386 + 41260 15010 387 + 58041 21675 388 + 96272 68830 389 + 73601 78294 390 + 44788 52104 391 + 67152 89795 392 + 57671 61399 393 + 33841 56764 394 + 41963 53394 395 + 41010 28090 396 + 53937 65322 397 + 75472 76675 398 + 22253 92068 399 + 24277 93653 400 + 62012 14475 401 + 27539 50141 402 + 29180 41637 403 + 27151 35922 404 + 28752 23559 405 + 31602 47673 406 + 80298 50906 407 + 94689 38297 408 + 87987 48139 409 + 51692 61967 410 + 93653 86995 411 + 99694 96638 412 + 50948 11644 413 + 87830 19794 414 + 57579 93403 415 + 60947 72082 416 + 18514 53324 417 + 99194 25255 418 + 57630 93653 419 + 49914 10526 420 + 34613 94340 421 + 32145 16105 422 + 39569 62764 423 + 14118 31274 424 + 38901 19016 425 + 47443 66925 426 + 83812 31274 427 + 61920 50141 428 + 88684 50713 429 + 32305 31808 430 + 58695 50713 431 + 20016 42720 432 + 68955 31976 433 + 96299 99509 434 + 83258 96101 435 + 49424 68830 436 + 97130 14043 437 + 34668 50936 438 + 27567 35509 439 + 57890 65959 440 + 58399 78860 441 + 88934 50980 442 + 70656 66788 443 + 91507 44529 444 + 53671 87987 445 + 75858 71137 446 + 14726 13674 447 + 25416 31274 448 + 90521 50075 449 + 37289 96101 450 + 79415 19028 451 + 21158 25355 452 + 53210 16168 453 + 35192 81526 454 + 67240 23559 455 + 42967 65310 456 + 81598 93094 457 + 12765 36207 458 + 23853 41643 459 + 78439 22984 460 + 13052 50141 461 + 56642 93653 462 + 19028 82791 463 + 89371 36244 464 + 89795 50799 465 + 41542 90489 466 + 49486 72630 467 + 26630 50763 468 + 35019 68830 469 + 62271 78294 470 + 16433 77868 471 + 42466 57338 472 + 63666 39984 473 + 56231 83564 474 + 51132 96101 475 + 33675 74200 476 + 94670 70445 477 + 51236 17822 478 + 52493 64460 479 + 45346 86995 480 + 41620 31274 481 + 80479 88912 482 + 46200 90255 483 + 13789 60686 484 + 98564 76843 485 + 44974 92717 486 + 76047 80674 487 + 60650 89430 488 + 55723 45722 489 + 89426 97853 490 + 33961 98414 491 + 32872 68189 492 + 65322 12029 493 + 29922 36159 494 + 74923 34697 495 + 37065 59688 496 + 66622 23559 497 + 68253 14475 498 + 28664 53324 499 + 62981 25761 500 + 83161 50674 501 + 22849 50980 502 + 11119 76308 503 + 22980 13794 504 + 76171 19411 505 + 96351 28221 506 + 45573 90255 507 + 19850 79146 508 + 97828 90483 509 + 23867 85271 510 + 36353 50141 511 + 46579 87987 512 + 73434 23559 513 + 57169 68189 514 + 68768 41682 515 + 59354 97617 516 + 62181 64641 517 + 34167 53324 518 + 28374 24803 519 + 55863 57352 520 + 25058 33040 521 + 76126 53005 522 + 97283 51641 523 + 25887 29253 524 + 43067 50713 525 + 51616 61868 526 + 97533 16129 527 + 50692 80951 528 + 43173 41626 529 + 93917 76055 530 + 84713 53465 531 + 24130 13599 532 + 56773 50980 533 + 15310 44529 534 + 63375 50141 535 + 75875 93653 536 + 22284 33135 537 + 46294 77836 538 + 29713 14393 539 + 95318 83346 540 + 83264 61967 541 + 39267 47771 542 + 61101 86995 543 + 47882 96101 544 + 24345 70347 545 + 50674 14475 546 + 17296 12880 547 + 52605 11644 548 + 40817 78294 549 + 36207 93653 550 + 16045 96101 551 + 91784 68830 552 + 34583 69934 553 + 71867 28090 554 + 74898 22671 555 + 54609 27206 556 + 33070 26257 557 + 18570 57394 558 + 16766 87036 559 + 62825 21503 560 + 39793 17504 561 + 12038 82452 562 + 37265 12706 563 + 69479 44529 564 + 96101 44260 565 + 49175 50713 566 + 70708 55412 567 + 50136 14475 568 + 27300 96101 569 + 75794 62368 570 + 10277 87990 571 + 30825 87987 572 + 35563 24149 573 + 12505 91890 574 + 11323 14393 575 + 89922 84455 576 + 10927 65359 577 + 50656 71304 578 + 47973 11644 579 + 17156 92869 580 + 98964 96101 581 + 50980 59345 582 + 94733 23559 583 + 22743 26134 584 + 90255 54273 585 + 80006 65322 586 + 10157 92869 587 + 70496 28090 588 + 25569 41226 589 + 79982 92869 590 + 34897 76485 591 + 83357 86388 592 + 26352 79503 593 + 67432 15174 594 + 49155 72153 595 + 36311 86995 596 + 14394 65333 597 + 70928 51667 598 + 67367 23559 599 + 48195 57003 600 + 52001 26154 601 + 63251 21651 602 + 21894 89795 603 + 50774 43252 604 + 85637 36207 605 + 79243 11644 606 + 49512 57954 607 + 22454 15919 608 + 84214 20805 609 + 67121 86995 610 + 49247 78035 611 + 79313 34840 612 + 33168 19814 613 + 48657 92888 614 + 59824 74905 615 + 30088 68830 616 + 74246 90052 617 + 78389 65322 618 + 88418 28090 619 + 93716 62226 620 + 74962 29324 621 + 47309 50980 622 + 93517 14393 623 + 23895 68175 624 + 34548 25255 625 + 32628 84730 626 + 55988 31274 627 + 82578 40953 628 + 51728 16926 629 + 19440 27805 630 + 42922 45159 631 + 52930 41563 632 + 91562 31274 633 + 23559 62680 634 + 92150 26879 635 + 78315 61783 636 + 43601 91325 637 + 87621 17838 638 + 78580 65350 639 + 94778 77868 640 + 68519 83273 641 + 35509 66389 642 + 82288 52439 643 + 65083 19794 644 + 86995 13010 645 + 66618 95850 646 + 18656 70145 647 + 98537 65322 648 + 60842 52161 649 + 68830 10132 650 + 99689 24077 651 + 33740 89795 652 + 45595 53090 653 + 78239 36207 654 + 20185 36207 655 + 87307 69366 656 + 83009 77868 657 + 34685 88642 658 + 13674 28090 659 + 82450 69909 660 + 44812 75146 661 + 54296 92869 662 + 73558 94990 663 + 21422 48229 664 + 49473 10547 665 + 66108 68189 666 + 71169 74202 667 + 78276 40690 668 + 82977 78294 669 + 61842 15634 670 + 31582 95459 671 + 39064 14475 672 + 70204 18593 673 + 71244 87987 674 + 31642 50490 675 + 98413 37109 676 + 61175 50141 677 + 37168 23559 678 + 44093 11032 679 + 18806 40848 680 + 91249 73483 681 + 95812 32572 682 + 93644 68189 683 + 30669 20850 684 + 75404 92869 685 + 53324 50141 686 + 80675 50216 687 + 14897 73401 688 + 34074 29952 689 + 16366 32630 690 + 95656 28090 691 + 73964 58896 692 + 90705 66916 693 + 92869 59662 694 + 99522 78294 695 + 35903 19794 696 + 33033 42610 697 + 55650 50980 698 + 29289 11753 699 + 32302 58345 700 + 76036 57644 701 + 74870 31274 702 + 85035 77868 703 + 79322 25255 704 + 50332 31274 705 + 78294 44529 706 + 93000 53324 707 + 36560 19028 708 + 40041 53525 709 + 70360 89795 710 + 19074 98749 711 + 32829 89603 712 + 61436 71046 713 + 89938 85369 714 + 52708 28090 715 + 83958 53324 716 + 88155 67097 717 + 32730 75527 718 + 64221 23559 719 + 60391 97432 720 + 70047 20185 721 + 12372 73527 722 + 46501 29274 723 + 66552 14746 724 + 56373 51614 725 + 95596 11782 726 + 81196 72623 727 + 32282 60515 728 + 49504 14393 729 + 57642 34348 730 + 95402 87987 731 + 81625 68830 732 + 28527 37199 733 + 71475 31808 734 + 94280 23005 735 + 55623 99355 736 + 46783 29073 737 + 36641 81559 738 + 74788 14535 739 + 87994 78773 740 + 80189 77868 741 + 33263 89795 742 + 23537 23537 743 + 25755 22264 744 + 67413 72800 745 + 74924 73774 746 + 81215 78294 747 + 78206 92869 748 + 36161 50141 749 + 54925 86995 750 + 66305 49951 751 + 42462 28090 752 + 99051 88912 753 + 44954 89795 754 + 88856 28090 755 + 63026 85778 756 + 22651 24813 757 + 39262 14475 758 + 86176 69982 759 + 65395 14393 760 + 12926 78294 761 + 81994 53324 762 + 16933 30191 763 + 46987 19794 764 + 37215 28090 765 + 15340 63748 766 + 40271 86674 767 + 23747 52856 768 + 61156 11644 769 + 65356 56048 770 + 72336 51278 771 + 21864 77868 772 + 99351 13349 773 + 24599 79046 774 + 62281 23361 775 + 81871 53324 776 + 14029 42297 777 + 50141 48720 778 + 46677 43636 779 + 10745 35965 780 + 39344 80864 781 + 38077 50038 782 + 13983 89795 783 + 66663 67877 784 + 64175 19028 785 + 62355 68830 786 + 96823 79443 787 + 46436 44754 788 + 53388 68830 789 + 45987 92723 790 + 87646 11707 791 + 75997 45545 792 + 69968 93653 793 + 30425 44529 794 + 83211 88109 795 + 28725 64932 796 + 47043 89795 797 + 34475 31274 798 + 42302 94895 799 + 66558 92753 800 + 48964 50713 801 + 19546 78294 802 + 51026 89795 803 + 89346 57408 804 + 52993 54676 805 + 29577 38385 806 + 85932 60320 807 + 18030 22556 808 + 65993 19922 809 + 74692 23559 810 + 61588 89795 811 + 50688 69541 812 + 93760 44529 813 + 75094 96101 814 + 68976 86835 815 + 46278 50980 816 + 97836 44529 817 + 17576 32708 818 + 48519 46071 819 + 72647 93653 820 + 54724 34155 821 + 45186 43448 822 + 44529 41828 823 + 90404 86357 824 + 63175 44529 825 + 88381 25963 826 + 32140 23537 827 + 43348 36423 828 + 41733 88912 829 + 84065 98953 830 + 20389 96101 831 + 38749 93788 832 + 37929 35143 833 + 63747 35340 834 + 72249 93653 835 + 98042 59381 836 + 22741 95783 837 + 88124 33425 838 + 16493 44529 839 + 36599 69408 840 + 50436 41563 841 + 67695 86149 842 + 89091 20022 843 + 60708 92607 844 + 28750 68830 845 + 80224 39113 846 + 34580 96101 847 + 79688 34798 848 + 14870 68189 849 + 47719 29252 850 + 57652 33458 851 + 65541 87987 852 + 86435 19794 853 + 95204 81239 854 + 43800 50980 855 + 94063 11644 856 + 24096 36588 857 + 36628 95478 858 + 81443 17329 859 + 61221 57166 860 + 52782 78294 861 + 16740 31274 862 + 68369 45653 863 + 28895 44529 864 + 39222 65582 865 + 97201 77602 866 + 81119 11644 867 + 41083 50141 868 + 72917 25255 869 + 46148 21269 870 + 44495 18020 871 + 99464 90525 872 + 67254 58381 873 + 52750 28135 874 + 63899 55754 875 + 14617 50713 876 + 36962 50713 877 + 41322 73436 878 + 22504 38709 879 + 72577 39875 880 + 67799 68830 881 + 68284 71156 882 + 46011 61967 883 + 50367 31808 884 + 45832 87987 885 + 88775 87987 886 + 32562 26340 887 + 43756 49887 888 + 73444 16547 889 + 67302 92449 890 + 22133 85451 891 + 17768 77868 892 + 69281 39885 893 + 87364 25255 894 + 41209 27363 895 + 37792 77868 896 + 66667 73746 897 + 22195 28090 898 + 65037 37556 899 + 28634 89795 900 + 23901 50674 901 + 40511 95801 902 + 47779 45253 903 + 76489 86807 904 + 77873 66992 905 + 87523 35509 906 + 32876 50980 907 + 62342 50980 908 + 84222 41563 909 + 88205 40382 910 + 78856 20051 911 + 97888 68189 912 + 22233 17329 913 + 35868 81437 914 + 80155 93653 915 + 82730 78294 916 + 12733 19794 917 + 55038 26258 918 + 50682 23250 919 + 42043 74279 920 + 54719 71512 921 + 54474 23991 922 + 61776 25255 923 + 55564 41563 924 + 39404 31274 925 + 94954 14475 926 + 76258 89795 927 + 87689 67995 928 + 65619 59930 929 + 41846 17435 930 + 21990 22185 931 + 60161 53026 932 + 44955 57523 933 + 84178 39875 934 + 32693 87987 935 + 19125 44529 936 + 96731 93653 937 + 98080 44529 938 + 72947 95746 939 + 67285 23344 940 + 78101 77580 941 + 43064 11644 942 + 81350 23483 943 + 46937 11644 944 + 97686 79381 945 + 66339 60744 946 + 39269 50674 947 + 61837 77868 948 + 97647 86995 949 + 44613 93568 950 + 73127 68830 951 + 64048 80370 952 + 15530 87987 953 + 63926 51860 954 + 95853 91981 955 + 26155 28090 956 + 82222 19794 957 + 10035 87445 958 + 16445 93653 959 + 67972 15558 960 + 51780 68830 961 + 52358 31274 962 + 83942 60096 963 + 64899 11955 964 + 56009 96101 965 + 42288 36590 966 + 53349 65322 967 + 76255 50713 968 + 53044 26351 969 + 37184 31274 970 + 24813 19028 971 + 62309 52490 972 + 93607 19028 973 + 27423 45568 974 + 26128 78294 975 + 72691 50141 976 + 42162 60052 977 + 78247 10613 978 + 80209 31808 979 + 38310 93653 980 + 59228 47607 981 + 24897 23559 982 + 55176 37760 983 + 33062 53324 984 + 26521 39170 985 + 93209 68189 986 + 89881 23559 987 + 11418 50980 988 + 16884 78294 989 + 31995 50980 990 + 17858 98671 991 + 49107 96101 992 + 50512 54526 993 + 56890 65322 994 + 76173 65309 995 + 51569 52845 996 + 73919 23537 997 + 62591 16739 998 + 53735 79935 999 + 14454 69804 1000 + 19976 46609
+92
day_1/src/main.rs
··· 1 + #![feature(test)] 2 + 3 + extern crate test; 4 + 5 + use std::{collections::HashMap, fs}; 6 + 7 + fn part_1(left: &Vec<u32>, right: &Vec<u32>) { 8 + let mut diff: u32 = 0; 9 + for (i, l) in left.iter().enumerate() { 10 + diff += l.abs_diff(right[i]); 11 + } 12 + 13 + println!("Part 1: {diff}"); 14 + } 15 + 16 + #[derive(Debug, Clone, Copy)] 17 + struct Occurences { 18 + left: u32, 19 + right: u32 20 + } 21 + 22 + fn part_2(left: &Vec<u32>, right: &Vec<u32>) { 23 + let mut mapped = HashMap::<u32, Occurences>::new(); 24 + for (_, l) in left.iter().enumerate() { 25 + let v = &mut mapped.get(l).unwrap_or( &Occurences { left: 0, right: 0 }); 26 + mapped.insert(*l, Occurences { left: v.left + 1, right: v.right }); 27 + } 28 + for (_, r) in right.iter().enumerate() { 29 + let v = &mut mapped.get(r).unwrap_or( &Occurences { left: 0, right: 0 }); 30 + mapped.insert(*r, Occurences { left: v.left, right: v.right + 1 }); 31 + } 32 + 33 + let reduce = mapped.iter().map( 34 + |(num, occurences)| { 35 + num*occurences.left*occurences.right 36 + } 37 + ); 38 + 39 + let similarity: u32 = reduce.sum(); 40 + 41 + println!("Part 2: {similarity}"); 42 + } 43 + 44 + fn parse_input() -> Option<(Vec<u32>, Vec<u32>)> { 45 + let input = fs::read_to_string("./input.txt").expect("Couldn't read file"); 46 + 47 + let (mut left, mut right) = input.lines().map( 48 + |l| { 49 + let mut split = l.split_whitespace(); 50 + let left = split.next(); 51 + let right = split.next(); 52 + 53 + ( 54 + left.unwrap().parse::<u32>().unwrap(), 55 + right.unwrap().parse::<u32>().unwrap() 56 + ) 57 + } 58 + ).collect::<(Vec<_>, Vec<_>)>(); 59 + 60 + left.sort(); 61 + right.sort(); 62 + 63 + Some((left, right)) 64 + } 65 + 66 + fn main() { 67 + let (left, right) = parse_input().unwrap(); 68 + part_1(&left, &right); 69 + part_2(&left, &right); 70 + } 71 + 72 + #[bench] 73 + fn full(b: &mut test::Bencher) { 74 + b.iter(|| main()); 75 + } 76 + 77 + #[bench] 78 + fn input_only(b: &mut test::Bencher) { 79 + b.iter(|| parse_input()); 80 + } 81 + 82 + #[bench] 83 + fn part_one(b: &mut test::Bencher) { 84 + let (left, right) = parse_input().unwrap(); 85 + b.iter(|| part_1(&left, &right)); 86 + } 87 + 88 + #[bench] 89 + fn part_two(b: &mut test::Bencher) { 90 + let (left, right) = parse_input().unwrap(); 91 + b.iter(|| part_2(&left, &right)); 92 + }
+100
flake.lock
··· 1 + { 2 + "nodes": { 3 + "fenix": { 4 + "inputs": { 5 + "nixpkgs": [ 6 + "nixpkgs" 7 + ], 8 + "rust-analyzer-src": "rust-analyzer-src" 9 + }, 10 + "locked": { 11 + "lastModified": 1732689334, 12 + "narHash": "sha256-yKI1KiZ0+bvDvfPTQ1ZT3oP/nIu3jPYm4dnbRd6hYg4=", 13 + "owner": "nix-community", 14 + "repo": "fenix", 15 + "rev": "a8a983027ca02b363dfc82fbe3f7d9548a8d3dce", 16 + "type": "github" 17 + }, 18 + "original": { 19 + "owner": "nix-community", 20 + "repo": "fenix", 21 + "type": "github" 22 + } 23 + }, 24 + "flake-utils": { 25 + "inputs": { 26 + "systems": "systems" 27 + }, 28 + "locked": { 29 + "lastModified": 1731533236, 30 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 31 + "owner": "numtide", 32 + "repo": "flake-utils", 33 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 34 + "type": "github" 35 + }, 36 + "original": { 37 + "owner": "numtide", 38 + "repo": "flake-utils", 39 + "type": "github" 40 + } 41 + }, 42 + "nixpkgs": { 43 + "locked": { 44 + "lastModified": 1733064805, 45 + "narHash": "sha256-7NbtSLfZO0q7MXPl5hzA0sbVJt6pWxxtGWbaVUDDmjs=", 46 + "owner": "NixOS", 47 + "repo": "nixpkgs", 48 + "rev": "31d66ae40417bb13765b0ad75dd200400e98de84", 49 + "type": "github" 50 + }, 51 + "original": { 52 + "owner": "NixOS", 53 + "ref": "nixpkgs-unstable", 54 + "repo": "nixpkgs", 55 + "type": "github" 56 + } 57 + }, 58 + "root": { 59 + "inputs": { 60 + "fenix": "fenix", 61 + "flake-utils": "flake-utils", 62 + "nixpkgs": "nixpkgs" 63 + } 64 + }, 65 + "rust-analyzer-src": { 66 + "flake": false, 67 + "locked": { 68 + "lastModified": 1732633904, 69 + "narHash": "sha256-7VKcoLug9nbAN2txqVksWHHJplqK9Ou8dXjIZAIYSGc=", 70 + "owner": "rust-lang", 71 + "repo": "rust-analyzer", 72 + "rev": "8d5e91c94f80c257ce6dbdfba7bd63a5e8a03fa6", 73 + "type": "github" 74 + }, 75 + "original": { 76 + "owner": "rust-lang", 77 + "ref": "nightly", 78 + "repo": "rust-analyzer", 79 + "type": "github" 80 + } 81 + }, 82 + "systems": { 83 + "locked": { 84 + "lastModified": 1681028828, 85 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 86 + "owner": "nix-systems", 87 + "repo": "default", 88 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 89 + "type": "github" 90 + }, 91 + "original": { 92 + "owner": "nix-systems", 93 + "repo": "default", 94 + "type": "github" 95 + } 96 + } 97 + }, 98 + "root": "root", 99 + "version": 7 100 + }
+35
flake.nix
··· 1 + { 2 + description = "A basic flake with a shell"; 3 + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 4 + inputs.flake-utils.url = "github:numtide/flake-utils"; 5 + inputs.fenix = { 6 + url = "github:nix-community/fenix"; 7 + inputs.nixpkgs.follows = "nixpkgs"; 8 + }; 9 + 10 + outputs = { nixpkgs, flake-utils, fenix, ... }: 11 + flake-utils.lib.eachDefaultSystem (system: 12 + let 13 + pkgs = import nixpkgs { 14 + inherit system; 15 + overlays = [ fenix.overlays.default ]; 16 + }; 17 + in 18 + { 19 + devShells.default = pkgs.mkShell { 20 + packages = [ 21 + (pkgs.fenix.complete.withComponents [ 22 + "cargo" 23 + "clippy" 24 + "rust-src" 25 + "rustc" 26 + "rustfmt" 27 + "rust-analyzer" 28 + ]) 29 + pkgs.bacon 30 + pkgs.pkg-config 31 + pkgs.openssl 32 + ]; 33 + }; 34 + }); 35 + }