diff --git a/input/day06 b/input/day06 new file mode 100644 index 0000000..9092922 --- /dev/null +++ b/input/day06 @@ -0,0 +1,5 @@ +9 81 5196 916 8 69 25 9931 383 39 753 49 435 3356 314 9 2 142 58 2196 38 41 3 151 2 48 337 127 17 6498 1914 822 3 48 22 475 67 7765 3338 48 45 259 98 9656 3847 2485 596 93 619 9815 915 26 9 4 39 171 921 842 32 99 3 694 2 635 8795 7 79 21 5 51 4 78 88 7 74 19 5 1 52 321 2 146 74 847 33 59 1552 91 645 843 7 558 75 9 19 7 57 7941 5435 63 21 5 43 1497 484 76 17 67 5545 8367 5 9 927 55 86 2584 585 85 8 377 36 24 52 849 329 448 8 6959 9 77 67 163 4414 5 535 88 25 873 859 5498 9993 97 54 4 289 9 9 886 5 47 1226 9 1 228 3 1 1124 16 46 1 7 21 23 63 924 9689 893 43 57 687 452 961 46 764 45 6 282 926 7 59 846 64 819 96 38 17 7 63 543 27 9 5 216 469 94 5 7732 253 877 51 81 75 82 81 8856 7 93 8 75 937 67 72 63 5 79 658 82 58 36 6 26 32 177 89 8 996 12 52 3 4 23 2 4 552 81 9 1 16 51 9484 37 34 98 911 1 56 538 122 5 659 19 14 224 913 29 18 8 52 8 8733 5 7548 25 3835 42 23 69 38 9 39 1526 9 8 2527 443 9 853 857 67 82 23 4 7 8 97 9994 65 67 3 85 5 6855 2 11 3 353 19 4354 6 83 719 69 67 79 97 96 21 16 46 66 3 52 14 39 655 371 7141 18 276 96 8 178 9211 325 1321 83 16 63 312 241 597 21 22 721 498 29 897 682 4629 95 634 2 294 563 55 316 25 67 71 242 872 6 136 479 62 64 67 1495 81 73 2 3 212 242 43 253 81 694 66 9 37 27 31 64 37 7 316 747 25 42 89 821 849 271 38 325 85 4 645 25 13 5 38 9222 58 64 17 5 3 66 2 65 4525 585 983 618 8 98 396 12 19 38 768 8 16 27 99 2659 541 2684 842 57 258 666 779 4 3566 56 57 239 94 541 6 86 1152 474 54 54 8 6724 68 1392 26 815 78 681 85 92 4 217 1145 7 8125 98 46 3 3 84 26 4 2 6 6 2191 43 4 2514 77 37 24 11 3 8 22 1 39 28 5372 798 2 761 35 9 62 147 5 491 94 423 33 24 7749 38 535 932 23 57 36 5 21 3 9 63 7 377 446 81 1277 73 83 5 482 185 113 31 953 3 5 14 4 776 462 9658 755 4 73 544 284 768 84 6126 99 39 381 69 75 49 68 993 458 72 9 91 734 3 89 8 2 9845 796 997 781 66 67 17 4 3217 62 84 742 1865 385 6 86 2 346 9278 1 32 4713 1468 97 3766 971 66 2 226 82 6 6 57 18 1 7 19 78 71 523 53 46 26 321 25 72 85 789 87 47 14 818 63 2 364 613 714 77 12 88 283 3783 3 91 82 8 96 3599 133 39 2 67 84 1 315 98 7 98 8 75 8723 378 62 4 8 6 7 5575 18 678 99 19 34 168 27 12 4 779 588 67 589 3416 42 35 18 63 989 46 481 382 8781 456 4 82 374 52 68 25 5 89 28 19 54 9484 113 5851 443 54 65 4 177 17 4 3 7 448 79 539 73 194 4 7 365 411 473 1 614 28 4 23 32 39 922 46 571 6 25 7384 78 973 5 689 74 789 25 27 856 96 2 83 374 66 8 982 235 55 278 122 3 775 28 5 995 562 956 9179 2 8 19 79 25 3 8146 585 22 63 22 76 925 7 68 759 444 39 41 72 42 46 9 9 883 42 197 37 53 4462 64 1663 87 61 61 56 4 5 393 575 9 696 78 459 7946 21 339 3894 99 94 87 31 2 26 6 3 9562 6 865 52 4 935 57 69 59 95 892 37 464 31 651 3 69 896 813 115 72 82 36 68 897 2 7 321 19 646 825 8 1113 288 244 11 7391 34 28 4 65 98 727 4 212 769 53 14 125 42 23 24 6 25 7 53 6 9 7 1515 11 4 1 4 8 5 58 29 26 846 1122 124 928 3 81 3 39 59 534 9 194 159 8915 7 6 8 66 182 18 853 79 182 992 65 721 311 77 861 13 919 67 97 516 77 79 542 738 971 2 63 73 66 519 77 673 4 76 8975 52 56 39 1 84 31 861 651 87 62 35 54 9 14 71 5225 6 5 3 5 9997 62 123 6298 57 92 59 541 1267 28 352 6 12 194 91 62 7 3 612 5 646 53 657 9547 821 2 77 882 59 6 8293 967 7599 8531 95 74 6996 913 8 77 81 1873 83 15 834 3568 582 7 56 76 14 795 753 733 274 4 1 8 86 5 28 966 79 13 74 99 6 86 27 18 99 45 +6 32 6814 137 4 38 38 5588 49 56 628 6 916 6918 229 33 8 544 59 1438 68 94 398 3462 4 7767 234 873 383 5613 639 714 449 63 36 786 68 6987 1237 59 16 653 85 8595 873 455 339 61 437 5433 836 17 8 48 776 938 344 349 575 637 74 525 93 663 4565 1 55 94 95 459 41 78 324 2 36 57 51 95 17 744 92 856 826 794 23 75 6451 69 726 254 9 241 12 82 44 932 78 6343 4679 16 28 75 75 1357 211 18 86 89 295 5363 1 2 752 6263 17 3374 4236 28 69 8323 891 97 31 44 356 7387 783 9799 58 64 37 416 3714 73 674 94 77 936 299 27 3384 37 13 9 897 9 6 798 8 63 298 58 9 896 96 51 4989 29 28 48 8 78 15 264 361 882 397 147 148 826 765 748 867 5247 774 28 719 679 861 21 328 41 4173 38 1 22 96 68 341 97 4147 38 149 711 68 9 9575 436 43 14 84 85 38 64 1868 9 39 74 78 42 43 94 22 39 72 381 919 398 95 36 53 51 965 81 4 134 115 84 8867 43 678 56 61 33 5 689 5 57 71 67 55 28 974 821 3 467 739 469 92 359 6675 87 939 526 53 115 5 63 9 963 98 547 356 748 41 6266 98 8 99 37 4494 938 36 8484 668 7 554 856 67 57 32 22 488 55 45 4672 627 215 14 53 79 321 61 37 644 479 78 2269 96 34 146 844 46 51 23 97 73 37 136 333 1 33 58 18 382 926 1485 82 542 187 448 169 4811 456 3171 66 44 11 8949 486 916 44 61 531 753 95 261 749 181 25 813 483 412 178 33 254 86 5 42 5829 2889 65 438 45 65 83 42 586 11 94 5 76 968 48 73 523 891 537 49 421 575 14 31 52 85 12 622 659 84 36 362 13 438 329 45 82 38 9 253 91 98 69 65 6841 71 36 45 8 77 99 9819 66 6723 537 922 626 49 79 221 46 13 318 166 629 646 38 68 2683 316 9834 852 2589 164 733 199 83 963 35 33 811 84 112 12 42 529 251 85 66 7 7553 38 2974 97 549 75 213 51 48 63 819 8921 8 8899 23 1 7 3 22 4 1 9 22 6 795 584 48 9479 443 28 79 83 845 861 96 34 51 213 8969 732 73 273 45 33 2 273 72 166 86 623 57 578 6693 11 452 683 56 87 31 629 56 13 49 91 195 122 99 223 1354 24 6 1 366 377 697 87 245 59 2 46 51 452 812 1471 231 4 67 741 216 759 748 5112 66 76 454 448 62 25 93 75 253 861 65 66 195 2 634 9 6 6688 998 458 611 56 31 97 84 177 47 84 563 2253 482 41 821 7 345 487 1 74 195 4662 2613 7218 294 19 68 669 67 4 8 49 85 2 41 97 47 45 947 991 81 5896 163 72 931 272 31 151 19 1 824 88 648 531 651 558 67 77 99 51 9588 1 568 9 31 864 6425 22 71 756 61 83 78 291 44 92 25 9 93 7387 279 49 6 31 4 19 3683 885 84 94 93 39 546 85 76 831 698 415 19 955 3641 73 57 29 25 762 295 455 488 5818 861 87 35 832 6265 13 2 52 31 7585 5271 4288 4478 819 7512 169 25 76 9 955 46 26 12 979 612 26 123 168 422 61 939 269 111 965 17 92 18 54 373 436 14 15 74 314 9 37 5656 69 155 2 951 8 332 42 47 979 64 55 37 744 97 48 731 529 11 73 549 1 792 68 38 587 693 153 6242 1 77 51 24 26 74 836 162 32 79 57 33 659 6 56 593 845 165 93 833 13 47 44 97 292 73 557 244 91 2521 55 1273 43 12 236 42 5 264 67 672 91 73 35 24 845 62 991 1719 51 263 43 69 17 68 7 63 6454 98 978 3491 675 925 13 5615 79 21 774 81 276 91 66 11 744 177 731 914 55 5633 45 75 676 48 173 33 51 145 288 96 862 634 11 233 4364 15 83 7 31 25 541 7 337 324 812 71 732 13 24 95 94 42 633 89 1 447 137 5344 39 179 5 292 615 48 42 486 18 283 571 529 935 54 37 8 56 39 752 339 338 879 5647 99 47 62 63 536 42 863 199 964 326 9 519 327 42 457 57 463 83 37 825 47 445 669 36 655 48 98 22 39 798 554 393 23 91 8168 38 28 6 44 28 78 962 826 79 18 56 67 99 68 136 6296 514 7 93 92 8817 48 982 4984 99 94 224 433 2669 62 773 5 18 863 96 34 34 26 486 8 873 58 4384 2183 233 6 96 831 74 93 3773 913 252 86 49 964 2612 56 42 353 651 957 48 5 592 2617 918 48 5 95 983 641 951 354 215 6 3 17 64 967 87 361 713 9 174 755 8 448 119 241 31 33 +38 63 191 425 2 9 24 3289 89 87 732 7 48 3187 532 848 33 49 72 2825 6 15 7958 1961 87 8569 273 56 1257 424 252 169 398 56 12 378 7519 3527 9292 36 58 46 34 532 164 76 845 91 432 241 17 535 341 1114 292 147 1849 34 289 187 935 58 79 838 3471 712 76 28 79 3123 73 25 4268 61 1 92 72 38 55 54 31 331 5191 515 45 61 578 99 5 3472 2 473 78 28 112 4183 89 485 8495 57 893 43 27 97 393 88 38 24 588 3884 31 2 75 5712 16 2986 1334 93 9879 6811 656 8 71 2 899 3153 636 6481 19 17 4 19 9187 94 4222 97 99 926 128 82 9387 99 65 31 698 47 79 52 7 53 978 43 54 649 828 997 443 53 16 76 7 74 746 191 888 95 88 545 3197 351 594 896 862 8228 567 58 264 67 696 16 629 12 4842 87 6 45 45 6 48 73 2695 23 5737 97 4 9 5995 914 6 3 55 9 4 56 1942 55 627 68 36 3 44 79 15 594 13 413 489 199 99 84 36 72 188 74 66 394 975 57 4789 366 6399 963 425 97 8 5513 32 25 24 9 18 54 965 598 9 635 51 36 831 253 2224 64 71 782 46 4485 48 49 8 38 65 715 148 859 68 2212 81 4 78 82 89 7131 73 8353 9 26 215 679 71 285 27 948 8451 95 15 2215 491 447 83 8 874 328 14 78 263 176 36 1444 78 13 856 432 94 66 51 59 84 32 243 225 92 14 89 59 68 18 5885 12 464 883 163 678 9 591 6481 28 7 99 4463 172 6 62 91 31 358 383 8446 679 91 71 291 8478 61 223 63 849 15 1 55 8339 2158 998 564 47 51 97 89 223 77 24 23 85 885 6 21 96 869 119 79 841 333 688 14 16 24 989 645 824 55 5 183 96 67 18 27 88 48 87 581 875 55 61 94 45 18 91 76 26 84 76 2439 37 232 522 813 6 24 73 838 1 338 491 85 2565 953 51 29 2688 594 3666 278 9542 927 23 342 54 213 72 73 645 95 26 69 26 746 243 79 43 95 951 97 3241 1315 689 68 268 8 84 63 676 7568 45 235 53 1 73 93 54 1 27 53 142 58 274 181 823 743 5765 65 79 21 674 933 22 65 65 119 8797 447 53 932 57 32 4 661 31 412 64 995 33 486 1667 33 218 875 25 549 437 534 6 65 54 46 6681 551 33 9322 5624 73 8 24 221 355 816 36 241 15 75 1 76 216 3378 9846 874 87 38 933 854 92 932 7456 435 62 516 161 98 377 93 13 328 437 23 91 31 18 137 1 49 235 152 6738 359 49 17 44 82 33 53 1 543 3131 332 878 119 18 288 552 51 42 892 2458 3443 2387 52 87 14 426 45 42 53 32 59 161 322 49 665 78 845 661 91 6447 572 85 185 9736 2 869 83 2 112 17 974 5522 9126 43 18 742 2652 81 1333 1 898 9 95 687 3478 11 24 521 91 97 554 3 55 59 2 5 76 7567 483 17 91 966 61 979 937 2294 19 25 34 77 48 59 52 431 46 18 16 83 6324 53 76 134 49 114 299 7 53 2299 712 561 667 89 9998 68 7 98 19 1228 2142 4368 9666 163 2645 29 15 4 4 228 11 828 928 848 329 61 41 957 822 13 549 936 92 951 56 97 72 435 426 523 47 13 94 344 245 995 529 86 71 15 178 9 39 85 966 541 31 1396 359 292 753 18 243 581 43 15 723 829 368 26 751 19 166 99 756 21 75 7 33 625 93 274 3855 7 5 59 92 157 98 44 38 663 531 64 569 153 572 95 44 944 89 742 834 31 564 873 1739 68 4 144 94 8 4516 9 2639 84 43 58 6 152 729 922 1611 66 962 65 47 28 28 4 677 4 11 68 5453 429 387 263 8164 75 77 619 69 273 71 93 878 532 48 77 767 34 7879 41 495 497 68 465 6 857 171 184 92 13 18 37 5127 13 99 28 1 12 5 2 83 964 983 965 31 8872 75 71 98 54 349 9616 58 96 819 794 216 32 668 86 286 1148 19 57 372 31 692 445 792 729 58 67 34 82 838 932 322 356 699 6728 195 56 434 896 8947 84 191 526 123 31 8 573 126 664 462 84 738 41 181 62 15 7114 181 47 982 75 91 59 32 21 8565 41 61 64 2826 46 492 7 98 27 34 337 279 52 68 83 47 65 7 2314 1613 793 32 55 11 22 93 598 63 1 74 921 439 857 19 381 316 4 75 98 25 84 83 184 229 493 24 7921 216 774 5 8 566 97 75 8282 54 18 14 75 552 3294 66 44 675 377 57 79 5 117 4736 185 78 3 2 885 752 576 28 9224 4 3 54 33 139 2 675 155 2 5941 3428 86 445 451 446 35 2 +18 86 78 13 19 8 18 8 4 96 16 7 12 4772 13 514 86 1 59 621 1 54 2747 2554 97 7874 264 31 4276 656 9 76 279 13 38 137 4339 84 736 11 36 86 3 3 584 62 874 5 42 944 54 389 938 1513 8342 92 8987 83 172 356 258 1 62 9 51 413 3 81 76 9147 35 921 5144 71 4 71 57 19 27 48 34 25 2445 48 3 521 291 8 6 4926 922 769 9 99 513 9913 99 1 3533 21 244 93 9 98 11 37 73 5 24 41 368 16 9 5782 377 287 9963 9 9353 9338 1331 6 29 2 38 5947 716 5275 47 43 9 51 823 35 1578 83 6 72 353 1 523 44 16 56 479 39 542 81 81 7 6 87 87 988 483 791 837 86 72 43 329 3 887 523 9 5 5 447 7416 241 54 958 715 4292 564 44 159 62 415 43 19 91 7415 65 9 99 518 9 9 631 4429 64 7328 5 7 271 7 14 7 4 1 2 7 6 7916 78 914 13 78 2 8 25 98 318 5 64 163 638 88 22 738 81 225 5 55 159 448 7 3665 773 4742 494 231 26 7 8444 94 8 22 3 25 62 174 812 76 675 4 3 749 538 2385 23 51 43 27 7746 25 4 38 22 75 4 516 44 38 7191 29 6 91 11 11 9144 25 23 7 93 3 15 82 5982 39 718 3179 31 19 13 838 583 54 1 3782 5 473 88 694 79 3 8118 76 61 3 958 16 91 3 24 69 8 981 6283 494 89 54 6 84 8 5415 71 637 997 489 866 7 4 3485 44 7 38 8711 45 2 35 79 25 243 195 2278 961 93 41 849 9483 3 82 11 253 27 1 83 2815 7182 395 617 94 9 2 3 43 5 36 35 82 613 9 59 5 473 729 1 522 834 895 397 4 9 246 486 14 41 9 856 37 17 6 19 76 41 29 239 617 95 49 63 38 61 27 45 76 35 27 9398 77 592 6 24 2 98 6 149 6 272 133 98 8675 996 69 43 328 333 5886 925 8973 996 33 614 83 459 993 52 33 32 18 84 4 434 7 345 23 37 9 69 11 2962 999 7 632 6 16 71 798 9783 35 181 2 4 69 41 12 5 95 42 475 15 22 153 264 92 8227 27 2 51 839 7383 51 71 63 954 941 113 47 616 79 16 8 15 12 256 99 1 32 6352 113 92 898 31 64 694 764 366 3 18 95 89 2934 395 1 4864 4861 27 5 15 75 76 67 321 85 73 12 4 67 937 7946 471 349 934 23 633 329 4 631 1542 831 48 769 533 6 929 31 28 3 658 97 11 9 72 564 61 49 58 164 3936 649 33 2 81 27 4 4 2 7 33 896 715 259 75 891 66 94 31 9 86 5357 55 28 5 27 413 29 16 65 93 5 817 487 59 4119 54 634 529 94 3635 63 51 916 4672 2 496 4 7 729 7 984 7273 8893 5 86 416 3336 5 45 24 871 5 45 934 531 75 13 749 11 14 696 9 75 74 3 36 9 97 312 1 77 322 111 2268 95 9717 8 59 66 5 1 1 51 626 66 25 18 66 9363 92 36 124 6 5 426 5 17 194 142 964 954 4 6955 76 7 932 24 3312 2814 2839 277 21 37 14 21 4 61 326 16 671 4558 211 47 3 8 725 71 542 847 12 24 625 13 13 51 665 598 535 28 3 58 552 325 139 34 87 75 18 735 8 6 89 387 554 54 8417 512 5 998 94 17 92 35 64 197 568 474 2 7766 7 53 5 756 98 65 1 53 8494 23 89 5452 1 6 68 76 55 296 31 34 225 598 81 575 1332 798 867 47 842 34 63 266 77 69 835 7966 35 6 157 7 74 6189 9 6894 17 29 34 9 44 864 321 2654 818 918 9 4 33 2 37 195 4 32 47 4222 6283 435 277 2512 99 57 16 6 77 85 52 554 915 66 71 684 62 6375 73 697 398 81 635 3 544 36 88 18 1 21 24 4272 7 98 54 89 14 8 2 59 39 926 614 21 6477 27 18 57 19 852 3933 66 24 454 291 14 9 324 488 7228 9934 41 66 861 66 218 98 448 479 573 55 91 28 233 87 572 39 878 28 9156 37 524 171 5582 47 477 325 355 72 8 96 448 643 231 49 882 47 766 46 86 6535 44 1 5 46 55 41 9 93 1392 9 37 5 6894 93 295 7 19 6 42 826 382 5 8 51 98 57 1 5248 835 414 31 44 78 7 55 612 88 4 576 346 98 159 21 668 628 6 8 86 25 54 96 344 565 18 76 4611 146 23 14 9 7169 83 98 41 1 47 8 2 341 9292 17 95 584 993 28 41 2 29 5826 423 578 7 8 664 852 935 38 7886 69 43 41 19 995 1 55 656 8 5148 4517 218 753 959 618 7 8 ++ * + * * * + + * * * * * + * + * + * + + + + + + + * + + + + * + + + * + + + * * + * + + + * + * + + + + + + * + * + + * + * + + * * + + + * + + + + * + + + + + * + * * + + + * + * + + * * + * + + * * + * + * * * * + + * + + + * + + + + + + * * * * + * + * * + * + * + * + + * + + * * * + * + + * + + + + * * + + + * + + * + * * + * + + * * * * + + * * * + * + + + + + + * * + * + + + + + + + + * + + + * * + * * + + + * * * * * * + * * + * * + * * * * * + + + * * * * + * * + + * + + + * + * + * * + * * + * + * + + + * + * + * + * * * * + + * + + + * * * + * + + * * + * + * + + + * + + + * + * + * + * + * + * * * + + * + + * * + * * * * + + + + * + * + * * * + * * * + + + + + + * + * * + + + + + + + * * * * + + + * * * * + * + * * + * * + * + + + * * * * + * + * + * + + * + * * + + * * * + * + * + + + + + + * + + + * + * + * + + + * + * * * * + * * * * + * * + * * * * + * + + * * + + + + * + * + * * * + * * + + * * + + * + + * * * * + * * * + + + * * + * + + * * + + * + + * * + + * * + + + + + + + * + + + + * * * + + + * * * + + + + + + * * + + * + + * * + + + + + * + + + * * * * * + * + * * * + * + + * + + + * * * * + + * + + + + * * * + * * * * * + * * + * * * * + * + * + + + * * + + * + + * * + + + + + * + * * + + + + + + * + * * + * + + * * + + + + + + * * + * + * * * * * + * + + * * * + + + + + * * + * + * * * + + + + + * + * + + + + * + + + * * * * * * + * * * * + * * + * * * + * * + + * * * + * + + * * + + + * * + + * + + * + + + + * + * + + + * * + * + + + + + * + + + + + + + + + * * * + + + * * + * + * * * * * + + + * + + + + + * + * + * + + + * + + * + + + * * + * + * * * * * * * + + * * + + * * + * + * + + * + * + + + * * + + * * + * * * * + * + * + + + * * * * + * + + + + * * + * + + + * + * * + + + * * + + + * * * + + * * * * + + + * * * + * + + * + * * + * * * * * + * * + + * + + * + + * + * * * + * + + + * * * * + + * + + * * + + + * + * * * * + + + * + * + + + + * + + + + + + + + * + * * + * + * + * + + + * * * * + * + + * * * + + * * + + + * * * * + * diff --git a/src/day06.scala b/src/day06.scala new file mode 100644 index 0000000..85d3cf9 --- /dev/null +++ b/src/day06.scala @@ -0,0 +1,32 @@ +package aoc +package day06 + +val dayNumber = "06" + +@main def part1: Unit = + println(part1(loadInput(dayNumber))) + +@main def part2: Unit = + println(part2(loadInput(dayNumber))) + +def part1(input: String): String = + val lines = input.split('\n').map(_.trim) + val numbers = lines.init.map(_.split("\\s+").map(_.toLong)).transpose + val ops = lines.last.split("\\s+").map[(Long, Long) => Long] { + case "*" => _ * _ + case "+" => _ + _ + } + numbers.zip(ops).map((numbers, op) => numbers.reduce(op)).sum.toString + +def part2(input: String): String = + val columns = input.split('\n').map(_.toArray).transpose.map(_.mkString).mkString("\n") + val problems = columns.split("\n +\n") + problems + .map(p => + val lines = p.split('\n') + val numbers = lines.map(_.filter(_.isDigit)).filterNot(_.isBlank).map(_.toLong) + val op: (Long, Long) => Long = lines.head.last match + case '*' => _ * _ + case '+' => _ + _ + numbers.reduce(op) + ).sum.toString