diff --git a/res/07/example b/res/07/example new file mode 100644 index 0000000..fc6e099 --- /dev/null +++ b/res/07/example @@ -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/res/07/input b/res/07/input new file mode 100644 index 0000000..c60f2d5 --- /dev/null +++ b/res/07/input @@ -0,0 +1,850 @@ +5784641: 453 6 9 3 8 25 14 356 1 +282716070: 373 831 714 455 2 +38474572: 1 3 8 4 45 1 248 1 466 2 +32688: 90 356 3 640 5 +2462846: 245 64 23 41 48 +10791: 2 4 4 896 39 +2939907585850: 8 8 957 6 1 1 2 4 2 3 1 8 +33727511: 2 7 82 457 9 1 1 +1521190692: 106 2 779 287 63 1 +1385751: 6 3 423 52 1 +51483: 9 4 77 457 1 4 613 5 2 +27186: 35 3 6 470 10 46 +3349387: 7 96 6 68 816 7 +7929: 257 6 2 9 3 6 +7471696060: 7 2 2 25 1 694 8 2 3 7 5 7 +12702339: 9 29 621 6 6 12 2 2 2 94 +2478: 3 54 7 +982901550: 240 8 7 42 24 1 38 4 2 7 +343034318668: 46 1 6 4 365 5 3 7 9 8 7 +17824: 47 357 1 44 4 +65425: 5 3 601 2 6 +21139380981: 26 557 796 8 981 +56787982: 63 9 8 555 190 2 4 508 +112442760: 83 20 70 80 967 +8544598: 30 356 8 5 19 79 +1137677262: 16 711 772 60 +84699731: 15 3 435 30 48 68 9 9 +4637611861: 1 8 6 8 4 92 9 72 559 60 +177100: 7 843 1 6 5 61 9 +4636065: 13 702 304 331 79 +92731: 8 1 1 7 71 396 8 6 47 +18969: 8 6 165 8 3 8 8 1 3 3 331 +170977963187: 854 8 89 78 4 4 7 96 7 5 +520875935: 572 9 60 75 935 +52364: 603 86 2 299 205 +147028: 5 576 571 343 997 59 +180401705: 29 5 7 405 61 +2157569655: 5 8 4 9 57 3 2 82 882 86 +1432355: 5 9 3 2 6 92 2 8 1 3 1 6 +79928148: 97 824 148 1 +789912: 14 1 3 47 3 9 477 6 1 +412247990: 3 326 240 3 7 90 4 55 7 +1211526764: 362 2 8 306 871 332 +256528696625: 476 6 667 898 25 +8983769436: 6 3 970 2 7 2 9 6 2 4 9 36 +53684598: 528 4 31 453 598 +28851295: 709 4 7 83 7 +2973265996: 8 805 6 40 242 5 577 2 +102261: 430 99 633 85 82 7 +358146210: 47 762 61 93 6 3 5 +163785904: 81 3 9 59 72 51 16 +152892331428: 9 807 69 7 97 6 5 3 4 19 +4326853: 411 4 95 257 4 +30451: 4 153 7 4 95 6 8 33 5 6 +838677: 9 3 9 927 647 6 60 39 +4815659060192: 6 4 6 22 459 371 9 1 9 5 +242216: 9 1 8 2 5 8 7 6 8 4 5 296 +1743546: 386 6 7 9 8 3 4 5 1 77 6 7 +796272636656: 61 50 66 8 4 8 79 59 7 +100245722: 9 38 3 87 9 2 73 7 2 2 +500576: 75 77 724 2 77 +58671000: 552 8 424 75 795 +3373715: 673 5 8 715 +2511667200: 6 272 1 7 12 8 8 6 5 64 7 +11920095: 1 45 476 8 7 85 9 349 +133012929: 6 246 9 22 836 871 27 +4282: 60 10 7 65 17 +25545780: 2 9 7 37 9 5 393 6 2 65 +147816219: 5 1 4 3 3 8 28 8 3 123 96 +7704: 3 77 55 5 2 4 24 8 3 +93266: 92 251 9 972 25 9 +730483380: 4 78 45 26 64 7 2 54 55 +3890126751: 315 4 718 64 43 +19664422: 983 218 2 1 58 +430481: 430 4 61 6 14 +86896: 62 14 82 9 5 +303595570912: 8 429 8 9 6 5 68 3 2 691 +10960: 214 846 1 4 349 +744802: 6 98 351 71 9 +1505021444: 904 45 1 208 8 7 +4651846266: 547 2 76 85 62 204 +9619948122: 862 279 1 7 40 4 8 5 +4024050: 288 998 14 40 21 48 5 +18820778295084: 491 684 7 7 371 934 6 +20724: 4 106 1 4 55 6 2 7 17 6 +14564: 42 31 153 4 7 +4864: 1 599 8 64 8 +20650396: 7 635 3 5 774 2 76 +28333294948: 8 907 6 9 6 2 1 6 2 18 86 +64392756: 715 458 9 95 58 3 +2855347200: 3 4 95 576 600 81 +27647: 35 1 6 8 64 3 81 188 +52045208: 9 61 20 474 5 3 +855328513131: 7 57 8 2 5 57 8 9 47 132 +130608: 7 1 9 2 907 +468100: 2 51 88 4 1 2 6 8 4 4 4 50 +6121587545: 10 6 1 45 1 97 8 6 43 8 1 +1084060: 7 163 95 2 4 5 90 +5125818369: 1 5 36 2 581 837 1 +4024: 5 1 9 8 9 21 476 236 5 1 +1755156488: 9 9 8 5 5 16 265 8 8 7 6 8 +30826096: 3 95 7 548 82 +3125227: 517 28 819 61 39 6 7 +257148204: 7 12 84 265 8 6 3 76 +15519663297: 7 289 8 9 933 849 180 +59409: 3 5 7 396 6 +175033: 5 7 1 50 35 +31515: 57 2 2 4 1 73 8 140 7 8 7 +113204527393: 75 9 779 143 173 3 +90750150562: 2 1 6 6 5 551 5 90 5 3 3 1 +6958116471: 3 3 7 755 8 5 90 5 1 9 1 8 +51810: 3 1 6 761 66 +7356: 91 285 538 8 4 40 +934173: 3 88 99 3 5 70 8 +3930444: 36 407 713 34 46 +247485243: 380 3 8 5 8 761 3 8 54 4 +17901903476: 6 8 9 6 1 7 66 92 5 7 7 57 +1649250: 2 6 8 9 5 805 8 31 1 6 4 5 +1035506449: 8 25 43 2 27 9 4 9 6 68 +392957: 6 57 6 2 6 9 69 8 80 404 +2498599246845: 5 752 16 4 848 653 3 +2684735088: 44 830 90 62 49 696 +134307: 66 99 9 2 308 +266482906: 266 4 718 110 39 67 +80837: 80 74 8 1 7 +26421665847: 329 8 49 8 3 7 5 30 267 +6028342944006: 525 92 4 8 2 40 8 3 65 8 +588788722: 1 536 51 788 699 23 +126608220: 5 3 4 6 8 2 4 5 39 9 519 6 +582563: 68 223 2 417 146 +12909778704179: 3 5 86 6 2 9 783 1 6 1 80 +1686: 6 6 2 66 762 +760385775: 19 5 532 33 385 776 +8310759: 241 75 6 831 71 76 7 +2169421271: 309 9 173 24 7 +5458131772: 74 737 43 317 68 4 +210400146: 3 13 5 35 4 263 147 +376750107: 5 754 1 42 2 3 65 8 63 5 +222711: 6 5 9 3 713 +17610257: 3 9 652 7 48 61 1 2 691 +15380423: 612 69 8 487 4 36 +26228617653: 71 2 74 26 2 2 1 8 78 69 +39003044: 1 1 9 7 26 8 9 7 9 4 2 94 +64737036: 602 8 1 444 6 20 2 834 +32380: 9 6 5 8 916 2 4 552 9 9 7 +25939875: 48 40 6 6 2 26 25 9 77 +9132918454: 8 7 1 5 4 177 4 4 4 5 1 23 +136746: 45 5 403 7 9 43 3 +4523429: 45 23 193 66 170 +246704417911: 6 47 84 9 2 553 5 79 11 +4616120192579: 194 56 607 9 417 97 7 +243959052: 3 386 4 462 19 6 876 +155068528168: 2 8 417 45 3 1 3 7 332 6 +917542640440: 936 268 4 5 4 25 3 6 49 +7901701125557: 8 4 4 8 29 4 30 5 211 5 5 +123921098340: 94 58 7 56 97 6 14 390 +1937047: 3 360 514 5 44 +63090128: 70 10 90 94 34 +68544593: 7 9 68 16 596 +6382320149: 787 940 810 7 607 1 9 +162290960: 583 1 47 6 7 2 37 3 7 8 +563798880: 775 931 1 3 4 306 90 +2414825714: 753 690 89 82 4 9 +22754489: 7 325 439 5 92 +5019794638: 56 4 7 6 7 96 2 60 32 7 7 +6716159: 6 80 11 6 212 +11751450: 80 8 826 8 23 450 +3400510971: 8 498 4 7 9 851 68 +1006212456: 1 65 388 6 3 3 597 8 51 +96331273: 552 69 63 5 505 +2607114: 8 39 8 8 3 8 432 92 22 +276612: 9 2 76 2 7 444 +128601: 2 638 6 97 301 +30225300: 7 30 6 389 7 50 +2417458: 416 10 1 7 6 83 +12243000079: 66 23 2 28 825 2 8 63 +706931422: 6 9 8 7 5 2 835 6 2 375 5 +1694741: 1 6 3 2 5 994 65 3 54 38 +3594129013: 855 664 81 42 13 +116193560: 967 75 52 82 2 7 22 6 +6128336: 2 7 598 83 36 +260422134: 702 85 99 36 37 +941: 7 4 913 +148365189: 740 999 826 95 2 +58078863: 6 12 949 63 1 +91497: 1 38 561 11 50 3 +13650: 91 5 5 2 3 +1666386016: 1 68 19 5 9 3 46 831 +21465784: 6 235 38 7 77 2 6 3 2 1 1 +2984: 6 39 1 3 7 7 3 +3358876199: 6 799 4 33 6 4 7 56 341 +90332539: 903 32 5 3 9 +32912005124: 4 9 70 62 83 4 32 7 6 86 +736412: 73 607 3 6 287 22 +400288630350: 3 665 81 970 9 60 95 7 +4839681005: 3 8 7 3 4 4 1 4 660 73 7 2 +14283: 68 21 3 +3797280: 6 2 8 2 1 4 50 948 7 4 8 3 +11843198463194: 532 4 413 4 8 2 993 2 7 +3636435: 45 64 6 62 82 2 3 2 2 3 5 +260771705046: 8 85 2 2 6 279 3 88 4 +12864257: 131 261 4 98 205 82 +5760932097: 50 5 1 989 3 233 5 97 5 +88185171: 8 4 5 249 1 271 88 867 +73348154880: 5 8 9 7 377 7 2 96 1 940 +3685292: 8 46 6 2 117 26 262 +26740258270: 458 6 3 9 3 498 4 12 9 +3650124: 65 93 231 3 22 +28022585: 274 6 221 94 9 384 +6500: 49 30 81 74 4 +892568161009: 20 87 36 990 6 506 2 +297234: 1 62 6 55 8 674 +68315777106: 420 4 8 5 6 1 3 1 190 1 9 +2684047230165: 4 73 390 6 5 3 97 1 59 9 +14346426: 39 42 840 143 3 +1593411: 80 4 947 91 1 +171518188: 6 1 8 2 3 3 7 6 1 9 2 188 +416035: 24 7 6 1 354 532 2 5 1 6 +891032868: 3 27 70 5 839 7 708 3 +2312644: 321 9 876 1 8 4 +16128158: 5 22 50 98 4 26 15 9 1 +184759: 18 436 2 2 393 +1950175: 900 8 8 90 64 3 9 2 287 +18009617: 50 36 954 7 73 +2505593882: 1 7 3 434 16 6 566 90 2 +179352343: 1 5 368 3 477 31 1 2 3 +121424: 1 4 9 826 3 +4874798895: 45 9 9 2 9 4 3 968 4 3 4 3 +4384823899: 745 1 8 6 839 899 7 9 9 +1562: 9 2 81 22 8 +7794592701: 2 706 4 522 1 35 6 48 +161736: 3 4 49 96 6 91 37 +4526361945: 8 6 638 46 61 27 119 +36972000: 2 87 5 6 7 7 6 17 5 79 5 +474045: 21 34 47 4 80 561 +85377: 440 289 7 29 4 +1554: 9 9 9 5 1 934 8 1 8 153 +581180544: 9 96 87 8 16 9 743 56 +402063516: 645 6 6 236 3 6 3 5 16 +1746737024: 59 1 32 98 4 19 92 32 +1250905303968: 41 143 1 51 95 749 32 +359333: 969 14 4 364 65 +62881281: 3 999 37 36 605 +1676481377: 71 799 22 687 2 43 +12203: 5 7 928 257 3 +288393: 8 3 12 396 +1454: 5 31 921 +17188466: 482 73 89 819 4 +1394224: 4 40 1 240 2 3 4 244 4 4 +8339935: 527 4 8 5 7 2 245 8 2 7 9 +8025: 1 2 1 7 2 5 40 907 8 6 1 3 +154980: 92 97 41 5 4 +11899015: 51 89 4 881 625 890 +536910629: 6 10 1 257 88 16 +20295: 127 9 12 3 7 1 45 +35857926575: 58 678 8 609 6 570 1 1 +28672601: 97 9 4 705 7 37 5 +19407423752: 9 20 955 550 195 +65968: 13 52 162 808 +136936: 20 55 988 5 9 +803324363968: 2 5 78 4 6 94 3 63 968 +338188739: 241 5 451 59 276 94 2 +57362370: 8 752 71 9 5 6 97 65 +5007744000: 1 3 31 6 3 50 48 414 8 +919: 2 12 73 1 540 97 +20916: 267 78 69 4 1 1 5 1 5 2 2 +146958: 70 201 9 6 97 6 +388876022: 55 956 69 9 694 5 55 +2919240: 8 946 4 5 9 17 +72977590: 87 77 1 4 2 127 5 542 +144528056: 1 480 73 5 5 30 601 4 6 +133220193: 5 721 195 3 941 +1311: 33 9 2 311 916 +39721959131: 4 361 36 6 11 604 3 +5104056: 657 5 105 12 7 15 6 +17267: 7 5 758 30 2 2 +725769246650: 6 7 18 96 92 46 647 +984: 95 77 91 35 686 +702: 1 70 2 +314314884: 75 49 137 844 3 +26334229: 328 8 3 76 8 2 19 3 4 1 +15965: 21 76 5 +7596: 9 41 219 6 918 3 +6713505: 284 60 34 7 82 +1378: 1 1 2 1 6 411 873 1 61 9 +1031253581052: 4 9 5 1 6 8 583 31 50 77 +17034: 23 1 263 47 51 3 +1006566072598: 1 2 32 20 303 725 9 7 +27957506: 8 7 2 5 333 7 71 944 4 +596557462: 842 23 308 846 65 +7952055: 48 1 92 568 58 +41703: 6 218 60 2 9 3 549 81 +91380266406: 5 7 6 2 897 21 286 +17903508480: 83 8 85 9 30 338 57 4 1 +95103012: 9 8 1 1 5 1 660 4 5 94 7 9 +1555709441: 9 6 5 2 4 7 717 7 213 42 +22000960865: 26 546 574 27 68 1 +662488: 1 79 2 80 3 4 5 784 3 5 +125046: 81 21 60 1 71 15 +5949995: 96 784 43 79 653 89 +413733643: 98 66 9 8 4 7 546 4 42 +688344: 58 6 640 1 8 87 +9768: 5 185 9 43 1 +51210649580: 26 3 96 7 2 1 3 6 8 41 97 +1133964868: 80 5 69 43 283 +6851974885: 6 1 851 974 88 5 +39070448139: 7 7 9 990 7 2 5 4 4 8 1 39 +1816128: 69 6 9 152 61 1 36 +47043240: 9 3 2 65 4 7 7 773 3 6 5 1 +123728: 861 762 5 76 1 +1006015806: 8 358 6 7 7 618 1 1 9 2 9 +3698807: 63 47 154 71 780 8 1 +752502150: 86 447 9 725 3 +16306497: 3 1 14 636 909 500 7 +4618950753: 7 3 2 7 6 5 4 8 1 25 27 1 +1392: 5 34 4 8 +10601: 61 36 53 838 9 +37232614438: 232 335 9 8 8 4 479 2 +11708929709983: 4 6 8 9 968 2 4 4 283 7 +1298: 162 8 2 +48727: 9 64 2 7 8 2 3 6 6 9 41 5 +620133: 63 36 174 6 6 +4850: 7 3 587 4 319 30 1 9 5 +90521945: 91 34 4 5 2 3 508 99 3 5 +1407: 124 345 3 +3296941648: 46 391 95 6 525 748 +60180156: 947 6 8 8 9 25 50 1 3 2 6 +2955: 3 31 5 49 1 5 365 15 +3262588558: 756 63 7 55 7 16 +7913016: 168 9 51 6 73 9 4 3 +3112503582: 41 842 230 98 4 2 60 +23211: 6 784 747 3 1 621 +3861637: 60 643 8 4 24 32 8 +422134: 5 29 345 559 75 6 6 +2267001900: 8 22 1 1 9 17 7 95 50 6 3 +3406916861813: 7 5 309 609 9 7 5 363 5 +5259: 7 2 371 5 60 +2787440614: 34 83 55 2 720 28 7 7 8 +1488991956: 75 5 45 270 73 7 +133197472: 5 1 609 7 319 5 6 673 4 +7408194524: 378 39 67 45 21 5 1 75 +1734789628: 413 21 918 2 8 593 1 5 +3309713: 86 962 4 18 25 4 +254: 4 41 39 1 51 +444823: 2 1 620 714 +2026944: 9 9 92 4 68 +497854: 82 9 30 22 7 2 +18240073265866: 76 120 20 7 3 2 65 868 +15912762: 34 468 7 58 4 +219726352: 5 493 4 544 6 909 +172975: 81 53 259 18 53 52 37 +48050413: 5 587 886 329 81 +145091897: 20 72 61 7 91 1 31 68 +156039: 15 204 332 8 671 +153162: 1 6 238 17 91 9 +8840245: 23 48 6 4 3 2 4 5 +13: 2 1 2 4 +32448: 617 35 24 2 8 3 +146922: 6 8 9 180 7 5 3 40 1 1 8 5 +118333: 875 624 5 117 73 +1902156: 58 6 34 26 687 2 9 586 +4890847: 465 3 237 843 7 +14233611: 4 684 52 55 2 12 697 +8368647847: 6 5 4 7 20 5 3 6 5 2 567 4 +606987974: 606 978 8 1 971 +3356506: 3 1 66 51 7 8 16 39 9 8 +66799: 102 9 42 37 67 +89280: 3 51 761 16 96 +1078985844: 52 12 492 3 69 +72: 3 62 4 +2728000: 527 15 69 5 88 53 9 5 +21078147: 76 1 7 4 273 22 2 7 1 76 +30111675: 699 5 68 4 149 627 +15855840: 9 679 49 858 3 +639545: 99 5 19 68 4 +60738097535: 86 757 8 3 4 3 7 66 9 3 7 +1763: 10 8 6 73 8 +13364971123: 6 13 21 2 42 7 3 581 8 7 +3138: 420 9 3 614 3 +300073008: 34 571 644 426 24 +176169941: 6 2 6 32 2 3 5 722 1 941 +557618827780: 6 1 8 8 1 501 83 25 40 7 +1168: 2 7 6 97 9 +13159351576: 55 7 6 5 93 257 75 9 4 +41148: 284 4 7 9 4 +151387236484: 4 9 3 27 87 72 36 4 8 2 1 +32462: 7 21 291 99 879 2 +15890800860: 64 5 8 55 7 3 57 198 +444678163: 1 8 40 7 1 9 8 882 18 4 4 +763538: 9 29 3 40 37 134 6 +1682947870: 2 4 6 57 3 6 4 6 69 9 67 +641748592: 7 6 2 40 5 7 982 4 8 859 +6115161150: 27 237 8 5 505 378 +88303: 6 9 5 1 4 4 2 35 439 61 3 +4106592: 46 66 456 98 2 6 1 1 +9496610: 331 60 184 6 22 2 +220227770: 507 14 22 786 516 +80598: 93 1 857 37 +33950931: 5 1 59 940 5 664 7 26 +680394657: 8 7 963 773 9 41 7 8 3 +14448081: 240 8 5 12 81 +5439413: 94 52 541 9 7 52 661 +18894: 465 3 2 41 4 +25035: 352 7 7 32 5 +46920376: 93 2 8 20 8 379 4 13 3 6 +12174021: 81 16 5 3 14 7 +193176858: 6 574 64 38 291 +50818868852: 8 500 1 8 32 1 53 885 2 +1029558: 5 43 798 6 138 +1263919068: 4 2 13 3 190 65 3 +22542300: 42 3 7 91 426 1 262 1 9 +529208: 504 75 7 2 8 +394939541: 986 1 3 8 5 5 190 44 +118560716: 2 6 1 1 12 760 702 14 +494656502: 473 21 5 7 2 5 1 6 4 90 9 +1209904664: 9 9 2 6 4 9 9 90 40 6 6 2 +2524565644: 859 364 470 72 2 61 2 +37708400: 75 416 6 6 5 61 2 7 +1972634: 583 4 8 1 15 9 28 62 +1662777: 22 58 42 13 8 97 +1240954: 9 3 804 38 9 2 20 274 +70027685: 1 5 92 4 4 752 1 7 6 96 7 +834198: 1 90 435 734 3 93 260 +10239: 7 456 220 3 3 +117053149: 390 17 6 2 4 3 1 7 272 +233635960846: 5 304 9 7 23 7 127 5 9 3 +1711589: 2 6 961 827 953 +1861359048: 63 388 3 5 6 32 27 4 47 +3219559200: 7 5 7 4 88 7 50 3 649 6 8 +7243188852: 7 391 98 88 52 +144: 4 9 3 7 33 +4526841598: 2 5 2 3 5 95 67 690 8 8 +74213763015: 7 96 5 20 988 905 463 +59498024: 5 2 7 2 5 34 9 7 4 6 2 479 +144196: 177 5 626 15 8 94 +2268224: 83 122 8 4 7 +646272: 2 2 2 772 88 9 +52343760: 6 6 5 2 804 1 1 5 6 5 42 +24746512048: 6 6 7 3 5 1 6 44 8 95 2 49 +512635277: 3 1 430 6 7 219 1 4 19 3 +66141691618: 66 14 16 215 701 19 +1126449111936: 9 4 1 5 202 4 9 1 624 9 6 +17960: 613 8 7 4 8 564 +144614: 9 27 6 26 1 +697288930: 6 68 29 2 86 9 48 1 1 65 +495824: 81 9 6 1 3 31 6 125 435 +35174520: 3 408 1 798 318 9 4 +168008558175: 554 9 54 473 4 45 156 +5163978: 514 21 218 25 50 +802896148283: 394 737 79 27 951 35 +268382241: 1 4 1 7 732 9 6 2 6 747 3 +14643: 5 2 24 14 6 421 71 8 31 +635: 156 4 3 472 +166346046: 4 3 4 2 3 9 2 537 61 5 8 3 +72214029171: 89 15 9 2 7 19 1 9 17 1 +81471352: 978 8 2 1 373 617 824 +1025: 71 25 322 2 605 +29748967: 339 5 1 876 7 +2900803335: 62 6 812 89 4 6 4 9 84 5 +4306295616987: 8 6 518 973 178 987 +29335392: 293 34 257 368 769 +3421513440573: 5 488 5 43 9 452 8 5 7 3 +774471671: 91 9 8 842 68 +73168387: 3 572 492 1 88 3 18 7 +1198169343212: 465 998 57 76 7 596 +4939897869: 42 7 3 98 97 762 99 9 +9452: 6 754 5 7 6 6 67 2 5 942 +1638952: 534 71 977 259 4 +2645747748275: 999 7 2 6 28 7 3 21 274 +18770866137: 59 7 8 198 4 3 3 9 14 6 6 +7267342050: 355 2 485 41 2 4 5 9 2 +263561802460: 549 48 4 180 24 60 +36812735141: 368 1 272 876 638 4 +15126615: 1 8 6 10 694 447 3 5 9 +2730: 4 5 1 6 5 +49859160395: 2 9 5 5 141 8 5 744 3 95 +166796: 667 27 518 6 9 +76128020: 9 518 96 4 40 20 +2774187786781: 6 9 350 4 18 7 786 78 1 +722212: 1 91 629 895 4 310 +825666: 43 2 96 30 34 +36528210869942: 437 83 9 582 2 927 2 +12862941518: 1 6 39 53 889 512 6 +168801: 8 3 3 1 2 7 2 1 655 99 1 5 +283936782: 464 9 6 4 4 92 64 9 5 1 +82825347069: 34 14 401 605 69 +342400: 9 4 5 301 402 +2116600955: 5 1 859 313 476 5 62 6 +5948133: 5 9 1 4 81 3 3 +14610957982: 3 7 4 5 6 4 8 9 868 7 79 +1337280: 1 1 28 796 8 7 +53963502: 6 6 1 6 8 6 52 1 9 4 50 2 +96016690857: 178 7 9 7 550 6 1 2 7 1 +90952: 14 94 2 706 37 33 92 3 +21295931: 5 2 5 272 3 89 1 2 6 4 3 9 +828611: 655 173 60 8 6 +47762044: 90 88 7 237 748 +1826: 7 26 3 4 +75623309: 521 83 7 161 9 +3768141758: 1 57 80 45 3 6 66 1 9 7 +557580344: 7 2 2 78 9 110 31 6 34 4 +302571801: 34 3 820 25 8 980 3 +3812160: 62 52 836 8 5 +6195028235: 86 6 19 70 28 235 +324096: 25 89 2 22 3 94 48 8 +588504: 45 95 658 737 378 +11530489: 15 3 30 9 7 348 3 437 9 +6771567: 2 7 2 8 769 43 69 +33083455: 441 1 5 3 1 50 1 904 4 +962313572573: 8 806 75 7 1 1 223 7 73 +316247: 5 929 68 321 66 +42210: 4 8 4 1 241 9 83 1 6 90 1 +2127: 7 9 17 2 506 +8550172: 25 68 2 90 169 +985501446: 44 8 66 707 60 3 +15694047: 73 83 87 6 66 7 325 55 +6685509294: 2 4 2 5 9 6 82 4 9 56 5 6 +548210: 14 80 8 835 74 43 +2362469697: 8 3 34 972 545 7 927 +1117: 6 7 299 8 549 219 +136968682196: 214 25 87 51 571 99 +1367384: 7 58 609 29 9 4 +144383217658: 7 5 15 93 5 2 2 8 69 6 6 5 +87828: 21 7 784 5 4 +1996: 6 2 3 3 2 2 5 9 4 581 19 +3013076430172: 5 871 798 867 164 5 +766: 91 5 1 3 308 +17402485230: 5 456 59 561 2 65 991 +1140985: 2 61 3 72 8 1 10 5 6 5 5 +1971039: 612 6 797 4 55 81 719 +426568000: 1 888 1 3 5 9 8 3 5 710 5 +5800533072: 94 502 99 5 62 +395248184: 7 8 436 28 7 187 +197913878: 4 8 6 4 3 76 6 8 38 1 50 9 +90137534: 90 13 7 5 34 +2054304: 9 355 15 981 6 42 +1130831: 196 9 82 32 57 7 +98641729: 97 588 40 36 17 32 +328169322000: 5 558 265 1 564 60 65 +19047500: 188 37 12 1 865 3 3 1 9 +28844820: 639 506 3 856 631 45 +316594740: 5 67 6 5 54 32 231 58 +18886291: 90 5 975 15 7 840 88 6 +536906112: 1 3 7 7 19 41 8 248 74 8 +12046: 30 1 6 7 944 9 7 6 2 2 6 +7927891: 709 2 835 88 8 +271560: 545 4 1 9 124 +63158: 854 44 4 7 5 9 2 1 +3742146478239: 84 86 221 518 239 +36246067: 3 624 606 6 +61996642560215: 538 165 30 6 3 64 216 +2009: 9 171 6 101 7 +32757: 814 2 4 62 28 99 +18268: 9 9 101 4 81 2 +1284128: 81 79 516 8 +20192999: 202 6 595 20 4 7 9 510 +205360: 9 4 45 2 5 147 +494508: 7 7 18 3 348 +1122510312: 5 16 6 6 1 5 7 9 8 3 72 63 +83923: 734 714 98 9 6 439 +747144: 8 12 92 2 102 +22233: 24 9 4 8 65 +1349560473: 9 4 7 475 3 4 73 8 473 +11548024: 6 4 7 5 1 9 4 7 8 346 1 92 +358717: 20 632 1 633 9 3 320 +73225780: 7 32 2 578 3 +16184864771: 9 8 2 61 97 19 837 +4946942: 13 5 99 77 187 14 9 4 2 +642483775: 8 8 1 4 7 1 37 3 777 +2990: 2 3 9 8 5 +12143949: 6 529 3 62 9 +8005100400: 897 9 90 447 3 90 99 +918093989: 616 138 12 3 3 75 91 +554049: 55 3 197 850 +102466646528127: 6 4 953 2 103 84 812 5 +7455266: 7 38 9 30 71 46 +456895108215: 37 61 85 1 3 897 59 45 +8156598: 3 31 7 54 87 +174601152: 9 726 2 561 16 +2531340: 5 298 723 6 420 +16351143: 48 88 553 6 7 +3325117659: 646 75 2 63 557 73 1 +6391994763: 4 64 759 5 1 363 +26420184: 5 4 174 7 2 19 76 3 89 +1427343119: 190 9 418 70 72 9 51 +1225692759: 97 2 4 65 243 7 51 5 +60515: 12 9 555 2 91 +79068726: 8 17 192 9 61 418 6 3 6 +6856699229: 1 6 7 9 57 9 368 4 8 29 +6849920811: 8 3 457 1 6 5 8 7 80 3 7 +78761100: 7 98 750 4 7 10 1 +2010038: 911 710 2 62 1 +22767489360: 1 722 8 1 4 308 29 7 9 7 +85437: 8 47 52 688 +242850: 59 4 7 1 3 1 4 468 16 9 1 +22418208: 2 461 566 62 81 3 +335174: 1 6 84 95 2 7 +30: 9 4 15 +476971: 19 251 1 1 64 7 +970777: 30 940 766 8 3 +159859: 4 12 1 97 4 +231027: 35 11 1 6 27 +4274115: 7 61 19 22 15 +2633044: 52 235 9 416 9 5 +562592536093: 43 3 9 9 538 5 1 1 7 88 9 +167062703: 466 3 40 7 4 89 67 734 +1752669: 35 725 26 23 3 +44847129600: 4 5 4 91 3 6 713 1 6 2 5 8 +20743323845: 95 908 4 835 516 6 2 5 +8390745051: 987 3 25 737 460 4 47 +13772784238: 110 5 9 5 568 48 5 1 +307678: 34 9 702 972 4 +612535: 4 6 4 6 2 5 6 5 805 7 +10226: 3 53 806 1 457 6 112 +47532049: 792 1 2 3 5 838 5 209 +7298163841: 8 634 4 44 80 142 +595002250: 74 83 798 857 727 5 +64727: 8 194 1 5 9 1 1 642 2 1 4 +437338: 43 7 314 24 +5830329: 9 42 1 5 723 7 8 5 2 3 7 5 +213520627: 505 9 72 422 441 +78795: 6 681 9 4 915 5 +3400111: 9 77 90 49 3 +296450: 2 78 3 6 59 9 2 6 355 98 +69123441: 691 2 3 2 4 8 192 +1328476352: 6 7 284 30 38 8 35 1 3 +48263892840: 21 6 7 7 958 4 3 510 2 2 +22374: 51 19 317 75 94 6 9 +1870193: 9 4 5 5 63 5 902 190 3 +4903206: 449 74 625 3 3 1 1 6 5 6 +50497: 3 607 14 +15543383: 52 49 61 5 83 +326313836: 73 748 18 1 332 +142946008740: 167 6 2 2 849 8 6 1 972 +66119: 60 11 4 8 38 26 1 8 +352673: 5 80 1 607 8 +4748145: 20 680 5 349 1 +41659: 16 1 612 4 43 +19760039349: 3 4 2 2 9 8 950 393 4 9 1 +1262: 4 1 42 6 +135373: 4 1 1 33 73 +15603: 7 3 41 2 2 29 7 5 2 12 5 3 +189749: 7 182 74 2 5 +23920861: 299 80 1 7 61 +67374716131: 664 4 9 9 303 53 53 4 1 +126434: 9 4 4 878 2 +16472: 8 80 8 10 6 24 37 499 +385576: 54 7 7 579 +2091359270: 1 123 17 359 270 +7464644589747: 87 572 297 26 4 1 50 3 +17943599: 4 6 3 12 26 60 4 346 9 9 +7541103871: 754 108 26 212 71 +524886740: 8 83 917 8 629 78 +11652: 1 2 8 2 7 46 13 48 137 +22073620259: 5 7 8 5 60 9 4 5 7 8 343 5 +153497: 40 59 54 49 8 +160012072: 4 55 87 2 836 +773049627: 53 3 2 2 1 4 6 7 9 6 166 5 +362918: 23 13 250 6 11 2 245 +2855: 2 2 1 1 963 2 7 849 63 +7532225: 25 1 75 1 4 9 1 206 6 3 2 +2373388704: 48 86 59 2 3 402 47 +71516658151: 3 973 1 4 7 6 4 3 3 6 580 +44208351385: 5 295 1 93 66 8 4 1 8 3 +41680641422: 9 73 7 5 197 99 372 +77258: 772 4 1 8 +3574074712: 510 497 85 7 711 +3629200: 144 561 6 70 844 +8645954890: 3 7 1 413 9 5 6 8 8 59 49 +324: 8 38 85 193 +139717578777: 4 42 28 331 89 351 9 +20783156: 4 618 5 1 9 2 4 6 3 2 588 +5332869: 6 7 43 954 9 +19565122303: 3 64 5 701 127 4 8 110 +60150611: 371 8 4 5 744 907 53 4 +3036: 23 4 2 80 53 +304589020626: 9 940 803 3 4 499 6 9 9 +125853036: 3 31 125 67 2 38 +71001069: 2 469 2 3 7 1 5 6 5 84 69 +28665152: 317 1 33 819 95 54 5 +1551897162: 4 4 5 7 22 468 1 4 9 1 64 +3353: 7 4 3 53 +92263779397: 6 394 39 6 671 7 9 395 +3900: 9 9 42 7 30 +387: 31 7 7 2 1 +5922229: 7 718 9 4 37 4 498 5 7 1 +101119269240: 459 7 891 594 410 +1544741: 51 49 3 19 23 1 +384658: 7 430 5 82 169 6 3 7 1 5 +3277181: 209 115 76 582 3 13 9 +1082559870: 5 3 815 721 67 9 3 +35081249323: 3 2 393 726 896 4 39 +34790776: 2 30 9 5 5 4 355 9 2 70 6 +7447: 83 3 16 1 519 9 391 +13184885: 21 1 9 8 9 3 474 589 5 +13150: 104 12 62 4 10 35 +633828376016: 8 73 71 2 5 24 542 2 +1808: 7 7 6 5 3 24 8 +89246367: 3 52 3 17 845 +537299093: 74 5 7 9 103 613 95 +264979899464: 12 429 6 3 3 6 99 46 1 5 +63657174: 633 2 33 71 74 +169451365: 7 563 543 297 94 +24445: 4 611 5 +25584703270: 9 725 96 3 8 7 69 70 +7229280: 52 183 4 8 307 45 +2137: 627 1 2 4 7 1 427 442 3 +10536366636: 2 19 6 5 473 3 6 81 36 +336760: 5 5 29 1 4 7 60 +8622501360: 78 38 56 46 730 55 2 +1537930: 5 2 9 383 153 8 1 5 9 7 5 +41034334492625: 701 7 97 8 334 361 5 5 +2885440940: 9 8 14 3 42 35 284 938 +2027614757: 8 3 2 7 69 69 91 27 7 6 +1612: 1 5 7 3 46 922 +1493097288: 372 737 7 778 139 8 +1107003: 27 6 7 51 4 +6956594: 94 37 2 59 4 +3742655: 232 4 4 2 6 2 7 1 6 6 83 7 +205630514403: 869 4 292 9 9 26 400 +85307216: 42 52 2 20 6 72 18 +83781098: 27 3 84 7 4 123 87 2 4 +11789660127283: 7 838 46 619 872 98 5 +153872: 116 2 652 2 +63149571: 9 52 1 1 2 17 99 50 571 +3615: 58 444 1 7 6 88 +829471: 5 9 816 4 2 992 9 150 +25093474: 971 8 8 67 2 842 60 4 8 +2852921380400: 8 19 6 890 511 130 52 +20891545203: 725 39 93 4 7 1 56 8 9 6 +423487987: 6 882 9 6 9 4 5 8 1 5 56 9 +3652795: 91 231 1 85 4 3 9 9 26 +7693: 2 8 3 9 45 +159135755: 270 83 6 9 1 5 152 49 7 +32580391276: 80 9 2 3 5 8 9 8 58 26 3 4 +15819: 1 52 1 4 605 +351813: 8 6 38 9 95 3 9 4 6 2 1 9 +2235701664: 8 499 2 64 8 4 3 21 8 7 +971926: 122 849 92 5 1 +141305: 4 14 74 12 34 +8473749: 3 80 764 36 63 8 80 +1891: 8 2 436 2 78 1 597 311 +338: 1 4 22 20 291 +71347630340: 629 84 4 7 6 30 1 340 +1898508480: 80 33 43 960 407 +3078986: 954 4 8 78 183 87 +4866528: 27 48 1 270 2 24 1 +15045: 722 281 15 +150: 4 9 6 2 3 9 +2968217: 9 2 614 7 7 8 58 9 +48764: 517 93 312 365 6 +7713543101: 1 8 993 863 912 102 +3155144619195: 9 390 3 8 9 6 5 594 5 7 1 +16230484: 5 157 304 8 5 +9265984: 481 8 4 7 86 +12201735070: 3 949 121 506 79 7 5 2 +14765345: 7 7 26 44 649 4 42 +76827869: 37 79 8 487 3 831 7 5 9 +4548: 4 41 670 26 4 +2515903: 2 2 2 1 3 79 9 8 950 2 2 +623808: 51 13 9 8 16 6 +947524166391: 5 922 8 2 408 8 6 387 4 +98352: 10 11 1 97 109 6 6 40 9 +3198805783: 63 3 6 7 40 11 57 82 1 +584812664: 6 8 86 126 61 +955953: 3 2 75 3 962 2 4 396 9 +1361: 1 308 53 +34236437: 10 2 634 5 2 1 9 12 6 9 5 +111400423: 3 230 7 7 1 6 4 31 9 76 5 +8755: 4 63 84 16 1 +55631341: 389 7 78 3 68 23 61 7 3 +44928086112: 4 720 2 78 86 1 13 +1690605: 19 28 89 955 35 +713592: 877 19 1 5 792 +34138977: 83 53 1 4 726 977 +40322239: 4 2 96 224 1 +876119: 102 1 9 274 735 +2125: 935 272 4 17 897 +1118007: 408 4 974 15 798 9 +7533029: 444 309 20 5 59 468 +349272: 2 355 977 9 374 4 96 +1004401624397: 2 7 4 675 3 8 8 2 2 43 9 6 +639046: 56 103 622 46 +222430563: 5 98 44 3 5 4 818 3 +874369: 8 7 4 37 1 +1519678947: 232 1 211 797 6 7 67 7 +7955605335: 795 5 605 335 +54512772: 85 1 75 640 772 +6329058005: 7 6 8 5 749 793 5 28 42 +95671956: 9 55 845 448 426 55 +173706852200: 6 999 7 253 862 38 98 +15853: 443 78 6 30 40 3 +332105: 4 828 73 831 1 +14979416248099: 47 10 36 649 8 4 7 7 7 9 +69713480: 15 54 709 4 40 79 +1444801633: 1 687 700 349 3 1 586 +12323: 1 8 6 64 5 3 +812179: 677 197 929 9 224 +884523: 7 38 21 936 3 +636748187661: 85 925 5 2 7 798 629 9 +1582276: 41 5 466 449 4 +189700: 8 447 87 7 50 +730625: 311 78 87 9 3 4 +40187734508: 4 7 482 2 7 6 7 5 7 91 2 5 +2565167587918: 37 24 2 2 2 18 30 574 2 +363523992: 10 727 5 1 6 7 9 8 1 8 1 +1807378496: 264 6 8 7 209 776 +4222252496768: 32 4 3 945 390 524 32 +8132686: 67 492 94 6 3 41 7 288 +1974: 6 95 9 87 4 +97727392: 87 7 95 86 6 70 17 +78603: 8 23 622 120 243 +32354024: 8 2 657 6 6 2 53 4 1 6 5 +228352631: 35 5 9 9 4 8 27 2 8 1 1 +1455444374702: 5 1 317 4 6 9 3 7 4 70 1 +13330: 7 49 36 44 613 323 3 2 +43824: 46 62 4 48 865 3 7 116 +43931528: 37 6 93 143 9 8 +154238780095: 59 29 98 867 98 3 +9649: 96 4 2 9 +1043857: 84 954 5 8 57 +641654: 585 377 667 +36379506: 93 83 77 7 42 34 7 +19603586: 22 26 9 8 476 4 +39329: 551 7 5 21 7 88 +1227224918: 592 6 5 3 5 1 9 2 23 5 3 +231834: 528 174 5 33 7 +1494717675: 653 763 3 214 458 +2703024464: 9 97 9 786 5 7 667 291 +6605310: 77 6 7 19 64 +3528096: 50 7 78 1 4 8 820 454 +114576550172: 6 8 620 7 1 1 550 1 2 5 2 +22902964: 33 694 964 +10556964: 9 2 9 631 3 1 9 6 3 2 4 99 +6251608: 8 1 3 47 8 9 5 8 2 61 97 7 +1374: 41 1 4 6 390 +106978: 48 248 7 70 14 5 852 6 +15347001620: 28 2 870 62 315 631 9 +80016: 8 2 8 9 1 3 986 9 70 71 +5140: 45 4 926 4 718 +1918704334: 959 34 5 6 4 333 +7121: 2 1 51 864 7 +126247599: 775 543 32 3 +3848202: 867 96 444 3 3 9 +31676006: 53 29 399 553 8 158 +1375579: 95 965 27 15 49 +224995232: 5 3 9 35 527 2 8 3 232 1 +53853040: 355 754 5 607 16 +1149: 4 28 4 241 791 +29776344: 3 65 55 6 6 62 8 2 59 8 diff --git a/src/days/d07.rs b/src/days/d07.rs new file mode 100644 index 0000000..7a107b4 --- /dev/null +++ b/src/days/d07.rs @@ -0,0 +1,97 @@ +use std::fs; + +use rayon::iter::{ParallelBridge, ParallelIterator}; + +pub fn solve() { + let path = "res/07/input"; + + let contents = fs::read_to_string(path).expect("Something went wrong reading the file"); + + let equations: Vec<(usize, Vec)> = contents + .lines() + .map(|line| { + let (res_str, nums_str) = line.split_once(": ").unwrap(); + let res: usize = res_str.trim().parse().unwrap(); + let nums: Vec = nums_str + .trim() + .split(' ') + .map(|num| num.trim().parse().unwrap()) + .collect(); + (res, nums) + }) + .collect(); + + let result: usize = equations + .iter() + .par_bridge() + .filter(|(target_res, nums)| { + // try all combinations of + and * between nums and check if res can be achieved + let mut operator_bits = 0; + loop { + let mut res = nums[0]; + for i in 1..nums.len() { + if operator_bits & 1 << (i - 1) == 0 { + res += nums[i]; + } else { + res *= nums[i]; + } + } + if res == *target_res { + return true; + } + if operator_bits == 2usize.pow(nums.len() as u32) - 1 { + return false; + } + operator_bits += 1; + } + }) + .map(|(res, _)| res) + .sum(); + + println!("Result 1: {}", result); + + let result: usize = equations + .iter() + .par_bridge() + .filter(|(target_res, nums)| { + // try all combinations of + and * between nums and check if res can be achieved + let mut operator_bits: usize = 0; + loop { + let mut concat_bits: usize = 0; + loop { + let mut res = nums[0]; + for i in 1..nums.len() { + if concat_bits & 1 << (i - 1) == 0 { + if operator_bits & 1 << (i - 1) == 0 { + res += nums[i]; + } else { + res *= nums[i]; + } + } else { + res = concat(res, nums[i]); + } + } + if res == *target_res { + return true; + } + if concat_bits == 2usize.pow(nums.len() as u32) - 1 { + break; + } + concat_bits += 1; + } + if operator_bits == 2usize.pow(nums.len() as u32) - 1 { + break; + } + operator_bits += 1; + } + false + }) + .map(|(res, _)| res) + .sum(); + + println!("Result 2: {}", result); +} + +fn concat(a: usize, b: usize) -> usize { + a * 10usize.pow(b.ilog10() + 1) + b +} diff --git a/src/main.rs b/src/main.rs index 5622a0b..ae2bb46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ extern crate scan_fmt; use std::time::Instant; fn main() { - //days::d06::solve() + //days::d07::solve() _all_days() } @@ -37,11 +37,11 @@ fn _all_days() { days::d06::solve(); time = _print_elapsed(time); - /* println!("\nDay 7"); days::d07::solve(); time = _print_elapsed(time); + /* println!("\nDay 8"); days::d08::solve(); time = _print_elapsed(time);