diff --git a/src/holt59/aoc/2024/day7.py b/src/holt59/aoc/2024/day7.py index 07e201e..5070f06 100644 --- a/src/holt59/aoc/2024/day7.py +++ b/src/holt59/aoc/2024/day7.py @@ -3,5 +3,48 @@ from typing import Any, Iterator from ..base import BaseSolver +def evaluate( + target: int, numbers: list[int], concatenate: bool = False, current: int = 0 +) -> bool: + if not numbers: + return current == target + + if current > target: + return False + + head, *tail = numbers + + if evaluate(target, tail, concatenate, current + head) or evaluate( + target, tail, concatenate, current * head + ): + return True + + if not concatenate: + return False + + return evaluate(target, tail, concatenate, int(str(current) + str(head))) + + class Solver(BaseSolver): - def solve(self, input: str) -> Iterator[Any]: ... + def solve(self, input: str) -> Iterator[Any]: + targets = { + int(part[0]): list(map(int, part[1].strip().split())) + for line in input.splitlines() + if (part := line.split(":")) + } + + yield sum( + target + for target, numbers in self.progress.wrap( + targets.items(), total=len(targets) + ) + if evaluate(target, numbers) + ) + + yield sum( + target + for target, numbers in self.progress.wrap( + targets.items(), total=len(targets) + ) + if evaluate(target, numbers, True) + ) diff --git a/src/holt59/aoc/__main__.py b/src/holt59/aoc/__main__.py index 90509b2..1f8c9db 100644 --- a/src/holt59/aoc/__main__.py +++ b/src/holt59/aoc/__main__.py @@ -96,6 +96,13 @@ class ProgressTQDM: return iter(tqdm(values, total=total)) +class ProgressNone: + def wrap( + self, values: Sequence[_T] | Iterable[_T], total: int | None = None + ) -> Iterator[_T]: + return iter(values) + + def main(): parser = argparse.ArgumentParser("Holt59 Advent-Of-Code Runner") parser.add_argument("-v", "--verbose", action="store_true", help="verbose mode") @@ -153,7 +160,11 @@ def main(): verbose=verbose, year=year, day=day, - progress=ProgressAPI() if api else ProgressTQDM(), # type: ignore + progress=ProgressAPI() + if api + else ProgressTQDM() + if verbose + else ProgressNone(), # type: ignore outputs=not api, ) diff --git a/src/holt59/aoc/inputs/holt59/2024/day7.txt b/src/holt59/aoc/inputs/holt59/2024/day7.txt index e69de29..b8cb530 100644 --- a/src/holt59/aoc/inputs/holt59/2024/day7.txt +++ b/src/holt59/aoc/inputs/holt59/2024/day7.txt @@ -0,0 +1,850 @@ +408407: 40 770 70 8 1 +1222314027: 4 40 6 66 2 4 7 8 5 519 +79632370: 12 6 79 8 369 1 +173138715990: 7 7 6 4 2 692 6 2 8 2 2 45 +820782447: 273 593 984 3 5 489 2 +6344588: 1 866 33 1 222 50 +244480: 1 59 6 86 8 816 45 66 +30431590286: 745 872 3 68 6 4 1 442 +1178358827: 530 4 7 554 827 +5472884572198: 380 5 3 71 85 5 36 94 1 +1290391: 1 17 308 11 2 +2279613269: 729 6 8 9 177 73 3 +2590613018: 29 91 47 433 4 1 5 +7528390101668: 17 8 939 47 83 744 71 +102796125: 6 8 5 1 3 454 961 2 5 +1199: 6 982 208 +108411: 9 1 6 98 8 7 12 9 71 36 4 +3589: 1 8 15 2 11 24 37 +16052: 60 6 2 98 3 45 9 1 3 71 6 +2795761: 706 396 1 +1307185: 197 7 4 6 8 17 1 9 9 1 55 +943: 920 3 20 +89520: 75 58 52 3 4 5 16 +9492769728: 6 325 2 234 564 8 1 3 9 +168032403: 1 89 3 3 465 27 77 17 +11444723221: 894 11 90 2 64 3 18 +3987348: 45 3 88 61 47 840 +399956: 99 897 74 4 72 +1724814019: 1 8 6 9 5 36 6 78 585 1 8 +484578732: 5 724 15 92 57 97 1 +120769: 9 99 55 2 74 +27834744915: 4 99 4 5 61 96 7 2 9 12 +1105: 852 6 247 +449470: 633 710 42 +7827644: 220 6 593 4 3 +53663904: 9 7 467 19 96 +55595: 2 7 3 538 95 +3050832153: 6 95 2 49 535 6 +8458892982058: 469 938 499 36 1 5 1 7 +9820815338177: 98 208 15 338 180 +86872304424: 45 288 6 11 93 2 14 2 2 +289200: 14 5 2 3 40 2 +4683023: 88 4 72 9 7 21 7 42 5 72 +1661: 9 2 788 127 652 +164507151418: 95 6 1 9 8 8 554 4 1 2 7 9 +23684882: 7 486 3 7 696 +93392: 1 9 3 348 47 +4472531682: 447 2 5 316 82 +13106: 6 26 97 127 28 4 1 69 +57641397: 12 32 131 13 98 +1175: 116 8 7 +167479498237: 3 13 62 656 6 6 863 +1436391: 53 5 92 4 8 75 8 8 3 +3078721: 8 3 91 16 5 4 87 321 9 +5580949230: 9 30 6 94 85 9 56 5 9 21 +12288573: 527 7 74 1 73 5 4 5 57 9 +2525017: 40 801 4 328 78 +153888: 43 5 49 9 730 96 +8869: 7 612 267 7 2 1 +60059346: 873 3 857 8 36 1 41 8 +896553742361: 3 838 7 2 5 3 302 7 363 +10924696802: 9 101 2 5 22 60 80 6 2 +15976400: 2 7 8 8 4 40 3 4 1 50 22 4 +930984: 860 9 5 5 3 28 7 48 8 3 +255420: 18 22 7 113 495 +604546: 529 593 87 5 43 +14895576: 7 8 5 7 420 9 8 9 3 762 +78330028659: 83 67 87 5 60 2 8 662 +2600107133221: 9 46 938 98 79 299 +4825632122: 8 668 2 602 1 75 47 +1360891: 765 747 9 81 8 +5967: 46 5 4 4 68 +920353480: 9 4 23 9 751 27 61 62 +6197067629: 9 7 195 560 1 878 585 +5203411241: 904 5 68 9 3 1 8 94 71 +170607390: 2 828 6 92 736 3 24 1 +5898240: 41 726 769 5 5 +1674650700: 83 7 414 89 505 +42447: 424 45 2 +59264679614: 9 6 5 264 67 9 537 77 +3475000: 3 38 2 7 3 1 999 +93749040857: 88 1 9 7 11 342 4 8 57 +3502961033286: 21 5 1 5 75 1 67 171 66 +87: 5 3 6 +435638: 7 2 4 2 804 1 518 +8507129374: 98 920 109 1 86 +4014337: 2 24 4 7 4 407 2 24 8 6 9 +762: 22 8 4 93 6 +5207537: 67 9 4 9 49 39 62 +494: 6 2 1 38 +287567280: 4 8 40 6 95 13 539 +861393517: 771 90 39 3 503 10 7 +101961: 3 748 45 6 973 +3330002: 490 7 67 97 4 +10592773: 80 63 996 93 73 +21000096: 56 800 72 78 6 +6955758: 3 3 83 49 674 1 7 1 +901589763: 3 424 914 651 7 3 12 8 +8136221: 738 68 7 3 2 28 92 2 1 +20737132707: 6 25 6 8 39 3 3 6 8 6 3 +16843229: 698 65 25 883 7 +5790: 90 7 8 3 9 944 2 3 9 3 +557: 53 1 26 +41: 5 7 6 +46052474: 2 7 74 11 54 31 72 5 9 +1232874: 24 3 344 60 5 35 1 1 +836: 3 3 5 57 11 198 +1318742655: 9 7 10 70 460 9 5 41 79 +2213400387345: 372 70 85 387 344 +447538349: 3 75 5 5 198 13 45 348 +421305: 1 4 21 30 2 +475727494328: 5 875 976 84 2 3 81 1 9 +522664: 9 87 40 63 8 94 62 5 4 +984484419769: 98 448 4 419 7 66 +28440766430: 623 70 456 46 432 +410257: 9 24 444 +6224579: 71 17 573 9 80 +2624: 1 8 5 1 64 +485102: 70 462 3 5 2 +3387672: 833 8 72 486 33 3 5 4 +13939339950: 72 6 8 4 233 25 6 +36188570398: 7 30 5 21 60 95 177 +9450: 86 17 428 5 1 +179686799: 57 574 9 8 5 568 2 +9857: 70 2 9 9 62 61 +101711: 2 7 6 6 3 8 668 45 +1514: 19 91 2 400 9 +49522: 4 144 332 11 378 +20507987520: 512 6 8 4 7 875 19 2 +49920136: 1 80 39 160 67 69 +15280764: 3 820 40 22 7 732 +17959201: 361 5 7 2 22 3 8 1 5 7 2 4 +297052: 1 6 5 457 4 +1066322: 73 49 8 23 67 324 +7987968737287: 496 8 79 553 80 8 8 9 7 +3725738880: 631 2 600 36 28 5 984 +33867960: 62 8 6 9 9 1 6 78 2 35 1 6 +12958044319: 719 882 1 9 3 18 1 9 19 +1369536: 1 1 430 3 6 25 266 3 7 +520: 7 88 9 5 +195279357: 38 3 6 2 6 82 9 5 9 56 +644193313: 4 8 3 6 8 140 7 4 4 22 5 +337: 9 216 7 99 5 +217374327: 96 3 1 6 9 4 37 3 419 57 +177168: 1 77 9 1 2 497 22 2 4 3 +511826: 945 3 2 80 89 76 +271368121049: 92 53 3 1 662 443 +121564804: 2 328 5 10 2 9 4 9 4 7 2 2 +72253: 7 2 123 87 45 +4948000293: 5 173 5 4 7 286 10 2 81 +8271: 7 24 8 5 83 592 9 1 39 9 +4885180322: 508 87 2 59 8 6 10 +597626214290: 8 25 464 58 751 9 41 +1153566: 8 393 742 10 565 +3488312704: 7 5 424 8 304 8 6 99 3 +576841707040: 795 205 403 18 40 +22511: 26 1 2 82 5 2 304 887 1 +13859: 529 924 526 7 4 +2969996810: 3 815 4 2 963 942 806 +128767: 1 6 4 8 6 8 20 8 5 1 56 +213042: 6 679 321 211 776 +54007: 744 2 9 4 433 6 +89929: 390 46 33 5 64 +11305189: 5 25 4 2 68 94 +3580256: 9 49 1 81 59 +4143480910: 31 15 5 85 88 903 7 +28323629: 2 1 1 7 92 224 8 362 9 +1408961706: 8 79 7 3 4 2 111 8 9 704 +126793: 939 1 15 2 66 652 213 +82831317: 3 380 8 7 245 +26737: 7 709 3 6 6 4 4 845 +82265531: 7 832 394 552 8 +455486995: 6 523 7 9 4 576 19 +2450459092: 2 9 9 4 7 5 2 607 10 9 1 1 +5222992320: 9 909 60 108 4 364 65 +140045802459: 273 7 5 45 802 433 26 +170593: 4 2 83 57 6 277 +18811455237: 9 4 2 1 145 3 1 4 9 74 1 8 +497002: 15 481 97 5 29 +11026974: 484 8 5 79 7 6 86 3 6 +2379942152: 83 706 94 78 284 +569: 81 352 6 81 49 +23630: 647 35 17 70 97 54 2 +7168521: 6 516 1 82 1 1 11 +41597309: 7 33 671 6 195 58 +51386: 50 81 5 571 +330445804866: 67 4 363 49 793 48 67 +797893: 71 3 84 839 52 +3952185: 98 99 4 60 653 86 +22660416505: 55 412 334 82 508 +11666: 33 333 2 596 70 9 +39908156: 1 28 5 14 717 98 6 +25878142856: 48 77 7 4 2 140 2 856 +83584512: 61 2 8 388 44 +511729: 730 5 2 52 7 +31059736924: 45 69 914 4 592 923 1 +129340224: 413 1 751 104 4 +499307: 68 9 81 8 33 7 9 +8757: 3 5 68 7 69 +5438484: 8 13 7 4 2 3 78 63 228 +13986: 9 226 190 31 7 804 +209498244: 571 69 10 6 2 443 +10560: 34 34 51 3 9 159 503 6 +529331671: 1 84 63 602 712 2 70 +7990488064: 896 80 891 62 2 +321138: 4 978 3 1 52 9 57 40 3 9 +3767895689: 6 28 95 51 759 599 +2315938: 321 6 4 8 5 239 12 6 2 8 +3125737510: 96 454 18 84 54 324 +10368172359241: 648 5 4 2 154 2 98 4 4 1 +445292: 4 1 1 29 5 9 7 207 42 8 +133644146231: 44 34 6 5 86 2 5 2 890 7 +560709349225: 5 8 7 95 83 82 16 4 166 +376533465: 92 9 491 5 371 +77130302295: 8 68 19 985 9 435 757 +20905: 6 9 3 101 1 +814649598: 9 6 307 52 1 4 2 15 1 63 +790078389: 89 1 79 790 78 387 +89129901: 89 6 6 7 3 2 3 255 661 +576: 2 9 14 319 5 +2104319: 9 470 2 6 9 5 81 2 2 7 9 +2904080: 3 2 19 6 2 9 2 9 481 6 85 +29893521: 8 46 9 7 5 3 3 582 9 5 4 6 +66945: 6 795 7 81 2 +255203011: 1 372 129 1 942 17 +2662327666: 7 664 67 230 89 1 662 +5357852124: 267 11 78 2 2 3 212 4 +103049: 2 3 4 55 8 87 1 +14755216: 53 9 3 14 981 52 13 3 +257122: 257 118 4 +10217900: 417 7 4 70 5 +136110748: 272 5 662 445 49 +3581: 71 280 6 9 +711: 59 18 489 69 76 +14580: 85 4 6 47 9 913 5 720 5 +12388730941: 9 3 2 6 9 8 389 5 1 846 2 +1322760556: 4 4 53 45 8 267 287 +1846678542: 13 9 8 7 1 1 66 785 44 +1091375766: 9 278 2 38 1 3 2 767 +733146778471: 6 2 8 9 8 9 2 751 1 1 97 6 +28737222081: 84 394 3 5 64 681 +76319806367: 780 5 9 9 9 797 4 9 1 96 +46274856: 4 1 804 572 59 +44101024: 228 47 6 271 43 16 +353939245524: 7 119 1 3 5 3 436 7 7 8 5 +22399091925: 297 4 2 5 852 5 3 5 6 44 +4086: 2 7 2 74 93 +536326: 4 355 49 903 29 +93362: 2 5 37 14 851 +11038817: 43 66 804 574 82 936 +44229148720: 22 5 1 572 813 58 80 4 +2982: 99 6 4 6 7 +122909973: 3 2 7 9 73 2 1 3 999 3 6 +772005: 527 1 8 481 3 +52734797555: 2 89 475 9 55 667 1 17 +596168243784: 3 16 1 9 2 69 82 43 781 +770: 7 5 684 9 2 +5956343: 7 46 41 34 2 45 51 +873108: 1 5 41 5 1 4 843 9 2 9 8 6 +617469: 86 1 40 7 7 62 8 +793460: 4 3 1 8 292 785 73 537 +146380: 5 28 4 183 664 300 +97948555854: 2 8 4 6 5 8 4 4 691 5 1 86 +76146205: 7 61 4 620 3 +235951: 983 4 4 1 6 +4100537553282: 64 94 4 1 8 7 213 3 2 85 +35482272: 51 5 397 3 532 +13291590297: 9 794 6 31 2 9 4 8 8 7 5 4 +1433303694: 73 9 7 512 6 5 32 493 +1580045514: 770 6 38 613 9 +7160046529: 800 9 745 1 2 6 10 86 2 +47470486: 21 55 218 5 5 20 5 6 8 7 +2262482802: 707 4 8 82 1 6 4 3 1 1 7 2 +702062: 195 9 4 29 35 +190725307756: 4 54 7 6 76 79 6 7 756 +82460: 303 2 22 9 3 +1518239: 983 830 832 574 9 +23055889402: 7 4 46 4 2 61 917 8 487 +354363961: 484 47 7 89 73 61 +2089734: 64 22 69 4 8 3 88 +3779961539: 99 98 16 8 487 +5458: 8 9 3 3 4 7 8 +407677166: 750 4 7 807 6 7 31 4 8 2 +39308163: 694 8 8 885 3 +126747155: 6 132 154 2 8 251 7 +20176891625: 806 276 59 87 907 +20085: 5 3 48 998 19 59 +418114382: 5 7 48 764 267 91 2 +2059684553: 752 9 77 370 95 +713077098: 99 8 3 3 2 32 7 7 3 3 80 7 +6594374: 22 637 43 7 3 +1562987934: 13 6 14 938 7 6 2 89 2 +101849060331: 1 3 5 4 1 457 8 1 2 25 9 9 +58979170: 5 230 584 6 91 2 8 15 8 +1495368078: 98 5 702 516 9 19 4 +511346649: 3 4 7 5 215 3 6 11 8 3 8 2 +235445568573139: 4 2 4 99 2 554 573 138 +7540930176: 6 9 310 8 16 2 68 1 +3906210: 23 79 43 3 890 +67364136525: 9 6 767 513 82 4 82 4 +510557215: 9 64 9 885 97 1 548 69 +341079556: 39 32 8 8 81 82 58 +38723838: 88 44 3 84 1 +8068: 42 43 4 844 +22133800: 6 153 1 9 3 343 45 8 +1315578: 2 6 1 74 5 3 280 6 6 6 4 3 +12239357: 3 770 152 8 26 12 220 +354910581706: 77 4 9 851 5 897 6 616 +454: 9 16 8 4 2 30 88 +1142: 4 72 567 101 +9885: 3 95 25 5 8 +28615342: 496 41 67 123 21 3 4 +1029787: 7 147 7 42 45 +13830: 7 6 9 740 2 2 1 124 3 39 +2413: 1 2 45 3 5 +19963791352: 3 9 30 4 3 2 92 1 927 1 2 +22316186966528: 32 199 688 833 832 +848710: 6 6 213 569 18 53 2 +5844: 7 7 347 978 8 +124818070161: 6 9 3 4 3 369 8 4 5 502 9 +1528188: 9 806 6 3 1 4 6 26 4 2 4 +38255: 42 3 852 1 3 +98612039402: 5 892 6 34 7 680 955 +28108634550: 593 60 5 500 79 49 +5749: 804 89 65 2 3 +5983513731: 318 294 220 96 86 8 8 +844265928: 882 676 1 2 354 2 +4754: 26 181 3 3 42 +403: 7 7 1 8 6 19 194 99 +20938590: 50 15 5 4 92 19 82 73 +223318: 5 5 6 8 9 4 6 5 774 972 9 +1996699: 2 5 786 221 247 1 692 +24795: 9 908 51 108 23 45 +598170468: 3 249 3 4 1 1 2 8 8 6 6 +8848672: 442 433 7 2 1 +315477: 4 9 9 73 186 995 60 +12122640: 20 9 93 94 3 720 +275664384: 36 2 8 6 2 8 102 4 153 +23372414: 72 380 8 35 9 4 64 +7008001: 936 7 92 838 6 8 4 +37585141: 375 35 49 61 53 2 +1514: 1 1 1 8 84 +5460480346: 6 28 4 80 6 18 346 +3541188: 843 2 5 1 838 2 8 621 7 +4949142: 72 3 29 7 79 26 +845: 5 92 7 4 374 +4422080: 51 161 293 8 65 +13000: 3 216 9 2 22 +16076280: 5 8 39 69 120 +25992255181724: 69 1 6 73 879 271 6 97 +42367599: 10 2 6 1 5 8 6 3 370 9 6 +377666: 327 613 4 4 59 7 +612575190949: 6 7 9 1 4 7 4 3 9 10 9 949 +215605: 53 3 5 77 8 +25732162: 4 975 68 78 2 97 +141265153: 397 93 71 50 3 +4832698: 6 2 64 864 700 +1799: 561 2 3 671 3 +614467: 176 451 980 8 +2469943: 382 7 869 5 8 2 8 7 49 +18191713494361: 9 8 642 3 769 571 35 4 +434950474717: 7 7 2 41 24 661 34 718 +45990013: 40 771 5 213 15 7 13 +4130365516679: 90 1 82 653 458 92 81 +37308684: 79 198 561 8 9 49 83 +1628: 9 41 4 81 70 +22675440: 5 327 7 6 5 5 66 4 72 4 6 +93431688605: 93 43 168 860 8 +16157: 55 4 484 15 590 +116564580: 9 1 3 5 5 8 9 5 3 99 5 68 +237636110: 410 644 9 67 43 +76969775: 6 3 3 580 2 72 713 +218447713: 2 8 78 45 2 714 +315041383: 28 6 7 69 4 3 2 196 37 +47840846537: 6 7 6 541 207 89 1 39 +988503654: 28 70 781 7 62 365 4 +116232654: 19 372 6 643 9 +111735066: 9 3 8 8 8 68 8 524 7 3 4 2 +1817575499: 861 823 3 2 26 415 1 +63390696446: 4 65 6 5 9 28 1 9 64 43 1 +738580012: 29 4 82 322 6 6 9 61 +1242147: 7 5 40 661 683 800 +43738589966: 4 373 85 8 90 8 5 2 9 1 4 +139972: 98 2 91 14 882 7 +154495527: 14 11 4 954 6 6 7 +51988: 1 518 2 6 6 +498078: 5 1 568 7 85 88 +8471: 3 172 5 17 43 +1098720: 41 71 7 5 117 3 3 88 90 +3220993: 590 954 66 2 991 +206545581: 6 20 78 6 55 89 4 9 8 4 +7841176: 4 36 196 699 476 +5646390883: 467 490 59 90 883 +3654642584: 9 396 90 58 6 256 2 5 +130942625902: 23 5 4 8 2 6 995 5 91 +22045656: 1 764 81 42 356 +627478410: 742 57 8 845 +603: 4 596 4 +4957495: 77 34 641 +13595839975496: 2 52 93 9 936 8 7 1 376 +761098063: 69 9 871 30 5 980 63 +131724535: 58 52 72 697 721 +3159: 9 6 6 9 4 601 385 5 7 1 +150715356: 2 6 66 4 6 5 43 328 6 6 6 +3652185: 3 71 68 7 7 9 4 86 6 361 +45630261: 9 994 38 73 51 +1259546885792: 419 136 4 2 1 477 63 +77263789755: 7 7 438 2 3 3 829 6 8 6 +6312980161295: 99 9 920 5 4 3 4 954 6 +874: 6 810 56 +206794512427: 1 2 5 1 4 7 3 4 20 1 402 5 +4241075177959: 29 914 71 9 86 4 8 2 8 4 +1268233188: 6 4 78 4 7 2 5 1 8 7 7 244 +254643: 3 391 646 49 67 +57552457531: 793 827 5 5 29 33 +243360: 45 766 20 3 +21575: 1 17 1 63 16 2 +4788137: 969 61 755 1 49 7 +551226080: 491 924 243 4 5 +54389104: 24 682 3 52 77 +174052800193: 6 8 8 1 4 5 9 4 6 34 4 196 +2029492: 3 245 7 547 5 47 74 +31953: 7 99 14 3 110 +15969771: 1 5 7 3 38 8 243 3 6 3 4 2 +6419328101: 8 5 118 2 640 68 1 23 8 +263669759: 9 3 86 768 672 8 3 24 4 +7732933: 721 3 3 7 1 85 47 1 3 6 7 +13049008058275: 4 16 9 626 7 6 5 582 7 5 +582119: 9 572 17 4 866 72 8 +267454667: 5 57 4 8 25 5 3 61 1 5 1 7 +6499467: 3 4 5 3 80 8 8 40 4 8 2 95 +78041738: 859 9 73 1 740 +1799761: 1 4 3 4 65 5 4 5 6 1 61 +581955071: 726 49 57 287 2 +430510057: 643 670 37 5 89 999 +3219088050: 208 28 1 31 23 5 5 762 +38129143: 7 2 37 8 1 92 5 2 36 4 6 +13920902: 46 301 67 35 4 97 7 +134581504: 4 94 979 357 1 +3215357: 2 782 8 425 354 +923: 27 890 2 4 +1211518464: 8 173 56 5 4 6 4 9 6 8 83 +12704960836: 2 16 1 252 1 486 7 4 35 +439941006: 47 8 8 2 7 1 20 5 2 33 4 9 +7777528: 8 903 4 85 28 +121083382: 4 74 764 8 72 3 17 +9958: 7 88 452 752 5 +34561803: 5 6 94 13 422 1 6 +10334766686: 492 7 922 3 6 87 +150289: 1 879 66 2 77 4 366 +580552: 579 531 2 28 989 +7410837: 340 7 562 8 38 +18540512: 3 610 1 6 267 7 8 6 7 3 2 +46119777: 28 854 581 10 9 +461179926912: 1 2 593 223 762 913 +5714938: 98 2 6 967 635 4 5 9 8 5 +5550: 26 909 5 794 81 +8394624803: 5 84 131 2 2 18 2 803 +1399: 5 2 290 90 4 3 205 9 3 1 +341160006: 2 5 4 34 737 138 7 40 +11205967: 87 447 916 42 2 184 +131378720351: 4 62 27 6 4 2 314 781 +16932035756: 7 6 330 4 354 2 7 9 1 76 +720: 14 1 6 71 629 +2282737137: 19 2 67 343 163 1 54 +2813767: 4 163 6 117 6 3 8 1 4 1 2 +3068463: 51 6 8 461 +1176192: 1 1 3 83 9 631 325 17 +136012: 8 889 17 5 4 37 +5879975453: 4 1 5 4 7 359 6 1 37 4 5 3 +491608106: 8 83 18 330 3 280 909 +1307268678: 2 32 81 25 2 9 221 457 +12671: 370 3 76 4 1 806 +8029550: 75 76 48 603 976 +1410706997550: 653 1 9 452 6 15 8 4 5 6 +3916639: 3 1 9 4 6 817 258 5 6 65 +11530851: 5 24 2 5 7 9 549 7 2 741 +115721: 96 5 10 1 533 938 2 +98385277: 4 4 53 476 909 276 +10133: 45 6 17 76 7 5 46 3 +41756: 7 5 69 7 50 6 +2144: 7 7 98 67 2 +1446603: 6 63 72 63 8 886 651 +139819152: 744 9 44 5 422 +3828: 335 275 8 4 4 3 5 6 7 8 9 +129353136666: 41 478 96 66 631 36 +3438094: 343 269 253 281 8 53 +7326: 18 9 15 2 18 +15617004: 22 2 9 302 679 7 +30917: 2 593 26 76 8 +6092883: 7 2 7 6 9 1 34 1 64 7 6 8 +551603000: 52 9 5 8 6 543 6 1 650 4 +123918: 9 1 2 644 9 6 +39657: 77 2 7 25 982 +124840: 12 41 8 4 87 1 68 503 +179966207842: 85 8 9 6 51 97 4 19 6 4 5 +718854: 46 9 3 6 664 8 86 63 +926545746: 9 265 457 4 6 +674908382899: 41 1 66 9 9 1 6 3 289 9 +1755015393918: 540 5 13 3 5 3 8 7 6 9 1 8 +107210: 7 7 93 189 20 +40936: 1 297 84 3 21 5 8 2 2 1 7 +35354: 3 21 87 1 11 673 5 +1576785524: 5 6 6 2 7 8 21 5 8 9 3 521 +43218: 432 11 4 6 +3322: 8 21 4 32 3 +440344195: 8 9 788 8 17 8 3 81 53 5 +1128: 8 3 33 24 72 +36615177: 91 574 73 40 7 +195: 9 8 66 51 6 +141600555813: 14 39 5 6 90 82 9 5 4 6 7 +1181669: 980 13 17 7 2 +761996: 76 15 4 9 6 +976585475: 673 517 95 79 82 +3548311955: 51 694 89 11 952 +9732638: 8 9 541 34 513 +45902666880: 5 70 3 8 7 759 7 8 515 9 +125069814644: 6 461 461 822 5 8 943 +710696: 53 59 785 917 8 +465599: 7 2 919 4 19 8 5 5 2 1 +259967957955: 9 8 647 814 5 41 50 5 +3845565568: 881 5 873 56 2 4 1 +190592649449: 7 37 38 8 8 8 649 447 +756057: 4 461 4 3 5 56 46 2 34 +111361216: 28 5 2 5 2 68 5 9 5 1 46 +110088843: 27 5 14 8 4 840 +4387653: 39 71 8 367 570 52 1 +2305381: 2 305 3 82 +15439: 765 6 23 41 2 +46691409877612: 58 3 6 42 59 3 347 8 14 +10402885471: 30 448 42 516 26 3 5 +367703352437: 664 879 45 5 7 1 2 434 +432397019: 661 59 6 617 60 +161713440: 156 799 97 180 7 122 +200727: 9 52 206 50 32 5 3 +4664366888: 466 1 436 68 85 +4225790: 7 25 86 222 5 874 +313967: 5 1 19 64 3 4 51 11 +25424010: 5 5 376 48 10 13 +869235228: 285 1 105 7 5 74 391 1 +6422495: 6 9 90 88 1 695 +231217: 61 78 176 6 338 74 6 4 +175: 3 54 13 +356649: 51 873 57 8 9 +20662785: 76 941 982 1 2 285 +668781667: 723 8 959 954 +213680962: 18 6 89 8 5 2 3 94 1 570 +409: 9 57 83 6 7 244 +9100212539: 68 941 66 2 539 +4425754: 1 7 85 37 5 43 635 11 +7446: 95 5 7 666 94 1 +24189389894: 7 3 3 2 87 3 55 8 446 96 +73966855: 6 66 257 6 18 4 74 1 3 7 +2754514531958: 459 6 514 5 31 958 2 1 +2461425673: 659 498 48 4 933 +5055058199: 2 9 9 29 82 10 7 7 7 23 +9960104: 322 50 69 14 44 +1154: 60 9 92 473 8 41 +76056154128: 9 4 1 216 8 21 87 412 8 +1690148990: 1 640 7 3 9 8 6 3 50 95 2 +170115: 67 4 85 1 9 30 464 17 6 +853869660: 1 9 4 87 30 6 8 9 4 4 8 8 +6792: 81 71 2 8 9 95 574 9 8 +6716711692856: 6 9 482 748 6 8 58 855 +41172790: 1 40 524 73 790 +17788396: 37 5 2 21 38 2 2 6 4 27 4 +190790305: 8 293 365 223 426 +1193801: 4 4 651 611 940 +2422522291: 346 7 520 2 283 8 +13308: 64 957 5 83 12 +4293863484: 612 818 9 84 953 +149017: 5 98 660 4 43 33 9 7 3 4 +72: 9 7 2 38 13 +226993231: 97 10 26 60 70 17 90 +11072: 5 8 19 5 1 +4978271: 71 7 8 269 5 +992998: 3 22 4 7 3 44 1 9 12 368 +313930837: 313 92 8 2 835 +102854: 1 399 5 5 51 7 849 1 +409530: 549 36 7 21 9 +792211: 4 3 922 1 1 +160645: 7 63 394 3 55 31 9 7 19 +1951: 4 33 4 7 120 7 4 3 1 8 2 8 +38349229: 18 5 5 9 22 4 4 7 247 7 2 +24060: 3 8 4 8 92 113 104 1 +239912: 655 214 276 60 8 +2823624050: 98 9 3 8 4 8 41 763 8 +61741: 686 9 1 +12031786809: 911 1 3 1 99 6 4 11 5 3 8 +34865617: 899 524 70 74 814 +1249568: 15 76 259 3 895 544 +1047251: 70 15 5 992 691 +162436904: 203 4 1 8 426 2 1 42 8 3 +2284918477: 923 643 3 4 521 7 3 6 +12166392: 423 8 84 1 4 8 14 84 +303534248989: 6 72 629 6 806 9 8 386 +2099524667214: 72 90 9 4 581 2 402 8 +21542441041: 8 9 7 8 561 2 200 9 7 7 3 +6383320: 68 561 97 836 1 8 +19518067475: 49 77 21 61 8 848 +398142456: 8 2 6 241 1 4 6 6 15 4 9 2 +4538716967: 74 9 6 58 2 6 1 9 91 965 +216597935617: 30 313 806 243 4 63 5 +74528982: 431 3 9 8 6 3 4 4 8 74 2 +26089807308: 5 207 2 9 252 499 3 10 +2094995: 3 4 314 397 503 +347304287: 5 988 58 285 +134526480: 13 93 63 7 7 5 4 1 60 44 +47110131597: 673 70 131 59 7 +33282630423: 528 295 715 6 63 +63099288: 1 4 1 15 4 58 1 3 4 1 84 7 +18351027: 25 810 5 302 3 +15327: 3 509 29 402 77 +718477: 79 8 3 9 8 +156918: 6 4 53 296 33 5 +13721761037: 163 741 7 4 4 9 5 6 284 +3725196162: 73 63 81 610 5 54 +84577739: 4 88 47 2 4 815 3 299 +185618730: 1 4 4 925 79 1 3 1 8 7 +1163675588: 4 3 7 14 8 1 4 84 31 9 7 5 +379019877: 80 30 5 4 944 98 +228721777: 9 29 1 6 9 2 1 9 1 2 984 5 +6294235021: 86 9 7 6 9 67 1 9 4 18 3 3 +158746596: 90 467 95 5 32 3 +18697431689: 41 57 4 7 15 84 2 9 +858844: 483 886 725 759 2 +55947: 6 782 71 +28295433: 19 541 362 17 4 +1998070830: 8 476 5 583 72 4 6 45 +5046835618: 787 27 62 26 9 618 +1639: 1 50 7 3 2 6 7 665 9 9 2 7 +7414: 13 34 776 9 8 +12135987: 720 36 52 7 6 590 9 +3592173389074: 98 61 8 9 55 64 846 6 +148153: 16 5 3 85 21 +19227110478: 6 6 7 608 6 4 4 6 50 71 4 +1261831906: 98 58 2 64 7 908 +8451760895: 4 2 4 9 7 879 707 89 8 +37032: 2 2 2 96 635 2 1 2 1 47 6 +24846: 7 273 1 573 4 +100699: 37 214 401 28 1 14 5 +774056700558: 1 767 252 6 47 94 73 6 +4290567: 5 297 810 +30499049925897: 11 9 9 9 6 8 85 305 896 +6607390: 277 6 238 9 30 473 +161281: 72 28 8 1 1 +214267392: 66 9 585 6 8 4 +3746933: 61 7 70 6 753 5 1 +13362239: 90 432 825 992 1 +355: 3 3 39 4 +3528: 21 16 56 9 +48083163: 8 290 2 580 1 +125953633: 8 231 527 6 35 +49621348: 492 74 1 346 3 48 +328566351: 84 628 2 9 11 233 2 2 +897549442: 997 277 9 54 88 +1518061: 758 2 8 2 62 +11728: 2 1 36 770 582 75 8 +440725865: 8 6 35 5 314 5 54 3 1 6 7 +17245369: 6 303 70 1 70 7 1 88 9 +1128025843: 8 2 736 30 5 5 798 46 +1387547: 6 330 7 17 543 987 +1735611512: 779 88 805 753 2 1 5 +59018886: 83 4 9 7 6 99 8 83 97 1 9 +14972265: 8 56 23 763 77 87 +98394814: 9 26 7 9 861 9 1 3 1 4 +62171: 8 54 987 975 2 +747726641: 392 89 25 987 1 9 8 7 +193535: 4 9 96 8 7 +8491504: 925 1 925 459 4 +19943778: 11 1 41 335 121 3 555 +1233154550: 89 517 335 7 762 8 +104363998: 88 61 7 639 98 +1211277625: 68 4 95 330 9 4 4 7 62 5 +22727771: 250 4 504 638 18 +272163135216: 704 355 94 4 23 42 +21950784286: 7 6 9 3 3 270 4 48 2 2 6 6 +472: 2 95 5 85 90 67 125 3 +1915: 5 65 727 108 755 +16669773: 7 984 623 6 9 3 +105548118179: 387 439 345 9 62 182 +6718: 3 1 3 11 43 56 +84500240: 989 89 192 5 80 +20729408: 4 1 182 32 1 4 127 +2059431192: 5 1 9 324 9 1 376 3 8 9 7 +6661244: 239 306 61 91 501 +912840: 77 40 195 6 40 +8462797: 82 5 905 7 8 528 6 3 8 6 +518913992: 3 5 1 4 1 25 6 4 6 615 9 2 +53096: 9 8 726 824 +3277428146350: 3 27 74 207 74 463 4 8 +688291: 593 829 484 33 11 +3394: 4 6 9 36 52 4 +1035101750: 419 73 43 9 787 +21467269505: 4 95 5 76 388 3 4 8 3 3 7 +13893516625: 28 199 248 222 8 3 22 +19972600: 9 29 56 63 1 597 +6298749: 1 3 9 2 8 282 3 2 8 461 9 +22: 1 8 1 1 13 +9070658525: 3 1 82 8 82 3 64 9 924 8 +14490586: 2 4 30 84 53 9 4 95 2 6 3 +706408: 4 53 12 22 411 +57200: 7 679 28 1 1 5 16 +1940489988: 4 4 7 3 5 6 7 22 899 88 +317776438: 642 707 72 34 7 +91211400641: 900 95 4 381 74 16 2 7 +186: 171 8 7 +11660572695: 3 721 7 73 17 317 +12904914: 3 6 7 1 7 3 1 4 9 7 93 141 +21267013269: 365 2 35 30 1 58 59 94 +1730625: 949 777 4 625 +36784: 98 5 75 31 3 +145262: 309 6 1 830 37 +888036: 2 9 9 4 8 311 12 8 3 4 9 5 +107616111478: 442 11 34 927 651 +292000: 81 5 6 7 1 6 1 980 8 4 4 +3765: 2 787 420 46 3 +46121893264: 9 4 9 90 9 45 6 6 1 2 4 40 +5795330413: 81 4 2 9 607 25 60 9 6 4 +36648062: 2 4 144 45 62 +6836468: 683 55 8 76 94 +1436309: 64 9 4 783 310 +2196829: 540 8 5 1 2 58 3 811 2 +11799356411: 4 9 5 4 7 8 156 558 9 5 +1971634891: 3 7 123 2 21 6 4 7 2 2 4 3 +9397275528: 12 791 1 9 7 5 99 +274978673783: 55 862 11 617 58 +13841: 3 4 4 78 165 +120688822: 15 62 83 805 148 2 +225387750: 4 4 3 1 9 3 5 5 8 875 6 7 +393785: 3 880 55 37 180 67 +1762656: 65 6 2 439 5 24 +220788852: 29 2 54 7 88 51 +43526370: 4 765 16 889 930 +737100420299: 9 9 70 975 7 6 4 5 60 5 +157961882: 3 2 987 8 76 959 7 5 4 5 +1802: 7 5 2 21 8 93 720 +7346461: 6 898 394 54 461 +8503740: 9 5 2 92 85 7 +5919855997: 8 2 333 7 584 855 998 +390937659: 92 7 8 9 667 2 5 1 25 6 3 +365744: 516 29 3 822 4 8 +8057514: 7 5 45 5 7 5 16 +28017586: 8 98 7 5 95 8 30 95 8 7 +202759256: 4 134 40 70 9 9 6 +471150: 39 470 469 4 43 25 +513685: 2 8 7 5 61 220 71 +1543834258722: 380 736 6 71 5 1 92 5 +3384988870: 5 8 4 4 1 3 8 6 721 5 2 4 +4764: 35 4 5 5 3 7 7 59 1 1 74 4 +1184974: 28 19 42 8 6 53 +4000143113: 35 8 703 238 556 +418: 4 1 7 2 +9557037: 61 1 4 391 3 992 +105661643: 573 5 4 94 49 +23214254: 382 4 9 6 252 +5444: 46 4 4 3 4 7 +737349: 94 5 32 8 49 +5122916: 2 48 71 51 919 +5821000: 79 736 63 2 6 5 3 +8301678: 77 18 155 73 561 +1501597072: 7 6 4 9 787 265 102 5 5 +718052598: 491 7 6 4 4 8 4 4 454 9 +178497: 4 1 6 11 6 413 52 4 99 3 +540: 7 9 10 4 1 18 +9103497120: 9 400 713 1 97 2 680 9 +5630913090: 782 8 570 1 90 +1054463962: 43 4 6 361 56 4 95 9 63 +20116902: 8 244 15 7 721 4 74 2 +898710: 70 26 102 126 581 +14793708485071: 959 6 539 3 91 9 530 +50330139441: 99 270 49 2 507 +6807041: 41 527 3 5 21 836 +1031: 76 27 1 +93138: 9 218 95 8 +258123: 57 44 4 658 5 700 +46365920: 89 374 3 2 3 7 5 3 6 1 7 1 +11859124: 2 5 28 798 55 8 2 6 90 2 +23250824: 539 32 674 4 1 8 2 496 +545806394: 3 7 8 1 5 484 6 8 1 9 6 49 +10832: 185 8 21 23 4 7 53 7 76 +100339266: 8 67 26 72 64 +7412898: 92 66 8 91 7 +257523634800: 9 566 32 964 9 815 60 +185426200: 1 8 5 4 261 4 3 50 1 1 9 +10433434471: 92 177 451 86 468 +216571: 7 8 6 865 734 6 9 +1104: 2 52 6 2 1 +5318188: 23 2 317 671 513 +1007609179: 34 7 1 45 141 3 29 +323629: 7 1 5 8 1 378 9 +3521036: 6 698 5 963 2 69 +95660213: 1 7 948 98 2 620 13 +64638: 6 46 37 1 +17385402: 173 84 48 7 904 3 3 8 +1616421504: 5 498 7 6 7 1 9 2 3 7 5 3 +715025: 71 502 5 +20047048: 1 260 158 488 8 +216208384: 802 4 62 556 448 +4235581375: 4 7 9 451 8 92 7 137 4 2 +8823357451: 80 64 74 328 71 11 +3406644959: 8 8 9 6 2 643 7 324 4 95 +3356625: 670 433 892 5 +516787406: 2 33 832 55 9 9 4 5 4 1 6 +14601: 21 1 7 6 3 975 +39390: 508 39 72 6 1 +57737790013: 60 1 911 5 6 5 4 495 13 +75067696812: 21 5 88 1 8 869 4 812 +28721: 2 3 5 68 5 33 +299147159: 19 72 7 9 61 925 7 308 +47958: 6 290 162 2 4 +4810465342: 87 463 55 335 5 +1084622973: 2 8 8 4 6 2 3 5 7 963 5 2 +940412473: 7 23 54 540 3 3 6 27 4 2 +1251718: 6 69 2 25 72 9 1 9 252 3 +2276640: 4 9 5 86 93 2 9 6 31 6 8 +363950: 908 5 8 5 553 +963651: 6 4 938 980 663 8 +4385541040633: 515 946 85 40 633 +1498665: 4 6 23 174 87 3 +4678232686: 8 584 2 60 3 268 1 7 +682407: 6 822 74 122 13 +3718652394: 6 1 53 86 5 2 391 +22789229870: 5 426 42 298 70 +128646776484: 4 4 2 7 8 699 2 4 18 49 +52417206331: 6 798 6 771 331 +3040286: 538 593 1 389 1 4 2 6 +198047: 9 45 27 9 2 499 713 1 5 +21645166: 7 1 6 7 91 1 276 2 2 347 +22206000: 6 6 72 3 95 731 749 6 5 +1402633431: 253 924 2 39 6 +24223828: 928 8 647 3 7 4 +5140898383: 72 714 9 83 1 8 3 +11209432: 70 8 2 70 24 33 1 +5551629375: 9 7 9 7 782 7 5 5 9 8 612 +119196: 80 70 29 3 1 7 299 1 1 3 +15894764944: 595 667 504 4 494 2 +1285987: 47 342 7 1 8 +9717593: 94 28 289 59 5 +263: 5 41 52 6 +153682480: 630 9 497 89 3 56 5 +1937661: 8 157 993 4 86 2 79 +84669705: 851 449 5 801 81 +875552: 8 751 99 50 303 +96459: 160 1 7 6 6 +562626: 92 95 54 3 6 +19640: 24 55 8 2 +67784330: 4 4 71 36 95 5 8 2 2 2 8 7 +213868: 25 4 842 +105733: 4 15 30 28 54 diff --git a/src/holt59/aoc/inputs/tests/2024/day7.txt b/src/holt59/aoc/inputs/tests/2024/day7.txt index e69de29..fc6e099 100644 --- a/src/holt59/aoc/inputs/tests/2024/day7.txt +++ b/src/holt59/aoc/inputs/tests/2024/day7.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