Advent of Code solutions
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

yes i know its a mess ill clean it up in the morning

Rain 1835897e 33f4e62a

+160
+7
2025/rust/6/Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "day6" 7 + version = "0.1.0"
+6
2025/rust/6/Cargo.toml
··· 1 + [package] 2 + name = "day6" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies]
+5
2025/rust/6/input.txt
··· 1 + 23 721 8 853 826 24 5 857 5 75 14 8246 16 7425 71 975 3833 117 27 62 53 3 24 34 85 63 923 8 38 2274 2 77 84 95 832 76 81 14 49 755 34 91 9 1 73 7967 251 7 347 52 8 59 6966 777 29 568 132 4329 914 264 9847 32 27 974 21 643 46 9 474 537 44 531 613 7436 43 59 35 89 53 338 75 82 45 411 896 92 5375 471 693 9418 222 232 14 414 87 563 371 17 5 811 1 597 61 23 37 22 76 3 21 6765 14 32 139 73 2888 653 66 19 97 45 2937 29 8 55 1 657 73 354 1128 5726 4286 617 56 83 39 63 68 127 1 498 29 26 9274 29 2 1578 3769 4 6 18 9 78 52 834 64 41 3 43 98 72 48 54 23 93 18 29 111 4 7 7694 6311 88 72 6 817 57 71 63 63 668 617 858 3 5 424 128 89 2461 485 71 74 9 74 1453 41 163 93 25 9714 7 27 997 6 945 5 34 2 58 24 33 85 28 46 283 47 6 752 9 297 57 2 7 143 791 361 59 31 19 29 37 53 8739 92 68 21 22 74 86 89 88 152 514 536 11 216 678 99 48 59 54 8489 67 565 3 32 6258 374 56 62 6743 56 83 52 82 72 559 45 632 9 919 6 691 91 64 25 23 39 38 1 58 8863 38 6568 7292 95 852 68 5 117 84 55 312 8 172 23 576 5 498 54 68 8 91 899 45 484 691 3 96 5 8 86 54 36 5 4 6 228 565 4 898 8 973 99 7121 3 82 77 5 184 4 733 5 42 5 586 23 4 95 161 8 72 4 6 949 6248 77 967 961 13 4 17 315 5 599 51 38 197 19 4 97 83 4 597 41 28 1 46 922 248 52 93 78 47 94 5838 838 19 9 3 78 157 572 64 8 36 85 59 1516 2 379 758 1 792 21 1 53 9 29 22 71 4 798 324 178 69 317 81 524 584 98 328 77 423 89 99 42 577 455 7875 662 7882 747 2265 48 36 749 46 945 26 462 529 83 15 14 162 1 87 6 3141 65 5864 664 14 9412 59 32 3 44 44 63 2 31 11 8996 93 31 536 585 1 466 1 3563 49 6552 374 12 51 148 886 8 7 8 395 32 6 78 392 387 17 5843 42 57 1 42 33 128 73 53 88 32 754 784 34 35 8148 5 6 3625 94 6 455 6 7 18 38 464 41 64 33 34 761 8 6 621 931 983 4 44 35 262 1 85 239 14 599 99 8 1711 568 31 78 9691 55 2 5312 642 1634 732 9 67 8464 9 536 969 21 45 397 32 6691 3 24 396 257 335 784 64 1349 7 887 29 5 49 4 57 274 71 7 47 5 225 43 1 98 93 4 169 96 8784 8163 82 69 816 9648 542 7939 76 52 468 4 79 4 6 882 6 523 5241 26 36 88 3 45 6852 96 19 78 7 478 72 5758 78 7 34 42 8511 993 77 88 97 1 281 71 287 8863 234 99 78 3168 352 674 32 778 56 14 32 19 867 383 5 1 91 1 29 797 98 31 94 4 621 86 512 9 69 629 542 133 17 51 944 2 13 213 417 15 4 839 81 416 296 855 714 4657 69 527 339 3335 25 288 726 31 456 243 87 25 9676 38 86 46 591 986 148 665 1 88 513 426 8 652 43 448 24 196 2 55 8 7 467 699 1 81 565 99 4 517 322 38 42 7 999 77 14 9 2 579 62 857 547 29 21 38 339 73 373 887 311 26 59 617 48 74 4 15 63 88 91 896 8478 57 877 96 28 421 676 29 736 659 773 878 79 51 2 377 45 74 35 758 822 6 144 76 1838 94 18 3 7 64 6 629 3647 837 1 63 35 9 137 17 9438 4927 31 18 52 511 5526 3941 19 97 619 27 622 7456 93 248 64 5 55 267 3 7 6271 31 15 48 96 993 4855 7729 14 4 33 987 55 217 337 39 36 49 65 76 75 2 81 661 23 1697 1719 6184 852 4 43 759 922 685 737 972 81 19 79 5719 919 9 216 889 64 83 923 83 4 73 2617 22 959 8573 85 263 22 44 13 72 31 5 7 383 95 4 73 8 272 35 39 26 88 31 516 58 4 5935 84 8 566 81 14 3 43 55 865 93 79 9418 1656 17 2696 45 684 9 7 11 484 7 484 193 8 995 11 85 38 384 162 6 4 97 721 95 186 68 6 4 94 6 34 6 385 44 855 6 7 48 8 45 847 66 2 78 423 19 21 573 86 4 23 3 671 24 9 6 9 36 85 772 295 1 596 342 9147 6 16 37 7394 71 312 499 3 833 24 939 57 85 553 959 1544 67 47 33 16 658 238 93 45 195 676 4 897 813 514 1 391 16 6 54 65 46 6 2 + 572 9786 58 295 534 9269 42 63 12 57 85 7755 642 1346 54 683 5715 363 12 11 69 69 432 95 25 87 28 9 94 8447 869 86 71 1 279 63 58 78 389 163 72 18 41 87 35 529 133 81 921 4 99 37 4745 1793 79 766 243 2467 895 331 7456 854 39 455 62 284 74 983 61 521 87 383 7889 1379 91 92 75 87 24 315 56 3999 68 361 155 19 24 414 685 1585 446 5617 63 868 47 853 8654 46 75 168 4 875 25 821 49 79 22 12 32 2943 69 58 416 84 5891 428 47 77 17 25 4134 46 55 87 44 665 84 276 6398 4415 7254 162 71 51 29 85 97 972 316 469 89 45 7272 11 95 7995 9773 33 54 744 7 35 12 672 73 12 34 79 76 17 32 57 56 21 7 99 952 6 839 5366 3449 86 577 1 484 47 624 33 243 743 946 48 942 8 877 692 46 3447 685 53 74 17 12 5372 96 188 48 58 8936 89 82 617 79 463 62 523 19 99 36 72 27 8 586 416 68 88 993 132 682 31 48 7 18 176 974 57 88 53 79 93 56 2329 183 86 29 79 95 511 97 85 25 515 844 511 933 799 73 36 61 72 9157 55 761 2 96 3772 8974 34 755 148 37 25 958 59 27 822 67 333 2 78 73 114 865 58 46 88 65 397 6 58 3166 32 8218 1353 91 826 21 33 833 324 49 557 2 399 33 747 7 385 33 5 845 62 722 42 243 62 74 93 58 99 69 54 69 36 64 92 951 657 12 354 3 859 94 8669 13 413 1762 916 874 6 261 2 63 9 729 47 6 86 451 67 77 5 36 591 3435 32 486 622 456 48 69 322 8 92 2687 655 184 95 98 39 72 48 912 21 19 1 98 137 317 98 22 97 85 82 9259 122 11 9 33 83 211 79 95 854 69 771 87 2317 76 995 474 9 917 87 2 23 93 24 511 51 52 565 817 262 43 678 23 138 583 87 134 43 199 66 45 61 877 256 8653 977 8612 226 684 23 838 785 5425 255 45 422 467 19 83 94 653 434 739 24 8526 696 619 656 24 3379 78 2395 15 27 2 66 1 56 58 8918 654 543 347 685 1 934 649 7672 2533 8222 832 943 52 657 872 55 25 3 929 92 6 86 343 465 77 2125 27 83 143 27 76 934 91 94 479 62 245 824 41 83 2197 28 124 3125 51 23 387 14 6 699 82 179 11 31 121 16 366 46 46 587 7449 61 12 31 2456 339 5 66 366 54 918 28 59 3786 957 18 34 6133 43 8 811 745 737 151 6 51 469 6 749 297 86 8 844 7 442 8 47 549 727 629 174 444 5838 57 428 813 1 44 376 55 3934 69 28 91 13 318 53 3 29 62 9 577 54 1862 8287 398 73 189 121 981 1441 38 43 774 4 61 52 6 394 44 1677 5664 15 1 74 4339 48 1289 299 241 68 31 71 22 4442 38 7 52 21 143 349 83 15 33 37 328 63 712 4384 39 6 387 4965 7273 127 411 131 75 39 17 142 41 116 416 2 53 67 4793 793 37 29 37 9 887 615 319 337 15 791 638 816 13 17 346 2 19 276 44 76 35 574 974 836 438 826 8985 485 91 1972 816 389 42 599 369 44 82 927 94 92 9871 16 17 43 45 234 144 512 9 67 246 421 65 884 19 859 89 433 6 32 1 81 924 971 57 62 271 78 582 376 947 93 624 99 854 95 78 26 22 4332 27 9818 383 31 386 44 17 36 883 238 2642 91 34 389 61 61 57 34 97 41 57 346 8166 98 237 65 22 971 97 337 535 38 2766 859 15 661 69 1628 589 97 47 522 59 44 8436 24 9469 848 559 76 2 82 92 781 4812 552 83 299 96 87 837 46 944 4272 36 89 22 583 525 4954 21 89 278 12 466 4632 14 525 55 7 71 298 7 65 9555 81 35 31 86 167 429 8369 54 27 34 831 614 979 24 92 12 47 89 46 23 147 14 176 38 9155 4563 8689 914 55 98 948 398 389 512 921 52 66 93 4613 915 74 623 3988 166 83 747 34 614 28 5963 53 569 8295 85 214 64 34 62 64 53 6 3 958 67 634 98 41 512 9855 13 52 23 28 823 34 7 763 191 63 433 66 77 23 12 65 957 211 88 375 4626 92 4869 61 329 13 68 99 73 7 292 597 25 554 36 59 7 419 587 49 9 83 749 872 558 16 93 9 9 76 54 41 813 97 42 61 81 69 757 678 464 788 4 57 756 426 36 851 6 89 73 18 2196 38 7 15 48 39 93 619 288 1 543 166 5869 59 159 14 4623 97 822 444 4 73 37 894 11 181 374 418 6832 284 444 339 654 612 1244 67 76 931 416 9 189 844 629 98 144 66 4 56 743 298 91 3 + 944 3137 229 229 81 7149 959 82 553 1 38 6816 599 282 91 153 5637 55 81 24 67 45 843 17 194 83 57 32 8 8352 118 23 23 1 751 62 75 86 535 596 6 9 191 959 44 273 299 86 431 3 71 49 5313 4199 72 175 578 8126 181 948 53 8777 28 6 81 21 92 417 21 147 93 11 1888 5815 17 35 76 56 46 76 27 6566 64 338 971 52 61 431 399 7189 126 9695 6 37 59 669 9986 85 752 2 246 218 8 1271 99 67 3 77 78 132 48 47 9428 47 21 684 86 15 89 34 5655 97 36 14 811 7445 78 673 631 348 747 268 53 53 57 51 78 377 823 452 92 85 825 6 35 927 3432 943 19 325 63 496 48 5843 59 37 22 542 36 39 3 8219 87 78 5 65 363 3 631 9854 2655 13 349 25 48 33 415 66 5787 383 622 99 636 89 43 157 34 9481 426 93 74 93 5 393 7 742 62 49 259 44 49 41 51 314 32 453 85 51 43 351 33 7 215 99 86 86 723 911 2 63 71 66 16 638 249 9 4 16 86 41 87 1376 921 37 34 62 79 181 35 81 34 12 773 9836 211 657 88 47 77 23 671 868 76 46 66 16 5281 2 961 67 86 49 199 4 8 914 67 887 4 2 747 245 657 386 77 639 37 363 71 19 3447 75 746 7915 16 46 77 84 41 884 31 45 439 1666 758 43 9 384 92 9 686 39 83 91 618 83 644 85 787 254 73 66 322 95 67 89 583 911 139 742 69 539 74 1681 29 935 9392 1537 75 5 272 9 85 48 786 72 1 12 595 75 13 5 47 641 9859 63 1625 418 626 67 55 879 59 3 5721 548 647 15 98 54 38 75 49 664 76 7 92 2558 6187 617 72 23 145 34 1724 861 71 36 26 31 597 22 35 6119 57 521 39 784 261 4747 651 41 12 85 24 7 38 14 314 7 39 981 66 229 96 211 98 77 54 8 872 57 561 36 39 13 353 189 126 8 5433 772 124 94 387 426 2844 28 76 63 3 98 16 81 769 766 7846 62 9671 777 359 457 72 719 848 2162 655 56 7 14 68 31 88 182 287 359 263 95 59 744 136 818 3166 8248 3635 162 3 175 144 435 33 86 993 5 69 17 533 879 92 977 51 79 658 64 62 759 89 73 743 92 489 331 61 14 7764 57 337 6499 162 33 664 757 84 8553 21 12 696 21 597 56 122 128 467 357 6431 88 998 52 8175 146 6 51 397 39 211 64 99 157 16 4 61 86 24 35 73 917 568 796 13 49 968 67 6258 425 892 3 29 2 734 74 6 179 28 682 31 567 9327 87 824 918 36 59 298 56 4611 21 954 9 824 478 36 186 27 92 45 151 92 759 252 531 36 793 926 669 442 185 64 287 85 4 1621 91 29 35 2287 817 476 2 85 2524 37 8857 955 673 76 779 36 853 845 34 53 98 87 39 597 549 1936 74 35 343 66 878 999 75 8 538 816 5524 41 8278 875 73 38 47 126 51 654 961 28 97 56 9951 114 8 58 63 28 367 626 269 385 81 945 23 639 37 118 53 528 78 85 1 1 29 28 2937 593 27 289 8613 66 4 6495 37 819 84 343 377 32 22 16 34 27 38 42 675 46 9 531 539 291 47 36 136 419 59 912 21 836 65 86 27 96 28 32 546 185 17 2 831 89 378 97 769 41 638 22 651 58 7 89 44 2124 19 2264 989 98 6333 72 44 58 34 651 8473 15 155 18 4 324 288 89 231 35 92 543 856 23 5 92 46 825 31 526 196 81 2532 27 34 136 96 6652 193 39 36 463 95 298 3753 7 5413 199 324 84 813 32 67 85 4882 381 42 748 8 31 845 92 688 3379 12 79 156 532 748 5127 57 21 13 185 13 272 9 314 97 376 62 454 72 35 22 98 832 64 48 188 92 795 2 65 6 822 2866 35 34 82 2 54 68 75 84 5543 33 493 31 465 8755 176 443 438 587 3 428 175 6 653 31 69 21 6513 433 11 477 9591 6717 57 419 81 637 58 7223 13 52 722 46 617 75 29 45 18 32 59 31 95 12 389 22 24 6618 4546 71 72 56 52 63 94 97 731 4252 52 3615 82 574 825 73 79 247 578 55 874 3127 221 35 91 718 748 452 52 11 964 15 17 54 37 22 51 4 396 475 669 414 35 693 172 589 79 481 57 1 95 16 68 11 62 32 47 31 84 971 251 348 9789 259 47 295 325 42 521 5 58 11 11 6793 88 18 56 99 368 28 541 989 99 918 324 7286 55 315 4 6455 82 61 177 89 65 41 95 79 358 55 982 2798 814 3539 514 284 412 3278 2 73 868 27 45 93 943 22 643 613 541 46 236 7614 824 73 4 + 631 1237 217 777 21 5264 335 5 851 6 12 73 1524 5 45 76 9833 13 31 81 9 21 386 73 547 22 8 46 5 661 928 8 16 8 522 25 21 55 566 84 7 4 163 7317 88 469 524 14 77 9 24 47 882 6562 61 397 488 864 184 475 97 6776 85 2 27 22 68 7162 33 11 6 29 8475 112 99 38 5 44 24 6 36 1981 35 128 217 98 64 191 692 163 378 3797 2 9 74 4 2446 7 221 9 682 739 8 5626 31 37 1 56 49 477 39 74 1253 84 9 686 32 6 61 3 23 6 85 9 958 7334 75 829 919 214 71 71 95 38 64 12 63 285 177 974 66 42 77 1 58 5 1497 589 67 692 96 897 293 9256 76 794 72 244 36 39 1 9377 219 61 2 83 1 973 148 586 3852 2 551 51 85 9 545 61 8391 283 266 7 234 75 89 117 35 132 99 96 62 736 3 487 1 6 48 68 1 38 55 6 79 977 81 532 99 89 62 327 6 7 583 6 93 49 668 954 3 58 13 85 3 317 57 7 1 84 4 63 11 633 633 747 37 5 5 362 9 9 58 7 618 9469 726 874 96 55 66 99 29 162 13 71 77 15 8619 9 384 47 35 69 756 1 2 835 34 883 92 7 5934 553 391 419 6 188 47 411 39 88 45 21 35 1689 49 34 55 66 8 917 9 27 117 4511 762 82 99 825 94 5 987 45 5 24 9 28 325 88 511 695 54 97 667 93 27 81 4 9 942 62 78 61 55 74 33 256 5335 3952 21 11 458 63 33 53 492 47 79 48 13 27 33 89 31 384 7138 41 9757 291 748 66 2 86 16 4 2984 969 27 3 68 47 76 12 7 161 3 84 22 9824 8192 667 84 33 183 4 563 797 9 81 42 38 145 41 1 9624 79 418 43 354 6734 2446 695 98 64 12 33 7 85 19 185 6 52 22 65 5542 37 35 32 8 8 5 8 65 9 86 8 862 994 71 51 6 794 112 66 52 674 525 6949 6 4 17 1 68 3 26 138 986 3787 64 8 452 2 778 24 842 125 9222 122 6 6 49 83 55 74 74 999 938 781 64 29 2 614 81 8354 38 5528 432 6 26 728 174 638 52 683 1 29 3 173 878 98 37 2 15 8187 1 89 18 71 52 499 66 17 89 78 11 8548 45 946 3519 322 23 83 269 76 8625 1 4 442 45 552 729 93 182 441 48 6959 7 734 6494 5615 43 23 37 55 1 574 71 56 719 99 6 94 2 9 71 55 7 52 3 58 86 34 57 2795 4 355 4 9 6 265 71 7 547 97 37 78 693 31 32 61 784 38 15 985 46 2323 11 239 5 369 25 41 535 14 19 15 783 84 24 34 618 1 444 583 66 279 677 37 9 73 7 9166 33 31 35 1147 7 1694 2 47 7262 7 9983 139 775 3 229 6 433 76 64 433 49 164 21 991 237 3799 2 71 999 57 88 73 71 3 459 12 3611 2 9674 332 4 545 2 719 88 969 2635 28 8 89 6886 152 6 4 48 47 667 6814 845 328 835 734 75 199 14 564 4 194 28 9 8 2 55 21 6545 184 99 936 2296 6 1 2935 6 52 55 467 483 27 91 82 99 49 6 7 515 46 5 6 896 55 99 3 24 965 18 622 28 833 22 85 27 3 32 32 29 949 73 7 9 81 518 54 65 16 739 81 833 47 2 23 88 4926 73 1343 61 83 8992 22 16 6 99 99 4392 69 197 54 8 319 544 25 414 77 22 28 82 51 8 395 223 14 17 826 866 4 9597 31 28 743 48 1674 414 78 67 2 38 457 4128 3 4464 757 2638 67 122 966 82 8 698 913 53 727 7 58 73 33 63 158 8 3 671 137 56 9479 89 13 5 472 22 1 8 16 6 528 56 38 43 58 8 85 143 41 49 798 69 47 9 57 8 438 6499 96 86 8 3 45 4 61 35 4789 56 379 59 652 14 297 2 616 632 3 186 686 1 297 5 83 7 59 72 29 495 9348 8841 63 5 9 296 37 492 76 8 1 84 23 67 48 3 27 16 46 87 6 15 967 55 76 7517 2943 91 15 81 81 4 56 51 597 6685 85 2143 8 449 335 67 37 917 8966 97 9 839 514 3 3 96 914 899 459 43 414 56 9 89 16 71 26 8 427 451 684 546 13 983 259 8 4 387 88 5 96 53 43 23 48 5 161 98 9 442 159 392 7447 284 16 6 949 37 947 6 48 56 73 3359 88 626 45 26 488 4 516 6 26 235 618 664 61 653 3 88 8 33 73 91 8 5 19 82 424 53 947 3657 633 1778 912 781 45 1935 1 4 317 8 14 75 826 3 184 242 535 16 992 6176 332 616 5 + * + + * * + * * + + * + + + + * + + + * + + + + + * + * + + * * * * + + + + * * * + * + * + + * + + + * + + * * * + + + + + * * + * + + * + * * + + * + * * * * * + + * + + + * + + * + + + * + + + * * * * + + * + + * * + * + + * + + * * * * + * + * * + + * + + + + * + + * + + * * * + + * * + + * + * * * * + * * * + * * * + + + * * * + + + + * + * * * + + + * + * * + * * * + * * * * * + + + * + + * + + + * * + * + + * + * * * + * * * + * * * * * * * + * + + + + * + * * + * * + + + * + * * + + + * + * + + * + + + + + * * * * + * * + + * + * + * * + * * + + + * + + * * * + + * * * * + * + + * * * + + * * + + + * * * + + * * + + * + + * + * + + + * + + * + * * * + + * + * + + * + + + + * + + + + * + * * + * * * + + * * + + * + + + + + * * * + + * * * * + * * + + + + + + + + * * * * + + + * * + * + * + + * + + * * + * + * * * * * + * + + + * * * + * * * * + + + * + + + + * + * + + + + * * * * * + + + * + + + * * * + + + + * * + * + + * * + + * * * * + * + + * + * * + * * * * * * + * * + * + * * * + * + * * * * * * * * + * * + + * * * * + + + * + * * + + + * + * + * + + + + + + * + + * + * * * * * + * + * * + * + + * + + * * + + * * + + * * * + + * * * + + + * + * + * + + * * + + + * * + + + + + + * + * + * + + + + * * + + * + * + + * * + + + * + * * * + * + + + + * * + * + + + * * + * * + + * * * * * + * + + * + * + * * * + + * + + + * * + * * * + + + * + * + + + * * + * + * + + + * + + * + + * * * + + + + * * * * + * + * + * + * + * * + + + + + * + + * * + * + + * + * + + + * * * * * * + * + * + + * + * * + + * + + * + + + * + + * * + + + * + + * * + + * * * * + + * + * * * + + * * * + * * + + * * * * + + + * * + + + * * * * + + * + + * + * + + + + * * * + + * * * * * + * + * + + + * + * * + + * + * * + * * * * * * + * * + * + + * + * + + + * + + * + * * * * + * + * + + + + * + + * + * * * * * * + * + * * * + * * + * + + * * * + * + * + * * + * * + + + * * * * + * * + + + * * * * * * * * * * * + + * * + * * * + * * * * * * * + + + * * * + * + + * + + * * * * * + * + * +
+142
2025/rust/6/src/main.rs
··· 1 + #[derive(Debug, Clone, Copy)] 2 + enum Op { 3 + Plus, 4 + Multiply, 5 + } 6 + 7 + fn parse(input: &str, part2: bool) -> Vec<(Vec<usize>, Op)> { 8 + let mut equations = Vec::new(); 9 + let lines: Vec<_> = input.lines().collect(); 10 + 11 + let ops = lines 12 + .last() 13 + .unwrap() 14 + .split_whitespace() 15 + .map(|o| match o { 16 + "+" => Op::Plus, 17 + "*" => Op::Multiply, 18 + _ => panic!("how"), 19 + }) 20 + .collect::<Vec<_>>(); 21 + 22 + if !part2 { 23 + let number_lines = lines 24 + .get(0..lines.len() - 1) 25 + .unwrap() 26 + .iter() 27 + .map(|s| { 28 + s.trim_end() 29 + .split_whitespace() 30 + .map(|v| v.parse::<usize>().unwrap()) 31 + .collect::<Vec<_>>() 32 + }) 33 + .collect::<Vec<_>>(); 34 + 35 + for i in 0..lines.first().unwrap().split_whitespace().count() { 36 + let mut nums = Vec::new(); 37 + 38 + for line in number_lines.clone() { 39 + nums.push(line.get(i).unwrap().clone()); 40 + } 41 + 42 + equations.push((nums, ops.get(i).unwrap().clone())); 43 + } 44 + } else { 45 + let mut lines: Vec<Vec<char>> = lines.iter().map(|s| s.chars().collect()).collect(); 46 + 47 + for i in 0..lines.first().unwrap().len() { 48 + let mut is_empty = true; 49 + 50 + for line in lines.clone() { 51 + if *line.get(i).unwrap() != ' ' { 52 + is_empty = false; 53 + break; 54 + } 55 + } 56 + 57 + if is_empty { 58 + for line in lines.iter_mut() { 59 + *line.get_mut(i).unwrap() = '.'; 60 + } 61 + } 62 + } 63 + 64 + let split = lines 65 + .iter() 66 + .map(|line| line.split(|&c| c == '.').collect::<Vec<_>>()) 67 + .collect::<Vec<_>>(); 68 + 69 + let first = split.first().unwrap(); 70 + let num_lines = split.get(..split.len() - 1).unwrap(); 71 + 72 + for i in 0..first.len() { 73 + let mut nums = Vec::new(); 74 + for j in 0..first.get(i).unwrap().len() { 75 + let mut num_chars = vec![]; 76 + for line in num_lines { 77 + let c = line.get(i).unwrap().get(j).unwrap(); 78 + if *c != ' ' { 79 + num_chars.push(*c); 80 + } 81 + } 82 + nums.push( 83 + num_chars 84 + .iter() 85 + .collect::<String>() 86 + .parse::<usize>() 87 + .unwrap(), 88 + ); 89 + } 90 + equations.push((nums, ops.get(i).unwrap().clone())); 91 + } 92 + } 93 + 94 + equations 95 + } 96 + 97 + fn solve(equations: Vec<(Vec<usize>, Op)>) -> usize { 98 + equations.iter().fold(0, |acc, (nums, op)| { 99 + acc + match op { 100 + Op::Plus => nums.iter().sum::<usize>(), 101 + Op::Multiply => nums.iter().product::<usize>(), 102 + } 103 + }) 104 + } 105 + 106 + fn main() { 107 + let file_contents = include_str!("../input.txt"); 108 + let equations_part1 = parse(file_contents, false); 109 + let equations_part2 = parse(file_contents, true); 110 + 111 + println!("Part 1 Results: {}", solve(equations_part1)); 112 + println!("Part 2 Results: {}", solve(equations_part2)); 113 + } 114 + 115 + mod tests { 116 + #[test] 117 + fn part1() { 118 + let input = super::parse( 119 + r#"123 328 51 64 120 + 45 64 387 23 121 + 6 98 215 314 122 + * + * + 123 + "#, 124 + false, 125 + ); 126 + 127 + assert_eq!(super::solve(input), 4277556); 128 + } 129 + 130 + #[test] 131 + fn part2() { 132 + let input = super::parse( 133 + r#"123 328 51 64 134 + 45 64 387 23 135 + 6 98 215 314 136 + * + * +"#, 137 + true, 138 + ); 139 + 140 + assert_eq!(super::solve(input), 3263827); 141 + } 142 + }