diff --git a/day7/input b/day7/input new file mode 100644 index 0000000..c83b04f --- /dev/null +++ b/day7/input @@ -0,0 +1,850 @@ +453693978: 7 219 8 44 2 9 3 2 6 4 1 6 +61192589: 81 8 83 9 879 6 4 2 6 7 9 +6066: 65 29 87 9 14 5 21 3 +1957116: 171 37 224 6 42 +198050: 342 577 3 2 711 +41665119255: 7 7 8 124 371 3 6 2 51 5 +3166026: 5 33 9 66 6 +1662321: 5 4 7 622 17 6 1 52 43 2 +265653132: 630 1 4 9 22 8 498 8 5 7 +1060: 88 9 55 4 39 73 +157494755: 3 1 4 98 951 5 +1952833595452: 7 234 5 550 3 483 3 82 +467: 2 71 5 251 5 64 +7316189440: 6 2 6 443 1 512 7 4 8 8 7 +33138: 4 8 8 8 7 1 49 99 2 6 5 1 +913284: 2 89 585 39 270 2 1 3 6 +1215195700: 81 4 79 913 52 4 +298632108: 6 6 3 6 15 73 210 5 +318936618: 150 160 832 403 693 +2102812: 3 323 434 5 82 +3848880609: 716 5 82 59 651 +4940008: 658 1 935 55 31 +311641: 23 9 1 6 8 7 6 7 3 5 1 586 +722421: 81 9 30 3 8 +33606277360: 672 5 6 277 36 1 +13106566: 2 73 2 1 24 38 63 66 +54290459591: 4 9 7 1 554 6 7 2 62 859 +4886125: 1 56 5 829 2 7 5 1 1 4 9 2 +274540788: 6 3 715 6 3 68 51 3 3 2 3 +34447941395840: 3 1 852 309 9 70 2 4 7 5 +4575402861600: 15 153 1 35 5 6 68 740 +13778598989: 459 3 85 989 89 +105779: 3 6 584 993 7 +146019901569: 1 460 1 98 94 1 5 6 9 69 +1993182: 51 58 924 451 460 +6265483638730: 9 93 62 2 98 7 570 89 +196996630250: 7 2 76 3 3 1 3 8 57 56 3 4 +3944294: 2 21 4 7 4 996 1 5 7 3 +1427032798: 13 9 65 228 823 178 1 +480: 7 4 5 30 +356848870313: 574 635 862 9 69 8 +4991679: 9 6 6 59 9 79 1 1 29 81 2 +96014924: 2 899 48 230 3 10 34 +530314220: 68 99 15 786 18 +27235017: 353 75 890 751 +28227685247: 1 8 889 21 8 8 5 6 3 7 8 +23386943686: 7 5 3 54 2 9 12 7 5 5 3 49 +4671109: 7 7 85 18 6 +65643: 8 55 6 9 449 1 6 3 +28442705797959: 9 2 8 7 507 6 579 795 9 +604412418874: 85 90 73 6 79 8 8 62 8 6 +142652179: 24 680 578 6 82 82 7 9 +318206557831966: 3 24 7 98 55 7 83 1 966 +940: 1 33 4 93 6 9 2 2 79 1 67 +5659883: 5 285 2 661 9 5 6 310 7 +462378: 66 6 319 910 244 +16578901: 69 8 624 6 3 1 +58541640192: 4 9 4 7 92 907 8 6 9 1 8 +7340642493: 67 5 39 72 39 8 7 95 +452912147: 461 214 982 +48011225806: 4 80 112 25 556 249 +994133176: 5 7 9 7 3 5 696 3 31 68 5 +1671942: 6 5 943 3 41 4 59 +2011: 854 1 663 74 419 +2350244: 39 17 3 2 2 2 +599522955: 1 6 3 192 1 733 89 298 +150499563: 3 660 5 348 118 +1974967: 405 9 758 5 82 +1526491271: 309 9 717 22 817 4 6 +291350: 32 91 81 72 1 +2331564579753: 4 208 7 8 5 6 542 4 7 7 6 +9094800: 3 50 44 53 26 +8558953: 3 82 5 89 50 +5818: 578 3 8 +101507885: 3 65 33 89 9 10 5 77 5 +234179567: 8 3 993 765 301 62 +13394703: 4 615 99 55 3 +12726838: 50 6 7 8 3 4 2 936 83 2 9 +159408: 4 908 174 1 720 +257838: 444 5 58 28 +134142820: 6 8 99 1 9 7 28 3 4 3 4 7 +99344148: 2 1 788 29 5 9 6 544 7 9 +2522113308: 5 331 6 9 1 6 3 4 39 99 2 +140321: 4 3 5 4 31 9 +20942125931928: 68 562 429 219 8 89 +253357107: 361 41 7 341 2 19 7 58 +2576029514834: 5 1 3 605 83 1 4 834 +3812481: 8 507 2 74 1 +38667377388: 3 5 77 23 47 73 32 6 47 +154599952490: 3 2 3 671 64 6 87 8 3 1 +6771960: 3 9 66 3 3 337 6 90 3 1 8 +43692: 90 7 45 4 2 +318124: 1 8 497 80 44 +172874771: 2 8 9 1 3 9 7 63 2 7 63 8 +4129352: 502 4 4 8 511 4 2 469 1 +30132480: 4 148 672 59 5 +390439859: 29 8 6 4 6 9 81 9 9 27 2 7 +65515806624: 5 663 155 373 639 98 +5014677: 2 758 9 202 633 +1490: 81 7 16 78 3 +23528003: 4 9 8 6 6 7 5 7 83 13 5 1 +7929094: 23 407 7 2 121 85 +276945: 37 5 91 94 5 +561691819: 1 6 7 682 5 5 7 9 86 17 +12070408538: 9 163 43 3 5 1 1 8 7 5 38 +14816: 4 37 3 6 54 16 544 +9301982: 903 906 6 857 18 89 +236: 7 8 131 90 +924816: 14 66 8 16 +94248002483: 6 8 22 816 165 247 8 3 +775651572420: 98 383 3 6 3 73 210 2 +31344: 4 4 8 5 821 6 8 59 4 388 +30930: 6 15 50 119 62 +154217932: 22 13 1 719 67 6 8 498 +23474981: 3 65 250 41 18 65 81 +178893876: 3 7 7 8 96 9 33 33 4 7 2 6 +618737127839: 39 61 312 801 195 +4517: 6 3 1 1 5 236 925 52 +1014255: 7 727 51 99 9 3 1 856 7 +1588: 87 7 32 9 671 +112938355813: 21 9 573 9 5 580 4 3 5 +12794721648: 3 99 764 6 65 2 8 8 2 48 +784111270947: 4 542 47 29 35 9 970 +133997465978: 4 69 2 4 4 31 3 2 1 5 97 5 +16625917453: 222 5 591 66 8 6 2 4 13 +145: 70 69 4 +1756138126: 20 15 121 1 5 7 81 126 +928811: 7 190 65 680 986 +21408695: 2 9 5 690 8 6 1 3 47 2 2 5 +368451: 66 302 4 4 8 +27863124: 3 19 5 1 995 89 216 7 4 +957338381: 354 2 3 9 6 3 823 7 8 1 1 +44521661: 48 680 341 4 1 76 625 +10437926: 148 585 4 89 10 2 3 2 +88019880: 3 312 7 30 884 +791624: 8 79 5 8 9 +89138231364: 274 609 3 533 609 +4293432: 3 6 4 5 9 5 8 9 528 72 39 +6358683: 4 1 6 21 5 8 31 37 4 +3764592: 51 1 324 4 591 +19530679599: 882 5 415 5 2 26 53 3 6 +87417: 3 280 24 19 99 +533489: 4 9 37 4 1 5 90 +5011: 3 6 5 22 490 +73338720: 293 93 52 23 91 80 +126: 9 1 1 1 13 1 93 9 +3615788: 90 4 1 57 85 +147888: 4 79 17 485 78 +193516984: 487 87 2 76 6 65 8 68 +2589283728: 2 58 9 2 19 5 46 9 4 730 +64553362: 645 533 60 +22331998272: 2 642 77 7 845 4 23 2 +8657594: 778 86 6 6 5 5 9 4 +5562082: 2 88 21 180 82 +44600739: 88 9 78 223 3 25 2 89 +1175: 8 2 6 68 87 +77262: 97 784 353 4 857 +1958152581: 847 682 3 1 231 +89632318: 9 7 56 145 172 6 20 +29470: 459 49 58 4 5 +5458120200000: 4 6 815 6 65 36 90 530 +683299: 7 276 8 5 59 44 419 +7405744: 25 715 574 2 1 +15815402: 3 546 7 1 7 8 7 4 5 4 9 9 +4153776591: 13 577 8 2 88 320 271 +5994590716: 99 787 8 926 1 73 +1905139223188: 945 8 6 457 6 95 42 +154417: 193 8 17 +168145522524: 957 766 7 66 38 96 7 +4795006: 2 21 5 204 9 59 47 +7043070062: 6 8 1 6 85 8 33 7 4 2 9 2 +62697036236: 28 3 70 82 722 3 236 +12178755: 8 8 77 4 3 558 5 3 81 5 +32779766156: 693 473 93 773 156 +115249713: 90 243 4 29 2 596 +68054: 73 4 951 2 1 4 52 2 1 9 +802077409221: 92 7 3 17 848 2 2 3 1 5 3 +142074998208: 640 71 85 7 8 44 719 +8632: 5 9 7 58 4 +2624715: 4 1 5 8 619 8 1 1 4 3 4 8 +4759740: 937 8 357 79 9 60 +4635323000: 9 8 284 8 368 2 7 79 77 +248375402756: 2 34 2 32 3 910 68 9 4 +125065077: 8 41 531 78 6 35 79 4 7 +182358: 4 182 3 855 30 8 1 2 +3812369: 77 29 2 2 493 +1609831: 218 737 251 7 654 +2024734: 756 4 8 37 9 94 +552808080: 8 72 93 12 626 22 5 +52118327: 2 161 674 6 790 4 9 +160697381: 2 89 8 7 39 16 10 2 6 53 +275832: 26 8 34 39 24 +144618480: 398 5 757 8 3 8 11 3 3 4 +2550199: 6 8 7 8 41 137 79 +212959799662: 2 660 8 15 979 9 661 +173540566353: 22 8 3 9 180 6 2 1 8 7 51 +4867527232: 4 46 54 108 9 7 9 6 4 8 2 +30630: 6 36 258 6 30 +912202863: 5 86 2 15 1 5 286 1 +400914580: 371 29 914 5 80 +43596216103: 768 89 2 2 2 3 7 9 9 5 9 +8946096736: 4 2 710 32 23 3 4 5 +15609768411359: 9 707 567 4 4 8 67 60 +4122784380: 280 748 89 165 +10977874: 68 6 1 16 3 7 2 81 91 +2908919: 99 976 2 315 30 1 689 +29609: 1 4 19 17 3 86 681 28 4 +245700: 12 1 351 5 3 45 +367: 1 3 3 55 37 +62951499517: 9 32 5 73 8 364 520 +734005: 73 39 74 24 6 +124853195948528: 88 69 9 482 698 6 79 9 +3636750240572: 5 6 5 9 5 5 210 6 6 4 5 74 +112035399: 651 10 169 326 3 99 +84854: 9 4 8 831 89 3 +233936125149: 9 6 811 648 97 261 44 +5809: 5 5 7 17 5 62 2 +87092610443: 9 9 84 1 8 78 4 14 4 4 3 1 +15382371424083: 9 6 3 8 919 69 92 95 85 +117071: 291 4 1 57 1 2 90 +487732407: 6 4 63 10 8 973 4 406 1 +1157798799: 5 82 8 78 383 798 799 +11910216899: 5 69 842 1 7 13 6 8 6 3 9 +906: 4 5 6 87 803 +7607716138743: 73 89 98 986 911 486 +8026454: 2 91 49 28 9 +987004: 1 8 2 274 5 8 26 474 44 +402628876: 5 7 82 2 409 833 77 76 +30661956: 8 6 491 5 81 9 20 9 3 13 +33657773: 4 7 13 803 39 770 +23941915: 73 49 5 4 3 98 5 12 +19880498446: 763 46 620 1 7 2 2 3 +1382284: 91 83 9 7 79 24 +20366858: 45 1 5 731 84 102 4 5 6 +93755256: 30 71 7 1 44 5 7 +164884487835: 850 4 722 4 4 487 835 +1341603775: 52 860 1 3 775 +1072: 16 225 1 88 742 +7246685: 74 704 4 97 9 +1427830680364: 48 392 9 5 2 590 358 6 +47410058: 39 84 17 2 4 5 7 +428546912: 2 9 3 971 6 4 6 7 3 3 5 12 +9674801499: 276 42 29 4 875 +33994953: 679 868 31 5 3 +10034366578321: 4 3 6 27 6 80 7 753 23 +21580: 8 37 695 90 26 +2831604330: 7 831 8 39 3 9 3 6 5 56 +103563266: 6 9 7 7 5 6 2 4 1 98 64 8 +34404349: 1 772 7 1 40 9 8 9 7 4 4 7 +59764: 1 66 90 1 32 34 569 67 +3837946112: 4 1 7 9 320 9 7 884 308 +392845: 490 4 80 59 467 +2237: 354 6 6 93 3 2 11 +530442: 22 1 6 4 41 +667875343107: 1 9 540 5 5 76 3 28 2 1 7 +27334270016: 77 6 74 857 80 68 1 7 +9133: 64 4 493 8 34 +1093: 1 6 63 471 184 +2345410: 2 3 45 407 3 +698287110552: 775 867 7 5 672 9 2 70 +18068437: 4 104 61 20 956 37 +368540: 2 606 3 43 6 41 +864: 9 6 9 +1418: 75 9 1 16 74 +30118881: 6 5 1 4 4 9 992 1 3 88 5 1 +311278809: 432 33 2 4 9 4 1 9 3 4 3 +46589936700: 88 21 8 9 58 5 7 75 4 +8569194: 4 15 54 8 3 58 7 2 3 +481417: 937 5 73 8 1 7 +2397863: 6 80 45 286 8 2 8 23 +24256960: 5 28 442 4 98 +22569840: 94 68 6 36 645 +42699365540: 6 70 4 37 656 6 554 10 +38737384769: 8 5 392 5 2 863 7 8 94 +2389502926: 95 2 805 6 2 60 24 52 7 +5752: 86 9 3 579 82 4 +63029652680: 1 7 3 3 50 701 5 7 6 683 +3090035: 3 7 5 618 35 +1373: 28 1 4 6 247 +2919: 7 6 3 9 34 385 +67269: 9 4 5 6 6 5 9 680 7 157 5 +6172980: 6 1 944 59 9 2 55 +161860638588: 3 56 58 473 38 5 89 +664801: 1 3 8 9 490 979 60 +3317827: 8 42 394 1 348 +187757: 872 5 43 220 57 +12552562: 5 25 525 62 +29106: 4 4 6 10 9 5 2 4 12 4 62 7 +202769: 18 2 25 2 65 4 +481787: 489 31 82 23 8 +243818: 72 72 815 43 9 9 3 9 3 8 +255915710: 365 584 9 8 4 7 6 18 +649896756: 40 922 81 675 6 +90209784: 86 4 8 4 8 2 9 41 7 553 4 +1938043461875: 585 2 316 1 60 6 6 46 +344395030560: 68 321 1 8 570 346 +68445524: 58 9 95 45 5 24 +101817063790: 29 7 5 5 1 74 9 1 2 758 5 +8208761: 5 5 5 5 8 5 6 617 69 7 1 +120768: 98 9 6 8 17 +3116048: 3 3 11 4 1 7 1 7 8 6 253 6 +2514187687609: 251 41 876 87 607 2 +816971: 99 6 3 82 3 +1132216: 92 246 837 148 4 +22172: 7 6 3 37 633 31 7 +2749313: 6 218 82 3 1 112 7 +4280: 385 42 2 5 5 +2653814829: 9 3 9 176 3 37 7 19 54 +2862201: 9 7 5 80 67 6 133 3 4 4 9 +3370: 5 3 21 85 560 5 +33510727: 5 336 55 7 745 4 8 3 5 2 +8542478027: 7 9 6 423 8 1 96 973 54 +625114645518: 598 7 791 132 1 51 7 +94520255: 14 36 8 9 30 8 7 603 5 3 +269825453: 8 5 54 424 5 94 333 +8990: 54 35 90 +1939417840: 58 41 62 83 40 +25841539: 82 340 8 764 8 +5583873650: 5 3 508 2 6 4 3 1 3 4 9 48 +2487933: 8 69 8 5 3 11 1 3 +1270416845906: 973 680 98 91 1 211 +46166671264: 4 54 5 8 601 4 83 871 +115632308: 472 81 410 51 8 +206282: 293 1 6 9 7 +21933071: 57 5 579 1 846 35 775 +1729624: 4 27 1 1 1 328 9 5 4 6 5 6 +75757: 941 8 2 60 412 +1352210: 1 598 3 777 83 7 6 8 1 2 +347983: 5 8 4 832 9 2 53 4 +53321843: 8 9 1 555 117 69 5 7 40 +509941350: 8 160 89 2 5 73 4 510 +16749548152: 933 6 735 9 548 152 2 +182715414753: 653 6 6 453 7 658 7 53 +22751389220402: 34 82 726 135 6 90 2 +7477875: 53 6 73 255 75 +17145951: 557 66 95 16 465 6 +29997394: 688 436 5 93 1 +830276218: 88 468 801 8 93 99 21 +413822746: 4 902 530 227 46 +8475989: 61 731 55 523 5 3 751 +213173385: 7 419 5 82 91 143 244 +8476: 315 34 6 16 9 1 4 +215132022208: 651 865 7 571 33 382 +1737558: 5 8 9 328 1 3 4 42 2 6 3 9 +7212898: 98 8 92 74 27 +3376916: 422 8 323 579 9 7 +21912156: 22 6 166 15 7 2 +2424528990: 7 4 84 7 410 39 +399686: 7 4 27 2 84 +479369: 51 9 87 6 6 2 34 1 68 +5366794: 3 264 201 94 2 +24942: 917 2 938 9 9 3 4 766 7 +45408317: 82 66 264 8 318 +955693: 41 3 911 6 93 +1763: 11 7 8 32 5 2 +7137940: 7 8 86 68 6 46 50 123 4 +375924: 644 6 5 97 631 +51789: 970 83 5 409 9 1 724 +4633540: 927 4 891 1 336 8 3 5 5 +3827074: 2 4 7 5 3 3 9 6 234 8 53 3 +174783: 8 76 5 59 7 525 798 +18220965653: 3 5 796 308 2 6 6 929 +450081: 923 64 456 1 8 +1580629050: 6 907 7 60 4 7 8 975 7 6 +53908033: 71 857 9 97 8 90 883 +200570582525: 8 532 2 2 6 6 770 3 34 8 +2049329780118: 75 90 11 9 2 667 3 10 9 +335240782: 85 493 8 78 5 +515973: 2 7 3 30 63 +491045376: 520 8 93 5 378 +52900144900: 730 2 89 93 37 22 +411113430: 485 53 6 4 9 1 5 909 7 +428079459263: 850 1 6 5 7 945 8 9 3 6 3 +10267334400: 2 8 1 1 29 879 4 6 911 8 +1148385886: 4 2 5 3 9 8 8 49 4 3 91 8 +5042966021: 6 59 634 1 4 8 955 6 2 9 +153826991: 64 742 8 3 99 +84651: 1 84 54 6 5 1 +38009515: 36 7 791 6 328 743 6 +10646: 5 20 4 361 98 82 +58142385: 3 6 4 8 6 4 1 4 1 8 7 63 +11447010: 899 6 590 85 82 32 90 +148080024328: 16 411 9 662 417 1 6 +415528025: 1 29 2 8 3 7 7 117 7 178 +940546890: 3 62 7 237 68 183 31 3 +9075990043624: 8 9 28 76 525 41 2 626 +424464: 424 459 5 +8532951: 73 18 762 29 51 +9591544: 83 491 557 30 4 +34543862: 6 864 32 5 1 9 1 537 6 2 +335: 23 11 82 +30000: 5 561 53 +228530406544: 5 2 952 2 1 4 60 65 4 7 +117821: 34 38 9 9 4 730 +294451: 985 78 277 +67315140: 54 2 1 4 6 963 188 4 2 +767382521: 1 5 3 186 1 5 385 6 4 1 8 +72: 5 1 2 9 +4199365273188: 5 307 59 92 758 86 +36909183: 9 205 3 5 3 6 91 6 6 3 7 3 +4228426: 86 9 2 3 79 44 3 351 6 +3101601: 5 1 31 88 1 5 6 594 5 2 +14125920447: 5 92 1 8 3 3 397 7 771 +74256718132: 9 9 44 403 5 8 939 423 +14732109: 8 501 4 408 9 3 42 +881310249: 979 9 2 10 251 1 +126469: 9 45 4 715 98 471 +674696887: 2 4 842 4 55 7 88 26 5 2 +1665232268: 1 6 65 2 3 138 8 6 802 +2499735: 51 574 42 56 5 2 95 +134637242: 138 8 97 503 739 +18438: 15 82 960 391 53 7 +121068: 158 1 3 76 +139306754996: 5 4 62 6 25 283 4 9 1 9 6 +12209400: 8 2 3 9 48 918 95 2 +6913282747: 864 5 7 1 5 8 52 9 6 4 6 7 +18079451: 451 8 9 8 9 4 316 7 7 +358746938735: 7 751 8 51 6 29 6 8 2 6 2 +354669920028: 510 3 31 715 84 972 +38034: 607 48 58 1 44 +349019647: 2 2 974 479 2 8 64 32 +15031: 6 74 619 5 5 21 8 64 70 +31157828: 519 2 587 4 68 3 +121029120588: 29 1 4 824 4 85 5 7 8 9 9 +5203105: 518 2 30 65 38 +1787278: 102 584 5 6 235 +1818: 51 327 53 2 956 +23589640: 24 54 2 91 9 5 5 5 38 2 +11185866008155: 3 54 5 984 659 3 81 5 4 +5159414: 12 8 8 1 258 37 26 +943: 27 4 6 8 5 26 +1507815: 218 56 55 3 68 10 5 +781435: 2 6 3 1 436 +404002479853: 4 8 5 6 6 9 921 8 6 1 1 74 +117808: 7 3 1 90 119 +13344: 76 61 1 1 96 +29321: 291 1 40 69 9 +8616607: 2 78 583 60 86 524 +7794317578: 9 2 3 9 9 5 8 43 4 6 35 +2845227: 2 2 845 809 78 22 9 90 +415532023: 9 50 35 9 3 41 7 8 75 1 +24380364: 405 3 3 7 394 6 +5561933: 2 64 71 612 77 +43868704: 69 4 3 3 27 538 3 4 88 8 +2030282568: 6 2 7 5 9 43 5 7 7 680 24 +27749412203: 360 5 76 9 408 3 1 201 +27842: 64 7 5 60 662 +767760: 457 20 4 7 3 +58361: 88 829 4 500 7 2 9 +817389: 28 193 15 1 2 36 95 9 +696008: 26 73 83 239 2 5 8 +1586875: 9 90 30 110 65 225 +22312441922: 8 3 4 60 2 488 3 75 5 45 +153426394832: 27 4 311 1 4 7 2 4 4 7 3 2 +205905: 25 9 795 +55771301: 94 593 6 23 301 +76140038424: 47 2 300 5 9 62 5 6 92 4 +19026558: 2 27 9 9 639 2 3 4 5 4 12 +10591093: 7 3 6 5 5 1 82 6 7 4 65 4 +34476157: 8 38 67 38 86 156 +236957826051: 383 42 690 3 618 +41953947120: 6 962 46 6 57 8 95 +91726: 9 364 4 7 +103501474: 5 906 6 136 28 25 8 +2306986833: 233 33 95 610 3 +5183417876687: 4 89 106 178 766 85 +1613979: 1 160 3 9 80 +6211199231: 97 252 8 63 21 192 +1075782: 2 8 30 1 78 20 452 22 +97694735: 3 2 370 47 96 72 5 7 7 5 +137890590151: 1 3 9 7 67 7 6 489 6 80 9 +2910853: 3 2 292 60 5 178 9 10 9 +231046: 19 16 660 5 43 +3745: 89 2 5 4 2 5 +1244: 7 438 68 9 6 223 493 +1590: 55 908 46 581 1 +9887612034: 318 619 910 5 1 203 4 +648753846: 700 57 89 856 6 +69616: 1 69 6 41 102 4 7 304 +726504624: 72 6 504 607 14 +7366176: 9 9 1 7 938 7 8 8 43 7 5 +961848: 957 9 39 51 +1207774165: 6 6 3 93 5 3 83 7 416 1 4 +2179548541632: 21 7 426 173 56 264 +2520: 21 19 3 21 1 +1360262: 90 7 2 182 80 48 7 90 +1927043167: 29 662 72 43 167 +10689713431: 9 6 4 83 6 57 4 83 923 7 +946187: 1 38 24 10 185 +8362219: 96 26 19 867 4 +264: 13 2 4 +2784905: 5 8 5 44 388 552 905 +78379479: 38 5 9 3 2 456 7 6 2 8 79 +76: 4 6 3 60 5 +10715175424869: 855 4 225 17 66 84 71 +1509802788: 2 7 6 4 9 64 70 7 7 83 4 +132789652: 9 154 89 44 9 5 2 +17956425: 46 399 387 5 8 +660210: 4 2 1 3 22 22 631 961 +192932438388: 304 366 382 3 578 +239253759: 4 8 136 13 4 5 8 757 +732994: 739 16 97 64 7 +26087: 4 62 72 814 401 +160480426: 89 15 579 18 1 +379310: 35 31 30 4 34 74 +207366390: 5 898 893 46 268 385 +15765: 1 7 563 4 +2266789870: 4 341 73 557 997 9 3 6 +96665484: 2 964 43 13 9 484 +365768: 79 3 7 121 768 +142963608282: 2 6 9 5 7 8 22 380 8 2 83 +2498: 2 850 2 729 37 30 +11935499: 3 6 323 852 5 4 54 43 +71923: 222 576 3 9 77 +3431484: 240 3 68 21 +100190754049: 555 31 52 42 41 992 +5751501: 5 7 51 223 275 +122835227404: 89 1 373 37 63 27 404 +4837305: 432 8 95 3 454 5 9 829 +3649109600: 4 7 2 21 9 3 365 20 152 +655120053: 27 478 2 84 5 129 2 +3576368741749: 946 7 8 1 6 3 9 4 175 1 1 +2893325: 78 22 2 42 177 40 5 +1924937835: 20 3 2 5 4 307 9 5 66 5 4 +643751: 650 99 24 7 4 +45: 3 3 26 9 3 +660: 2 4 87 559 8 +2539: 4 403 892 35 1 +3674: 362 8 46 +1162251792: 62 6 5 7 36 39 474 542 +2368091154: 3 2 8 575 13 858 +66120: 64 4 5 8 10 19 +7486826365: 4 5 4 7 31 205 3 4 3 7 2 7 +386307741: 9 1 70 7 1 63 675 4 7 9 6 +10230561458: 8 9 14 10 69 5 8 9 7 821 +154794180: 85 6 226 79 17 +159148110: 81 246 4 235 93 22 +984556511: 62 9 27 1 97 4 18 978 +23606766469: 389 4 446 5 5 25 3 42 4 +5939892044: 54 700 81 2 970 3 41 +32603669: 649 9 21 5 3 200 2 470 +980: 58 7 512 60 4 +140631198724: 2 5 7 4 92 39 217 8 724 +122630144587: 4 41 1 589 3 28 94 590 +28426054754: 61 237 9 10 699 951 3 +26993694: 9 260 1 8 36 94 +5508: 56 4 83 37 491 +2566794: 47 946 3 1 83 838 +730292037: 9 5 3 89 783 725 5 4 37 +7719: 4 61 95 388 738 +1371461493: 150 71 91 4 79 2 9 +305217: 8 54 1 66 26 91 3 +33935249: 5 75 1 9 2 6 95 3 459 1 4 +16749: 8 7 937 712 98 +151413850: 1 6 650 7 3 13 4 745 5 1 +8008143: 773 5 3 7 5 69 +121022047: 3 2 6 3 3 702 4 3 4 3 60 6 +3488486358: 329 31 654 1 523 +184688494: 1 1 3 1 6 89 2 127 4 2 9 5 +1711196664021: 63 980 41 26 328 5 22 +6581064: 76 10 5 24 86 +137584: 5 10 98 4 7 384 +3890756: 1 29 363 1 99 57 +24153773792: 8 69 616 19 752 2 8 3 6 +16858296: 6 738 83 39 7 +12071831817: 9 5 9 2 5 210 5 7 5 384 7 +1675: 96 335 312 8 2 173 +713182: 701 5 7 18 2 +1462: 2 2 7 1 30 6 7 9 2 8 2 993 +4012: 434 9 66 6 1 5 1 3 8 4 5 7 +2509636115739: 883 3 449 211 573 8 +441509: 734 2 9 282 251 +1587801154: 494 29 6 3 801 1 52 1 +423094: 6 389 3 89 27 31 251 4 +1757133170: 872 31 764 54 65 +247757499: 147 3 8 3 4 4 9 88 42 1 1 +1727313: 65 11 28 5 2 809 98 +70450601: 99 3 4 89 20 372 5 55 2 +4541108057: 805 161 564 1 8 +24042847: 9 5 9 3 243 4 7 9 2 9 83 6 +2108110977: 398 1 23 93 1 999 23 +5610241: 6 935 2 39 +72098: 1 60 19 9 99 +1197518856112: 9 9 8 84 8 3 76 6 10 1 4 +158774: 7 3 97 37 3 711 62 +11060285775: 8 1 4 836 3 7 10 7 7 25 3 +8140: 27 96 1 3 3 2 95 7 3 727 +10121438: 1 436 9 92 70 +860403: 710 4 3 6 302 5 +927083: 542 74 7 5 43 +16882215034: 57 894 9 5 5 9 1 4 9 6 3 1 +63578: 7 2 1 563 77 +4088249760043: 32 12 234 760 70 20 2 +31374736: 6 5 364 6 2 8 1 +4399214: 936 47 13 +23925060150: 53 16 68 60 2 75 +2543: 6 547 3 5 871 8 +122579998: 3 78 11 7 748 +291594: 444 470 57 97 3 +2409360: 343 3 3 3 9 824 7 4 5 +1238038362: 5 5 509 92 5 36 9 7 97 +525001557: 8 4 1 7 7 140 3 5 1 434 3 +390649328: 477 8 1 90 44 5 328 +17363355: 77 26 6 289 3 7 806 +19956: 97 24 2 20 486 +91153855713: 2 3 1 3 6 6 7 7 989 7 34 3 +5739997: 951 603 4 418 59 65 4 +626980232: 6 202 67 80 18 5 2 +4747733: 47 321 8 147 95 38 +107928: 5 9 3 170 2 6 4 61 508 4 +23558102: 7 2 16 4 7 5 6 6 5 9 1 99 +3185485154: 88 48 4 6 6 1 2 593 6 55 +23136: 238 3 96 1 +638: 1 4 6 487 5 +1708208892: 2 9 45 187 58 43 1 2 +14968528167: 8 579 51 5 28 167 +9945460932: 6 9 5 6 8 5 916 360 4 33 +5557436: 4 1 3 63 44 7 73 1 2 1 6 9 +862: 674 190 1 +250758036025: 3 330 120 753 27 +3525594141: 71 8 8 6 1 1 2 8 9 49 44 +7239: 721 2 9 1 +9508: 479 638 2 36 4 421 7 +103: 3 1 1 5 98 +390780: 49 452 4 195 1 +363428: 790 17 41 116 377 +155757666973: 7 2 2 8 8 44 9 6 66 9 7 5 +7060895263377: 38 393 7 47 43 559 7 +691906033: 3 6 48 49 33 6 247 7 8 +34158764: 853 835 4 536 4 +80088635: 23 201 42 96 2 1 3 5 +13013: 18 7 77 3 332 +50774459: 837 8 35 80 5 2 91 6 2 +327169: 390 7 824 33 8 +376192: 43 970 80 9 79 3 +730012804: 78 709 2 165 8 1 +4787861: 477 823 956 7 1 +2115126258: 787 5 79 756 9 789 9 +10684275841: 9 98 3 1 4 79 6 7 48 40 9 +8744258566: 152 1 94 34 6 82 3 4 1 3 +57560529: 5 49 985 234 40 +91086832317: 3 7 91 8 68 318 4 6 5 4 1 +10313078819: 515 650 2 7 875 6 6 +134021197048: 40 67 423 94 5 45 +3004143: 6 9 8 43 5 269 3 +29492: 6 649 28 696 4 +2597274: 6 4 395 9 9 626 +68091255: 6 714 82 12 5 5 3 9 86 5 +2845: 7 4 44 1 +104652062010: 95 153 72 620 10 +1170739907: 282 106 415 2 5 +1267124: 2 239 86 545 +73548167869: 5 8 41 3 762 2 7 742 4 8 +97610: 536 45 168 +30385962006: 5 45 2 157 5 4 6 9 5 5 5 6 +34136389: 1 453 7 836 9 +2859663: 6 641 303 7 83 4 4 9 3 +831006074: 220 4 26 58 65 54 +5595: 3 78 66 3 246 +19003371840: 39 10 44 2 9 5 895 192 +1551347724: 2 5 950 622 9 3 3 1 1 3 6 +13541596: 728 186 7 93 2 +649502: 76 4 3 468 4 6 24 9 2 1 +19761: 9 12 941 +795078: 107 4 894 2 9 6 9 6 2 6 +837304819: 6 834 6 4 83 4 5 3 4 3 4 +5986344: 2 36 8 25 8 2 9 7 6 8 78 +88505841: 436 3 5 9 7 2 9 816 8 41 +24532: 82 32 8 94 9 +467483: 9 13 512 25 2 +6636537605: 3 53 1 8 1 56 5 40 4 33 5 +8150: 56 25 53 +689417616: 2 334 21 41 7 616 +639347: 63 90 3 38 9 +3941: 16 7 16 4 3 +55039: 417 64 8 7 54 39 +46002735: 89 813 51 718 17 +456590: 43 6 1 34 47 37 587 7 8 +1991724104: 18 3 2 1 4 1 136 4 1 10 4 +59472469157: 3 33 12 6 469 157 +714290736: 868 1 991 1 8 9 9 7 7 8 6 +3612781652: 2 7 3 3 73 274 427 410 +15855368368: 3 321 62 77 914 368 +1785304: 1 3 4 9 7 3 9 339 56 6 3 8 +248248: 1 409 22 33 8 +85008: 73 2 408 8 22 +275270328357: 9 6 8 9 9 2 6 930 54 6 34 +5663910: 79 34 7 500 671 +11127: 79 967 3 4 630 +179132250: 9 5 3 3 69 909 2 7 8 962 +4158095: 7 9 35 58 93 8 62 499 +3554470140: 6 5 2 73 324 99 4 3 23 +24449671: 8 7 5 8 83 29 4 2 1 4 70 1 +13718997648: 507 762 349 27 650 +1149: 3 51 11 406 149 +364809367069: 4 2 5 95 4 3 9 4 117 7 6 7 +78161431493: 76 2 161 35 3 2 49 495 +149614581: 149 60 78 1 66 84 +147777: 829 5 602 20 31 +767044338: 451 3 9 345 9 632 6 79 +36147907: 3 6 14 76 72 238 +3552: 8 8 5 1 32 960 1 +127596066: 3 7 20 343 66 +525466393: 3 93 4 82 45 8 6 66 394 +67036412837: 6 6 9 321 543 161 645 +49566812: 486 9 620 47 6 5 49 1 +36941: 2 4 614 8 92 +232740: 7 13 69 7 2 4 56 8 4 6 36 +103981615845: 259 984 9 8 51 6 38 6 1 +192070: 305 15 2 22 3 1 3 +668719800: 41 7 906 13 3 2 611 5 8 +93386: 2 25 79 881 +4979436: 65 5 9 415 714 +1514021: 16 43 1 1 2 858 365 +6538594: 90 8 9 2 7 4 9 54 6 9 11 4 +23056640: 9 70 2 74 493 5 8 1 +1530672212: 1 78 4 2 3 6 663 9 1 4 7 2 +4062698: 577 89 61 90 3 8 +28841858187: 331 51 87 48 8 18 7 +267849863: 666 3 62 464 4 5 +50616209: 7 1 6 666 209 +51813: 5 17 6 9 44 +43065: 69 12 6 96 74 +1265168131485: 8 6 8 4 41 9 95 5 8 8 9 9 +277830795: 1 371 7 735 795 +670242195: 1 69 551 81 95 +351738: 878 88 6 41 4 1 +60511327: 9 160 6 4 5 6 7 25 876 3 +8723027848: 3 49 34 74 62 481 8 +376702259433: 76 970 413 109 429 8 +981338733: 3 845 75 9 387 +332372089: 217 4 14 4 93 7 65 6 7 7 +13062184: 32 55 7 55 35 4 28 5 85 +555428252: 8 226 8 48 5 7 2 4 7 8 1 9 +153435: 6 11 35 84 778 387 3 +8052295745: 67 6 44 705 48 8 63 +9637546: 23 1 419 470 73 +235413707139: 8 7 89 17 2 326 64 71 +152664989: 9 2 6 861 5 54 2 2 67 8 9 +10599157: 47 425 401 7 520 +321048168: 437 4 8 91 168 +6133466570: 613 338 4 82 570 +364395: 2 670 5 3 4 4 71 9 9 651 +96144271: 93 41 273 426 6 3 +296100266: 7 416 700 262 7 +12: 3 4 5 +316640576: 765 5 3 80 3 8 10 69 64 +3742903512: 440 341 55 4 85 +2424885: 999 485 97 365 5 +1109686976: 3 564 542 680 6 9 73 +130649102: 87 2 180 48 2 813 2 +351996258059: 1 841 90 8 12 3 31 5 56 +19712180: 69 7 5 3 2 42 952 6 1 61 +161820433: 174 6 500 62 85 5 6 +1751: 893 698 6 11 7 136 +865218480617: 7 3 564 5 4 7 840 3 1 5 4 +29024: 56 2 173 5 24 +137761920: 77 281 755 384 +234: 18 2 6 9 +85892: 8 749 98 99 249 5 39 +6668277571: 6 9 7 140 8 20 139 986 +58381: 138 21 556 4 872 +39749790: 2 659 9 5 2 6 5 2 8 331 3 +16910718: 54 86 5 73 726 +196244: 2 301 436 924 44 +680: 3 1 76 7 46 3 5 +24098: 21 3 8 5 651 9 +72406081: 76 1 987 9 964 4 2 7 +401310: 9 4 69 824 4 441 +482255395: 9 533 25 55 395 +336753: 86 5 76 995 3 +2009631: 2 7 488 4 70 6 1 50 878 +39840: 7 32 108 6 20 +5677304803: 3 8 989 803 48 8 759 7 +109641032174: 3 61 289 561 76 40 14 +509254455841: 4 26 69 895 172 461 +30807424: 1 489 63 42 4 +1305895444: 65 557 83 24 6 +36122860: 7 665 97 80 60 +432561944: 465 50 6 465 1 6 5 8 8 +1598755: 13 2 1 1 6 8 5 3 6 7 295 5 +214270585186: 5 2 479 31 90 3 8 497 +820817: 5 250 3 227 94 11 9 2 +87935: 6 8 8 81 5 34 384 5 4 8 1 +3181124: 4 2 356 6 5 79 45 +57558: 9 306 260 55 1 +469698: 3 376 14 76 698 +427158: 348 601 75 18 6 +259325: 47 42 9 54 99 8 32 3 +1854090496: 3 7 6 2 7 70 27 3 1 48 1 6 +951: 8 7 21 93 109 4 +805719131: 6 7 8 2 6 3 102 7 23 9 7 7 +3719908556832: 499 91 4 1 2 4 640 8 8 4 +144066: 29 108 3 559 39 +258758334: 2 586 1 58 1 334 +12025: 665 7 2 662 9 +87559383: 9 179 7 2 32 7 6 90 3 +288550536146: 5 476 74 4 2 606 145 +275093262: 4 430 760 7 834 860 4 +6227179152: 5 496 7 872 73 17 +254426: 31 350 1 453 8 +28668: 6 3 3 6 246 317 4 5 3 4 +204246: 7 8 1 34 2 460 5 3 7 6 1 +966451: 533 5 8 36 933 5 43 3 +1000614359: 1 8 794 8 4 2 908 7 3 +54277578: 180 4 5 252 6 3 +960344059020: 8 5 1 745 7 4 1 47 5 4 9 8 +1794254145263: 84 471 547 987 84 +61238: 3 50 359 7 96 38 +262072: 1 76 9 4 7 34 238 +163767141: 35 56 9 1 9 4 178 1 8 1 +4278695529: 62 69 695 526 3 1 +657492404523: 491 13 72 355 65 2 62 +12144984: 121 3 5 9 986 +2877557499: 57 484 9 129 531 +588122: 5 6 3 48 65 +6876603: 176 5 719 1 21 43 +1275198662: 2 83 751 6 662 +12739432716: 53 290 76 543 6 5 9 5 9 +412298231633: 9 34 9 4 5 3 3 25 5 63 1 7 +277472967211: 41 445 9 5 4 76 4 7 209 +20790: 45 7 15 9 7 +48961044215: 8 5 8 80 4 7 6 9 1 26 84 5 +270911: 2 83 25 215 518 +1640: 795 3 8 7 6 805 2 3 1 7 3 +111034: 33 35 5 37 7 41 6 +72864: 61 91 55 4 11 8 +5341448448: 1 88 5 8 7 4 9 3 7 6 4 392 +849: 801 3 1 45 +1677855061: 414 49 9 919 1 +1954728: 839 9 384 93 52 6 60 6 +3579938: 8 838 89 6 2 +54951093321: 5 495 109 332 3 +779284807: 9 463 784 5 234 5 2 65 +295479: 2 312 5 47 4 4 297 6 +86113396: 5 877 30 976 5 908 +417248766: 6 6 84 542 8 26 14 61 6 +7928: 7 925 6 +2561662: 88 3 24 3 76 39 90 676 +17824: 126 3 9 947 45 62 4 +474147901: 10 53 1 4 2 5 30 90 5 9 +332807: 61 5 135 318 6 6 599 +248428: 9 46 15 7 4 +5058558453: 35 239 55 261 2 +203986: 44 83 9 124 161 +5566: 602 8 1 9 8 5 29 4 7 3 6 5 +71442: 904 36 38 2 +52410: 5 2 90 6 3 9 +9126793: 39 2 520 67 93 +285020268: 315 28 3 59 358 39 diff --git a/day7/main.go b/day7/main.go new file mode 100644 index 0000000..6c210d4 --- /dev/null +++ b/day7/main.go @@ -0,0 +1,118 @@ +package main + +import ( + "fmt" + "strconv" + "strings" + "sync" + + "git.mstar.dev/mstar/aoc24/util" + "git.mstar.dev/mstar/goutils/other" + "git.mstar.dev/mstar/goutils/sliceutils" +) + +type Group struct { + Target uint64 + Elements []uint64 +} + +func parseLine(line string) (group Group) { + parts := strings.Split(line, ": ") + if len(parts) != 2 { + panic("Invalid line parts count") + } + group.Target = other.Must(strconv.ParseUint(parts[0], 10, 64)) + group.Elements = []uint64{} + for _, elem := range strings.Split(parts[1], " ") { + if len(elem) == 0 { + continue + } + group.Elements = append(group.Elements, other.Must(strconv.ParseUint(elem, 10, 64))) + } + return +} + +func checkGroup1(group *Group) uint64 { + // fmt.Printf("Checking group %v\n", group) + if len(group.Elements) == 2 { + if group.Elements[0]*group.Elements[1] == group.Target || + group.Elements[0]+group.Elements[1] == group.Target { + // fmt.Printf("Group %v suceeded\n", group) + return 1 + } + return 0 + } + elemsMult := []uint64{group.Elements[0] * group.Elements[1]} + elemsMult = append(elemsMult, group.Elements[2:]...) + elemsAdd := []uint64{group.Elements[0] + group.Elements[1]} + elemsAdd = append(elemsAdd, group.Elements[2:]...) + return checkGroup1(&Group{group.Target, elemsAdd}) + + checkGroup1(&Group{group.Target, elemsMult}) +} + +func concatNrs(a, b uint64) uint64 { + return other.Must(strconv.ParseUint(fmt.Sprintf("%d%d", a, b), 10, 64)) +} + +func checkGroup2(group *Group) uint64 { + // fmt.Printf("Checking group %v\n", group) + if len(group.Elements) == 2 { + if group.Elements[0]*group.Elements[1] == group.Target || + group.Elements[0]+group.Elements[1] == group.Target || + concatNrs(group.Elements[0], group.Elements[1]) == group.Target { + // fmt.Printf("Group %v suceeded\n", group) + return 1 + } + return 0 + } + elemsMult := []uint64{group.Elements[0] * group.Elements[1]} + elemsMult = append(elemsMult, group.Elements[2:]...) + elemsAdd := []uint64{group.Elements[0] + group.Elements[1]} + elemsAdd = append(elemsAdd, group.Elements[2:]...) + elemsConc := []uint64{concatNrs(group.Elements[0], group.Elements[1])} + elemsConc = append(elemsConc, group.Elements[2:]...) + return checkGroup2(&Group{group.Target, elemsAdd}) + + checkGroup2(&Group{group.Target, elemsMult}) + checkGroup2(&Group{group.Target, elemsConc}) +} + +func main() { + inputLines := util.FileContentToNonEmptyLines(util.LoadFileFromArgs()) + groups := sliceutils.Map(inputLines, func(t string) Group { return parseLine(t) }) + // fmt.Printf("All groups: %v\n", groups) + + var acc1 uint64 = 0 + addChan1 := make(chan uint64, 1) + go func() { + for val := range addChan1 { + // fmt.Printf("Adding %d to acc\n", val) + acc1 += val + } + }() + wg1 := sync.WaitGroup{} + for _, group := range groups { + if checkGroup1(&group) != 0 { + acc1 += group.Target + // fmt.Printf("Group with target %d suceeded\n", group.Target) + } + // wg1.Add(1) + // go func(group Group) { + // if checkGroup1(&group) != 0 { + // fmt.Printf("Group with target %d suceeded\n", group.Target) + // addChan1 <- group.Target + // } + // wg1.Done() + // }(group) + } + + wg1.Wait() + close(addChan1) + fmt.Printf("Task 1: %d\n", acc1) + + var acc2 uint64 = 0 + for _, group := range groups { + if checkGroup2(&group) != 0 { + acc2 += group.Target + } + } + fmt.Printf("Task 2: %d\n", acc2) +} diff --git a/day7/sample b/day7/sample new file mode 100644 index 0000000..fc6e099 --- /dev/null +++ b/day7/sample @@ -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