From 9981ef632aaa4c90b81bcd9dd3920f40ece6fdd0 Mon Sep 17 00:00:00 2001 From: hal8174 Date: Sat, 7 Dec 2024 14:59:45 +0100 Subject: [PATCH] Solve day 7 --- input/07-0.in | 9 + input/07-1.in | 850 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/bin/07.rs | 77 +++++ 3 files changed, 936 insertions(+) create mode 100644 input/07-0.in create mode 100644 input/07-1.in create mode 100644 src/bin/07.rs diff --git a/input/07-0.in b/input/07-0.in new file mode 100644 index 0000000..fc6e099 --- /dev/null +++ b/input/07-0.in @@ -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/input/07-1.in b/input/07-1.in new file mode 100644 index 0000000..ea0ea16 --- /dev/null +++ b/input/07-1.in @@ -0,0 +1,850 @@ +237649047: 872 71 84 3 11 1 2 8 46 +2201728328: 63 5 8 511 10 2 8 99 7 +35784: 9 1 550 162 7 +1520117759425: 8 220 7 578 79 86 28 +14037417: 799 2 122 8 8 9 9 +2089710273: 1 2 2 2 24 7 7 21 93 27 4 +92191: 8 1 77 763 91 +31902329903: 8 1 8 39 253 76 844 61 +20: 4 7 2 4 5 +14504: 108 7 6 20 698 6 +766: 55 23 6 79 556 7 40 +112158691398: 7 71 1 4 1 732 6 94 4 6 +1248: 3 2 39 +324066: 16 4 3 54 65 +19734400: 80 881 280 +196940163: 518 6 87 864 5 +1946286158: 39 84 576 9 66 13 +37721766: 4 2 2 8 4 9 474 7 1 4 686 +85450: 6 1 5 20 7 7 +30351821987: 6 62 7 1 2 91 8 59 748 8 +51741854099: 73 14 15 22 786 8 90 +34483: 80 10 2 8 28 5 9 8 8 883 +2301120: 13 599 376 2 5 +628449284322: 627 1 1 4 4 92 8 432 3 +10951662: 7 3 15 2 14 745 7 7 5 3 +11706964: 5 234 696 4 +446277: 1 9 83 412 82 +2157: 543 175 3 +2106848574740: 4 5 9 8 1 3 70 4 2 9 6 737 +16727808685: 736 947 8 3 685 +9908480065: 990 847 982 24 6 +209111: 41 7 73 12 3 48 1 6 16 1 +935474: 8 6 7 489 5 2 52 71 452 +145: 7 2 7 8 2 +1065163: 52 362 896 2 3 +15193118: 567 1 5 2 838 5 1 4 538 +122378: 4 57 18 8 2 +34301394840: 31 6 65 126 9 9 45 840 +852668: 203 42 3 5 33 +4650317393: 4 818 8 3 8 9 102 7 25 3 +2732744705693: 6 8 695 7 318 7 368 90 +4510705: 8 2 49 5 86 8 +29797345: 6 469 165 72 54 93 +3856153: 1 92 66 38 430 53 8 +767032: 334 40 208 80 2 47 56 +10465331146: 691 28 3 6 961 3 85 8 6 +1607344981: 534 301 488 3 98 +45913064314: 937 70 7 643 1 1 5 +432079351722: 3 6 134 45 42 473 719 +14985: 65 762 89 749 9 +69563: 20 3 9 336 11 +15430788: 4 2 89 6 6 25 9 4 4 3 71 5 +261824472010: 31 4 8 7 78 9 6 429 3 81 +683307: 7 4 53 706 2 6 26 8 6 7 6 +337886884: 951 70 9 1 8 35 6 459 9 +5185814: 43 12 2 57 36 3 78 +761670498: 476 4 4 704 96 +169819763367: 5 193 478 719 7 8 119 +44583060: 9 90 6 55 62 +43172: 137 456 24 3 7 431 38 +505520956: 549 4 748 45 92 +2302314: 6 569 40 22 5 1 6 5 +26024490: 6 3 89 5 3 81 6 3 95 3 3 +814619: 8 97 908 72 71 +1206: 485 1 1 3 718 +201: 21 4 5 29 47 +105863985: 14 9 4 2 50 623 8 160 5 +759611909538: 7 596 11 909 52 4 4 9 1 +3437006: 4 3 6 36 7 2 1 8 50 2 4 1 +82178041: 35 786 7 80 4 4 +19709235: 6 6 3 71 7 391 1 92 31 4 +16483871: 8 203 35 290 1 270 +2913386179: 15 99 2 911 8 167 11 +1901216: 1 74 36 10 711 2 +5709: 3 2 6 3 843 6 9 6 1 1 94 +629044137: 78 6 13 9 8 2 4 7 8 6 373 +1489280790: 4 10 363 1 4 1 929 7 90 +13025757217: 975 3 13 579 23 7 +16454720858: 2 1 6 616 4 2 4 3 53 5 9 9 +84412839: 8 235 790 373 9 1 998 +7422111: 45 225 51 539 9 3 69 +29691360: 3 2 55 474 24 30 +12547923: 8 9 2 261 8 5 4 9 4 4 7 27 +4140753885: 74 7 7 8 8 8 3 7 9 5 84 2 +5744824805: 7 10 9 112 84 4 55 5 +1672960: 33 7 4 3 4 29 5 4 8 +27214301376: 649 444 54 97 8 +510065: 2 4 1 76 9 78 5 7 193 4 +179498605: 3 10 9 301 9 516 803 +63071747: 7 25 1 993 6 6 +2029599: 39 7 3 817 2 5 6 5 4 5 1 3 +48: 14 3 2 2 2 +734648: 855 9 15 5 3 277 44 +725340: 174 625 1 124 785 +458616: 274 4 5 741 23 73 5 6 +6361347: 5 12 195 1 30 727 622 +14874: 4 6 20 4 4 157 +94887105624: 94 88 6 9 5 6 8 87 6 2 1 4 +17820: 35 7 2 9 2 4 5 4 +3237000: 7 508 4 81 77 +205413: 32 1 9 33 55 3 23 +107361: 92 43 6 3 43 9 +205568061: 80 803 40 80 58 +3851117151717: 1 399 714 9 7 229 937 +1943965881600: 791 64 111 5 60 64 +23331137: 88 264 98 485 649 +36817962: 78 295 5 2 2 7 6 6 9 9 4 5 +18449692782457: 1 82 1 3 72 30 713 6 52 +8391600: 621 45 50 18 2 7 +14953155: 1 6 7 9 2 263 4 22 315 5 +3052382568: 5 828 4 6 5 1 7 768 45 8 +48226957438: 68 591 79 34 1 20 6 2 +3844: 293 1 43 48 1 +2391680: 2 237 168 3 +89679: 67 731 2 7 1 977 9 +4911522: 18 81 53 936 332 +1098956254: 602 57 28 3 8 3 32 +10847969206: 8 2 8 47 9 6 9 10 1 4 5 5 +9593159243479: 97 880 9 38 98 3 4 78 +54833667: 6 84 197 48 552 195 +674768250: 425 897 5 1 354 +79137696691: 8 5 7 8 7 2 6 2 9 141 473 +151447: 5 4 310 7 7 9 5 8 6 642 1 +614100757: 5 10 445 92 757 +507086314430: 376 8 7 8 795 6 2 5 53 +44502815422: 47 495 937 418 3 +448267423: 37 6 322 96 375 7 7 2 3 +14178762922354: 97 6 5 7 716 86 8 283 9 +438582565: 2 38 3 674 6 33 9 7 7 3 4 +2221005952606: 79 6 372 244 2 8 878 +45396: 4 2 18 9 5 7 5 3 6 1 4 9 +7110369: 344 765 183 4 3 9 +1762555: 3 16 38 1 966 2 569 +1490465515: 741 1 2 8 46 5 450 63 2 +3999393776: 9 64 2 8 3 504 35 7 5 3 7 +3975973713349: 6 938 87 2 1 573 51 +415345342: 146 71 636 63 456 +666582491: 52 7 866 1 809 9 1 8 3 +1808035790: 400 6 57 445 7 88 +211449359: 97 9 8 64 1 3 1 20 3 +123049830: 1 7 5 7 517 9 5 2 8 9 61 +20153857: 381 8 228 4 7 29 9 153 +2091801: 3 713 7 7 168 51 4 +1002: 515 59 6 4 418 +951048684: 199 8 952 5 76 606 2 +1317122: 1 95 83 9 7 659 5 453 2 +37163166547: 65 139 59 5 378 57 +53376460: 3 59 91 1 3 460 +82609964: 16 51 633 564 7 5 79 +32955987: 3 61 2 1 771 5 9 +48906566: 562 143 87 89 37 +910005: 97 85 93 +69610: 87 8 10 +1636: 6 7 2 25 986 +14699098: 10 2 3 9 5 9 789 2 6 8 1 8 +304525416: 8 2 5 558 1 6 3 76 1 3 7 6 +7900273: 95 66 70 4 9 2 +1144: 68 6 77 1 895 87 7 4 +2335280: 9 8 9 4 25 4 5 8 1 71 10 8 +4237564801: 501 381 555 165 40 +58300461081581: 97 167 43 5 3 2 81 579 +308944: 635 8 36 3 453 +91804: 67 27 24 389 2 +11404149831: 665 5 83 85 5 194 2 31 +16359120: 3 893 2 420 3 117 +86454280: 8 6 45 4 279 +37300: 266 929 48 3 9 +6571935018: 3 601 405 1 90 15 4 +909578529: 8 1 7 45 482 55 9 831 +1127738: 7 8 386 9 2 +160778: 350 49 7 44 3 3 +4144212: 434 750 875 53 4 +750090020: 9 91 75 900 20 +2436: 1 7 53 3 3 649 8 8 7 2 4 2 +10916232: 4 4 72 13 94 7 8 +23351403: 81 56 429 4 9 4 7 2 3 1 8 +2512872066: 251 287 206 9 +54313515632: 52 9 434 633 3 990 9 +210: 6 6 11 162 1 +65737619628: 438 250 7 150 146 28 +1588187: 87 65 4 2 8 187 +152496765284: 3 1 5 20 4 966 1 6 528 4 +48489: 5 234 8 9 7 4 51 2 637 3 +209317: 2 96 427 14 5 17 +1030194471: 438 1 96 7 5 35 9 65 6 +295023300: 253 1 69 676 25 +174418: 3 1 5 2 1 71 8 2 7 470 15 +247831477: 30 978 914 3 5 13 8 +1799877313: 7 871 4 794 72 +2586129429754: 9 6 5 6 937 2 7 42 9 7 55 +158313: 2 8 9 9 56 6 96 2 246 7 1 +25905354023: 3 7 1 88 7 9 7 67 701 5 4 +8603873: 67 2 7 97 687 38 66 7 +56947911: 40 627 5 45 7 2 17 95 +2430810: 90 9 27 3 1 +18205050: 303 4 60 7 1 1 20 9 4 8 +838: 6 823 10 +175097737489: 4 5 7 665 1 1 3 54 2 636 +28088322: 7 1 89 43 844 4 2 +1819254899: 953 737 46 8 5 74 7 7 +461926752006: 6 2 932 1 8 5 5 2 367 4 5 +132869161621: 3 84 1 5 7 33 2 8 231 33 +16994292: 14 46 6 9 42 614 +1395586319: 2 8 5 5 32 5 6 953 7 7 3 1 +536471: 56 11 145 6 548 +209244: 3 8 54 1 9 1 895 3 5 7 7 +10582694: 755 9 7 47 2 +1686072: 2 433 693 +3178877: 8 67 40 77 1 48 5 7 +42309398: 5 98 6 42 700 +102640090: 5 2 755 9 20 661 9 1 +125291867: 84 3 179 6 85 570 167 +38250: 4 81 9 50 1 +4490: 445 1 10 36 4 +2143907: 742 7 5 2 6 286 51 +1173377: 3 5 4 3 7 8 61 7 6 7 11 6 +684298873: 570 24 5 9 31 4 8 5 8 3 1 +559664774: 614 38 83 289 90 +471508: 4 708 5 78 8 6 47 67 +3651: 4 3 3 365 1 +518511: 426 6 3 83 511 +571094564: 6 7 1 2 9 6 2 13 951 2 9 4 +49155612: 26 68 6 614 3 +41342: 640 16 9 2 7 +141218565156: 31 772 2 1 35 59 156 +46512: 39 3 8 7 816 +8447536: 342 247 55 84 +121107: 172 93 5 3 7 +6030: 4 61 1 1 90 +118709098: 989 24 25 1 12 +34715466682256: 34 7 1 546 668 225 5 1 +92743184520: 3 584 6 210 562 447 +88918: 55 15 64 1 7 +34218072: 54 38 85 4 85 183 84 +152959: 10 6 5 9 4 9 4 29 5 70 9 +1846765652: 115 320 94 8 853 2 8 4 +94370766: 2 8 3 7 9 91 75 6 2 1 6 41 +542618: 92 473 2 957 +28001: 33 4 67 263 48 601 +18630723: 1 9 9 207 5 5 10 2 6 8 5 3 +2659875: 26 5 96 86 189 +5280070: 7 31 16 8 953 9 2 8 70 +8838389: 2 5 6 9 6 897 35 35 5 14 +1956439: 4 439 6 440 641 +795456: 1 623 14 7 23 5 72 +60476014: 4 94 3 96 668 6 2 +2088001: 26 1 80 100 +1325634: 13 251 66 383 85 +3951075: 4 5 31 7 3 1 8 1 5 1 695 1 +155991361: 55 9 4 99 834 4 28 1 +1102: 1 700 25 285 1 90 +24942148: 5 2 3 106 617 4 458 85 +42658083: 3 3 87 52 632 5 7 4 6 3 9 +622080: 1 59 1 970 266 60 8 +302476338: 503 8 87 6 2 4 9 1 4 2 6 4 +3330625: 226 94 2 216 8 9 4 1 73 +1644889463: 81 493 751 2 946 3 +24663407: 6 9 4 4 4 824 7 3 65 8 8 4 +252522: 411 7 2 74 6 7 6 +1102: 7 5 7 2 9 156 3 904 5 4 +11317727307: 8 6 26 8 3 772 7 300 10 +11309767: 9 6 875 6 7 9 24 8 7 +569565: 15 73 8 73 45 1 +3564117: 5 76 88 5 1 1 18 88 +57783: 982 42 8 7 31 408 +1314: 734 361 18 162 3 36 +406253290: 6 605 883 753 1 +6442020: 205 6 34 8 900 585 +250748001685: 764 6 388 17 3 643 +205746315136: 9 6 26 92 1 1 3 824 3 8 5 +3370724031: 4 9 9 64 8 7 7 9 7 206 5 1 +865696767997171: 8 656 967 6 79 97 168 +198900: 69 80 5 6 6 +168181452: 91 3 8 66 1 81 45 5 +22541: 21 98 2 54 4 76 1 45 +87845: 942 6 293 1 9 2 1 1 9 7 2 +49223: 7 6 1 8 9 4 5 6 80 564 7 3 +186: 5 3 3 20 81 +177494959: 7 552 6 1 4 7 6 3 6 8 91 5 +1749728: 54 679 32 +9065368319: 6 52 866 20 56 77 8 +163317035: 968 2 2 7 1 9 1 5 42 2 4 9 +418140632: 5 1 62 230 81 1 +3602374: 8 338 3 74 54 6 66 256 +1032: 130 8 76 2 33 5 4 9 3 1 3 +35433806561: 3 6 411 22 9 2 25 82 8 1 +20123729935: 42 1 920 6 1 868 925 7 +31965290: 4 725 9 58 84 98 +16034: 259 2 59 635 +810021961306: 3 9 7 679 7 8 71 2 130 5 +74457639: 1 9 29 5 3 4 5 5 3 12 3 9 +26733398: 2 669 8 6 83 2 3 70 1 1 +518: 1 78 439 +825: 99 1 693 7 6 19 +103491146: 499 223 3 31 4 93 +266183018: 97 891 50 636 9 3 9 9 8 +819352: 11 90 6 917 19 8 +239759191502: 67 21 8 3 213 148 8 13 +44398855: 48 393 2 97 1 410 442 +251443327: 37 5 84 15 2 902 +301541: 617 322 9 5 821 7 9 +4569784794: 505 9 9 65 6 82 6 2 5 33 +1514: 8 89 2 49 41 +504967: 99 51 68 +502094308: 7 2 664 9 6 5 6 9 5 225 6 +125288871: 8 4 84 3 36 88 71 +5967038808: 9 204 2 3 57 2 7 6 9 3 91 +67463: 53 5 5 87 2 66 +5904949: 82 8 3 3 3 49 +96015: 694 297 66 6 5 76 6 5 9 +22389343: 9 8 4 2 48 1 27 894 3 7 +481825: 3 9 225 8 239 1 +179335: 968 825 2 1 5 7 +1595078: 20 7 9 3 8 8 206 7 8 +684808: 228 1 4 2 9 3 5 1 1 291 4 +13916493361: 60 590 78 7 2 80 7 9 1 +6260: 732 9 12 812 4 +395147: 6 94 930 287 3 47 +1301504: 247 94 7 74 80 8 8 +2444: 75 31 22 97 3 +117412892213: 7 86 97 128 8 90 22 7 +691775: 52 535 96 3 5 1 76 8 7 +10599742231: 77 677 781 56 4 3 9 3 5 +23643546964: 664 76 1 642 4 797 4 +4627000242: 615 41 7 11 727 7 3 3 6 +23006836051: 78 6 7 3 4 3 6 6 545 8 5 1 +26662: 5 8 256 8 38 +2099565: 91 288 2 73 4 5 +1456: 58 15 584 2 1 +2946337332: 5 8 94 653 6 33 5 628 2 +81792327: 394 43 3 9 2 187 13 8 +61021971110: 8 39 2 58 517 977 +2345523438: 9 7 8 3 919 633 3 7 8 6 +4865139750: 10 768 899 417 750 +27546990: 38 330 2 6 3 4 6 2 183 1 +104262: 351 8 6 48 49 814 7 +463: 448 9 8 +913083: 4 682 5 39 93 +1010278799: 9 6 6 86 3 5 43 5 870 +11277948879: 85 39 378 7 28 431 9 +63269268483: 9 12 402 230 8 4 99 2 3 +12841407: 69 8 2 646 5 2 5 7 433 9 +22004938: 76 56 55 11 94 384 +144907762: 367 7 42 3 5 6 129 +40583569852: 74 1 7 5 5 6 6 2 3 9 1 772 +24779201222: 2 76 7 6 39 666 5 22 2 +27156820: 30 49 864 9 85 4 +1713713037: 5 889 20 35 53 29 +218917637: 6 4 23 8 639 88 3 9 +476676: 7 857 998 1 29 7 4 3 12 +9694: 85 4 34 2 758 +1490398: 51 77 4 816 27 9 4 76 8 +1564498896: 1 59 4 5 3 981 1 91 6 +6936154: 2 2 47 36 154 +9272072: 1 2 8 9 1 8 984 64 90 68 +1905184: 84 14 729 184 +1812956: 93 7 348 8 572 +7458957230: 6 2 733 89 572 27 +17263231: 898 6 6 4 2 9 9 8 82 6 5 +398230454: 516 88 877 229 4 +28575129: 56 28 932 1 365 9 +389048726413: 554 39 272 3 86 16 +14402190912669: 8 3 964 1 1 71 737 6 3 9 +24684912: 30 856 13 8 8 +3000363307100: 45 6 303 555 355 5 4 +178615131: 2 19 47 15 134 +858312446: 6 1 2 88 8 6 5 7 4 2 6 446 +52482825: 3 5 3 7 3 2 254 29 1 75 +44427801850: 47 8 53 475 219 3 8 71 +1245998: 650 96 919 3 747 2 +1263: 1 147 96 2 18 +12058945113364: 427 7 4 347 1 391 7 8 4 +21078813609: 83 5 6 7 8 8 7 6 6 60 7 2 +1845532: 9 563 28 88 13 +1811099230166: 1 9 4 2 5 1 9 99 2 301 6 7 +1136: 14 2 71 +487025016: 3 23 575 700 2 7 3 5 1 +1597622: 855 8 733 710 911 +3007778: 212 4 708 96 2 +11079380: 95 8 7 792 92 19 69 +383339523693: 423 944 4 24 363 7 58 +3558975842153: 4 4 28 602 714 215 3 +20025337800: 41 3 7 29 846 158 1 7 6 +63639022: 62 1 63 902 1 +343681: 5 2 7 3 4 446 7 2 6 237 8 +874267: 946 96 43 5 802 87 +29446207: 24 774 9 410 3 4 +8582745203: 26 832 274 1 4 203 +2196420: 212 7 64 17 3 +182392: 6 7 433 53 2 +1633604544: 5 8 5 8 5 3 44 66 3 4 26 +625: 7 3 6 9 25 +14870247: 89 1 2 4 2 485 16 77 8 +97257006: 98 63 4 839 7 3 2 3 +70685: 703 25 14 4 7 322 +486640301: 7 18 844 560 301 +41347379087: 17 3 599 4 1 1 53 407 4 +65430: 37 5 3 2 727 +336168: 2 4 659 63 8 +50186057223: 906 46 8 173 32 28 2 3 +23920442: 8 1 4 938 6 26 5 24 5 +2995: 2 55 84 857 3 +606248: 60 1 1 5 248 +3509382281: 9 3 411 6 17 844 9 7 6 +5872014: 920 71 96 1 771 7 78 +586894: 9 8 436 5 70 3 1 6 7 8 4 4 +635592538: 57 223 85 5 38 +1290155: 430 3 1 5 5 +185284020: 9 309 5 9 44 2 373 34 +7823523358: 8 4 63 5 5 9 1 2 9 2 5 776 +24739228: 2 473 89 3 28 +387267382: 3 7 623 42 21 168 1 +1136: 8 2 6 66 972 +69656823: 693 755 5 60 799 +1852027: 1 85 184 18 9 +40595531053: 5 6 232 1 746 8 18 4 1 8 +181047790: 495 19 5 4 385 +569229: 48 47 70 78 59 +618634: 1 3 9 22 5 8 3 6 554 370 +4370: 40 6 95 +98554: 7 32 436 6 800 3 81 +37985787: 8 57 5 9 1 8 4 5 8 8 5 63 +1685162: 4 702 6 83 282 +217: 5 1 1 4 6 +47322457: 46 4 27 45 850 4 60 +76494904: 237 7 7 7 941 73 2 +4329696567: 524 586 6 47 31 85 3 3 +78867067: 7 6 569 95 11 3 1 8 524 +57386: 39 96 5 1 4 21 686 +33843658820: 5 36 4 72 68 587 1 64 4 +4920121: 22 3 24 201 17 4 +133804413035990: 446 60 882 607 19 8 5 +609914368939: 8 44 5 8 46 98 4 8 8 1 41 +805: 3 5 4 315 478 +24734567800: 82 39 5 8 558 7 5 9 3 13 +44416976698: 8 88 331 8 53 37 5 8 4 +2387403638486: 8 5 26 4 406 5 91 6 28 4 +215313437: 257 446 334 917 3 +9773409: 531 6 7 260 6 +603421560684: 35 36 667 718 6 84 1 +546624: 820 32 3 4 6 370 8 6 3 1 +51717450: 819 7 97 93 18 39 +645762: 88 35 75 70 3 9 +512736840: 59 5 71 680 89 1 4 9 +5085: 777 48 66 5 588 42 +19839639: 9 72 31 610 4 +45602817: 5 90 96 2 3 5 72 6 6 881 +262239: 7 3 575 44 2 +702408: 34 6 362 365 5 1 5 904 +1001: 488 4 2 7 7 +374630270: 8 45 475 9 87 573 1 5 +130847: 986 68 9 41 3 6 21 71 +133331: 8 8 34 194 12 4 14 7 37 +6318957: 65 6 22 20 678 +3417246: 9 84 658 2 6 2 3 6 2 6 7 9 +507520314: 7 60 98 1 8 4 1 305 31 4 +3846898553: 4 2 9 5 74 872 8 3 85 3 1 +6691017: 1 41 456 72 10 18 +671174964: 4 5 9 8 8 404 48 5 3 844 +81506752212: 301 55 5 446 532 491 +322675522: 1 32 63 18 4 212 4 8 4 2 +2609: 7 1 12 40 2 37 234 81 +13979644: 2 3 2 35 580 8 4 8 4 4 1 3 +52507: 9 9 524 626 5 +368725984: 368 717 8 603 384 +84237353741: 1 7 4 237 2 6 1 5 370 4 1 +121014124: 20 7 55 3 2 287 +69260016498304: 833 1 4 580 301 830 1 +143641443: 542 6 2 5 1 8 3 77 46 6 1 +2570776: 154 8 1 29 551 292 4 9 +4180727105166: 97 862 5 421 5 16 7 +67617: 3 5 69 1 2 4 5 2 6 37 34 +13503: 7 8 46 5 623 +58043521: 580 435 21 +3876: 2 3 7 9 4 8 99 7 1 5 5 484 +3242682439362: 3 699 53 260 49 688 +3693725: 20 108 285 1 9 6 71 +2151: 5 31 6 20 3 9 +2831: 9 4 4 45 3 9 2 6 7 8 7 660 +7528117: 844 4 88 76 581 17 +38086624: 5 6 9 7 4 72 8 8 4 2 4 944 +355211584: 61 767 73 45 4 26 +12785049248916: 6 409 559 4 932 9 18 +44653644852700: 7 9 90 4 4 62 970 5 40 5 +8300: 8 293 7 +3732251: 12 417 23 75 7 3 5 +2702758239: 9 4 6 9 9 185 1 8 2 732 3 +600566736: 73 929 44 2 7 7 139 +13369: 9 41 2 18 85 +275352: 709 504 8 71 1 56 4 8 7 +1660189: 553 335 1 3 185 +1188500441: 45 8 7 1 83 7 6 37 39 9 1 +1114601310162: 2 969 10 710 9 1 4 4 1 9 +17347928: 7 3 5 1 2 8 91 3 47 8 52 +45389785872: 57 15 86 353 8 2 489 +984786193: 89 14 56 48 79 +44012327907: 6 93 532 10 8 788 +92827968: 4 16 27 64 537 +37916: 18 9 56 1 2 +47612: 77 82 97 91 479 31 2 +57131716: 932 613 17 98 +1257706: 72 5 4 1 3 665 790 20 6 +1400036039: 5 1 94 44 677 39 +1050: 213 81 28 714 5 2 7 +8424032103: 407 66 187 374 550 +66261: 58 1 8 260 1 +1999623: 9 6 53 449 65 644 5 1 2 +2283682843: 18 86 86 3 5 34 5 4 6 4 3 +2057811: 761 3 3 814 87 +894333424: 894 333 424 +345430: 2 6 37 778 +38614371: 6 7 385 8 8 4 4 9 1 7 71 +13984560: 6 44 1 6 3 941 576 48 +415527: 763 33 87 6 15 +11222999044: 43 1 912 736 38 6 +2223848887: 7 4 7 335 5 5 166 68 3 7 +125208965: 29 49 47 208 9 13 55 +1188544996: 62 56 854 3 77 5 117 7 +148347576: 2 9 3 832 6 9 4 7 1 6 9 74 +71026281451: 7 8 91 8 9 814 52 +108751638: 4 237 9 92 6 5 3 19 65 8 +14458: 17 2 7 90 9 2 7 5 27 488 +18519906: 593 557 398 7 83 8 98 +32679605568: 8 99 260 64 23 69 +53038602798: 4 4 4 79 5 3 6 5 12 798 +1711476: 689 6 414 +23919: 4 85 1 4 6 7 7 +34398: 947 977 2 623 97 13 +99918779811: 999 1 877 939 5 416 +5828128: 469 845 142 5 2 49 6 8 +1707: 1 41 3 44 7 +87968611502: 5 847 4 4 3 61 258 6 6 1 +90939: 7 9 8 3 17 15 7 8 68 61 3 +1637457: 291 331 17 +756321: 6 761 986 1 58 +2070068: 863 17 3 31 47 +30031: 4 16 67 2 7 +4882666: 64 19 89 97 45 6 1 +45583790: 4 55 2 32 605 90 +8628963: 719 120 6 66 297 +1026893640: 2 56 551 8 13 56 133 +61872: 34 46 71 37 599 5 7 +36162: 9 3 1 144 9 596 9 2 +2992918131727: 7 61 44 91 813 1 728 +201299412645: 886 4 1 31 578 317 3 +28311048: 58 885 70 300 48 +2098: 5 21 234 5 798 +18188725687: 9 3 271 5 3 120 49 65 +437328: 21 47 3 5 4 13 5 6 7 2 3 4 +958557600: 6 93 1 1 8 62 64 38 715 +1134102: 3 15 6 7 60 7 95 +2485896612037: 9 35 93 75 816 3 3 3 9 7 +18996100: 3 4 8 9 49 8 6 3 6 4 114 1 +9419024: 9 85 188 24 198 2 1 +120222: 3 921 3 617 3 730 +208179008: 2 11 3 13 892 28 272 +1724820990: 6 2 56 9 55 5 903 687 +4482832684650: 7 72 901 1 187 58 50 +262698: 90 35 83 573 675 +71853: 828 93 3 26 15 +49743: 55 27 9 +6436799: 5 2 32 745 27 +6974976: 4 450 6 2 9 85 24 5 6 6 +270: 91 161 15 3 +1137136: 9 4 11 994 8 +14722: 60 8 30 318 2 1 +1647: 45 1 9 2 797 40 +309644781: 94 85 3 6 2 6 9 31 1 1 6 8 +97809780: 427 45 3 784 489 10 +2849718533410: 5 1 2 39 71 392 5 3 40 9 +10129552: 99 1 64 677 715 892 +66972271971: 45 8 9 93 1 7 2 41 56 9 +674601: 8 432 1 8 31 +743171: 816 3 4 903 2 +772794: 95 8 9 894 7 63 5 66 +11540: 638 8 3 402 229 9 8 9 3 +470998: 5 24 1 795 8 5 51 8 3 1 +65996: 7 58 995 +2649: 2 604 75 8 2 64 +65053: 729 89 5 16 151 +608718846: 1 35 17 4 718 827 9 6 2 +50461268: 11 32 93 52 7 61 265 +61386297121: 2 81 14 833 74 9 505 +108249: 5 41 2 43 6 +496981561: 502 99 1 556 5 +1910176: 2 3 65 54 3 89 58 +597048192: 1 593 4 3 7 9 9 4 4 3 2 97 +7675: 7 67 5 +16160: 160 6 92 130 758 +357228: 4 670 53 8 +39369998748: 9 591 6 8 59 74 743 6 +163168: 9 17 7 59 677 11 +33801805800: 48 2 88 294 700 +111510095: 2 3 4 708 5 7 5 9 9 5 1 49 +928047: 7 8 6 2 2 989 9 31 2 93 +1216387870: 85 7 12 5 6 45 9 6 6 3 7 2 +978880200: 2 1 49 55 46 1 140 40 5 +312624: 1 43 7 72 390 4 +1862860870: 454 8 21 2 8 8 120 3 70 +1313504: 57 6 5 7 765 +4866928: 1 8 27 50 6 6 82 8 440 +625484: 99 4 1 3 59 84 +660387263: 893 8 1 2 132 7 9 437 3 +774514518: 801 33 12 82 293 76 +1304102: 877 88 6 6 225 +8114240607: 566 2 12 113 7 91 9 93 +164016: 198 2 8 2 247 48 +5144413248: 36 17 26 709 4 114 +60848133: 46 562 48 128 5 +1294665: 7 835 5 694 3 88 9 +540362: 55 6 1 5 97 154 304 +6544967292: 26 7 6 848 239 94 +411931452: 4 11 924 7 449 +21628070: 5 36 6 818 536 49 2 5 7 +74996: 11 7 741 8 4 +87610133: 2 9 607 553 9 +244648930289: 2 6 4 6 13 41 7 656 2 7 7 +3453392613: 9 36 7 5 1 54 13 9 8 61 1 +52976478: 88 13 1 524 78 +250456642020: 6 576 457 307 43 9 +7355756: 3 4 9 6 2 860 6 4 279 8 4 +7399056: 66 30 96 3 6 43 61 57 +9350880: 2 10 22 4 506 +285479: 25 6 91 2 39 30 +5254744014: 4 6 2 93 5 2 22 844 1 1 +2690434276: 993 713 4 50 4 19 +66314: 9 2 14 1 6 2 9 86 30 98 +2557690: 991 28 502 5 1 +9362786481: 1 9 1 197 3 8 3 2 8 2 9 81 +453: 5 5 9 29 334 +52297307: 74 56 631 5 7 4 +448661553242: 89 8 1 6 9 62 45 6 7 42 +99355: 802 191 55 +5544562370: 9 6 7 5 2 377 71 8 2 368 +1821160: 5 1 9 86 8 569 975 835 +1289210686: 19 8 7 16 9 633 999 9 +93474924655: 2 93 6 7 3 6 1 9 2 464 9 3 +5339159: 5 33 8 15 7 765 7 15 2 9 +25302375: 3 1 189 85 525 +1697: 23 235 5 390 17 +7499235741: 89 1 5 869 5 459 9 69 2 +226003: 452 50 3 +131325701764: 3 63 46 62 969 8 9 4 +3115317738: 8 625 51 623 8 +20244: 9 2 4 2 2 6 6 8 8 227 9 7 +11061038183519: 1 57 190 2 927 58 8 4 2 +64000974723: 215 9 9 33 357 83 +5446: 7 704 1 509 9 +422463751309: 8 80 6 7 960 8 8 3 8 66 9 +55306372661: 4 8 360 81 8 290 2 2 1 8 +21252: 20 54 72 59 7 52 +7071957: 101 50 5 7 40 7 +15508052: 358 433 7 59 49 +138082: 5 54 2 8 379 3 2 1 9 2 9 4 +3112084815842: 296 6 75 590 4 44 9 3 +1399354110: 7 5 452 4 6 6 957 5 +3300240: 4 89 3 889 6 5 8 57 42 6 +347185: 8 4 42 78 67 8 76 88 +8733: 325 6 9 29 4 590 9 66 +99232: 36 6 59 623 8 4 +2588369999: 69 8 72 9 4 3 944 37 71 +7816929120: 34 957 30 182 44 +618950: 54 6 3 10 70 1 524 1 9 +6933117: 3 2 802 6 3 9 6 6 90 9 +15910489: 30 59 181 9 4 9 9 20 9 2 +203966040: 4 3 5 9 513 51 1 7 45 75 +870: 63 40 1 7 143 +1877023: 1 9 450 4 924 99 +850529502: 864 249 41 60 454 41 +441535477110: 86 9 6 57 6 7 477 11 2 5 +301127908: 91 1 932 6 81 9 6 5 6 9 4 +473088: 1 3 29 22 672 +9476555: 947 65 54 +3382712287: 7 3 28 157 23 7 47 8 7 +41943844781598: 5 9 7 826 794 781 595 +870: 4 2 7 7 2 +287042: 33 27 4 5 897 2 +738057: 58 67 8 738 57 +6229017: 5 374 5 5 6 657 +25489815300: 64 2 2 7 3 184 25 3 2 6 +3124915415: 253 798 71 218 83 +47534663: 587 8 55 2 3 802 861 +188011: 2 1 1 98 639 59 5 9 3 69 +28206493: 43 60 3 56 3 5 13 70 63 +990: 971 5 5 4 3 +1642872: 5 8 849 21 88 +82236: 82 5 935 796 95 +680023: 4 319 82 21 +2032961: 63 510 20 8 4 2 +66313902283459: 773 2 5 9 1 158 5 857 9 +1287240: 356 4 3 911 2 815 51 8 +22079607: 57 449 4 21 953 37 41 +341632584: 544 628 5 81 3 +2842684: 9 47 5 1 5 3 4 +523250: 5 8 805 10 5 +37931295: 194 46 85 6 5 794 5 +2461027: 876 173 14 3 4 84 751 +642276315923: 3 9 4 484 1 3 988 6 68 3 +981102650: 98 103 92 626 69 784 +2730185411460: 4 997 978 873 7 3 5 1 8 +1398889158: 1 8 4 152 9 77 4 2 7 5 8 +1194436: 9 3 436 31 2 43 68 +373335: 9 3 3 15 9 13 1 3 4 2 690 +2640924: 67 1 704 2 342 +9873432: 99 731 99 63 +12344106: 3 21 76 4 75 2 7 7 5 6 6 +68713659: 7 1 93 8 6 43 69 1 5 30 9 +274815: 5 591 93 1 +25359: 609 6 242 4 7 +534625: 5 270 2 62 85 5 1 3 5 3 +130602654: 4 6 7 2 179 8 4 7 4 7 1 3 +338554582: 854 7 24 395 82 +84103: 156 1 9 123 292 7 +63644688: 636 444 30 253 5 +80925: 196 6 22 47 65 +8033631191: 89 26 254 9 8 8 9 69 21 +33443: 2 6 3 9 62 312 42 17 +21101478: 16 402 68 84 6 9 +962165: 145 73 4 66 80 +138138: 79 12 1 3 1 506 +5668451: 28 26 75 973 17 6 5 +6080495999: 47 75 623 8 1 59 96 +1087: 60 18 7 +146536: 14 6 5 36 +262955060: 9 3 3 7 7 45 2 9 548 95 +33613: 52 18 2 238 15 51 227 +66980340: 5 990 7 650 153 265 +8462471: 4 78 764 24 38 33 +633122990: 7 2 64 9 6 6 9 2 2 3 8 973 +5178404: 5 1 1 6 345 4 7 473 2 2 1 +2037546412: 7 9 9 7 3 88 9 206 412 +268920: 19 10 54 3 4 3 90 +7645254005: 2 8 578 766 21 4 60 4 1 +607299762: 15 18 249 2 2 19 4 +1247427: 415 8 30 5 22 +49392: 2 49 1 8 99 4 8 +12166567: 8 7 43 9 9 3 550 2 5 7 8 7 +35660898: 800 398 56 49 2 +2605: 2 69 5 580 681 +204702688: 948 151 4 3 143 45 +1234695: 31 8 1 986 694 +6421688964: 79 36 909 25 1 3 828 +238061892142: 365 1 256 652 9 44 +258018818134: 2 574 98 520 818 133 +3935113: 6 9 3 8 217 9 56 10 6 6 +61452062601: 1 1 539 7 8 3 451 315 4 +784108: 95 4 476 340 443 +22823179: 26 842 7 924 177 +1072638981: 1 9 629 7 90 383 6 72 9 +2035: 7 104 86 1 64 +1817634503: 447 81 84 502 924 8 +690: 69 7 44 77 7 39 8 32 +48180660: 754 9 4 5 6 6 1 577 2 9 6 +4653: 52 72 37 56 8 +690000: 5 2 46 375 4 +413042: 77 18 298 7 9 +3604: 201 2 969 513 110 +342007: 427 4 8 3 8 +21397887: 9 6 127 52 60 928 +78619520: 72 5 80 58 3 980 92 4 +43464193: 169 282 16 57 97 +3066: 390 48 7 +31123440: 91 4 1 6 360 6 9 +9242176021: 43 1 1 4 43 9 9 5 60 4 55 +49806875592: 37 8 61 1 6 2 1 87 6 4 9 +22807701642: 2 2 73 6 19 2 508 21 2 +1158660: 700 690 24 62 785 +824095: 716 6 3 9 19 329 9 2 +57687089329: 62 6 563 1 2 31 1 8 88 6 +384106: 81 72 3 566 6 1 43 +7682237535: 9 48 4 1 3 7 316 1 9 1 3 +25187335: 96 5 9 2 4 768 9 7 +6474150: 69 4 25 35 90 +1667505: 15 64 7 96 505 +6558986175234: 4 7 5 275 481 9 478 34 +81481: 340 38 551 6 3 652 +1567635920: 930 980 43 698 40 +10314416: 1 84 596 1 8 13 4 524 7 +16797462846: 9 847 9 62 7 5 526 93 6 +1811781194625: 753 1 90 8 8 3 8 874 3 +8316: 59 6 29 32 66 +1782179: 12 66 3 22 182 +15634: 2 3 6 5 8 596 81 8 647 +23288198840: 337 45 6 69 84 4 3 5 5 2 +216952666: 5 2 2 1 15 4 76 1 2 6 67 +5776330: 4 4 737 369 922 +24012170717: 870 69 42 679 4 +2701484800247: 7 45 9 1 790 2 85 7 6 7 +3302544980: 343 7 2 8 24 84 4 982 +214512: 181 13 453 7 41 8 +8354891489: 1 9 1 604 72 99 9 6 89 +63448: 3 3 88 75 9 +8967885: 4 385 6 3 6 8 831 2 3 5 2 +830149056438: 2 4 2 4 516 5 831 3 8 40 +1633826: 81 84 240 15 851 +16356: 3 2 4 27 6 73 9 7 47 +3705333: 7 694 8 6 8 2 1 824 3 7 3 +992992962: 1 55 2 3 3 255 9 1 2 +4888860354: 128 3 2 8 75 493 378 +20071688787: 1 8 322 5 3 9 7 3 84 458 +315224997: 3 736 375 9 25 +142993204: 1 85 8 517 8 2 19 2 9 2 3 +687193: 1 6 6 338 9 151 +14945447: 18 829 2 7 207 44 +397178512445: 857 299 7 3 2 31 48 9 5 +4193914110: 7 2 1 279 6 1 19 4 7 2 85 +11913175171: 758 47 694 656 4 82 +32040: 9 9 326 12 90 +2371300713: 67 374 5 830 537 +35656: 4 7 75 40 6 +14225041: 8 297 445 672 50 38 3 +578: 60 128 3 1 96 2 2 +99837441: 146 905 959 550 99 3 +50459904: 67 4 1 653 8 6 242 6 +79153211828: 21 987 72 166 70 5 5 2 +762598359445: 667 898 910 389 487 +9315936566: 1 1 63 2 3 7 96 542 18 4 +423: 137 5 3 +386327281: 5 3 7 6 3 85 1 51 7 2 1 78 +225387198: 395 544 8 34 1 55 6 6 3 +2694609640: 98 77 139 54 5 53 3 94 +1476: 90 4 2 531 +573300: 82 9 5 60 7 3 +423347: 9 1 9 3 86 67 2 9 5 1 9 39 +20869859014: 3 956 7 53 32 24 311 +1932716360: 7 6 46 6 8 2 5 9 59 177 3 +1757: 42 370 4 81 28 +167743365: 447 9 70 9 535 +1805456: 60 3 54 5 4 +9160909714: 8 5 88 66 8 2 6 1 3 71 6 +14073070: 1 2 1 1 5 8 9 964 771 5 +423590829: 8 4 2 7 48 3 619 228 6 9 +1040: 73 57 8 +11558402: 28 12 3 4 9 30 688 1 1 +173804547: 86 90 227 3 2 +323766878: 1 7 8 3 483 871 23 7 79 +58894740: 6 2 3 88 103 9 1 8 9 3 9 6 +27365174: 546 5 6 5 1 76 +139524149: 3 8 81 1 59 33 44 147 +667990236: 81 358 5 821 6 +20430: 7 44 54 55 5 244 8 7 5 6 +1352849736087: 95 356 1 4 973 60 84 3 +29324: 584 6 5 87 5 +5614431408: 308 44 84 411 36 4 3 +977350: 96 9 8 34 9 +1204859115: 5 8 7 2 6 970 5 5 86 13 2 +1185746128: 9 3 58 361 2 345 4 112 +3116640: 70 823 13 86 40 +25015627: 6 453 9 228 8 719 91 +71743721: 18 722 1 8 552 826 6 diff --git a/src/bin/07.rs b/src/bin/07.rs new file mode 100644 index 0000000..e4015e0 --- /dev/null +++ b/src/bin/07.rs @@ -0,0 +1,77 @@ +fn main() { + let text = std::fs::read_to_string("input/07-1.in").unwrap(); + + let mut scratch = Vec::new(); + let t = text + .lines() + .filter_map(|l| { + let (r, s) = l.split_once(':').unwrap(); + let r = r.parse::().unwrap(); + let s = s.trim(); + scratch.clear(); + scratch.extend(s.split(' ').map(|n| n.parse::().unwrap())); + + if (0..(1 << (scratch.len() - 1))).any(|i| { + let mut sum = scratch[0]; + for j in 1..scratch.len() { + match (i >> (j - 1)) & 1 { + 0 => { + sum += scratch[j]; + } + 1 => { + sum *= scratch[j]; + } + _ => unreachable!(), + } + } + // dbg!(l, r, sum, i, &scratch); + sum == r + }) { + Some(r) + } else { + None + } + }) + .sum::(); + + println!("{}", t); + + let t = text + .lines() + .filter_map(|l| { + let (r, s) = l.split_once(':').unwrap(); + let r = r.parse::().unwrap(); + let s = s.trim(); + scratch.clear(); + scratch.extend(s.split(' ').map(|n| n.parse::().unwrap())); + + if (0..(3_usize.pow(scratch.len() as u32 - 1))).any(|mut i| { + let mut sum = scratch[0]; + for j in 1..scratch.len() { + match i % 3 { + 0 => { + sum += scratch[j]; + } + 1 => { + sum *= scratch[j]; + } + 2 => { + let digits = scratch[j].ilog10() + 1; + let mul = 10_usize.pow(digits); + sum = sum * mul + scratch[j]; + } + _ => unreachable!(), + } + i /= 3; + } + sum == r + }) { + Some(r) + } else { + None + } + }) + .sum::(); + + println!("{}", t); +}