From 95d8eec297633d6aa6b1b2b7894b262a8aa9609c Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Mon, 13 Jan 2025 21:17:05 +0100 Subject: [PATCH] Solve 2024 day 7 in go --- 2024/go/day-07/go.mod | 3 + 2024/go/day-07/input | 850 +++++++++++++++++++++++++++++++++++++++++ 2024/go/day-07/main.go | 116 ++++++ 3 files changed, 969 insertions(+) create mode 100644 2024/go/day-07/go.mod create mode 100644 2024/go/day-07/input create mode 100644 2024/go/day-07/main.go diff --git a/2024/go/day-07/go.mod b/2024/go/day-07/go.mod new file mode 100644 index 0000000..de1b075 --- /dev/null +++ b/2024/go/day-07/go.mod @@ -0,0 +1,3 @@ +module day-07 + +go 1.23 diff --git a/2024/go/day-07/input b/2024/go/day-07/input new file mode 100644 index 0000000..92eccb4 --- /dev/null +++ b/2024/go/day-07/input @@ -0,0 +1,850 @@ +28690: 43 665 1 88 9 +292283: 36 5 3 9 8 8 4 4 184 770 +115932854: 67 2 8 7 3 6 49 1 631 4 2 +159: 8 8 3 96 15 +642859823521: 7 9 3 6 5 4 1 27 84 10 3 +140244: 7 7 30 3 3 13 640 156 +1810564: 656 23 6 20 4 +86166816424080: 83 39 80 5 6 8 4 80 861 +20133655: 872 569 576 4 998 +7795767: 41 63 789 1 95 6 441 +104811: 9 8 629 2 7 80 47 844 +6943025: 3 691 151 3 539 971 1 +264923: 71 466 1 27 2 4 19 +1877688115: 4 51 34 1 75 7 99 82 15 +28399327598721: 631 68 62 26 296 860 +48964452: 48 964 382 37 1 29 +9898: 78 17 4 97 295 +377130: 4 2 2 8 81 6 640 4 2 6 3 +1298: 2 5 40 9 713 +2574297726: 27 476 37 5 8 3 4 38 91 +481431045498: 88 47 194 4 4 3 15 499 +222567314: 918 95 99 8 2 73 12 +9638: 56 38 7 16 7 +161090: 3 7 281 2 5 2 7 5 39 7 91 +51044268006: 46 5 46 561 860 5 +39658: 62 325 79 60 819 +109951: 71 86 7 51 2 +12100422: 927 593 308 22 2 +71821: 346 13 20 2 3 +1556: 7 77 7 40 2 926 +892823481883: 9 920 259 75 115 98 9 +782: 4 6 9 28 698 +12585: 7 81 7 55 2 2 +8270: 2 3 74 6 75 3 1 3 3 5 3 2 +89690724: 996 5 622 14 9 +114302917: 369 7 74 13 46 +113961074: 379 87 30 7 6 +184626390: 407 51 5 59 6 806 +35111582: 171 27 6 41 5 +6574224: 7 298 6 60 9 82 +7916961: 4 170 72 521 160 +1537: 6 8 93 44 +3308049045315: 678 992 80 35 609 +27459: 1 1 6 35 72 27 9 +569674: 7 211 79 8 +10475928386: 6 569 6 182 48 35 82 6 +4851753: 966 4 7 993 5 940 8 +1295: 190 98 3 310 1 7 686 +2588200588: 93 369 4 6 462 819 +19444110: 7 68 28 814 80 5 565 6 +745867: 8 711 968 3 8 7 2 55 4 +13209: 254 9 50 8 51 +7769113: 17 4 157 43 803 88 +21625511: 81 2 7 689 1 9 67 118 3 +1077120: 1 4 130 61 7 9 76 44 85 +294905644: 823 651 5 2 558 6 5 +449156: 19 1 707 31 5 +482366646558: 482 366 646 538 19 +324165888: 1 7 574 2 960 6 9 648 6 +9481646353: 7 260 9 41 637 3 5 1 71 +3642387125: 4 7 6 44 269 72 7 1 19 4 +2659769139: 672 335 2 1 43 92 2 9 1 +89493: 991 9 29 831 3 +5601177: 70 80 303 766 108 +20549: 404 6 2 8 5 +82882800: 3 8 445 577 8 315 +600: 5 26 8 66 3 283 +6151659: 7 888 16 4 2 6 1 4 4 4 7 2 +3169221: 222 549 26 90 303 +552172: 5 52 12 6 46 +503: 1 496 7 +12734: 329 4 1 9 1 881 +545591: 5 80 425 4 66 826 +104954683399: 2 7 529 32 39 8 4 184 5 +305810: 265 948 4 918 53 +9625: 90 6 3 564 1 +11014: 31 5 31 18 5 3 8 5 5 7 1 2 +155239206: 587 1 82 43 5 89 75 6 +14077812: 7 8 1 3 3 73 49 8 9 6 958 +1838055318: 5 543 677 31 7 +1545156413: 9 4 60 509 6 5 549 866 +124275: 8 4 419 5 80 +420337: 417 9 4 4 7 1 +7418: 4 69 40 77 2 +530126106404: 51 28 9 113 38 371 1 9 +29436: 8 83 1 3 5 77 2 875 142 +142551104348: 103 297 890 3 35 1 46 +118832: 98 600 8 601 7 2 +507172365: 32 8 9 367 6 6 703 1 5 9 +23495253: 581 7 5 4 15 2 6 2 38 7 7 +40250395029995: 70 575 3 950 29 99 7 1 +372437: 52 4 3 2 1 5 5 672 2 5 4 +23594032362: 9 83 3 2 54 8 365 +136828510: 4 959 5 672 518 53 +159891: 26 541 5 48 5 5 1 44 6 +1651545: 23 9 7 689 4 8 +426888285: 5 220 36 77 7 8 4 4 1 8 5 +57786554168: 8 267 174 7 47 3 6 5 3 +437646968: 509 8 305 10 4 9 81 +9215: 8 1 15 5 57 +14720016: 5 32 80 1 575 8 2 +71695502: 724 11 3 84 99 +144052834877: 71 9 46 4 53 773 49 +127474128: 6 2 3 1 8 1 68 98 221 1 +24824: 1 6 74 348 58 +427443: 845 63 716 5 58 990 +7739520: 3 4 1 584 9 97 22 3 5 3 +14542953306: 5 9 1 49 6 7 7 8 1 4 706 +796979: 7 90 6 96 9 7 +1750051: 566 59 70 40 51 +2219: 1 56 4 56 5 9 +19309378: 4 33 17 425 496 20 5 +1358: 2 4 115 10 127 6 295 +19132434805: 33 550 71 21 7 6 961 5 +9367480: 48 160 66 2 95 4 34 2 +2351520: 1 1 3 6 6 345 +396543: 791 30 23 1 3 7 +2263572323: 2 202 739 13 3 7 5 4 80 +86374: 319 5 66 26 1 2 +460560727: 5 6 5 4 677 66 6 29 4 8 5 +27374821053: 6 3 1 3 74 81 6 4 5 5 56 1 +17759347: 7 1 7 9 71 5 443 4 5 7 88 +1317045161: 3 5 2 1 8 28 3 8 5 1 154 4 +24498: 64 43 6 1 9 7 3 1 7 4 9 9 +3292956: 329 2 638 5 313 +113246: 4 5 8 60 249 +1497554: 9 7 1 484 6 700 1 48 2 +31496: 785 5 3 9 8 +68460990: 267 88 26 9 30 247 +877: 8 74 6 +31283904316: 312 740 98 91 4 9 315 +487: 7 7 8 77 18 +316080: 3 430 6 90 8 +81252447: 92 99 8 8 9 82 2 9 9 699 +82720: 270 542 85 674 762 +5380344: 97 9 1 76 81 +6572: 10 54 1 57 15 +95276379: 84 5 68 139 4 2 65 8 3 +59337632: 3 1 5 27 9 84 35 8 4 +53335311: 3 4 8 51 638 92 7 1 559 +2569795: 83 387 9 8 44 +600018801: 89 741 35 828 693 +1696464: 5 7 600 36 77 +15929: 1 19 837 20 6 +1440994: 5 48 6 9 94 +3540681: 7 8 38 576 678 +129675194: 610 44 4 6 26 354 39 +1618: 798 2 9 4 7 3 +803095: 80 28 2 92 3 +3528527687: 35 278 7 276 8 6 +11982: 148 8 5 9 2 +2624004: 65 9 51 469 77 +9015108: 8 964 51 107 +38598859750: 88 7 33 87 95 50 +7871095: 631 77 3 3 18 +103577: 8 4 3 9 2 3 8 75 825 63 5 +259341: 42 6 4 8 8 9 3 4 8 6 6 63 +16175642625: 4 4 5 85 2 82 2 247 9 6 6 +16842488: 52 750 21 4 89 +254: 229 18 5 +73705155: 1 10 670 449 4 20 639 +6150654: 61 4 84 8 9 5 5 3 +26102032: 300 9 749 8 946 +14167: 91 20 3 4 79 41 31 +128269: 30 1 3 979 6 6 +27152670: 77 44 6 8 122 548 +933846: 2 474 824 527 3 +9448662229: 296 84 9 38 229 +70290954: 4 374 45 4 3 9 2 9 6 1 29 +9352: 9 3 43 7 +237870: 4 392 6 57 84 45 85 +82110: 85 321 85 3 +205797: 64 2 9 32 69 +2308880: 2 587 5 8 98 +13983109811: 1 63 63 6 8 3 2 8 37 7 46 +200698: 1 32 760 7 8 2 +415904: 8 320 6 3 81 3 8 2 3 8 3 5 +22302042: 65 113 89 30 4 1 +716804850: 8 878 9 37 9 54 606 8 +100746530: 3 6 7 3 74 2 83 1 2 4 97 2 +51688: 6 347 4 456 2 +3093750240: 2 9 6 29 43 760 7 42 7 +8676701: 55 6 429 671 61 +12754: 2 23 85 6 7 +51961695: 7 6 824 6 1 155 542 +33859420: 23 9 8 2 8 3 53 93 367 +5573575659: 8 80 4 6 1 550 649 914 +28515425: 8 7 274 8 5 3 6 8 3 685 5 +12901110: 9 917 6 9 914 3 5 +176851425: 348 66 456 302 9 25 +4829584: 9 532 41 58 4 +506182996: 58 181 87 82 93 +57543842: 268 60 84 356 1 +79446: 588 5 27 22 44 +3686759: 3 686 761 +453027: 8 608 14 4 266 88 +2032981: 273 95 55 89 79 2 +4624428: 6 11 33 5 8 674 9 2 6 83 +83328: 298 3 691 7 2 6 +3096378: 7 6 7 3 35 3 73 9 7 93 6 6 +1305324: 288 5 66 6 606 +10073457: 523 642 4 30 357 +24214852: 24 2 14 804 48 +7340086: 239 2 9 6 93 3 1 1 2 7 4 +195489: 6 735 29 30 2 78 64 +130810527: 7 8 749 9 441 7 3 5 1 1 6 +130202199288: 8 714 836 8 6 63 1 428 +12763359: 123 4 6 3 359 +57796204: 4 3 226 596 25 924 3 4 +181620: 522 9 43 7 288 3 6 4 9 +6763: 2 2 1 7 69 65 +33803993: 567 85 96 42 7 +27872: 2 18 1 53 67 133 +493611: 493 1 611 +54600: 3 13 91 60 7 +24148088073: 844 2 859 1 333 +418353409: 567 640 274 3 384 +2011: 6 9 1 3 438 4 3 53 4 8 4 7 +4596317498: 459 6 317 483 17 +496: 484 2 7 3 +6795323645: 90 28 1 995 271 +13042333: 1 7 844 101 9 +1806709901348: 486 983 8 53 478 7 +275168323: 4 9 3 75 2 394 7 265 1 2 +735264: 6 1 352 6 7 +64455: 92 5 510 58 62 719 +112688880: 3 3 17 20 7 52 2 4 1 4 8 6 +1028461654: 17 141 6 165 7 +2069307524: 10 67 709 5 2 69 3 525 +17587502: 14 173 1 94 99 +4424222: 6 16 449 8 8 222 +1674127: 102 7 7 4 4 752 3 7 1 91 +6121750272683: 55 652 268 7 2 11 6 8 4 +335240: 220 8 77 18 96 3 4 20 +227: 2 8 8 +1644222: 68 9 37 918 223 +2347714: 332 705 705 5 8 3 +288708120: 8 196 29 3 39 9 9 2 +720872370: 2 816 71 16 289 54 21 +28647: 83 69 5 4 8 +9243611142: 9 71 1 8 502 64 1 74 1 6 +2384668: 8 290 8 6 14 54 +106: 3 9 39 3 48 4 +6952347: 2 20 213 272 3 1 27 +78720: 86 2 35 80 8 +8828365486: 67 9 2 21 65 48 9 +2516238418329: 8 62 91 9 91 40 1 3 887 +11139: 6 854 2 6 775 44 +617: 34 6 8 2 3 4 325 +80389: 983 40 5 402 466 2 +426400: 85 5 5 43 854 +523644: 1 36 6 189 8 70 91 3 7 3 +6272: 6 76 30 7 8 +446760: 1 247 2 60 3 +1725: 53 4 9 4 9 483 612 +2027266768809: 7 68 75 468 42 321 9 9 +16062: 1 610 459 1 5 4 3 +1054640556: 8 98 196 1 5 6 282 5 6 6 +266040747: 98 22 23 4 8 19 9 69 49 +2650266: 4 2 4 5 6 7 1 7 179 263 5 +1440996: 76 474 9 4 +94431: 869 7 529 93 9 6 7 9 6 +35076: 7 61 1 520 37 +705582: 36 7 32 8 5 134 6 62 +484703: 69 877 75 8 +252216: 571 44 96 9 7 +209472780: 1 366 8 8 75 630 946 +8193489: 80 1 92 812 2 8 665 4 +13724934598: 72 2 644 9 206 32 4 +82375963: 80 2 307 68 898 65 +84596760: 86 5 948 5 920 +85224810529: 1 3 81 3 9 67 9 3 416 9 3 +266934: 3 593 68 4 5 117 9 1 22 +164816: 2 158 95 644 67 529 +1796: 3 297 2 1 14 +60345493396: 60 3 385 69 87 6 395 +6290660: 4 650 8 30 302 +314847: 9 4 1 6 42 94 29 54 39 +8448504910: 44 192 50 49 11 +4594105: 86 84 67 7 30 258 3 1 +526152727: 61 9 85 272 7 +2485: 67 2 2 7 5 +80888199: 668 6 12 819 9 +2943040: 827 7 50 9 7 23 8 +118831268: 72 99 692 499 2 68 +4516687: 6 1 98 2 283 7 +89820: 99 336 8 1 454 14 6 +27421595: 334 821 96 99 +4966069: 7 69 4 65 72 +46913588: 4 733 8 724 57 2 5 21 3 +1372980: 20 8 65 61 7 41 3 +25613: 2 61 203 255 48 605 1 +2290057: 325 77 7 966 4 +2539150720: 253 91 153 354 20 +461181686: 2 5 436 181 683 +5133083942: 34 22 15 3 91 1 448 41 +154998461: 3 7 8 711 459 +41700: 27 367 1 516 4 +734737920: 336 10 79 420 64 +4592955: 590 8 3 60 9 457 7 15 +1607096752: 845 84 19 75 2 +10675518320: 8 58 5 2 2 19 8 2 7 5 16 1 +2746634119884: 1 338 920 2 941 218 7 +3797011: 7 9 955 464 98 27 +693355211: 47 2 810 16 87 7 1 +130528507: 91 39 528 443 64 +5005084: 52 5 5 7 550 84 1 +10190323544727: 53 1 5 986 347 3 39 24 +8283: 9 6 69 8 3 +271057803516: 60 767 589 35 16 +51436: 841 1 444 8 5 36 +58: 4 5 15 +3704: 8 64 6 6 594 +3655413: 2 25 32 223 6 +697256: 4 2 530 24 9 6 6 +363819106: 209 310 74 158 7 2 +17534328395: 812 366 59 395 +88574: 56 55 683 167 1 92 70 +1680393: 6 7 4 99 1 7 114 4 860 5 +40839820: 82 16 71 90 70 +690775: 76 9 54 623 5 +69828: 67 65 529 +3132811200477: 2 8 91 9 523 3 822 80 +3882285509: 5 99 11 31 23 511 +278665835010: 790 57 94 8 5 4 9 9 5 6 7 +8171522: 7 60 8 48 28 +1031448: 63 7 85 5 70 5 2 514 88 +47536770722: 56 93 4 6 1 5 703 71 49 +445217: 4 4 52 1 7 +22061822199: 8 41 65 8 8 38 5 47 5 22 +3074: 4 80 4 9 50 +124022658484: 1 2 9 2 52 9 2 6 2 640 7 4 +82992865844: 3 8 6 43 573 5 842 +3035565: 5 4 5 97 9 694 6 +716: 4 73 8 98 +24427949152: 909 7 2 2 7 4 959 7 9 2 8 +725974: 7 2 314 331 8 80 1 75 +16229351: 2 9 13 4 43 9 62 92 96 +170441317: 9 139 36 4 534 2 43 31 +230345511: 5 355 39 704 919 17 +72829: 128 564 350 71 216 +33939936: 353 49 5 3 3 32 +138960: 29 9 511 3 60 +128293483: 8 16 293 396 87 +117440137: 903 4 83 6 39 4 839 +26292000: 3 8 5 4 65 9 7 96 6 875 +93688783177: 2 8 2 3 9 33 7 54 8 865 2 +17109343573: 4 421 9 1 711 43 +28538702: 828 70 43 4 739 +138438180771: 10 48 6 8 73 40 3 9 771 +13126807879: 6 2 30 5 75 602 6 3 71 9 +87: 78 4 2 +254158884: 30 63 7 693 3 45 8 98 +868246590: 5 788 31 15 90 +7669256: 6 504 716 3 6 7 3 6 845 +457988: 228 47 52 2 7 +2227414: 128 249 5 27 7 778 +211991: 2 5 23 50 8 41 6 4 139 4 +4026392814367: 1 868 80 641 42 723 +353961368: 416 6 98 590 83 400 +2758349: 1 1 3 2 317 8 6 8 138 6 +23591: 32 1 7 7 4 +84824088480: 1 5 1 2 5 1 8 602 2 4 4 79 +151554853439: 26 640 93 164 373 2 +6326: 6 81 72 58 4 +144710: 7 6 4 38 16 4 966 1 3 5 +8082900: 4 5 9 1 1 142 9 1 50 9 7 1 +10836538: 637 14 9 8 5 3 9 88 +16425806: 1 7 8 8 594 9 60 6 8 8 1 6 +2622: 1 4 5 54 787 1 2 5 2 3 9 +1774798: 15 7 7 5 77 6 6 2 2 7 4 2 +341021579: 773 11 85 953 392 +5002482: 61 35 393 50 76 320 1 +14138748: 2 1 511 5 8 53 9 27 13 +2558673224: 513 411 3 1 14 13 923 +563: 26 1 127 361 50 +104773227: 6 9 839 2 96 25 2 9 3 2 +3318: 682 83 1 4 61 4 +852: 8 6 9 15 +3857931: 7 574 9 7 2 5 2 684 1 3 7 +222495: 72 3 6 49 6 +38589184: 7 5 8 7 776 74 256 +606648: 591 5 522 10 756 322 +597: 3 90 504 +1630770: 6 724 75 354 5 +1023697654363: 2 2 40 3 465 3 5 436 4 +925270: 53 6 8 4 3 49 5 +160112022: 95 8 3 13 8 382 21 +747807555: 963 4 19 65 407 +792285: 9 92 65 4 2 3 897 5 +92613: 307 993 12 9 2 70 +149289204229: 36 40 1 2 820 5 4 22 8 +14895: 9 331 5 +833634664: 118 47 7 8 47 7 46 6 6 +65472: 11 2 744 2 2 +14688: 104 4 68 2 +116307: 7 3 4 5 237 5 3 6 57 2 9 3 +5434562863: 7 548 72 286 4 +19195597915: 27 4 98 8 9 2 9 274 7 1 +51289: 96 41 74 5 599 +2100: 1 5 3 411 5 +363904113: 10 83 87 928 426 463 +7194135: 458 3 6 195 79 +2229: 6 12 5 6 69 +5917453: 188 13 736 3 4 +880490: 6 7 9 5 885 37 1 5 8 9 9 4 +769176: 76 84 7 7 6 +753216: 6 2 368 90 4 93 +101420469: 260 71 1 1 389 +22896614: 5 487 76 5 94 +356: 85 4 4 +11123046521: 11 497 41 430 1 964 +104046540: 743 112 2 6 1 676 3 5 +262891155: 648 4 1 8 2 9 6 7 67 9 9 4 +14410: 4 5 1 98 1 3 +350068: 199 348 639 4 531 +23695: 180 6 998 9 2 +41927: 1 9 22 131 6 +6227336637: 7 44 407 78 846 3 94 4 +266366871187: 934 620 60 3 2 95 +551981: 5 452 67 1 84 +38194845319: 54 5 55 9 7 4 53 14 3 2 +2679973302: 6 1 5 923 4 19 21 1 219 +1002684: 54 8 525 4 931 +51253312655: 309 8 188 88 6 5 3 +1354321: 202 634 60 9 3 +1295: 170 2 579 8 536 +26013: 2 1 2 635 6 1 4 8 5 4 7 2 +18481269696: 3 82 9 56 55 6 961 9 8 +631953744: 8 7 761 5 8 7 421 2 9 5 +2679000: 5 6 3 2 8 2 5 1 3 6 570 47 +592859: 19 3 9 13 859 +3729880: 856 9 8 49 11 +497: 5 61 6 8 8 85 +1097: 3 41 12 92 478 +1127538: 663 746 35 1 8 50 +2082: 81 5 228 715 37 697 +228359936: 2 9 4 1 7 988 6 20 55 1 +507339: 5 58 5 7 1 9 +3572622: 7 9 554 824 17 8 +1248: 75 274 7 837 1 54 +15672362: 83 65 61 186 4 +405801: 8 926 4 3 2 8 4 2 9 6 2 +1763746501: 8 2 8 8 1 3 2 5 4 6 452 52 +6290164656: 2 74 8 7 7 82 925 6 +443962004: 81 783 7 981 9 14 +577891583: 4 1 778 91 57 1 1 +843426: 4 5 31 5 41 39 6 9 +1597: 26 5 5 2 900 429 +74691339: 7 4 599 92 339 +9853112835: 162 89 9 37 49 3 89 +28204194340: 39 8 124 9 7 4 4 49 81 9 +9660789005: 4 9 298 6 15 6 54 5 3 6 8 +2556174348: 9 4 7 3 756 9 741 9 9 4 7 +14630: 9 8 8 52 978 +6672215: 665 7 15 128 67 3 13 2 +8985607536: 24 720 52 753 4 +1459218: 69 1 3 3 63 7 307 6 +368507286: 6 6 1 70 4 661 63 2 +23430: 7 137 1 44 13 7 4 22 5 +741391: 8 6 438 7 3 4 5 5 1 3 3 1 +181270: 166 26 42 +4252215576: 773 1 3 55 564 5 3 5 1 +898898694: 4 29 29 86 143 616 76 +23113822: 5 6 9 2 2 4 8 8 7 3 82 2 +174619734: 18 7 95 5 131 3 7 2 4 +4276: 8 34 76 +1170: 4 18 3 519 2 +7964328: 8 9 93 2 170 53 8 8 7 5 8 +1067: 960 80 27 +492778: 84 85 69 5 27 7 5 74 +26142757536: 830 9 288 1 12 184 7 7 +4518650: 9 502 5 7 7 8 2 +103636870: 8 41 3 9 73 91 60 72 +9365852: 4 5 365 8 55 +46863306: 3 665 91 4 78 3 8 354 9 +12771378: 3 9 467 31 83 7 +138279: 3 2 7 8 1 4 61 1 310 4 8 7 +3082845737: 48 892 8 5 150 8 6 135 +489677974: 612 8 304 9 461 4 9 8 2 +10851: 4 8 893 126 9 +682194487: 903 9 1 22 3 5 763 2 +53655: 47 93 162 49 783 5 +99719: 9 43 9 38 721 +5458: 2 37 60 8 2 762 +741494320: 3 2 2 7 513 2 19 3 2 3 +324082818: 634 511 9 99 1 733 88 +406454159: 7 8 3 7 527 7 8 8 2 7 268 +5612814963: 38 3 39 9 9 92 54 9 961 +616977: 565 26 42 +721304: 36 5 4 515 95 696 +155010990: 7 24 3 73 814 722 69 3 +33888340: 84 40 6 4 84 12 629 5 4 +573: 45 3 3 90 +6126: 30 60 2 2 1 +36127: 7 5 531 596 1 +10725: 41 3 87 24 +282744: 589 80 4 6 1 +34940: 96 8 6 956 18 45 155 +1158910204: 2 1 9 16 70 713 5 2 9 6 4 +811460: 80 576 26 209 47 5 +601470: 476 41 9 3 80 127 +295568: 596 4 632 98 +5159: 34 1 17 98 1 162 +574699: 4 23 664 831 481 +24805: 950 2 26 5 48 +1014779540: 3 8 5 107 6 9 7 8 2 64 2 +11414800529: 20 6 79 5 71 2 9 3 945 +73653: 90 808 927 5 1 +1506435960995: 2 27 6 8 6 8 8 795 98 1 5 +12394: 24 57 42 9 4 +69841259: 16 55 422 2 62 +51640931715215: 64 23 536 781 15 214 +75151: 7 515 1 +41133271: 498 83 1 5 14 393 2 72 +255016983: 408 601 52 20 663 +15449832: 9 331 54 67 2 3 4 1 9 8 +384072: 5 552 52 53 975 64 8 +73353263864622: 5 4 335 751 75 8 2 25 9 +193: 26 89 8 70 1 +354746880: 32 9 157 768 2 519 +294615321: 48 376 9 203 3 +1085: 678 5 405 +6804: 97 7 95 53 27 +31486398: 85 7 94 1 367 +8677076: 7 775 4 73 38 4 +969: 4 38 811 6 +379686195: 2 339 28 1 1 61 2 2 95 5 +934642033: 93 464 1 97 6 57 +80834113: 853 89 54 76 14 969 1 +149661389: 2 748 41 20 38 6 +8889: 987 9 6 +154503: 2 6 7 4 50 6 +568127: 3 8 138 51 21 67 +655214: 60 8 9 32 6 214 +208492350: 32 9 4 74 17 7 56 8 68 +108931747: 141 34 9 3 64 1 80 69 +211049832: 315 29 453 77 51 +850953708: 7 7 7 134 96 175 6 18 +1623: 77 21 4 +512647246: 570 498 2 30 906 8 +59854: 592 28 1 9 615 +2618: 978 44 818 715 61 2 +59430: 87 542 4 6 93 3 +39163791: 7 559 3 37 92 +169855479: 999 14 93 17 97 +60: 4 7 32 +67984: 6 77 818 87 3 +3597: 5 7 9 1 7 +41945296: 13 45 99 5 63 985 489 +22456681: 8 29 5 371 1 53 +286540898174: 580 74 2 78 56 9 817 7 +852: 583 4 4 1 2 258 +283860837: 4 1 3 41 8 1 60 415 840 +2965053: 9 26 58 8 4 +2175168088: 804 8 1 3 5 6 1 9 9 6 5 85 +577578802818: 5 7 7 578 798 2 46 17 +587931: 587 9 33 +112731862277: 630 64 42 383 73 +8064588196297: 3 5 9 8 183 8 8 90 7 4 4 +20599396: 6 658 473 31 732 +45071047476: 4 1 20 636 9 548 431 3 +1683: 8 97 907 +43: 1 4 1 +4597: 4 1 2 7 467 +1787362285: 29 651 11 548 5 +10560094995: 366 34 3 88 9 4 9 9 5 +140547692: 7 6 335 4 591 76 8 881 +37010325: 5 46 9 16 66 17 15 4 4 +1001414: 91 9 1 416 +6063: 2 7 8 49 1 5 4 587 8 1 1 6 +24466666: 27 185 900 63 103 +604586056266: 60 458 60 1 1 5 6 268 +74336: 65 5 3 670 39 +133721916: 52 64 9 103 39 +207068460628904: 567 5 913 7 57 8 613 8 +177218494: 7 52 265 8 483 72 8 +829486: 1 2 8 8 23 2 8 4 466 1 5 +70276995833: 9 8 98 71 7 2 43 4 5 8 3 4 +3717098250: 7 590 9 98 253 +269277696: 36 6 363 8 7 5 3 8 604 4 +171851: 2 71 98 842 6 +519752083: 2 28 3 1 6 5 25 6 4 5 8 6 +454553: 45 409 5 5 3 +8107742: 433 604 4 31 67 59 +19212: 3 6 9 6 577 171 +30728092030: 5 2 60 466 331 157 65 +8477565490: 934 7 9 9 4 1 9 46 493 1 +5746813: 89 744 50 8 8 +210863073: 843 45 25 82 434 57 +609362459: 72 57 978 483 2 +11875359702: 1 266 563 79 699 +4212811716: 6 702 7 9 4 9 80 790 7 7 +36216701433: 8 895 4 1 9 6 700 6 8 3 3 +1035028: 3 5 8 5 8 403 88 6 9 29 1 +266586242: 4 1 695 2 7 811 7 +535764165: 4 6 1 5 7 8 523 282 3 3 9 +300760284: 824 73 5 2 84 +477114074: 4 6 8 6 857 12 18 4 958 +32079569825: 71 779 603 58 4 7 8 67 +59675079: 85 7 1 5 2 7 452 7 554 +767331014338: 87 20 93 7 83 20 57 +1342: 4 33 966 297 44 +452895: 482 6 464 15 2 +62613601318: 626 13 601 276 42 +100121433122: 1 791 321 46 9 3 3 1 23 +93305992: 26 801 4 4 8 7 5 2 6 1 8 +23753423880: 18 8 87 7 3 4 31 849 6 +40520808356: 7 52 709 53 1 76 +100193: 6 93 6 86 510 +196735266: 6 5 734 5 9 74 3 1 546 1 +1011: 335 3 6 +6297024: 9 60 514 933 173 +92033659: 920 275 9 52 6 2 +2595879507221: 4 91 6 959 592 92 20 +23108: 1 403 55 37 906 +63840932: 7 98 40 46 6 2 +217986: 25 83 3 303 5 518 944 +186542500: 9 2 654 2 497 +75368: 6 9 8 628 8 +633: 3 55 5 64 199 7 +51806907: 5 9 8 8 3 4 9 2 1 85 3 82 +272251: 5 7 43 75 66 +624026357: 64 800 963 5 230 6 +4374721668802: 6 560 93 1 2 3 84 70 5 +220573: 371 18 6 33 1 +30428064650: 42 26 12 8 9 647 +809617204: 230 7 42 44 341 +508531: 5 63 1 39 7 9 6 7 6 497 +353239643: 5 2 1 5 89 1 8 1 61 8 41 2 +1674273: 3 1 1 5 4 576 62 6 5 9 2 1 +681366292: 904 42 3 72 30 289 +5980228: 6 11 18 339 7 3 9 6 252 +41271: 4 8 1 8 268 +24764: 54 20 4 4 450 9 8 4 92 +15758608327: 8 9 65 8 9 7 9 524 6 6 3 +6979213110580: 8 8 3 5 727 131 10 578 +141008010153: 440 64 1 1 32 101 56 +945: 3 6 7 30 9 8 +94823641: 19 98 9 59 38 3 4 15 9 +1819: 194 3 36 605 26 5 2 81 +115112: 868 558 12 9 8 +7930: 89 4 10 5 278 2 +18653856: 6 5 6 586 6 8 2 +19508800: 290 64 1 84 3 656 16 +567: 8 3 513 7 36 +5852476824: 499 1 2 7 674 240 6 4 6 +439380438: 93 480 5 50 8 2 2 47 +61738728: 8 7 66 46 949 786 73 +7376496: 787 4 8 764 130 93 9 8 +130551619: 187 79 8 869 9 +9887953920: 8 3 1 91 4 955 440 368 +2151: 25 2 48 59 6 +2261: 6 9 5 1 530 7 180 3 8 42 +1491316: 953 56 1 492 1 3 556 +16271778: 1 1 9 8 234 2 9 42 37 62 +14496899307: 483 3 6 89 9 2 5 8 41 6 3 +4918664: 7 927 758 +54859: 271 85 233 2 23 +22972: 8 35 667 8 3 1 61 6 8 3 7 +32815640772: 54 51 8 839 26 49 228 +16673677: 445 5 36 15 40 37 +30479387928361: 5 4 59 884 73 773 840 +134569: 7 3 2 6 3 53 82 55 7 1 7 +58970677: 93 2 8 896 4 90 4 9 59 1 +43121775: 76 938 581 6 1 9 4 272 +4917315682: 99 1 15 7 932 8 4 3 6 8 2 +13894928: 7 96 747 831 49 9 5 +13250: 5 8 2 41 9 +523847: 517 55 553 17 59 2 8 1 +224505: 5 2 7 5 9 2 6 111 16 5 9 3 +8087096159: 360 4 3 942 10 792 78 +2357: 689 43 752 47 763 63 +391638: 1 9 9 416 788 +1974200: 3 5 4 58 2 9 736 18 248 +21725: 2 52 3 4 3 +2687326108: 9 99 7 3 384 741 70 +245761: 2 58 7 454 197 63 +30953583002: 526 3 4 2 6 635 6 45 85 +732348540: 9 246 9 1 195 4 9 77 3 +2246405: 2 934 40 6 3 +3524: 788 67 4 92 6 6 +53303537: 4 921 11 1 54 71 97 +3360049: 698 99 93 9 48 +1618: 6 255 3 3 82 +1909900127: 9 212 47 61 141 86 +243: 1 2 5 13 48 +32995: 32 9 82 1 13 +675556316638: 7 7 8 9 1 2 3 65 7 4 27 80 +2410548942914: 365 8 2 52 3 5 4 6 6 8 44 +280724: 30 6 159 5 49 +1758081992469: 64 2 589 5 8 11 893 33 +774996: 773 4 6 96 886 13 1 +31561010: 1 8 149 805 4 5 9 +211421664040: 57 12 8 810 477 41 +18145662: 355 10 73 7 53 +57939896229131: 579 398 962 291 31 +2468151: 6 3 6 68 154 +1647031320686: 8 5 733 6 60 6 37 9 684 +5499423886545: 54 99 1 4 238 8 650 4 6 +2665606: 82 751 40 8 5 +38799191: 431 9 816 7 5 4 9 859 +89572560: 65 50 6 7 5 786 +89792219: 88 9 6 92 221 +33379385886: 5 5 1 63 14 1 9 6 588 6 +16121194: 48 1 76 441 +1364880: 5 8 589 311 33 22 2 +889954: 889 933 8 6 9 +4763542: 2 96 643 4 811 4 73 7 +38469: 20 11 58 28 35 3 +10576444743: 354 137 290 94 8 903 +135936: 4 6 1 6 59 16 +9062652223: 2 2 543 911 402 +6911190: 5 5 5 86 5 3 4 7 731 702 +888725003: 888 667 8 49 6 3 97 3 +36644159: 611 5 204 76 588 +4095968: 19 21 801 487 3 26 8 +22371212446: 23 76 8 4 4 26 164 3 1 +111106877: 9 9 151 996 1 84 2 5 5 +12136: 6 108 2 9 786 72 8 +1028902: 4 808 550 755 589 +16283: 8 8 2 81 1 +318876267: 1 3 28 651 1 24 +546122570: 473 5 7 57 9 3 6 7 5 9 5 +818: 9 9 9 +933925: 2 954 4 79 461 +1010417: 9 1 10 405 1 11 +778662443: 2 5 581 14 84 941 +4567: 334 35 12 23 116 +1389408: 483 1 7 71 41 +10898985: 2 22 45 9 8 982 +19178168: 69 330 5 45 6 8 5 +111403052: 275 135 7 2 350 3 +6231: 18 594 5 5 53 +293664: 799 6 23 5 41 48 7 +88998: 2 68 536 66 4 2 286 +6582556818: 8 747 8 11 8 7 673 8 1 7 +5149437: 4 39 9 2 5 99 9 31 7 498 +46539232: 6 2 4 4 9 37 27 6 7 51 +93957670868: 3 42 2 9 531 4 31 944 1 +980986: 9 7 4 6 984 +20958: 8 2 17 8 62 +294329746728: 58 9 895 5 5 6 8 3 7 8 8 6 +3849205: 6 4 2 72 1 3 8 30 9 4 6 61 +3727138: 4 4 7 7 5 1 60 5 66 9 5 14 +1700261627: 943 6 4 4 3 904 3 8 629 +1568899629: 152 4 8 78 4 4 75 630 +4891: 97 2 2 4 839 3 +13637089: 28 2 55 6 65 3 7 5 3 7 7 +539480135459: 338 6 7 845 60 7 190 2 +6660670: 66 60 66 9 +1377624: 1 3 4 2 6 2 1 42 6 6 4 941 +3159004: 242 9 145 90 6 +52560043: 801 504 604 13 1 +6298225: 8 82 3 32 955 +2931: 1 6 455 6 65 58 67 5 +6280200: 4 798 29 2 270 +49532564: 448 8 124 876 20 +13168381444: 431 7 5 61 339 949 1 5 +33844498: 33 23 61 392 57 8 +696970913906: 1 3 20 11 227 373 48 +270249841: 172 70 9 43 29 2 1 +1934903247: 7 739 521 92 5 50 +8725453: 2 906 1 3 2 1 7 34 722 +2229689: 1 4 7 6 442 1 82 4 6 8 9 +7225344: 12 5 1 9 1 91 3 9 4 784 +46644: 565 2 31 3 26 +32902200: 6 226 4 2 768 3 3 2 30 3 +335326: 16 3 2 5 7 8 732 4 8 716 +429867267: 9 530 1 45 483 3 6 89 3 +2341: 8 9 49 585 5 +519757625: 55 15 63 7 627 +7858: 72 1 7 7 582 +14980143269: 9 247 810 1 55 6 80 2 +39707833: 83 763 627 231 5 314 +68663: 673 6 6 84 75 1 +97738578: 2 345 7 6 728 9 2 2 5 9 7 +5267: 2 35 67 579 1 +222416: 6 1 1 3 4 7 2 4 4 640 4 +855748009262: 370 1 33 222 34 68 +642616: 39 1 1 44 7 3 1 160 334 +392878: 651 3 6 1 1 1 5 8 9 299 +665029144219: 14 475 2 914 420 6 14 +6157828: 4 7 6 29 1 8 6 8 4 6 5 1 +39566133: 681 7 83 33 +216262800: 38 3 7 94 106 3 520 90 +3581755: 1 75 37 67 7 +44967: 1 1 2 4 78 7 68 4 960 3 +32514046: 9 605 12 8 4 72 72 +114: 7 7 1 9 91 +18533253: 44 5 6 34 84 +249786: 77 47 69 1 75 +1011970: 37 6 7 491 2 9 +746466: 5 381 634 3 98 +2296902: 423 543 4 5 +2884856760: 811 9 9 482 811 +7619775368: 1 9 5 29 336 3 799 48 7 +50721403: 9 2 90 3 8 483 6 7 9 4 4 3 +610038009: 450 220 79 78 9 +80007914: 313 87 4 1 5 5 2 905 9 +46800: 1 2 22 3 2 81 3 120 +20483578: 667 83 5 74 8 +5947620: 29 328 17 98 3 +3878550: 48 1 752 1 42 2 34 5 3 9 +173586586405: 789 22 658 640 5 +12950: 754 4 4 6 882 +1163009: 57 62 4 2 944 +117810: 87 23 59 722 3 +50460241880: 20 6 8 4 86 6 51 89 8 82 +8476174807: 8 4 76 174 73 3 69 2 +44781: 7 71 6 9 +84519915: 426 2 21 53 4 9 8 6 47 2 +3018426: 34 98 9 65 19 112 23 +40138519: 4 10 138 5 17 +114452: 7 4 57 16 71 +317375420622: 3 9 7 46 830 6 8 7 3 2 7 +13865781: 14 99 55 17 264 +1185316293395: 49 38 810 5 2 889 6 8 4 +165520: 1 907 5 9 46 4 2 9 3 6 5 2 +29250: 72 2 97 734 6 5 +1969163: 7 4 7 4 5 165 +1071: 1 531 2 3 1 5 +4703440: 4 7 9 5 56 454 +4417077: 9 7 3 5 8 1 4 5 222 5 51 9 +306782604629: 7 669 565 1 155 2 4 +30: 4 14 5 9 1 +37003: 55 656 837 7 11 68 +11522587: 32 30 2 2 31 6 +875599671656: 2 8 98 344 5 4 3 773 5 6 +641: 61 6 25 2 +10121133615137: 55 126 9 34 60 1 513 9 +182654704: 48 23 9 11 3 254 +2410589726: 9 3 6 2 2 2 3 7 7 38 4 568 +3039121: 4 599 8 63 1 +914129: 5 4 14 121 5 +123846286: 21 9 9 48 652 98 81 9 3 +1013001: 1 3 204 4 49 509 4 33 +34048: 5 8 72 304 +708: 84 56 567 1 +20108586700961: 41 7 265 5 242 994 7 +449981: 488 922 17 7 6 15 +224: 70 72 73 1 8 +1704872581: 8 779 9 2 97 581 +869: 9 2 3 43 553 +2524323977: 2 7 4 74 1 4 3 399 11 8 8 +3620512: 3 61 4 6 5 14 +7304: 33 63 8 3 7 +1544: 60 3 5 596 341 +1876436: 3 118 98 46 3 27 212 2 +396657148: 66 6 648 8 73 90 960 diff --git a/2024/go/day-07/main.go b/2024/go/day-07/main.go new file mode 100644 index 0000000..c009891 --- /dev/null +++ b/2024/go/day-07/main.go @@ -0,0 +1,116 @@ +package main + +import ( + "fmt" + "log" + "os" + "strconv" + "strings" + "unicode" +) + +type equation struct { + result int + numbers []int +} + +func isNotNumber(c rune) bool { + return !unicode.IsNumber(c) +} + +func readInput() (equations []equation, err error) { + content, err := os.ReadFile("input") + if err != nil { + return + } + + lines := strings.Split(strings.TrimSpace(string(content)), "\n") + for _, line := range lines { + parts := strings.FieldsFunc(line, isNotNumber) + nums := make([]int, len(parts)) + + for i, part := range parts { + nums[i], _ = strconv.Atoi(part) + } + + equations = append(equations, equation{result: nums[0], numbers: nums[1:]}) + } + + return +} + +func pow(base, exp int) int { + result := 1 + for { + if exp&1 == 1 { + result *= base + } + exp >>= 1 + if exp == 0 { + break + } + base *= base + } + return result +} + +func equationResult(nums []int, operatorMask, operatorSpace int) int { + result := nums[0] + + for operatorIndex := 0; operatorIndex < len(nums)-1; operatorIndex++ { + currentOperator := (operatorMask / pow(operatorSpace, operatorIndex)) % operatorSpace + currentNum := nums[operatorIndex+1] + + switch currentOperator { + case 0: + result += currentNum + case 1: + result *= currentNum + case 2: + result, _ = strconv.Atoi(fmt.Sprintf("%d%d", result, currentNum)) + default: + panic("Unsupported operator") + } + } + + return result +} + +func isValidEquation(eq equation, operatorSpace int) bool { + maxOperatorMask := pow(operatorSpace, len(eq.numbers)-1) - 1 + + for operatorMask := 0; operatorMask <= maxOperatorMask; operatorMask++ { + if equationResult(eq.numbers, operatorMask, operatorSpace) == eq.result { + return true + } + } + + return false +} + +func totalResult(equations []equation) (result, resultWithConcat int) { + for _, eq := range equations { + if isValidEquation(eq, 2) { + result += eq.result + resultWithConcat += eq.result + } else if isValidEquation(eq, 3) { + resultWithConcat += eq.result + } + } + + return +} + +func main() { + equations, err := readInput() + if err != nil { + log.Fatalln(err) + } + + result, resultWithConcat := totalResult(equations) + + // Part one + fmt.Println("Total calibration result:", result) + // Part two + fmt.Println("Total calibration result with concatenation:", resultWithConcat) +}