commit 8be11ee4c0fabd21c922aeb1037e18a8bd6f2cb0 parent ef3482d10654fca6868840aaa425b9ca1a02e1b5 Author: Martin Ashby <martin@ashbysoft.com> Date: Mon, 30 Dec 2024 21:51:25 +0000 Switched to java because I got tired, but I'm still curious about the puzzles Solved day7 Diffstat:
A | day7.txt | | | 850 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | day7_sample.txt | | | 9 | +++++++++ |
A | src/main/java/day7_pt1.java | | | 42 | ++++++++++++++++++++++++++++++++++++++++++ |
A | src/main/java/day7_pt2.java | | | 46 | ++++++++++++++++++++++++++++++++++++++++++++++ |
4 files changed, 947 insertions(+), 0 deletions(-)
diff --git a/day7.txt b/day7.txt @@ -0,0 +1,850 @@ +9160: 5 209 15 8 5 +12863083290: 9 72 13 7 5 3 4 2 264 90 +17326234: 56 433 82 5 4 9 48 1 10 +2252716342: 645 706 51 97 952 +70761644: 5 20 28 9 34 585 1 4 +316719720: 308 8 7 197 20 +183285: 3 995 6 7 2 4 5 9 4 5 220 +349651962: 8 492 23 8 62 633 81 6 +252724044: 5 1 70 943 4 44 +51158184: 6 30 9 101 787 7 62 47 +1011120825: 58 95 2 660 825 +54823041064: 795 842 819 6 3 +3665717316: 2 2 6 86 4 1 2 111 1 4 5 4 +78492912915: 151 44 65 9 5 2 5 443 +4091328: 44 3 11 592 9 +2307972576: 244 52 2 427 213 +6021: 54 6 21 +22464547: 8 2 8 9 245 566 7 +35474: 69 5 466 919 68 3 +63855435: 39 6 18 822 3 8 411 9 +270959807: 72 207 340 97 7 +20383: 2 4 846 6 71 +8523487: 3 5 73 141 1 144 97 7 +652037444: 935 83 3 4 1 8 8 5 444 +2925: 48 58 67 8 66 +429330: 76 17 9 66 5 +27360: 80 10 990 34 15 +672089055: 17 7 5 888 562 +2730: 9 3 9 7 40 3 2 5 55 7 8 6 +907: 7 20 8 759 +10637: 3 4 960 1 11 +959108: 74 8 135 12 68 +519905: 5 147 367 905 1 +3696376320: 5 9 328 4 6 52 645 +38312: 164 6 6 79 5 6 7 5 1 1 25 +23647682: 61 2 46 84 2 +225391951: 8 6 675 92 7 7 61 675 1 +465568: 549 53 2 2 8 +535084360281: 9 908 9 69 631 2 7 9 6 3 +240109660: 57 1 4 53 759 555 2 5 +18265: 82 8 28 77 2 93 +450: 2 3 81 4 5 +6125328744: 4 45 9 81 8 4 24 55 7 44 +587: 361 19 60 7 57 83 +5111841: 796 16 42 5 4 4 425 +220231804: 4 9 5 3 42 3 30 1 951 4 +6907971175: 9 7 9 1 80 4 989 19 +995169262: 995 169 1 105 157 +3406241446: 788 2 72 69 37 9 3 6 68 +2303973: 85 329 27 5 85 +10937: 16 2 9 66 245 +1077289824: 178 178 97 34 84 4 +732165: 208 20 1 98 35 +790945344: 63 6 44 2 8 9 72 644 2 +18747610: 913 6 1 408 2 5 +613764: 104 54 67 3 36 +55042: 7 755 69 150 2 +143966309: 509 930 66 235 74 +214207: 46 61 2 20 7 +2694304: 6 5 4 6 192 9 1 3 23 3 4 4 +16496: 54 1 298 9 395 +2300092: 4 9 997 5 46 +6105934667: 92 37 42 661 1 6 39 +2275416: 99 825 4 4 6 612 +7605503: 6 27 8 2 3 5 9 1 647 2 7 9 +6893607: 483 200 26 8 1 388 3 8 +2033491350: 65 474 47 5 66 +8058596400: 43 46 60 412 45 +146300: 6 82 5 279 280 654 77 +11721985163: 9 2 2 9 9 32 2 7 55 1 6 3 +493002397854: 19 35 316 94 542 3 5 +160121: 29 2 61 2 7 83 12 113 +58827345427: 271 2 5 457 734 5 427 +7674984270: 7 1 4 1 61 726 3 29 6 83 +17323650: 394 420 29 75 274 +543: 42 384 117 +1083: 130 689 7 233 24 +7109319470578: 103 5 74 88 3 42 53 26 +1629537: 2 1 697 59 870 53 1 7 +100628: 4 3 26 82 96 +1075450: 112 48 7 2 12 2 40 42 +1074834: 3 5 36 92 217 211 6 +392719392: 6 73 8 1 8 1 2 2 3 82 2 70 +19251: 2 2 6 1 18 7 16 4 163 6 9 +27477: 4 7 15 7 9 77 254 4 4 5 9 +1147630757: 74 3 49 58 58 28 887 +7163: 429 1 75 8 4 677 6 5 +163303747: 7 9 75 613 74 2 3 541 +179497: 174 1 51 2 3 8 53 4 4 1 +490948: 1 817 6 51 95 +46269: 1 7 1 270 99 +113138692128: 980 9 474 6 419 39 96 +5092687: 3 428 2 4 99 7 5 4 48 +1502280: 3 785 213 585 +3190424: 865 9 2 23 8 3 4 6 8 6 34 +84410550440: 2 935 89 5 90 440 +6552398: 943 8 689 7 1 +22831: 8 499 44 57 444 22 +2014464: 6 43 488 8 2 +118003: 13 112 81 67 +236063880: 3 1 3 4 2 373 4 3 98 60 +3776: 6 484 9 863 +19441802644: 36 270 4 2 1 6 84 26 44 +152866560: 977 988 9 40 4 484 +491514831: 12 2 861 7 9 98 8 5 2 6 5 +5310: 1 2 73 739 6 +3578984: 4 67 5 9 6 109 5 8 256 +6241: 14 65 79 +503424314: 82 8 608 31 4 +15205548: 7 1 4 5 2 4 96 5 2 3 646 6 +1045287: 50 4 8 5 5 287 +2855496463: 520 71 2 483 463 +79054: 1 61 255 5 4 +104782: 494 9 208 94 64 +16732836: 6 7 236 5 10 4 336 36 +16869720: 80 52 28 34 6 70 57 +118284: 92 6 4 22 53 94 +302589964: 95 455 2 7 964 +2025335624: 202 5 3 356 27 +5532846786: 5 7 7 8 21 4 1 6 786 +51438103: 5 143 768 42 1 +63199: 1 8 1 9 16 6 8 9 8 9 758 8 +216149472: 44 1 76 57 6 189 +38382140224: 663 801 520 91 36 8 8 +1910811005: 5 9 7 88 1 1 4 34 27 5 4 5 +1238936157: 3 8 296 5 37 761 +127224: 688 68 56 3 213 +736: 1 71 564 97 3 +2611359: 4 375 548 3 939 +4518: 7 1 5 8 6 15 21 9 5 7 1 9 +218454946: 1 621 7 5 5 4 46 45 4 4 6 +124676772487: 9 94 6 4 4 4 2 6 852 4 3 7 +8842560: 2 724 5 7 6 4 3 3 6 7 8 3 +488481191: 93 68 242 881 319 1 +34076876: 8 7 1 827 388 +17347689: 97 231 1 6 774 27 +108385776: 39 5 7 6 4 99 2 7 27 9 2 8 +11954977864: 46 9 758 1 4 618 2 2 58 +1926693054581: 389 18 5 25 46 99 581 +225615476250: 69 97 471 45 675 95 +19672: 81 30 4 8 8 4 99 9 1 73 6 +33032495196960: 7 9 7 57 7 86 7 634 7 40 +703898: 3 2 4 167 1 416 9 8 9 9 1 +61843680: 4 90 7 1 7 3 4 4 1 1 3 60 +19467802: 57 34 35 97 871 +4995992: 9 5 258 2 72 43 46 462 +20890048180: 16 5 3 9 533 4 19 955 +24528846: 785 34 499 61 72 6 6 +4597: 8 6 20 5 3 9 7 +99683884868: 7 7 2 356 3 8 8 4 78 8 5 3 +600538: 815 7 422 7 8 +2067600: 78 87 8 973 848 48 5 +2875200: 2 58 42 16 599 +903413211: 19 75 26 62 379 321 1 +2247: 82 1 666 3 +103008: 69 725 91 2 1 6 58 +426285510866: 9 73 4 7 2 415 111 866 +312158: 324 963 5 17 53 71 +738351478: 4 6 859 4 4 2 9 33 947 6 +262041420062: 32 3 507 92 6 81 4 +1114366: 1 72 45 15 81 3 52 6 +1635836832: 8 238 230 3 809 6 236 +1690223282: 9 4 7 96 6 5 9 4 2 3 284 1 +132294863: 1 2 9 999 34 9 7 6 77 9 3 +198385: 9 328 67 4 442 71 84 1 +48701446: 51 72 9 94 19 27 +96813854640: 9 24 83 15 7 374 8 45 +20088: 31 9 72 +28950915620: 515 694 9 9 705 6 20 +2634: 263 4 1 +274883973: 30 496 29 9 637 +64758638963200: 52 91 808 70 263 920 +2446488: 1 1 6 3 1 4 8 7 28 36 4 8 +310: 4 59 238 9 +1654: 19 77 5 94 92 +5599363793226: 73 9 8 738 9 49 9 947 +1099698737605: 815 8 337 75 9 4 40 4 1 +3081812: 811 1 38 14 +3251205909: 8 406 3 205 909 +973260: 375 431 577 8 6 +319945852802: 6 71 76 9 840 630 2 +195001400: 608 560 6 220 755 +3845052: 29 7 9 2 7 884 639 5 2 +2839928: 44 36 8 3 4 47 8 4 2 4 +4450238: 444 7 2 739 499 +43831904: 45 77 95 76 81 592 2 +28688988: 8 95 10 4 9 5 18 8 7 4 +8429488: 4 4 9 2 7 7 4 7 5 18 9 986 +6953064: 1 1 1 2 9 9 888 58 2 1 5 3 +258476: 949 34 8 346 2 +1607151: 693 98 5 811 151 +1149: 3 19 724 71 28 5 +1338964800: 38 2 54 2 75 1 5 75 435 +11183415057: 567 23 634 94 87 57 +8654287207439: 2 77 8 8 9 4 780 4 3 442 +1115310049272: 774 52 6 5 204 1 3 24 +11970: 783 4 153 27 230 5 2 +452887658533: 425 410 89 8 551 3 53 +6598: 659 1 8 +33477675: 317 3 21 165 595 +8029213281: 5 27 58 831 502 1 927 +6625582: 64 1 2 7 6 9 50 7 4 504 +1491353744080: 981 5 7 688 95 304 1 +2487567: 7 96 476 7 2 9 8 17 519 +302182600: 9 9 72 99 3 303 94 +666054772880: 461 516 70 460 28 +4783392: 2 6 466 33 92 +899460: 3 329 3 7 90 +72137: 235 8 6 441 31 1 +26682: 8 894 3 +303472: 2 3 15 868 4 +339220227033: 672 57 984 337 9 +19446704: 68 9 74 444 7 5 1 1 6 29 +260384: 4 5 17 6 7 15 3 53 872 2 +42572238: 16 4 7 46 14 50 2 6 93 1 +181080: 139 216 6 897 39 +300737668: 67 3 78 510 8 108 4 +51624986: 6 2 29 66 73 82 +23713915: 6 63 96 27 83 5 +21476452011: 5 76 586 3 4 3 7 7 88 9 1 +1317695720: 6 1 9 6 6 3 5 605 7 6 440 +1235392: 6 846 1 740 776 +415336470: 8 30 67 5 611 859 +35899422: 9 199 6 84 84 843 226 +182712: 36 29 835 4 97 9 52 +194980: 1 83 586 92 1 9 5 1 4 +494482: 79 1 42 7 21 7 38 3 3 4 +4656: 4 633 23 +7520998968: 44 767 851 3 56 +1806: 3 4 6 3 5 3 6 +266664827568: 2 1 53 993 928 7 65 8 6 +63091296429: 8 1 79 47 531 4 429 +19916522826: 3 9 6 53 91 2 7 17 426 +97500295: 201 59 750 31 28 5 +4151134: 423 4 9 4 1 9 6 7 5 389 +732: 27 265 1 67 373 +17356950016: 4 2 98 77 989 360 1 3 5 +139979897: 8 98 51 7 5 31 54 5 3 2 7 +11144: 3 5 5 9 3 8 +6048: 9 6 2 1 56 +6052651965638: 75 65 814 957 8 39 +47166786: 85 9 5 24 535 5 3 9 54 +13238932969: 6 333 1 1 5 3 69 8 4 7 6 4 +38078364548: 3 3 39 29 783 6 4 1 5 48 +12475348: 3 8 519 5 8 6 348 +1131: 935 99 97 +1437718: 3 4 8 5 6 7 1 4 961 57 5 +73516: 3 978 74 880 42 +979299044195: 1 161 76 82 2 643 5 97 +104302: 6 4 31 1 72 39 7 2 8 6 +40574682: 2 2 8 652 8 9 2 4 829 2 9 +338502730695: 5 9 7 9 3 177 6 21 6 4 93 +116655: 864 9 15 13 2 1 +4265626518: 5 2 967 353 33 8 52 66 +642724: 13 247 3 412 2 2 +8428861454111: 761 426 979 26 111 +17183219762: 7 6 41 30 8 639 3 7 8 5 2 +884961: 11 4 259 97 77 +74374233180: 9 9 1 4 891 15 4 683 +18073400: 877 56 46 23 8 +33416640: 43 161 38 8 480 +10673520: 57 271 3 722 660 +64962450: 754 5 15 82 7 +715337: 823 4 3 7 516 5 1 8 1 9 +482020704: 3 2 90 8 5 9 839 711 46 +4192496: 547 4 3 242 616 +58033588: 4 7 3 620 8 36 59 187 8 +4315891608: 1 2 2 7 3 9 5 5 98 299 28 +98264482838: 3 722 137 2 1 5 132 3 8 +5453075: 767 347 5 979 45 +41527692442: 9 98 511 6 7 7 5 9 7 4 31 +4870599306: 695 7 999 70 8 +244555748: 9 3 6 9 460 3 3 552 8 3 8 +88678: 3 53 8 59 9 1 +10585872: 503 59 985 8 5 95 4 9 9 +18143075454: 8 652 525 74 32 47 +1145865: 1 92 36 5 7 2 3 90 4 3 3 7 +7800: 641 9 2 1 6 +74962209074: 436 73 9 47 42 5 1 7 4 +176556: 45 80 57 17 6 2 51 4 +107954: 7 6 14 672 2 154 +1273301562: 4 66 9 276 7 114 8 7 8 6 +509652055: 81 9 39 66 45 2 3 6 2 +234956: 23 486 5 4 1 6 1 +16599730: 9 249 9 794 819 78 5 +240560: 6 33 76 4 5 +596310276497: 4 7 667 858 276 497 +275375056: 70 320 89 44 44 +12612: 8 97 309 13 39 2 8 4 +536522: 75 1 626 996 10 14 7 +1839333: 4 84 38 29 107 +2734560: 2 66 6 46 6 20 9 6 3 +4422238720: 2 1 1 5 5 5 810 3 7 512 5 +149649715159195: 5 9 964 97 151 59 195 +38485: 48 8 85 +576: 40 1 79 4 96 +3052438: 3 533 60 19 3 3 606 7 9 +1495568: 16 6 161 2 422 +958488: 310 3 838 5 743 1 88 +1901: 8 3 54 17 588 +179429: 1 862 9 5 8 1 2 614 4 9 5 +525656: 9 584 52 4 +6870587136: 292 6 488 28 287 +3655: 6 5 2 7 628 +3334185: 427 46 78 +2851284347: 4 4 9 1 635 8 5 4 338 9 +202080: 87 86 3 9 66 +7955488: 7 95 548 8 +2964891976200: 545 386 31 9 50 6 906 +3917497427809: 3 5 2 7 88 511 4 9 641 +112889: 55 2 2 8 89 +495662593: 9 8 231 4 2 83 126 8 6 1 +578459: 200 5 3 8 9 3 8 3 8 2 73 1 +3129: 93 56 367 6 33 +23442264: 1 93 599 731 411 57 +25156494: 8 3 624 55 4 9 42 8 418 +6136894253: 8 84 9 70 9 51 9 1 7 3 6 7 +582102: 639 8 2 8 1 886 +2500959133659: 8 474 78 942 237 7 +18459077618: 70 293 9 77 618 +162563333: 1 7 4 2 3 94 9 8 8 332 9 5 +37261652242: 7 14 72 4 6 16 522 42 +207456: 34 1 5 76 6 +2150: 77 1 6 3 25 +12254981: 54 2 192 591 5 +9852570422: 156 5 826 9 77 701 2 +917049602: 30 72 145 8 366 2 +235755: 671 5 2 5 3 1 230 32 65 +2377: 66 569 1 7 79 58 3 31 6 +27270311: 6 6 5 6 64 6 261 50 +792: 6 6 3 8 4 4 15 2 82 489 +1855783: 3 36 5 880 944 2 821 +554793040: 3 70 8 7 83 7 438 34 2 5 +625768986136: 2 3 8 7 7 8 6 6 49 8 7 808 +1924939: 168 1 8 1 9 9 5 4 3 8 850 +5253740681: 4 3 53 345 15 5 8 67 1 +988: 181 369 355 82 1 +236888090010: 747 52 3 14 1 6 9 726 +45364: 6 2 63 9 4 +778971319: 2 3 976 74 347 41 +30624235824: 5 7 7 31 7 8 663 5 1 57 1 +52736: 9 6 372 9 46 96 7 7 1 5 2 +2967: 1 6 7 3 8 1 47 6 6 87 6 75 +113164780139: 3 23 2 35 59 9 389 80 +924390: 5 2 7 7 7 4 204 1 6 51 3 5 +535218881: 8 91 99 4 6 881 +6178276: 85 458 98 47 116 +45295: 546 3 17 79 3 6 570 +14816791: 477 1 894 61 6 31 +17851676732648: 365 81 304 7 8 488 8 +15886: 4 84 2 47 1 +335923328: 1 2 75 6 1 6 9 864 8 8 4 2 +8170753060887: 164 931 4 9 3 4 2 991 5 +20454357: 58 26 94 3 6 912 2 7 7 +200120: 76 75 7 180 7 687 350 +1088216: 3 4 5 91 82 1 6 +5071512: 285 7 44 3 1 7 2 414 9 3 +231354485: 618 8 49 955 3 1 2 +852993924: 83 2 29 93 776 148 +208182357425: 239 29 87 5 734 2 5 78 +49530932315: 7 853 9 9 4 74 67 7 7 38 +561148300: 8 496 2 5 797 2 7 302 +3941615194: 6 5 8 813 89 2 3 10 99 2 +163905210: 640 813 14 5 63 +33255: 44 94 2 4 2 165 +1360391: 3 55 916 9 27 9 26 69 +2159460088: 3 25 570 80 62 675 88 +44262: 498 74 25 1 4 412 38 3 +8965388279: 888 8 5 388 279 +43955: 632 5 1 69 2 +1529346: 22 6 6 43 2 6 177 9 7 4 6 +1642: 2 1 544 4 6 +1794425: 82 1 7 8 8 75 4 1 743 3 5 +1349: 22 9 92 11 9 +2303030377: 255 892 9 2 376 +27759864: 6 5 9 16 73 93 88 +6702019: 4 6 9 33 5 9 874 6 93 2 1 +5883193: 4 21 7 319 3 +69074856: 383 4 67 333 8 +62040: 75 93 362 328 895 +189500688569: 590 4 823 39 479 90 +3888237: 54 8 9 2 37 +398: 44 5 3 5 20 1 118 +2215603: 487 8 8 36 71 59 60 +97392: 3 6 446 2 9 4 2 21 3 3 9 8 +6391810540805: 6 3 41 7 5 732 4 6 2 6 1 5 +51958902968: 41 3 436 749 562 +22796641602: 94 3 816 9 80 9 8 20 2 +667714228: 95 3 87 69 5 7 2 1 42 5 +62054942442: 8 79 9 550 551 3 2 7 6 +341639: 7 278 7 9 7 6 9 7 92 3 6 2 +1347474165726: 7 64 97 18 80 5 5 3 726 +6122: 97 61 54 113 38 +790: 443 9 338 +50768: 9 77 72 87 782 3 +2343577: 7 8 5 632 7 367 645 1 4 +989: 9 865 9 9 63 34 +64331904: 8 8 394 8 14 8 91 +30642143712: 97 6 7 2 71 13 5 7 928 4 +225011871524: 69 62 404 394 8 1 4 +16135573219: 39 7 6 3 6 5 4 9 97 652 8 +5436: 2 7 6 5 36 +8455950: 8 9 2 418 43 6 3 5 5 1 +110499708: 6 8 5 5 6 2 2 91 9 6 4 8 +996933579: 414 56 5 43 79 +2752555: 47 9 4 836 5 55 +319854015: 8 4 826 7 65 7 6 45 711 +56402: 6 2 67 9 1 +101609978: 635 8 2 998 1 +440313974: 969 71 5 8 1 9 1 4 9 7 4 6 +9937510: 3 18 4 51 375 1 10 1 1 +2389004: 82 932 31 76 20 +473629520: 8 5 89 728 86 +107461: 6 77 24 460 1 +1922619216: 65 197 5 624 8 7 8 42 +8327760: 624 4 15 884 409 71 +803573134: 658 7 684 73 1 12 68 +217049740: 9 7 1 990 3 1 29 8 428 5 +292733003: 66 5 5 4 3 8 62 5 2 95 3 +9123878275: 98 931 776 44 5 623 +765453560: 3 170 67 53 68 +957520200: 8 6 47 583 182 570 +15039283883: 6 26 63 6 82 4 2 6 6 77 +30571890: 319 6 731 3 5 9 641 6 6 +132711712508: 512 27 96 13 1 12 508 +423112: 2 43 478 750 2 8 82 20 +70101071: 22 51 78 801 755 +9402: 70 913 33 86 8 577 9 +1984297262: 453 6 4 726 437 +653249386: 3 37 322 2 9 3 8 5 4 6 52 +6035407073: 1 132 3 59 901 841 8 1 +24506: 45 3 37 5 6 +82551168: 94 7 9 4 5 83 7 4 4 29 9 2 +13755770: 9 5 2 6 6 68 1 66 1 70 +34132: 3 5 57 147 161 +6307943: 91 2 8 3 4 84 81 635 +675306762: 738 915 29 7 7 6 2 +97282: 919 4 533 5 8 +135263771126522: 7 67 87 7 984 187 206 +1009295: 53 54 4 30 6 2 51 29 8 +4584496055: 81 866 560 3 2 5 +5169024: 7 4 6 569 8 42 3 3 6 6 4 7 +139891020: 816 7 2 5 9 2 5 17 7 2 4 4 +17929476: 9 6 8 9 847 12 45 4 +211434764: 544 4 515 43 56 1 462 +1248564020: 487 9 7 2 8 9 57 3 7 830 +565024321: 71 497 9 17 1 2 8 321 +3025: 248 4 120 8 49 +936327168393: 8 4 246 80 472 32 3 4 9 +22278660: 43 5 903 9 160 512 4 +3631991624: 968 469 6 59 4 1 412 8 +33797299478: 84 4 93 4 9 94 81 +95746482: 2 51 6 7 5 8 8 2 380 3 6 9 +2770589640: 205 9 5 8 90 7 8 58 5 52 +1093979: 334 543 965 6 17 +138965: 2 200 63 3 65 +1763738: 72 5 5 5 43 80 658 +63855: 637 1 55 +36380: 3 7 3 2 62 4 730 5 4 9 1 2 +79726363664095: 79 717 9 363 6 640 9 3 +7076776875: 47 81 6 148 8 875 +4072649: 499 814 336 742 9 +9506: 2 941 934 5 121 +5026957: 9 5 5 2 46 68 82 8 3 8 4 9 +6582936138: 3 1 736 2 5 8 7 8 1 887 6 +23964: 45 68 373 761 597 5 9 +79597: 1 51 7 6 188 72 74 223 +91540907: 8 13 1 880 20 8 97 8 +29130: 4 6 8 18 83 8 63 694 61 +20823223: 6 8 238 1 9 93 759 50 8 +600480: 3 64 2 5 432 10 +5346626271: 9 6 396 9 6 2 61 80 4 87 +722492773: 358 6 4 260 6 2 768 5 +944132904: 8 57 42 11 1 234 4 857 +2140317250: 7 6 37 50 7 2 4 505 4 5 3 +72286: 24 6 75 503 86 +96041: 1 443 7 7 3 9 13 4 9 98 1 +853498: 282 67 65 45 7 336 +11625023154: 6 7 42 3 3 6 5 6 6 759 5 6 +13508656: 99 85 953 206 7 +334464738: 627 5 533 72 38 +58500732486: 9 7 4 1 2 3 86 2 2 6 486 +336088714: 74 6 3 7 442 9 1 5 2 3 2 2 +1790731595: 22 9 55 2 3 26 85 4 1 93 +134421504: 3 124 61 16 57 784 +4022: 5 757 237 +9391: 4 1 260 9 31 +488383: 688 3 5 39 894 7 7 +6468577: 4 69 4 7 50 66 577 +26571: 492 9 6 +572763561: 90 82 9 37 3 563 +15148: 8 5 376 5 97 6 +81117444: 8 8 8 914 5 5 9 44 5 3 9 5 +811699869667: 271 4 9 416 2 6 696 67 +16472365004: 88 20 3 97 325 82 7 4 +50075874: 500 7 58 2 5 4 +54832: 20 1 598 65 9 5 8 +890: 2 8 818 8 48 +133644: 4 89 848 37 3 1 +22083741683: 255 866 7 416 83 +508020: 937 8 988 49 86 +2358: 57 74 9 2 +70458: 1 28 89 6 78 22 158 +333476401: 571 1 583 274 79 44 4 +2551076959: 95 985 4 59 72 554 31 +21634984172: 2 16 34 9 841 64 8 +192852: 95 14 581 58 897 3 +4807921: 9 2 853 2 26 70 9 201 2 +3598182: 406 95 38 21 9 +1529571875953: 76 2 957 187 5 953 +1968621: 605 7 322 48 9 +19338821155: 1 6 6 868 4 3 7 9 842 73 +10738992: 468 5 86 66 4 +426360: 63 325 823 20 20 +1136826: 3 4 7 407 7 4 9 2 7 804 9 +486206: 463 6 152 4 736 6 +14118631: 838 6 52 54 7 +17438683321: 84 753 207 2 74 994 +93975462196: 347 1 9 5 15 4 3 188 8 +2690937353: 3 7 427 7 6 3 3 9 34 2 7 4 +87035634: 207 6 69 987 6 +18246890: 92 2 311 99 101 +5191417: 488 2 591 9 73 +802967859: 716 86 96 7 858 +45027293110: 470 249 95 675 6 610 +171355427375: 6 446 27 8 4 1 39 1 3 9 5 +3752504: 728 367 832 28 14 +645173288: 671 6 5 65 5 63 8 2 4 2 8 +34485202022: 3 2 5 847 3 6 415 9 7 9 5 +5292: 9 6 9 4 21 +370845: 27 3 66 75 45 +26064580: 318 135 7 3 607 +119477958692: 604 33 97 3 659 2 +684595784: 5 9 4 7 605 6 9 8 303 4 8 +145654200: 1 369 6 30 729 3 +14487585693: 5 999 805 3 69 3 +902373675: 556 2 8 6 9 2 5 9 3 748 8 +1470647: 54 939 29 8 165 +20233: 29 8 87 12 30 5 8 935 +2443831566: 7 6 92 323 87 649 +13201142: 3 36 78 103 6 11 42 +496895722: 608 905 783 815 2 +215852: 65 888 544 875 91 +113097: 90 7 4 976 77 98 5 +300201: 22 1 96 85 121 +1127135: 87 948 272 255 7 4 7 1 +43673092136415: 7 849 92 96 2 941 315 +16379589432: 2 4 76 898 6 9 432 +19517: 1 708 6 3 7 9 54 95 +492500: 925 50 2 8 9 7 89 +96073354895: 545 95 4 8 9 5 15 4 9 3 5 +96282739: 6 401 1 4 22 5 5 2 521 8 +1594998132: 4 9 3 8 7 245 2 2 92 3 7 +179804: 7 501 7 39 3 606 8 79 +7907847874: 6 5 8 895 318 478 76 +306136391: 8 5 6 10 3 1 67 19 2 4 1 7 +4052256: 6 540 7 4 78 4 +6789427649: 636 3 9 968 4 4 8 8 5 9 1 +5790489: 694 1 1 1 2 923 4 52 9 6 +381878: 60 21 8 296 933 7 2 +7793130: 756 4 1 64 40 2 2 7 483 +91477257: 6 7 22 66 76 2 15 83 4 +734279: 46 6 830 17 559 +1816950: 23 37 2 74 39 150 +55890: 5 5 1 79 17 1 5 814 1 8 5 +10338572: 27 1 9 1 3 1 3 82 5 7 5 +144625: 208 44 3 6 863 89 +108570: 6 85 7 210 +258: 5 67 6 8 3 +2496090: 588 2 6 2 74 1 5 2 7 53 +12390285: 51 9 7 2 1 301 274 1 8 +193468: 53 42 3 73 4 3 7 2 7 37 +271979: 6 4 3 6 2 1 1 21 83 8 63 +691654550997: 6 5 69 447 2 6 25 6 5 46 +3261308: 8 3 77 962 7 505 4 4 +4224198: 88 7 4 16 38 115 463 6 +18485166: 471 9 6 10 65 4 7 938 +18291490: 3 3 8 468 22 6 2 1 809 7 +3438499: 5 24 28 78 499 +2516052880: 500 96 9 8 55 958 +449087: 4 31 12 6 8 3 5 1 3 539 +149855: 867 891 5 17 5 +24441960: 7 2 4 9 2 27 2 6 3 596 +18768: 5 35 4 6 133 6 1 4 17 +116066026: 29 4 5 323 2 9 39 2 7 62 +55012664: 760 192 377 822 2 +29186257: 483 1 83 2 728 9 +53026874194: 208 837 84 7 35 518 +53946712: 3 9 594 460 432 6 78 4 +31329: 8 5 803 4 3 +231942480: 98 41 1 7 820 924 5 4 7 +882: 8 8 794 +663428590137: 1 9 819 428 7 6 8 8 3 3 9 +18756: 1 1 1 78 2 3 42 3 3 6 6 2 +114987465: 15 6 73 9 7 2 5 7 7 6 689 +321381: 1 4 8 138 1 +88300941135: 40 6 239 1 910 45 68 5 +13669: 99 46 49 70 8 1 47 34 +134064: 681 3 7 7 4 +5105246: 8 438 4 5 1 1 660 3 1 6 8 +623: 67 6 1 9 5 3 2 25 10 168 +1313111: 90 5 324 9 819 92 +610158299: 1 219 4 9 1 5 6 2 1 29 1 8 +2420189: 659 9 6 68 344 +115144858: 4 7 2 853 1 52 4 609 5 5 +4051: 2 61 33 18 7 +10288: 605 2 486 97 10 4 82 8 +32381624858: 8 52 4 2 7 3 3 8 5 3 593 8 +6882080: 70 7 993 5 45 5 7 3 55 2 +74567524462: 7 1 7 3 348 2 489 1 2 5 2 +41567854: 51 97 520 9 77 726 +8784300853: 452 799 194 1 1 53 +917462: 41 58 944 879 1 664 +2552899: 60 25 3 28 99 +691975028: 5 9 3 1 7 9 7 9 5 50 2 8 +46595746: 7 8 821 619 749 +422: 411 8 3 +47520003: 5 5 1 6 9 605 4 5 6 6 66 3 +171796152: 8 7 664 35 46 11 2 6 +904483883: 1 89 44 838 83 +9620855: 225 4 4 2 175 95 5 6 5 +4153: 34 20 92 5 293 +8573571: 6 166 16 538 3 +32896: 6 999 4 92 8 +1706676015: 37 771 26 5 262 3 2 31 +1581: 58 7 5 6 4 817 +4480232: 125 50 63 3 9 3 708 8 +19292: 54 11 23 97 337 2 +46797: 5 5 11 10 43 4 6 8 207 7 +443219476: 82 652 829 291 8 +29328: 94 1 3 52 2 +940691: 9 40 622 48 21 +2913919279: 4 788 757 794 9 408 8 +30594119: 2 653 4 5 3 5 6 389 7 40 +292586: 6 4 4 6 81 96 5 1 3 1 5 7 +1398: 1 59 430 765 44 +183300: 36 488 761 7 3 +92668: 839 3 869 4 8 +268375: 428 5 7 125 +380217224190: 13 721 30 163 70 17 +176528079952: 766 11 7 8 722 72 1 4 4 +1074108: 530 816 7 3 38 +786112277: 9 258 596 95 3 13 9 4 5 +136474: 8 9 97 8 4 754 +4309200: 661 95 2 6 475 +7100361: 816 228 10 7 68 3 +2838880800: 14 84 9 690 434 1 8 +92751607699658: 7 2 27 51 607 69 9 656 +2630913516: 4 58 5 9 4 4 7 8 3 841 9 +10522743: 61 737 9 72 26 930 3 +650073951: 88 8 285 8 330 38 1 9 +8061269: 4 200 6 1 269 +42737: 32 9 788 950 1 +721833: 927 7 50 4 968 4 1 88 7 +30242: 5 70 8 2 84 +1092848475: 7 156 7 81 5 62 16 31 5 +1588423: 181 2 644 80 24 583 +2417017: 8 9 1 17 6 4 7 58 6 853 +4509120: 335 3 9 6 448 +63325632: 2 9 5 9 6 391 6 18 1 9 3 +181002879351: 75 9 639 77 811 6 7 9 +631106: 89 6 326 6 13 122 +107347: 61 81 3 6 969 4 3 6 733 +276124: 184 9 715 7 2 88 6 18 8 +83973729312: 3 5 4 361 2 4 6 2 5 6 68 8 +5519476: 122 5 9 9 8 448 5 2 647 +765618: 4 72 7 14 8 185 88 +1892: 189 16 5 7 860 +306108: 94 7 7 32 66 +77709480: 398 5 1 39 6 5 +179135976: 7 803 86 97 428 6 +83175309006: 9 7 1 382 7 322 7 600 6 +46220: 31 4 536 2 7 6 +278460: 324 6 6 4 819 +652459: 31 12 30 57 7 7 2 5 9 +1175496: 60 919 58 4 3 +13817: 7 25 412 622 4 7 +4599748608: 238 553 18 4 12 104 7 +3690456: 305 3 56 9 7 1 9 4 520 2 +3695965142: 1 93 5 9 4 24 7 4 682 31 +296366: 7 8 9 5 743 7 5 54 7 8 6 +4224508: 2 11 3 71 340 7 8 +35076326: 54 7 7 58 23 3 188 38 1 +135397350: 5 33 88 274 40 90 935 +70798: 9 3 2 8 5 820 79 1 720 4 +96: 1 5 4 2 76 +48319524: 982 8 78 457 99 +100088: 37 3 1 9 95 93 +1503: 681 35 779 1 7 +500920578: 7 8 2 2 99 1 3 8 9 5 4 27 +81690672: 9 97 978 197 64 2 16 2 +1131300: 5 651 60 2 980 +119046094898: 33 9 615 4 94 89 6 +83431263: 772 57 5 31 263 +3887107153: 97 158 6 4 755 8 153 +45618: 2 453 61 57 +25860: 3 855 4 1 30 +78683213: 5 6 2 331 2 720 7 6 967 +10125: 31 976 4 6 9 +7031540: 5 65 306 83 852 2 +4265: 486 90 2 6 6 785 6 +27979312: 1 4 212 310 6 87 44 68 +29082760: 499 249 4 9 9 3 7 6 8 5 +53307165036: 59 9 6 6 8 79 1 6 503 8 +7436913931: 655 3 6 877 9 1 3 8 6 7 1 +504: 8 9 7 +146160957: 21 870 8 9 57 +432961222: 219 7 4 7 9 4 5 83 6 6 3 4 +25186445179: 87 1 7 7 99 900 59 79 +19225: 56 4 3 97 1 25 +136639: 1 9 1 213 63 260 61 +287650: 47 1 4 2 2 6 336 6 4 8 2 +37064790: 242 45 5 81 42 +3720: 12 73 5 195 6 +24850: 9 3 92 9 1 +397657416: 11 15 6 84 6 5 3 3 24 8 +857087616: 6 1 82 707 4 8 77 +235644698: 3 8 62 44 698 +70864: 87 3 6 82 43 +33017788: 53 7 8 24 8 1 764 +2305528687: 5 4 8 531 9 1 95 8 7 41 +2447375: 33 58 772 182 623 5 +3554989757: 3 7 4 13 1 835 8 65 5 7 +6450862: 5 724 66 1 27 22 +46845312840: 6 296 6 180 3 15 12 86 +404816: 6 6 6 9 67 9 539 3 9 9 4 8 +45515768345: 932 7 488 82 42 5 95 +15571: 645 3 278 7 9 55 8 1 8 +10873859: 2 6 5 5 2 958 4 656 8 7 3 +74270034: 4 3 368 9 6 7 22 8 1 9 6 +1579913: 21 2 233 3 380 6 2 4 4 9 +30099510316: 59 1 726 926 9 1 7 3 18 +2702036061164: 3 6 7 47 7 757 21 287 5 +70395015920: 98 9 31 9 757 89 7 5 5 +165280: 36 18 6 2 5 753 80 +12252: 61 26 2 +8106: 3 5 106 +853578: 1 4 853 50 5 7 556 6 8 1 +38532: 37 8 1 718 38 +48128: 37 9 99 367 94 +14869: 17 57 4 3 2 8 5 4 60 160 +23613099: 14 6 499 71 4 54 76 99 +9568022454: 369 6 74 584 54 +12424920: 56 7 3 76 4 9 6 22 6 1 3 8 +2026805: 5 5 8 3 332 8 2 919 82 5 +835384: 10 91 1 815 484 +6852369: 49 278 1 503 +8211761159450: 6 6 52 58 470 49 1 509 +105: 6 4 74 2 5 +239003637739: 656 364 219 6 37 739 +795050: 69 46 4 72 24 6 91 66 7 +414473382: 7 70 4 88 1 58 2 99 9 2 +70913003750: 82 838 9 481 77 52 +6816: 7 89 71 +15668: 68 859 47 4 4 84 +1172: 373 9 8 3 2 +1329497648: 7 8 223 209 3 5 57 8 8 +10430: 690 532 70 8 94 +2077690: 5 55 5 1 4 9 810 29 7 2 2 +22031529893: 1 95 773 9 1 3 756 8 93 +275: 45 5 1 8 7 8 17 3 5 +337261: 95 34 646 960 4 1 84 +1310736: 5 133 1 5 625 2 2 83 6 +10503054228: 603 6 2 3 7 1 87 4 7 2 9 5 +1211362456: 20 67 113 307 8 +2837367167: 1 6 39 3 858 60 4 79 7 +3936499: 4 5 372 7 398 3 25 649 +66435288: 58 98 624 54 9 106 4 +530497: 678 6 8 574 3 24 +911968403: 3 6 3 8 988 5 805 196 3 +14683258: 17 1 4 7 6 19 58 +13025400: 867 300 8 94 306 5 2 5 +2599443: 4 4 68 77 847 +104697: 2 23 569 4 1 +1176185794: 6 3 8 4 5 611 9 1 2 4 55 4 +17555: 1 31 8 45 5 +925: 9 4 5 3 36 84 4 8 5 58 2 8 +1886: 2 6 5 2 1 5 2 14 8 21 8 1 +437338: 43 7 338 +414283: 14 302 2 654 93 862 +210636720: 2 470 59 2 9 2 1 1 90 84 +141684: 1 479 1 6 252 2 4 6 6 9 4 +29197449: 3 2 2 3 387 9 89 3 8 8 8 9 +1284990: 7 824 351 5 6 7 +25006212: 93 693 97 4 +7416258: 1 73 1 62 58 +848556: 49 8 6 702 54 1 4 5 729 +11053584: 4 264 81 2 972 +61661497: 62 623 9 3 76 7 5 32 +2720: 491 92 9 92 3 11 657 +39900: 986 9 849 7 245 4 +11665: 55 4 32 8 931 7 52 +186958282135244: 7 4 887 9 8 8 2 86 46 4 7 +38021400: 6 2 5 4 4 960 3 8 5 8 225 +222: 13 1 4 55 20 +6712882818: 6 71 288 28 18 +184766: 184 7 66 +41380: 8 39 59 1 35 7 83 +50685680: 890 71 88 801 2 +12648: 325 47 34 +6076767606: 96 61 60 5 507 133 26 +1526476368: 5 99 5 24 9 26 9 951 4 5 +214527936: 8 11 7 240 24 62 542 +490442400: 6 291 12 1 766 6 8 259 +635005357: 10 1 15 64 3 76 791 49 +167139452: 216 7 4 84 2 96 4 7 2 82 +19304716: 4 7 4 8 5 9 8 9 8 5 435 +40464: 73 2 53 4 825 4 260 6 +695235: 2 985 11 4 8 13 4 8 2 5 6 +1055: 2 4 46 63 92 5 6 4 +244618: 16 7 2 93 84 6 7 1 8 2 +310552: 738 420 592 +133472013: 8 55 6 28 9 7 8 25 23 9 6 +10588320: 207 83 7 616 512 +10403: 5 89 7 23 7 +216658078: 433 3 1 3 2 1 5 78 +839: 457 7 1 375 +195874020: 5 77 574 80 5 1 6 622 +907632328848: 59 678 13 6 58 4 163 +20774059314: 772 2 69 269 225 7 14 +117078780069365: 6 5 82 84 523 5 69 365 +104871811: 4 5 967 4 69 5 2 4 5 4 26 +9811620: 3 8 75 2 96 1 1 1 18 9 1 +23697830018: 6 8 52 69 47 4 325 18 +157332: 745 4 3 6 7 +2156428: 34 8 2 991 3 4 +20599896: 78 61 741 48 2 +8245799: 7 5 461 511 756 53 5 +3072: 803 729 2 8 1 +5254880428764: 16 982 4 8 889 1 8 6 74 +30201: 11 58 6 22 959 3 +22704: 7 3 3 6 470 4 46 6 4 8 6 8 +1080: 4 91 7 72 637 +3530630: 32 5 21 607 890 +573469: 633 40 31 376 27 9 7 +1786: 5 21 4 28 5 6 1 8 56 6 2 +91130: 4 23 157 58 745 6 8 +107745048: 3 5 760 8 8 7 3 2 4 38 1 7 +3446355889795: 42 335 476 913 979 5 +15998640: 9 507 9 3 6 1 24 4 4 623 +86848: 9 650 9 130 8 +3374: 4 2 6 6 5 226 8 1 5 943 1 +59632245: 5 868 95 22 47 +3173717: 6 1 6 8 7 5 4 87 6 337 6 1 +15776974584: 55 800 8 83 6 663 72 +214: 7 5 38 120 21 +13787630077: 740 8 22 5 6 617 58 5 +406202478: 929 525 437 52 4 +7296296247: 4 380 5 3 6 4 4 4 34 8 4 7 +42442: 8 6 972 4 1 56 65 diff --git a/day7_sample.txt b/day7_sample.txt @@ -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 diff --git a/src/main/java/day7_pt1.java b/src/main/java/day7_pt1.java @@ -0,0 +1,42 @@ +import java.nio.file.Files; +import java.nio.file.Path; +import java.io.IOException; +import java.io.BufferedReader; +import java.io.StringReader; +import java.util.Arrays; +import java.util.List; + +public class day7_pt1 { + public static void main(String[] args) throws IOException { + var input = Files.readString(Path.of(args[0])); + System.out.printf("day7, pt2 = %d\n", new BufferedReader(new StringReader(input)) + .lines() + .mapToLong(line -> { + var arr = line.split(":"); + var target = Long.parseLong(arr[0]); + var nums = Arrays.stream(arr[1].trim().split(" ")).map(Long::parseLong).toList(); + if (fn(target, nums.getFirst(), nums.subList(1, nums.size()))) { + return target; + } else { + return 0; + } + }) + .sum()); + } + + static boolean fn(long target, long res, List<Long> rem) { + // short circuit dead ends + // I checked the puzzle input for "* 0" and it doesn't occur, so + // this seems to be valid... + if (res > target) { + return false; + } + if (rem.size() == 0) { + return res == target; + } else { + var arg = rem.getFirst(); + var rem2 = rem.subList(1, rem.size()); + return fn(target, res * arg, rem2) || fn(target, res + arg, rem2); + } + } +} diff --git a/src/main/java/day7_pt2.java b/src/main/java/day7_pt2.java @@ -0,0 +1,46 @@ +import java.nio.file.Files; +import java.nio.file.Path; +import java.io.IOException; +import java.io.BufferedReader; +import java.io.StringReader; +import java.util.Arrays; +import java.util.List; + +public class day7_pt2 { + public static void main(String[] args) throws IOException { + var input = Files.readString(Path.of(args[0])); + System.out.printf("day7, pt2 = %d\n", new BufferedReader(new StringReader(input)) + .lines() + .mapToLong(line -> { + var arr = line.split(":"); + var target = Long.parseLong(arr[0]); + var nums = Arrays.stream(arr[1].trim().split(" ")).map(Long::parseLong).toList(); + if (fn(target, nums.getFirst(), nums.subList(1, nums.size()))) { + return target; + } else { + return 0; + } + }) + .sum()); + } + + static boolean fn(long target, long res, List<Long> rem) { + // short circuit dead ends + // I checked the puzzle input for "* 0" and it doesn't occur, so + // this seems to be valid... + if (res > target) { + return false; + } + if (rem.size() == 0) { + return res == target; + } else { + var arg = rem.getFirst(); + var rem2 = rem.subList(1, rem.size()); + return fn(target, res * arg, rem2) || fn(target, res + arg, rem2) || fn(target, cat(res, arg), rem2); + } + } + + static long cat(long l1, long l2) { + return Long.parseLong(String.format("%d%d", l1, l2)); + } +}