From 6af73b70f2b72adf8cfc427b15a26a328217cf52 Mon Sep 17 00:00:00 2001 From: Brian Buller Date: Mon, 9 Dec 2024 10:53:43 -0600 Subject: [PATCH] 2024 Day 7 Complete! --- 2024/day07/input | 850 +++++++++++++++++++++++++++++++++++++++++++ 2024/day07/main.go | 94 +++++ 2024/day07/testinput | 9 + 3 files changed, 953 insertions(+) create mode 100644 2024/day07/input create mode 100644 2024/day07/main.go create mode 100644 2024/day07/testinput diff --git a/2024/day07/input b/2024/day07/input new file mode 100644 index 0000000..b3d2dc1 --- /dev/null +++ b/2024/day07/input @@ -0,0 +1,850 @@ +432832280199: 3 286 4 3 17 682 7 7 9 2 +6606690226623: 605 42 3 47 26 6 622 +4920367: 8 8 896 6 4 955 9 44 6 9 +221825533: 124 5 714 905 66 5 33 +1454747930: 632 499 1 23 3 +702832: 69 7 4 927 908 +2378257360: 35 802 27 897 74 +36705240: 8 8 92 9 1 230 22 62 +30034422624: 8 7 8 96 9 99 2 310 314 +21776455040: 1 530 181 9 6 16 4 227 +17354: 3 4 49 63 6 5 +735393206: 2 44 647 39 3 204 +1093907608: 6 54 66 45 18 709 4 4 +11174: 15 8 9 79 74 +7621599: 18 679 374 78 4 87 +883869: 755 226 1 9 69 +887022: 69 812 6 10 22 +47579515: 988 9 8 891 6 9 7 85 8 6 +16995: 2 4 24 88 94 5 +135322472248: 6 89 4 5 69 631 9 566 5 +254597011: 751 9 356 941 41 10 +4515529: 29 2 21 1 926 4 291 62 +97745351289: 8 6 1 479 2 54 5 3 536 9 +1775421281: 9 494 27 3 493 5 6 42 +56481955: 35 2 6 341 1 81 945 9 +27440: 836 454 82 2 10 +3752: 16 1 723 4 5 4 8 5 1 9 6 +440254803958: 536 1 976 8 61 7 6 2 60 +496630: 1 85 2 32 94 7 44 2 +3755: 8 5 627 84 5 +8640: 57 677 7 339 8 +926112: 3 7 7 5 7 5 1 6 4 3 96 11 +1767658122089: 2 6 37 9 814 6 915 92 +34703414070: 33 7 5 4 4 6 341 3 9 1 7 1 +1975962: 5 30 19 38 2 962 14 +3087257: 344 4 92 191 846 7 +523063: 602 867 476 32 621 +477001448: 887 97 924 6 645 587 +37524240957: 1 9 5 2 5 312 844 1 94 8 +408480981: 3 694 876 2 138 98 1 +111455358: 3 2 1 4 4 4 1 750 803 58 +12208: 7 2 872 +18118: 6 6 1 848 21 53 5 +1923921133205: 22 6 9 9 3 8 899 2 6 2 5 4 +7316806: 6 47 366 74 1 9 6 802 6 +88262640: 9 3 1 7 338 32 8 5 4 6 5 8 +3436366: 5 5 843 7 163 +808033608: 9 48 886 100 2 1 8 +6090016667019: 600 145 23 76 5 70 19 +1312964: 2 2 5 2 90 9 9 9 2 7 2 23 +709338840840: 848 683 14 7 20 729 6 +63693345: 40 1 2 3 9 8 5 46 2 682 +1569184217: 156 918 4 216 4 +670379: 4 748 14 5 5 8 1 2 1 9 1 +15343813: 852 34 18 2 105 62 6 +98348: 7 12 3 1 46 9 3 6 2 5 8 4 +222952654: 1 636 35 26 52 +11582: 3 8 108 87 97 +432735: 2 40 55 99 2 7 5 261 85 +10026: 23 9 313 10 +100398210: 75 3 5 3 2 1 9 7 2 4 921 5 +71205: 83 43 12 47 56 78 7 +15251108: 79 27 4 82 66 1 87 6 +26498477535: 943 281 1 7 718 28 7 5 +301625289: 4 4 1 2 2 4 4 50 9 909 69 +382453972: 3 2 460 2 7 4 6 6 1 7 97 3 +372227: 6 1 664 16 59 5 92 +4803730: 17 463 358 6 143 +886: 3 295 46 99 2 +883866816720: 9 120 92 4 5 7 706 8 90 +10138: 122 75 78 813 97 +114252: 27 1 56 3 4 +136239649003: 650 930 299 350 2 +848541256: 8 485 412 57 +42556158: 1 6 5 9 1 8 2 7 802 6 20 1 +8742867: 9 37 84 7 43 8 39 +33930067: 33 9 2 92 99 685 84 +5488712358: 767 976 67 114 47 +105178767: 4 6 234 2 661 612 447 +1637496039: 2 133 5 180 76 4 9 +17387600: 8 8 330 59 42 850 +1666608: 33 6 3 5 8 4 62 2 4 31 9 +58568068: 5 9 3 7 270 8 4 5 2 5 604 +292643: 57 4 8 47 547 +197450: 4 853 15 37 57 +179947246: 4 1 5 97 2 267 2 7 247 +4048683: 7 4 4 92 685 +884: 49 81 85 19 61 73 516 +1461525800: 2 1 9 558 2 978 13 5 4 2 +103608237: 719 16 8 9 240 +177642816: 139 7 2 9 6 9 9 3 97 5 14 +2032: 78 254 7 6 1 +2606: 64 49 7 872 595 +13150264803: 460 1 763 1 93 1 6 9 67 +3216407038: 71 3 63 28 80 308 +491918366: 680 574 8 7 1 5 7 7 6 5 7 +6666003: 50 4 66 5 101 +3643643828708: 7 8 781 1 1 46 5 93 6 5 7 +5616: 8 50 39 8 19 12 24 +1160101302304: 7 16 7 4 5 90 651 2 304 +69358342: 228 78 19 39 1 +2243865: 66 382 89 +13885270: 20 740 261 1 2 7 5 +1964: 76 571 2 320 906 89 +1201365316: 4 547 65 18 8 502 59 +11183474: 7 6 3 2 1 2 5 861 5 37 9 2 +9805064356: 59 7 9 23 9 981 6 43 56 +5379004: 6 3 9 48 5 70 44 5 3 +6780200: 699 6 9 7 17 7 52 4 35 5 +644944896: 93 2 692 844 49 +1126: 196 20 91 332 480 7 +58697192: 5 1 11 22 8 386 9 54 2 +2662543: 261 8 44 2 2 32 3 +1237124456: 26 30 71 1 387 12 67 8 +118982845659: 894 6 7 55 5 38 6 59 +414521: 8 9 806 475 680 7 212 +793530: 3 70 6 35 30 +5482277663235: 99 3 826 723 2 582 9 +298419548: 70 609 1 1 22 7 800 2 4 +1093820: 546 84 2 68 2 +5528901894428: 42 53 650 94 7 2 428 +46926668: 69 68 6 6 70 +18167353: 9 3 58 31 4 3 91 2 7 96 5 +64812892992: 9 251 7 98 471 3 7 +893878: 6 6 3 865 2 30 573 +663008: 74 5 83 45 31 8 +8656256818: 6 8 3 3 2 7 719 450 9 13 +52533: 74 8 79 91 2 205 463 +123918: 295 877 66 91 18 7 1 +7409: 3 8 2 5 8 4 9 3 4 7 15 384 +3780854221: 4 50 70 854 218 +532715: 24 739 30 7 628 +2393277: 1 3 6 19 225 47 2 19 +22845915: 4 299 5 3 3 53 465 +1800929500: 281 58 2 221 2 250 +86801765409: 504 8 1 53 2 573 3 30 6 +1158536: 5 23 8 42 8 5 21 7 +1903048: 87 2 211 251 49 +8946: 1 717 3 86 4 +2945: 6 50 27 9 +297145857377: 84 7 38 797 7 8 510 18 +334655: 4 65 990 316 2 9 +14667151140616: 90 5 3 797 81 5 4 617 +29948: 50 33 3 9 97 2 +138683011680: 354 577 5 8 943 2 9 +27571975550: 5 8 694 6 763 37 4 8 8 +9361: 7 2 661 92 15 +69168942: 8 1 7 6 2 14 708 54 921 +51333995121324: 6 4 166 6 8 939 8 1 322 +266693441: 89 23 367 355 46 +296253094: 46 2 895 4 32 18 2 +315638681336: 76 23 46 51 641 4 93 9 +28548444: 4 7 5 484 44 +3280661850375: 129 2 39 6 19 125 651 +35166: 17 197 935 8 894 +85957393564: 5 8 9 3 20 6 89 206 7 9 3 +31684500: 86 26 9 8 7 4 1 9 7 450 4 +6623374: 65 48 8 67 371 +19268534: 84 28 555 3 715 +222: 38 9 80 58 34 +78948746425: 823 7 571 3 28 2 3 8 +269131: 7 47 816 667 +4894: 7 940 65 34 4 708 1 +107978313: 7 84 7 66 9 647 198 +1464427: 21 2 315 71 9 61 +170: 7 96 67 +43236: 3 603 3 7 796 +894: 5 6 3 4 848 9 +9946270231369: 8 6 6 7 678 7 3 23 13 72 +5200: 1 9 520 +3398946: 854 796 5 5 +30631535240: 859 38 112 7 935 240 +143158780992: 1 85 21 356 24 1 21 6 7 +2710503: 55 66 3 746 285 +72913514: 728 383 750 4 8 9 2 +1062919217: 4 36 9 310 3 7 8 838 1 8 +4105307258: 873 1 1 95 5 495 7 +4958819785716: 495 881 978 1 4 718 +150073: 5 95 6 312 1 +3041636: 703 115 4 754 7 1 754 +102821262: 962 66 2 12 62 +6557: 43 293 16 949 232 +4320016095: 3 8 5 7 9 52 2 2 81 3 21 3 +6455: 1 1 58 12 7 9 +319102: 3 31 964 14 7 +10428: 25 93 1 4 53 +106990505: 2 1 1 483 4 726 1 3 37 8 +130510: 16 80 135 90 7 +37568316247: 12 546 7 56 640 819 5 +12974091: 11 91 8 7 162 +296259769479: 6 85 786 5 3 2 4 8 2 6 3 1 +9841: 87 89 32 47 2 32 31 +66579240: 3 4 8 775 84 910 +506160: 79 157 4 57 37 +301415161: 39 61 8 34 2 5 88 76 71 +38884404169: 9 7 2 4 440 396 7 4 9 92 +339908: 1 8 6 345 678 2 45 3 7 2 +44162: 3 9 3 2 2 5 7 577 254 56 +79745325: 3 59 2 6 7 1 74 21 46 5 +170532: 981 1 715 7 70 59 +906279: 7 5 9 903 957 +894: 100 1 2 4 5 81 +1251475866101: 899 16 78 87 6 101 +123282: 8 40 55 7 82 +889: 99 15 1 772 2 +63758769: 89 85 5 59 9 842 +197163805: 4 4 71 58 90 3 3 11 7 5 5 +5486251526: 54 862 50 616 910 +2181492: 4 134 62 45 9 3 1 3 7 9 9 +2220: 87 51 201 31 6 +1741009043: 95 7 7 83 9 36 8 6 9 1 4 3 +365355: 1 976 709 19 57 4 207 +1646817134: 4 3 878 39 8 67 9 2 1 +2963977: 6 94 6 99 413 7 5 694 8 +444262: 15 90 875 2 5 6 6 9 4 +25782433: 431 4 1 644 2 3 260 53 +22149558288: 337 65 6 754 87 +245330: 929 4 66 2 69 +1740876747120: 2 757 560 5 7 388 84 9 +528155: 528 151 1 +94211456: 61 98 152 9 9 57 +729: 6 6 7 37 650 +2141237035: 16 6 35 214 67 1 114 +11021: 894 6 512 947 618 +19448400: 5 5 8 6 123 909 4 5 853 +43421964715: 74 5 9 2 273 5 9 9 3 2 13 +10516: 105 12 2 +468364: 5 3 635 600 3 55 36 1 4 +2540126162: 64 4 5 2 23 550 11 990 +135498636: 1 32 72 7 6 897 884 9 +427119: 5 7 21 77 3 7 33 +1375547: 2 24 7 10 54 51 3 7 47 +75126: 268 5 381 97 26 +259534: 471 46 502 +14751899: 88 603 278 96 3 4 4 +71821: 2 897 5 8 2 9 7 4 8 2 26 3 +2420180: 9 87 84 1 3 3 15 62 +19366073422: 727 104 876 6 97 3 6 4 +208: 175 4 29 +19699187203: 2 7 3 7 4 920 869 2 1 8 1 +299381540: 892 4 839 263 43 +5905: 94 6 9 17 5 +40980: 5 2 85 712 31 9 2 38 15 +763521536: 7 53 6 5 1 2 985 7 1 536 +90148425: 3 60 29 685 5 +1042650727: 18 5 9 16 3 68 7 90 725 +687149613: 8 1 748 1 8 9 1 126 4 9 9 +610288140226: 3 8 42 339 1 5 22 6 22 3 +22219924867: 3 9 5 2 1 31 43 9 1 378 5 +411774419: 11 392 8 75 3 21 417 +1243870: 3 871 6 153 4 4 5 27 2 1 +462: 61 43 8 295 58 +33704322: 7 114 95 9 1 91 74 47 6 +77185690: 3 2 3 3 8 9 1 5 1 568 9 3 +13513860: 20 57 329 2 323 4 9 +9854895592: 6 448 964 575 8 191 +33025307: 3 5 5 5 7 4 5 1 25 30 3 1 +3074116: 306 3 33 50 75 4 2 2 +1571679: 876 896 730 214 2 +26026894310083: 9 7 36 96 33 284 9 4 9 4 +1007443822: 79 6 6 365 902 6 24 +921502367508: 337 513 8 750 1 533 5 +431623411: 4 27 27 70 4 138 259 +383212: 2 3 5 59 1 1 299 9 6 3 4 4 +7085596237: 15 8 1 6 8 4 88 471 9 1 +307411248: 96 593 54 44 4 +80556139: 85 77 34 362 7 272 +79307589: 943 6 83 540 590 +6862467: 46 363 5 148 2 +11721: 6 38 5 9 5 308 +11303: 4 36 25 145 125 136 +565675358: 9 18 303 616 710 +1787: 1 35 44 47 8 185 5 2 +62655: 8 89 6 7 3 4 +10351: 40 257 72 +769438725: 213 6 7 55 19 573 +7734600: 6 4 2 4 6 341 1 42 6 5 3 1 +49563394: 32 396 67 63 391 +7759584: 137 899 5 9 7 +47816: 2 9 868 5 76 +2433: 988 616 504 13 314 +1664184: 7 28 676 791 8 3 83 +52310: 67 2 758 1 6 1 +14592532882: 29 592 23 2 7 95 3 389 +20696505527: 3 757 6 550 55 2 5 +226929066199: 49 5 59 8 777 200 1 +257629316264: 652 419 13 82 943 4 +13341918: 3 171 3 41 8 6 3 6 1 83 6 +5160685056: 4 43 1 428 31 6 89 256 +277973946: 336 938 25 3 33 +133578712: 98 3 73 203 8 9 5 7 12 +980922: 1 4 968 4 9 3 1 6 7 909 2 +2530432: 9 2 3 5 508 641 848 +250334206638949: 6 9 907 551 65 97 37 4 +432123: 1 720 2 6 3 +283210364: 4 39 337 7 1 99 66 668 +43774: 12 9 71 330 86 +98806776: 96 2 80 6 773 +156551: 3 965 54 6 213 +12405992: 9 368 99 967 81 8 4 +81584: 92 723 87 +15240: 64 93 97 2 9 +621828109: 713 969 9 208 11 +954205531: 5 949 20 5 534 +483073296: 4 12 30 728 4 95 +775228139: 775 189 4 2 8 323 39 +558: 2 7 3 44 467 5 +12816672723: 1 931 8 458 241 3 +2814754: 9 77 8 7 405 7 +16136760710: 9 6 7 11 3 76 508 8 2 69 +193583: 469 1 4 1 58 8 1 +143886023540: 9 4 7 3 2 3 77 696 6 3 9 9 +1219284712: 5 1 203 978 306 1 713 +269792: 26 872 8 98 9 +132838286090: 7 55 614 997 35 81 4 5 +975: 3 3 143 6 817 +4858518647: 81 8 960 93 4 3 8 71 8 +83595: 11 6 86 302 931 4 78 6 +507102: 5 5 25 3 9 489 8 +203894: 6 58 583 38 910 1 1 61 +31129188: 48 823 197 9 4 +298371: 291 7 3 74 1 +2030146944: 1 51 2 1 120 6 24 7 8 1 +278668: 7 717 6 9 8 2 1 3 2 8 6 4 +44972: 5 1 9 77 42 226 4 705 +709809: 266 7 65 1 2 3 2 +4860: 8 29 27 216 4 +619235: 22 28 3 23 2 +48897: 138 5 61 65 2 80 +331971162: 6 98 5 9 60 9 1 3 454 9 6 +11006876545: 57 583 6 937 35 2 34 +2735160: 11 1 4 46 991 4 +2702721060413: 7 65 8 1 246 6 32 26 38 +9741725: 147 21 86 2 307 +9225: 69 130 195 60 +53051282: 96 788 188 6 2 +622908: 95 749 82 4 3 3 +2288: 20 54 611 8 586 3 +119917504: 358 70 7 9 6 4 2 1 75 4 7 +16996: 2 9 4 3 75 8 6 4 2 7 145 7 +1527322: 28 735 6 61 2 +6126887: 359 30 45 4 35 +483111169: 4 83 110 421 77 7 662 +135691584: 17 584 1 244 1 632 8 7 +1243839: 3 8 81 663 7 2 2 3 2 28 2 +72217579: 8 3 87 75 81 +7873976: 7 101 64 174 42 782 +304140: 64 6 54 6 685 +254951258727239: 983 6 4 330 8 40 4 9 90 +3615: 925 814 6 46 1 2 1 31 +50535441007: 5 87 220 8 88 50 66 7 +46460429: 993 4 466 48 56 125 +763: 46 13 40 6 119 +18661544: 561 4 88 656 326 +96508: 48 2 5 1 10 +8118: 9 77 46 2 206 +243610: 7 49 87 2 5 +416721: 5 160 49 8 3 +76813467287: 95 61 6 749 6 82 88 +33088893: 40 827 8 8 95 +1704: 5 278 1 6 +34: 12 5 2 +152811855: 2 5 2 8 8 2 95 908 9 6 9 +31949018: 7 57 80 61 999 +30941722: 439 34 263 5 46 7 +606107040: 9 72 9 5 4 3 2 9 77 8 3 4 +4169300: 217 22 1 44 865 868 +27510141654513: 59 518 4 824 9 545 1 1 +245431: 35 70 5 2 378 +64504682: 776 51 7 75 5 31 22 +69526563258: 507 1 271 7 445 44 +9554853033: 9 4 9 75 10 933 30 +21739562: 615 736 266 48 74 +545640: 76 5 34 8 678 3 8 1 600 +516200: 3 5 182 34 9 +70845097: 3 40 655 9 6 8 4 4 6 1 98 +3699: 39 38 48 3 1 +45868029276: 359 86 215 8 8 9 6 691 +68048640: 4 5 239 2 9 8 2 720 8 22 +7168648542: 2 487 736 85 44 +52926388: 822 5 4 110 579 +20265450: 803 33 126 5 761 20 +163993250712: 379 2 4 14 6 4 3 452 1 6 +1856: 1 827 8 6 15 +28056: 3 498 14 4 +370678714: 4 5 2 2 669 8 5 4 3 5 1 1 +1297451859813: 1 46 30 199 8 680 9 68 +32983: 6 7 3 49 4 +2773567: 69 3 638 5 21 76 +26677: 6 6 22 47 164 1 62 +3030999: 39 16 774 9 3 +2067742: 4 99 2 4 2 9 4 53 4 9 5 5 +7567223: 29 7 7 8 477 4 3 6 9 25 +113047726: 240 2 636 1 74 +11114607600: 61 2 28 217 6 40 7 20 9 +29370: 72 7 6 8 5 4 +297018840: 73 5 6 2 44 26 3 8 9 34 8 +75762: 757 55 8 +808599190: 2 438 1 2 8 9 94 33 189 +160401777: 2 992 5 326 99 +24082953789: 47 4 5 14 1 3 2 52 1 61 6 +61351314: 56 6 55 98 33 52 +257626: 947 7 8 6 1 943 6 3 8 2 6 +58471611: 3 2 763 1 80 798 5 937 +267063853056: 1 735 4 8 413 858 32 +4021952: 80 2 774 44 2 29 +54301100: 1 72 6 3 7 2 86 5 7 2 77 7 +1903578: 874 242 9 2 4 +32068326: 6 7 60 571 4 6 56 3 4 1 6 +133125630: 3 92 70 5 3 855 5 66 6 5 +80059878: 1 800 53 6 881 +44864825: 21 726 91 66 5 +2255488: 6 3 41 3 9 2 9 6 2 113 6 2 +715257: 77 9 9 4 231 81 +71610765059: 1 716 10 764 853 204 +289322592: 9 928 99 513 375 8 68 +1443308384: 50 6 93 8 739 7 +388667955229: 758 7 1 4 69 77 634 95 +40236: 2 67 1 1 1 2 4 3 4 3 7 352 +51236736: 7 381 72 91 34 36 96 +5922: 4 5 73 45 30 8 49 17 +3991555993: 9 877 89 2 1 6 75 5 9 96 +2408805: 1 1 668 8 45 1 9 +41990160: 763 3 55 1 79 7 60 +98141265: 480 501 412 66 +23695819: 4 283 23 69 823 +1036: 8 11 3 1 9 443 8 7 +39787353069: 73 7 89 482 887 1 77 +1423008774445: 60 72 366 8 6 9 4 42 +1125098203: 112 509 727 93 5 +6881929513: 849 6 1 97 81 967 27 3 +18224: 1 7 8 7 32 83 +4077493: 2 458 31 6 41 285 +2330268: 35 9 616 149 12 +1341655: 72 3 8 776 234 1 493 +489831862671: 882 2 5 5 6 347 4 32 2 8 +318912393: 232 9 60 20 4 66 75 54 +107123: 15 7 9 6 1 5 6 1 1 6 3 182 +500647: 8 8 2 6 8 930 4 6 5 516 3 +1669978: 2 7 7 3 2 31 2 1 22 16 79 +107045: 626 729 79 +12008059348586: 90 57 1 6 49 3 882 8 78 +154801: 6 57 6 3 136 514 63 +21128736368: 88 724 486 2 7 29 5 14 +694986792: 7 553 4 84 1 6 496 9 24 +159642480: 43 3 3 4 862 79 +11856: 78 1 8 19 +13751: 129 8 47 1 1 +540423255: 6 5 7 54 6 544 21 7 15 1 +685860700: 7 8 10 2 688 70 890 +4256432460: 5 304 4 8 4 4 7 7 1 8 4 57 +1588: 6 5 46 3 6 7 5 9 7 8 8 4 +247146718286: 2 8 95 5 473 888 5 3 95 +164263503: 4 211 865 225 3 +7772592: 17 4 9 72 589 +301928: 803 2 188 +938385: 6 626 58 7 125 2 8 7 3 9 +2084022: 2 52 2 3 1 994 27 +107487934: 8 4 26 27 686 603 36 +406830: 1 6 9 3 191 80 2 8 5 1 6 5 +236967: 4 4 1 7 5 5 8 76 368 1 4 +467593488: 4 5 8 9 5 1 8 33 2 3 7 5 +639691: 2 7 7 383 40 17 1 6 927 +107031600: 321 3 2 5 2 7 2 6 6 9 650 +2144004: 207 4 3 400 4 +279778: 9 5 6 8 3 184 2 47 1 59 +607778218: 6 4 128 6 2 95 451 767 +4822129660: 61 7 8 8 7 52 6 7 399 7 +154555: 768 20 79 7 9 3 +342969286: 83 2 349 592 3 +493882342: 4 159 779 823 40 +1911: 648 31 8 2 537 +170421792: 67 9 932 802 3 +669122: 66 9 11 6 8 +23973225: 898 47 980 9 555 +11383749: 4 211 6 2 11 48 5 72 +618219: 37 25 544 17 6 2 7 6 +44445074487: 4 86 7 832 9 3 16 4 489 +65800800: 2 10 4 78 185 57 +1063150: 8 9 5 725 2 6 840 550 +842592: 1 5 1 141 726 536 +3974639974: 4 7 3 227 6 5 1 5 7 1 7 7 +178645534: 8 5 3 9 4 2 454 50 12 72 +274111809664: 92 61 11 8 922 7 86 +19406046: 3 45 8 267 1 3 3 1 1 3 6 6 +605648255: 64 257 19 646 3 +11247: 500 908 777 56 9 5 +644839: 85 7 7 8 39 +929374628578: 603 490 7 1 224 75 22 +14856751530: 27 360 5 543 1 29 +7177970802: 1 3 65 98 44 394 5 +7266924: 78 4 303 990 755 7 7 +1993695638: 1 55 356 956 40 +171671750923: 9 19 670 8 2 2 5 50 920 +794: 44 6 15 7 6 32 +13461: 2 35 1 7 4 1 47 3 +8423: 83 3 5 3 87 +6532569: 652 979 273 9 40 +1458739: 90 3 6 76 9 58 +38209514257: 252 4 8 6 98 763 5 5 1 4 +51816: 53 3 28 9 2 308 8 6 51 2 +816158068: 431 709 6 66 658 315 +17216796: 57 3 297 339 +1011033123: 6 22 8 1 8 956 1 9 1 4 4 +1161: 23 7 84 3 195 +2040808547773: 5 6 436 7 8 721 38 6 59 +5244643188: 9 5 58 36 2 117 39 7 3 +80733: 139 2 58 +5718345570: 2 2 5 3 7 6 1 733 6 87 7 5 +1255331: 4 580 9 77 7 +3470160: 2 29 86 233 81 97 7 10 +81903482467: 682 529 20 3 95 6 99 +23726869: 1 3 2 4 3 9 41 1 1 5 4 5 +35786016: 358 1 6 1 2 8 873 7 +903150000: 4 660 5 15 500 3 6 10 +15945758245: 7 5 368 612 69 1 937 +8695050210: 8 1 652 72 4 294 3 5 14 +141784: 32 173 61 533 6 +16353: 54 3 5 9 93 +1494962061: 9 8 52 781 834 59 2 +2344: 1 986 843 3 505 6 +124204551300: 6 75 8 8 3 2 7 1 64 1 820 +66433812649: 2 73 2 9 4 4 536 9 8 4 2 7 +12197: 53 23 7 +6666802405: 2 6 9 6 25 6 5 1 80 2 402 +909770: 1 255 653 76 7 +28303: 7 2 8 49 78 +169467: 19 27 1 330 177 +1357: 630 70 594 4 59 +8883: 9 42 4 23 97 +10711161: 90 505 750 9 39 24 9 +169794240: 657 51 948 7 704 +282: 4 35 2 2 +2654: 1 1 8 1 55 699 +1175: 702 8 226 95 142 +3989879441: 2 60 422 5 1 3 3 7 39 40 +6515016: 72 9 3 501 6 +68690572019: 842 439 522 9 356 +194517092: 974 4 90 488 2 90 +453981029160: 8 67 5 49 801 69 2 534 +5806: 11 1 560 8 8 +30276400: 979 4 50 77 8 +3338538: 1 24 20 3 12 288 7 2 28 +10686374: 597 179 71 +207907: 4 28 539 91 4 1 65 +21686422897: 5 597 3 99 5 7 7 4 8 9 8 +10722: 5 53 4 3 2 5 52 7 8 470 6 +9157: 96 3 22 860 3 11 4 7 21 +10798555: 4 5 61 7 32 71 6 829 +3498293: 35 136 92 721 +78433460: 99 4 99 786 247 2 85 8 +21: 8 1 2 1 3 +2196812286: 99 4 785 6 49 5 6 62 7 8 +17045931603: 37 87 7 2 832 8 8 9 5 1 2 +309474: 23 724 69 8 5 4 8 11 6 +11552654592: 4 731 379 18 1 3 32 72 +1315800722: 73 100 3 6 714 8 +7853298662425: 9 211 98 87 624 26 +873710: 7 43 9 995 42 5 +154896164: 5 2 2 464 8 25 6 7 87 4 2 +14773610142: 6 585 69 329 61 2 4 70 +3124270781: 60 6 4 34 1 4 1 6 7 59 3 9 +36674498: 6 2 8 86 2 414 26 410 +18039060: 5 8 5 2 593 845 +4095212: 39 280 375 35 177 +325346868: 55 8 4 891 161 9 +36632598089: 469 142 6 72 29 9 55 +4921388: 9 78 995 7 425 +13314319: 133 1 4 237 84 +11183301: 7 567 4 2 1 7 107 7 699 +421368654133: 917 9 545 429 107 +251202420: 59 96 7 7 855 +217109239: 28 196 77 3 1 6 +4668175: 4 667 90 3 273 +86870: 8 66 7 270 76 +1159106725: 5 1 6 2 5 9 3 74 3 6 9 892 +770369: 1 1 5 588 1 7 74 5 3 36 3 +307: 17 283 7 +1411741: 919 8 3 759 2 1 +1519: 2 9 8 7 206 +1267021: 18 87 4 670 53 +13879239: 387 9 4 4 6 9 994 4 2 9 +1402593: 70 5 648 4 1 +78891701332: 8 7 45 4 5 5 5 6 2 1 2 626 +63626892: 984 1 646 604 92 +1851: 5 6 5 4 12 +1075974521: 330 56 651 34 4 5 +117936991521: 390 36 28 3 30 50 8 3 +65257: 51 665 5 94 80 8 49 +15424133761: 7 413 49 1 296 844 3 4 +80415: 254 4 20 8 647 9 +142851424: 4 98 5 3 3 1 68 534 2 9 7 +547593564: 7 841 2 9 49 447 8 68 1 +1571046365: 6 6 54 70 6 6 3 6 1 2 13 3 +7427410: 91 28 62 54 47 +641920: 80 4 12 848 680 +1501683577: 2 885 634 821 688 +1113215999: 3 618 40 8 88 150 40 +50035: 7 8 4 3 6 8 1 9 7 1 5 888 +19931149: 75 857 19 31 6 +2196: 41 9 9 171 4 +5426718738: 3 9 3 9 6 63 4 922 46 4 4 +65599: 3 304 71 137 616 92 2 +176: 1 25 80 6 62 +215406574235: 651 25 6 676 7 4 3 21 3 +3278698508: 47 44 691 594 498 8 +88336024598: 8 7 7 2 6 565 74 3 460 1 +198319: 4 291 98 448 41 +7257389: 72 5 365 731 7 8 +8833: 58 28 2 3 3 +4331: 530 5 8 9 42 +98590140: 120 7 5 87 935 +205: 61 1 60 1 84 +3359182342372: 775 5 93 681 329 68 +1770: 60 4 9 7 27 +64853634878: 2 40 684 6 751 5 501 5 +3274725: 95 9 74 47 75 +4312: 3 9 2 44 7 1 +1180436500: 908 13 32 4 422 9 70 +36597654132: 416 45 169 5 4 1 52 +589165747800: 9 7 7 867 2 90 26 9 29 +696: 429 4 10 163 90 +4628408098: 9 252 2 5 2 2 55 3 2 2 85 +21266146: 49 124 7 29 5 +185239: 649 8 8 278 369 +1190293403: 421 4 8 5 3 2 9 35 325 2 +9756: 451 24 29 9 2 675 9 +347814: 5 7 7 87 9 72 339 +115806620: 90 11 546 6 35 2 18 +100446045: 108 20 1 3 465 +270222028: 498 2 3 7 1 1 4 3 2 70 9 +12877: 6 5 1 878 +685: 34 2 4 +2818399918: 704 51 8 9 9 8 8 5 +40278613: 5 7 19 430 527 +31164267156: 94 415 22 1 732 33 +533534403: 1 39 32 4 5 2 7 8 670 1 +3388311: 5 5 3 85 60 491 7 8 396 +2643509: 429 79 78 2 9 +2481: 99 106 993 2 85 +8530329: 4 2 65 2 326 +66218: 182 5 9 2 36 50 +15853745: 7 4 50 119 104 4 7 3 5 +640628523: 6 936 1 68 521 +393944: 781 4 2 21 6 5 1 9 38 6 9 +8366761: 8 42 83 300 51 310 +561332: 81 5 198 7 +453341344: 8 50 30 9 4 3 8 8 3 157 3 +12993827: 69 221 6 86 847 +20258: 45 3 918 470 11 8 +1075200: 56 100 48 4 +2339: 3 164 1 14 1 +256822108: 47 7 651 83 651 4 22 4 +88685757451: 385 59 23 574 52 +161003: 9 8 5 920 +5053787294: 50 3 6 17 787 296 +345653: 39 4 65 782 2 9 +692729: 21 97 12 562 729 +235005408: 42 44 969 96 869 +3564088981345: 4 330 9 3 889 813 46 +8469729: 7 7 8 50 9 8 1 354 65 6 9 +1314: 93 4 905 31 6 +14682: 27 20 283 513 868 +2428: 5 20 6 7 4 +589050: 55 14 765 +89261942429: 4 6 1 3 9 253 79 77 4 3 1 +124771: 1 2 24 5 9 5 6 4 4 809 6 1 +29609630: 493 6 2 9 633 +660706934: 8 4 67 2 1 6 714 6 3 6 3 6 +22032: 27 7 9 9 8 +8190: 117 67 50 35 +3702: 6 73 4 9 198 199 1 33 3 +243382113004: 90 443 468 575 3 +4942989734: 4 1 7 2 390 5 36 687 +1838026626: 134 514 2 427 32 +394630133760: 9 6 81 57 8 85 6 6 6 491 +587: 51 5 33 6 2 +396078485: 8 6 16 25 9 8 783 1 8 4 +453262: 8 576 458 7 8 54 93 1 1 +93752805: 9 37 52 80 8 +6696955: 82 2 9 17 1 5 50 173 9 4 +1382: 4 219 7 427 73 +1127: 7 35 4 23 2 3 9 7 1 70 6 +736278118: 8 92 278 118 +142680170: 4 7 2 59 128 800 9 8 75 +99438: 6 21 5 1 16 +999662116: 4 3 9 255 8 9 2 8 7 8 36 4 +105193: 7 20 288 5 405 5 23 5 9 +712997700918: 9 211 8 5 6 6 1 86 1 7 9 4 +17516: 9 77 7 25 8 7 +79141837: 90 82 460 4 214 28 9 +997869994: 7 615 24 182 13 30 7 +50374502: 50 360 4 10 499 +37088123342405: 8 255 6 8 634 4 3 780 5 +92254773: 15 4 9 7 617 21 8 5 933 +36031053770: 9 40 310 537 70 +1464045: 5 1 4 53 11 70 27 3 19 5 +8330279120298: 771 3 13 9 1 4 6 461 18 +12455430: 85 5 91 8 9 3 5 7 9 1 879 +369341850: 6 8 168 916 9 204 50 +125379: 819 9 17 1 75 +20306099: 80 923 275 8 91 +2749894: 1 5 450 9 6 4 342 2 3 6 4 +37165358: 48 211 9 548 77 +7996838614: 9 90 93 3 8 3 8 617 +9523750: 951 5 5 82 53 +217008: 171 70 6 80 9 2 +153425: 9 663 860 74 150 +1538: 7 85 31 906 1 5 +590093: 1 99 98 9 6 283 6 303 +8553679901: 4 16 9 6 88 8 8 7 8 9 +6797455: 75 597 7 7 455 +1575: 754 3 4 807 7 +11280676845: 12 8 188 937 5 94 6 6 8 +7745959: 71 19 198 29 +29250142: 44 318 66 6 1 19 2 +253277: 60 422 3 66 6 +136636805: 5 32 993 86 6 +12997841: 7 22 9 920 2 +9146663230: 914 6 6 1 6 3 217 3 1 7 +4421270: 39 7 6 27 28 3 531 7 4 5 +2562620926813: 80 91 156 17 8 7 44 14 +506510220721: 69 2 8 295 597 7 3 70 8 +103746: 60 6 2 7 1 4 341 82 +622421: 288 8 36 21 66 +492676716755: 23 425 33 7 72 84 753 +49937529: 93 490 25 534 8 512 +201927: 27 978 864 7 4 30 +12299184916812: 7 488 440 2 5 46 7 36 +322221: 126 28 9 470 1 +190491080: 35 31 522 94 5 80 +29174053010: 711 9 9 35 4 5 289 12 1 +68669803: 8 2 825 410 5 619 803 +136455084976: 85 2 5 61 2 128 5 4 41 9 +602498: 1 13 4 8 250 1 +60022: 931 4 383 3 15 703 9 +4963: 6 6 7 261 4 +104453968: 117 893 7 27 5 39 65 +94752: 9 4 1 72 94 +120757777: 543 353 3 21 7 +20272312170: 50 82 862 689 6 5 99 +102421450: 772 1 92 8 74 6 30 6 3 7 +1080: 794 2 284 +1239771: 16 65 82 634 3 52 3 88 +39299847: 5 8 568 73 967 +22029: 2 2 169 1 970 7 794 9 6 +19969564: 563 61 8 391 4 +255640334: 51 5 6 403 3 6 +2209315: 5 49 478 9 13 +6939312: 8 7 54 3 3 5 66 9 18 625 +12476250525: 148 526 7 92 84 +5629726690: 15 990 307 55 8 630 7 +15214: 1 229 66 7 27 +217415681669808: 64 9 67 5 681 669 810 +67616125202: 6 2 7 4 674 3 8 13 1 8 5 2 +4074: 439 8 78 87 396 +1238757: 815 183 529 8 807 6 6 +374206: 73 1 671 19 91 14 +1382: 4 56 1 6 32 +19304153748: 21 3 9 905 5 2 228 33 +4987: 4 10 7 90 8 6 +1894113: 7 8 929 8 5 2 2 158 6 9 +28935997: 4 5 93 63 94 +69148510: 4 9 829 70 2 5 +156126997: 90 588 776 37 230 7 +1589400: 52 980 30 +599613: 8 656 4 8 887 +339317: 780 29 15 12 5 +2588582921: 61 13 8 58 73 2 +3727052: 370 2 643 9 616 +3747594: 75 49 1 51 20 593 +3111: 2 59 12 +1079620: 33 53 87 7 1 8 3 4 3 9 4 4 +3621672: 3 529 3 469 4 8 5 4 5 8 9 +11328288: 32 354 179 11 98 +584271: 292 2 270 +46634: 3 85 177 973 523 +12164: 5 66 9 69 4 8 +8490217: 8 75 28 97 1 2 +409921726: 6 506 6 81 9 7 3 821 +904029: 3 74 2 68 24 +44627700: 7 4 2 311 2 4 4 2 6 3 5 35 +5832: 3 1 6 9 27 +220521682: 214 26 626 1 684 +5496192704: 1 74 844 735 88 22 +1440773326: 561 696 9 27 95 +198108950: 66 9 2 87 296 +2509: 9 6 3 9 98 51 642 255 5 +8597381452: 8 851 3 3 617 764 455 +154038986: 3 5 401 2 78 3 8 1 7 1 9 +56533414: 7 3 40 4 3 27 50 92 367 +972587: 8 410 319 7 35 5 2 187 +363005: 231 633 3 6 7 +407379: 943 9 8 6 +920002: 5 165 42 2 4 182 32 2 +2507728825: 930 57 44 331 25 43 +5392015: 2 4 64 652 930 6 8 5 9 3 +21068876502: 3 858 70 631 1 92 554 +18624343694: 6 970 10 74 8 3 4 +7488: 52 36 4 +2214667: 316 3 8 7 6 +501256061: 1 7 40 3 8 9 288 68 2 1 +945436: 9 4 543 8 1 +11868043048: 2 138 793 69 3 7 6 +38705: 38 65 3 2 23 +900721: 5 278 3 9 24 +83041262: 1 3 3 5 8 2 13 198 5 6 2 +13813966805: 2 767 844 41 9 1 80 1 4 +235: 36 7 6 22 164 +44864: 738 4 5 7 6 +5670310: 45 9 7 2 312 +293463: 33 3 8 5 3 1 1 4 5 1 8 +43198: 52 2 75 53 29 4 970 +94308: 192 5 582 4 61 +1400333: 2 786 6 782 1 1 8 41 3 +1846880313160: 420 2 842 891 522 57 +153320681: 7 181 1 9 671 4 5 3 4 8 +23232: 31 4 3 4 678 738 8 +4796064073297: 65 244 9 7 40 61 12 9 7 +1626: 721 30 862 6 6 4 +803135200: 608 3 9 85 79 865 7 1 8 +58139: 2 152 24 3 59 83 +2512577950: 2 2 33 234 2 83 973 5 1 +2674260092: 9 6 6 6 851 9 39 7 40 92 +9048: 7 55 69 7 98 271 7 7 +94476591617: 1 9 1 2 8 8 7 6 591 611 6 +31058293: 570 9 1 462 6 54 1 441 +61255700: 4 637 81 932 25 +5544458624: 416 4 1 333 8 623 +1132152: 9 8 58 2 7 3 8 123 9 3 56 +4486: 9 9 2 4 51 23 3 +1154549680: 66 88 67 143 522 +28: 2 5 5 9 7 1 +1604: 547 52 983 6 8 1 8 +8021681: 8 58 8 1 29 8 5 6 9 4 665 +270066420: 77 58 3 59 59 +9380689961: 9 435 5 262 6 7 384 41 +419835292800: 2 96 14 519 268 4 550 +7634396: 762 1 43 94 +183903: 162 3 883 5 7 82 17 5 8 +177047583845: 79 257 622 872 5 +528257457: 4 794 7 481 1 5 1 745 8 +31147295878: 79 54 745 5 8 385 2 73 +6738: 5 8 31 4 5 7 9 2 5 604 3 6 +171865: 62 89 31 807 +281: 54 7 2 2 79 78 +327655: 32 75 33 118 7 +72384: 28 114 32 8 52 +991771: 8 2 670 2 3 1 9 27 6 1 82 +28441672: 120 8 4 38 3 7 5 9 6 952 diff --git a/2024/day07/main.go b/2024/day07/main.go new file mode 100644 index 0000000..ddbed99 --- /dev/null +++ b/2024/day07/main.go @@ -0,0 +1,94 @@ +package main + +import ( + "fmt" + "strconv" + "strings" + + helpers "git.bullercodeworks.com/brian/adventofcode/helpers" +) + +func main() { + inp := helpers.StdinToStringSlice() + part1(inp) + fmt.Println() + part2(inp) +} + +func part1(inp []string) { + var total int + for i := range inp { + r, pts := parse(inp[i]) + subs := []int{pts[0]} + for _, o := range pts[1:] { + var nxSubs []int + for _, s := range subs { + nxSubs = append(nxSubs, s+o) + if s == 0 { + s = 1 + } + nxSubs = append(nxSubs, s*o) + } + subs = nxSubs + } + for _, s := range subs { + if s == r { + total += s + break + } + } + } + fmt.Println("# Part 1") + fmt.Println(total) +} + +func part2(inp []string) { + var total int + for i := range inp { + r, pts := parse(inp[i]) + subs := []int{pts[0]} + for _, o := range pts[1:] { + var nxSubs []int + for _, s := range subs { + nxSubs = append(nxSubs, s+o) + if s == 0 { + s = 1 + } + nxSubs = append(nxSubs, s*o) + ni, _ := strconv.Atoi(fmt.Sprintf("%d%d", s, o)) + nxSubs = append(nxSubs, ni) + } + subs = nxSubs + } + for _, s := range subs { + if s == r { + total += s + break + } + } + } + fmt.Println("# Part 2") + fmt.Println(total) +} + +func parse(inp string) (int, []int) { + var res int + var rem string + var pts []int + var err error + + ptsStr := strings.Split(inp, ":") + if res, err = strconv.Atoi(ptsStr[0]); err != nil { + panic(err) + } + rem = ptsStr[1] + ptsStr = strings.Split(rem, " ") + for _, s := range ptsStr { + p, err := strconv.Atoi(s) + if err != nil { + continue + } + pts = append(pts, p) + } + return res, pts +} diff --git a/2024/day07/testinput b/2024/day07/testinput new file mode 100644 index 0000000..fc6e099 --- /dev/null +++ b/2024/day07/testinput @@ -0,0 +1,9 @@ +190: 10 19 +3267: 81 40 27 +83: 17 5 +156: 15 6 +7290: 6 8 6 15 +161011: 16 10 13 +192: 17 8 14 +21037: 9 7 18 13 +292: 11 6 16 20