Skip to content

Instantly share code, notes, and snippets.

@kiritocode1
Last active December 7, 2024 10:05
Show Gist options
  • Save kiritocode1/bddc6fe3de24ea0b31277a7a12efc0be to your computer and use it in GitHub Desktop.
Save kiritocode1/bddc6fe3de24ea0b31277a7a12efc0be to your computer and use it in GitHub Desktop.
// --- Day 7: Bridge Repair ---
// The Historians take you to a familiar rope bridge over a river in the middle of a jungle. The Chief isn't on this side of the bridge, though; maybe he's on the other side?
// When you go to cross the bridge, you notice a group of engineers trying to repair it. (Apparently, it breaks pretty frequently.) You won't be able to cross until it's fixed.
// You ask how long it'll take; the engineers tell you that it only needs final calibrations, but some young elephants were playing nearby and stole all the operators from their calibration equations! They could finish the calibrations if only someone could determine which test values could possibly be produced by placing any combination of operators into their calibration equations (your puzzle input).
// For example:
// 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
// Each line represents a single equation. The test value appears before the colon on each line; it is your job to determine whether the remaining numbers can be combined with operators to produce the test value.
// Operators are always evaluated left-to-right, not according to precedence rules. Furthermore, numbers in the equations cannot be rearranged. Glancing into the jungle, you can see elephants holding two different types of operators: add (+) and multiply (*).
// Only three of the above equations can be made true by inserting operators:
// 190: 10 19 has only one position that accepts an operator: between 10 and 19. Choosing + would give 29, but choosing * would give the test value (10 * 19 = 190).
// 3267: 81 40 27 has two positions for operators. Of the four possible configurations of the operators, two cause the right side to match the test value: 81 + 40 * 27 and 81 * 40 + 27 both equal 3267 (when evaluated left-to-right)!
// 292: 11 6 16 20 can be solved in exactly one way: 11 + 6 * 16 + 20.
// The engineers just need the total calibration result, which is the sum of the test values from just the equations that could possibly be true. In the above example, the sum of the test values for the three equations listed above is 3749.
// Determine which equations could possibly be true. What is their total calibration result?
// Your puzzle answer was 42283209483350.
// --- Part Two ---
// The engineers seem concerned; the total calibration result you gave them is nowhere close to being within safety tolerances. Just then, you spot your mistake: some well-hidden elephants are holding a third type of operator.
// The concatenation operator (||) combines the digits from its left and right inputs into a single number. For example, 12 || 345 would become 12345. All operators are still evaluated left-to-right.
// Now, apart from the three equations that could be made true using only addition and multiplication, the above example has three more equations that can be made true by inserting operators:
// 156: 15 6 can be made true through a single concatenation: 15 || 6 = 156.
// 7290: 6 8 6 15 can be made true using 6 * 8 || 6 * 15.
// 192: 17 8 14 can be made true using 17 || 8 + 14.
// Adding up all six test values (the three that could be made before using only + and * plus the new three that can now be made by also using ||) produces the new total calibration result of 11387.
// Using your new knowledge of elephant hiding spots, determine which equations could possibly be true. What is their total calibration result?
// Your puzzle answer was 1026766857276279.
const raw = `921381619: 151 17 53 4 115 9
2468269904976: 31 15 9 6 33 860 9 464
382683795: 7 3 369 9 2 4 6 629 3 65
493358476147: 8 2 219 7 41 269 60 7
35389305: 95 9 7 9 657
381705: 8 6 7 4 5 78 9 7 8 500 4 9
5041638126: 5 837 97 9 81 762
1320: 4 4 155 9 6 7 6 8 4 1 39 1
1863750: 8 214 62 5 3 15 70
2178131: 44 495 63 8 60
88391: 88 319 3 61 8
1437492: 242 594 5 4 3
39606: 20 6 55 1 6
655407: 5 15 64 75 927 480
398215: 4 549 6 4 9 3 9 2 374 73
50977548: 8 70 5 971 7 1 6
55931683954: 52 1 5 13 5 4 8 165 9 5 4
6067: 944 67 6 1
9234259: 7 171 9 6 1 6 6 8 1 2 15 4
110173778: 3 7 8 8 6 1 5 889 3 51 5 8
43339: 5 831 8 358 6 4 1 6 3 2 1
159939322: 661 57 849 6 5 54 373
2027: 7 85 3 1 7 7 49 5 6 3 25
669: 7 2 634 20 6
17262: 88 98 2 5 9
1149387: 43 286 59 1 1 93
68607: 52 6 9 818 1 86 4 7 2 7
1179: 230 935 14
2622280313: 6 71 6 28 85 77 569
68269: 6 3 2 6 58 6 43 478 8 6 1
1919: 3 382 10 758 5
208840153: 556 59 693 9 490 193
675262124708: 7 7 348 7 1 7 6 740 5 6 8
2410: 5 597 4 2
3322862: 7 449 179 1 862
101172088153: 9 33 78 720 88 152 1
3652794: 480 6 4 663 2 22 4 5 6 3
6436320: 621 6 72 148 3 20
215: 20 96 10 40 49
427764: 1 6 7 6 8 34 3 640 516
440365: 66 66 47 35 30
47966: 5 8 4 4 88 8 404 9 7 5 8 2
62724: 95 532 23
57528121: 1 4 91 787 6 38 769
91700: 7 4 2 1 9 7 46 4 2 6 700
37764145026: 7 4 2 297 4 9 36 71 46 6
295134900: 9 38 146 11 782 56 5
37601765: 57 76 868 5
62923502103: 74 4 25 40 531 20 98 5
26823465: 272 9 35 264 4 5 531
2487: 765 3 92 1 99
2529312: 84 24 7 3 12
1637010: 2 978 94 508 78 3
8263374: 55 859 4 9 93 4 4 400
38586944: 60 291 9 8 16 8
280986: 46 181 513 137 6
12001298792: 5 2 2 8 98 4 49 312 5 6 7
2435931840: 25 302 41 31 60 24
124890: 91 2 8 770 2 65 9 7 74
18713952: 6 88 2 17 4 2 55 289 5
45414145: 946 48 79 515 20 5
838940082: 2 2 1 7 810 9 400 8 1 1
42491871: 35 935 894 7 7 36 6 9
67136: 3 3 987 9 653 7 1 6
196808: 8 5 971 25 8 8
300127: 567 9 6 52 295
97634: 9 8 4 706 21 8 7 6 9 1 6 5
13500: 58 59 8 2 54
20597976800: 160 378 57 239 32 25
35516: 789 5 1 9 2
7436: 64 79 52
278202800666: 67 280 827 5 666
1505600: 875 66 8 50 4
1795281840: 50 7 706 36 8 726 90
107565659952671: 5 67 9 747 8 6 667 671
1192: 6 751 26 404 5
8887669132908: 222 4 766 9 132 908
1854258: 1 2 34 1 555
6558840937442: 6 690 68 16 8 6 6 33 8 1
129633369600: 10 144 57 8 75 8 28 94
12481942724: 2 12 9 7 64 1 22 2 6 5 5 9
5118: 6 6 5 72 6
2213209: 59 94 399 4 351
193890819: 754 63 68 698 7 5 344
1865867640: 4 594 140 51 437
1192734: 35 983 681 1 39 1 2 3 6
229262448: 87 61 48 9 4 8
236: 47 21 42 8 2
11438552: 4 5 4 52 8 8 156 3 3 3 5 4
51372: 81 317 2 9 9
14926299: 4 410 41 7 879
92221434: 2 4 11 6 6 58 1 1 13 37
232662095: 88 9 51 8 5 80 9 2 573
88538: 43 110 577 168 7 73 9
67080: 4 1 555 6 20
73985688: 8 4 9 3 142 3 3 2 1 67 6 6
55162: 860 9 7 921 61
353082: 45 77 65 8 2
79876023: 5 2 1 26 8 7 577 1 251 3
5120023506591: 4 3 9 7 35 2 5 9 1 6 589
2745360: 9 97 1 7 1 9 620 36
260208: 3 6 4 4 6 834
1987: 8 177 51 894 857
18653647736: 7 4 9 7 9 7 1 6 9 989 7 8
8404619: 39 19 99 46 21
700756: 5 77 26 8 7
11056673257: 817 565 8 673 257
367502081048: 2 10 18 280 1 542 4 3 8
2155018750: 34 7 1 9 5 2 9 3 9 5 2 25
34340: 387 17 85
3906299374845: 684 7 626 8 52 6 6 603
44709: 5 6 1 5 73 897 7 40 8 9 6
3658360: 3 7 8 783 5 8 74 52 2 7 8
205754: 7 1 3 2 251 5 5 3 94 6 7
12821761638: 8 63 8 530 273 6
36642: 407 9 7 5
630: 12 9 5 6
3275445474: 7 5 3 47 5 7 5 7 53 861 6
527243973: 2 1 9 669 865 1 7 341 3
3480399446: 507 81 9 591 446
3070305: 505 6 2 399 15
1640: 782 8 850
28524251: 5 3 5 7 943 8 5 8 82 3 5
2324815245: 244 5 6 2 50 7 1 5 9 601
6144738: 50 539 9 720 222
3031840: 140 8 3 53 6 12 2 16
1412: 71 4 2 127 999
68108: 78 87 4 9 7 40 73
18386767: 23 6 6 399 40 1 96 8 8 7
4895070: 114 430 6 89 13 7 48 2
1445010267: 140 172 6 20 9 6 267 1
184395935510: 6 7 63 1 779 1 4 35 1 1
581612152: 94 790 1 89 88
12158: 94 80 1 851 189 5 13
17298: 3 5 8 6 890 17 26
12104: 4 2 9 8 89
330012535: 935 9 7 347 8 7 5 35
5926834229: 10 49 268 3 42 31 1
236534: 6 29 62 514 20
407176: 11 70 583 6 58 4 3 56
174485619: 30 727 7 8 19
1447698: 9 93 454 694 4
1623495: 754 6 8 267 36 59 32 8
1029256486: 4 6 28 851 405 486
1141793460: 9 2 542 263 1 89 5
64848615552: 53 8 42 733 9 552
19865815560: 6 612 9 9 3 4 1 7 5 560
6781811909: 2 48 5 9 3 4 1 2 3 2 382 5
180653900: 893 70 85 17 2
15776: 9 4 4 1 1 4 7 49 410 8 8
38043495: 6 6 71 867 381 3 49 5
2164: 1 9 5 48 4
5099570: 40 44 7 74 39 1 7
523358085: 6 3 1 345 57 5 6 7 80 5
313232852: 86 1 9 4 32 852
5572622946: 27 429 5 4 136 884 98
256309: 126 678 6 3 7
55242: 59 3 99 9
67073: 8 662 6 9 4
2855276025: 5 9 83 846 75 7 947
744419: 74 44 11 8
922354: 810 74 35 3 352
42404360: 66 735 919 51 857
1119050: 288 9 5 5 751 60
15605220: 3 517 8 7 73 744 1 49
13431861: 4 3 87 47 9 1 778 76 7
999054043: 3 5 666 540 43
645492272: 74 853 1 4 8 3 12 71 8 4
2760: 2 625 7 3 125
1038279: 456 6 9 3 1 219
853960: 648 9 6 9 143 669 2 8
568861: 4 8 4 38 11 919
7048493: 704 522 9 318 3
618793529: 95 944 2 690 62 13 74
634970423: 56 49 228 493 227
4686974532934: 66 71 974 5 32 937
902066181: 8 175 24 1 6 11 180
322781417072: 8 544 5 2 103 9 4 2 6 8 4
2725561: 636 5 60 841 721
1119196: 3 93 791 8 4
201905628: 502 89 4 8 741 6 28
147190: 56 6 169 95 2
25987767615: 5 7 6 1 50 59 24 23 45
256334049: 2 6 6 7 7 9 35 39 6 5 634
175863701640: 5 797 585 690 857 88
354420: 454 71 12 1 660
55101768626: 9 612 2 11 6 1 60 8 626
242998276296: 5 44 9 94 66 5 37 8
123186: 7 412 3 7 14
219529: 31 3 5 140 432
243736650: 725 4 7 40 455 4 2 25 3
13452: 24 79 4 5 4 7 5 9 65 1 6 3
34505: 90 366 54 601 910
86754: 8 29 35 54 41 6
131263: 362 5 6 2 8 6 9 7 6 39 88
329539098: 738 4 8 5 9 3 4 83 8 5 6 7
54253284673: 311 7 9 3 2 4 4 1 923 2 1
11944208073: 216 459 62 5 89 7 1
620286: 2 2 3 71 26 8 5 6
106164448683: 676 4 586 67 683
2146341: 74 185 96 493 9 81 3
11686: 56 59 2 368
5093059: 448 6 2 701 8 995
7888620849: 91 2 912 84 6 6 8 3 1 7 2
429651624: 903 61 1 13 7 75 2 8 8
67145781078: 4 284 1 7 1 7 361 7 9 62
9282: 2 8 45 64 78
34208: 9 2 297 80 57 5 11 8
60780: 969 3 97 4 4 52 76 1 8 5
1803915: 3 5 3 244 7 3 452 7 3 1 5
78529956: 5 125 839 43 6 6 6 3 6
7218: 3 3 203 34 112
299562674895: 5 44 6 52 7 408 2 7 55
12392: 5 3 1 83 9 606 7 117 8
2934736: 106 173 4 20 2 8
1137542408: 8 1 6 5 6 1 9 227 8 580 8
39122793600000: 930 704 8 925 95 85 1
1426128: 46 344 1 381 88
111827301: 2 6 45 2 5 4 7 8 6 5 130 1
365958739: 407 899 39 26 739
1275415344: 222 41 849 238 24
278389: 195 9 61 48 105 666 1
596362212619: 9 9 6 848 2 8 5 1 3 4 619
524871: 2 262 774 9 88
637055: 67 619 928 6 441
1059: 74 397 36 544 8
8257244360: 72 371 60 6 16 322 8
1616924: 262 1 53 29 4
410: 6 6 258 52 1 88
39792060: 855 37 65 63 660
72142852: 716 1 81 361 85 2
1913107: 371 178 71 64 49
1736233420: 3 552 80 233 419
49640440: 1 26 47 4 75 18 5 79 92
11298830449: 1 66 620 767 5 72 43 6
59784348893: 9 34 8 3 7 2 87 4 893
224952: 757 62 5 1 273
2063516: 555 235 653 9 4
2576: 45 749 12 50 3 8
14312444365: 3 19 718 90 7 9 95 365
76745952: 4 9 4 262 2 2 44 8 540 8
367072: 2 1 709 6 831 27 55 6
232008: 1 305 526 9 5 31 4
121111296: 3 868 634 27 61 992 3
443867455192419: 7 634 674 5 5 19 241 9
54180: 409 23 914 515 5
5497: 2 1 4 4 15 4 1 9 2 928 2 5
23135875: 31 901 8 535 3 2 965
128675053: 84 344 61 7 73 573 81
46818628: 2 4 33 4 8 6 4 281 69 59
3391392583: 829 24 286 596 7
1480860: 8 3 1 5 66 412 1 84 9 2 6
26161296: 8 7 8 3 9 77 8 5 3 49 8 6
2240113336: 1 18 7 7 636 9 93 8 6 1
296310: 8 1 3 23 2 6 6 9 95 51
629061: 17 370 1 5 1
471915894: 6 9 6 3 58 4 4 58 67 5 1 4
155126: 2 51 303 5 596
129260: 7 3 9 11 1 2 51 6 7 8 572
29303: 5 60 437 851 47
8715: 2 59 8 9 1 1 14 7
208942: 2 3 202 941 1
972119272: 55 4 13 5 5 8 2 6 9 98 5 8
68630: 340 390 93 293 447
339819: 6 42 78 9 819
3943205: 1 776 9 3 23 8 76 600 5
122: 5 30 3 8 9
244560: 2 5 29 6 4 5 95 1 2 5
15286250: 2 7 865 7 5 2 7 4 3 7 2 5
3544: 8 6 403 1 26 8
24677285389: 764 6 86 1 53 1 997 9
4173: 3 517 76 564 6 7
32669230: 953 13 13 71 470
5900: 5 8 3 103 25
436992: 908 9 8 39 885 8 2 3
3748350321: 1 5 38 9 5 755 1 7 26 1
1082657: 46 971 65 1 6 57
82821: 27 3 1 8 2 1
209115467: 41 823 5 431 36
1463088: 113 65 263 1 705 4 44
281281702: 32 879 11 5 3 4 68
1749630998: 906 84 242 95 5 4 7 21
4236895: 912 97 79 649 9 6 169
80676324: 280 5 711 604 81
287018808: 249 6 7 3 7 8 9 4 6 9 6 8
6821407440: 8 7 7 3 8 5 25 3 42 108 4
48402984: 7 941 49 521 2
154177: 1 904 765 564 69 100
145805: 4 356 5 81 5
27324167028: 4 9 91 1 455 74 1 5 7 1 5
1382057583275: 9 9 8 987 4 9 8 931 7 5
4251225: 841 47 877 5 5
1293618786: 73 9 48 4 65 1 9 631 7
1509531: 2 64 46 37 57
119: 7 3 32 68 9
56518734636: 875 714 84 923 98
127637: 41 356 879 3 7
57878: 8 6 26 38 60 43
5496493: 3 4 70 1 4 386 792 4 4 2
555307279283: 2 754 5 40 7 5 1 6 8 9 8 3
101954032: 13 769 219 4 924 989
299753: 56 6 3 4 2 8 9 565 6 5 1 6
10895644032: 490 517 8 8 2 31 48 7 8
25515: 1 7 6 402 61 3 1 9 4 123
31863: 772 7 4 882 73
5903109158: 83 6 27 2 5 9 995 7 7 23
491: 5 3 474 9
30327: 94 4 1 12 78 63
585207299016: 27 2 3 557 5 3 5 3 9 54 4
12235179064: 33 6 919 5 613 55 62
6951690: 6 1 8 516 90
67144672: 33 76 880 96 7
1996: 672 4 910 410
3897400: 7 720 74 8 50
133874895: 9 506 64 545 231
5728413652: 572 84 135 26 123
85102760464: 8 5 102 760 457 7
16796069: 4 212 23 22 118 9 54
5995272: 1 73 27 424 3
744523304: 7 565 71 13 304
18318: 49 43 9 9 4 3 39 6 2 8 4 2
737: 631 2 98 3 1 2
21717206169: 2 413 9 206 169
1864368: 29 25 7 1 7 25 698 2 8
52086: 2 69 14 5 3 4 740 9 5 6
60073021: 1 79 891 745 5 2 417 1
594603121: 5 6 2 32 603 12 1
6534366: 69 441 754 61 6 93 1
2222532: 8 608 82 44 4
12515364150: 4 571 4 547 41 50
97888: 50 20 8 52 4 78 2 6 64
10901: 24 1 7 62 51
22620806120271: 139 86 449 75 841 7 3
2245401109: 4 2 660 1 1 9 3 6 2 50 1 8
277: 7 251 8 9 2
14852: 7 4 91 9 2
4146916: 24 1 559 324 290 206
231534211: 231 53 4 14 7 6 5 8 45
1509314: 9 2 1 3 28 3 5 9 645 1 9 5
5490: 6 56 546 2 9
8664: 96 26 293 99 3
36024025857: 3 2 7 8 8 4 4 5 7 758 51 6
4565: 7 50 76 175 58
82491558152: 1 12 46 8 875 8 1 2 7 5 2
270358: 45 6 35 8
3216271: 5 643 108 973 190
30092958: 7 18 51 223 21
17869034: 177 174 581 935 34
3717: 5 2 11 3 5 1 3 2 396 4 7 7
2768294331: 8 6 4 9 63 2 3 2 94 332 2
424113: 8 53 113
19839204: 330 5 46 19 87 6 6 9 8 7
47394565: 94 243 546 5 65
18876: 9 9 4 45 60 1 44
3812492: 23 4 250 107 556
23404: 3 5 342 8 16 4 44
31276875: 1 7 5 85 7 75 561 6 46 3
627038130: 2 7 1 8 8 736 5 27 926 8
46142: 2 757 5 5 2 86 2 7 3 3 2 1
2912793: 7 64 39 68 6 81
6079: 868 7 2
121252507369: 4 2 5 55 5 102 1 5 7 3 7 1
21332264400: 969 98 9 4 52 6 40 3
1536679: 9 5 33 12 679
424346015: 98 917 45 8 5 1 50 4 6 9
203371476: 3 465 576 62 714 76
10028200: 8 2 9 222 65 1 350 76
13533: 2 2 50 249 87
24219: 22 8 2 1 5 89 1 4 7 878 9
3315495139: 7 487 85 67 139
51596: 81 625 83 318 570
89990990: 3 883 4 13 977 990
249854822: 3 10 7 292 6 94 32 7 71
9773661337440: 8 62 1 455 552 148 53
66134166: 9 8 7 90 704 166
14055123: 9 94 554 4 50 3 8 23
2612365509: 1 238 6 9 7 29 2 872 8 5
171134: 611 4 70 1 52 1
2676: 2 6 2 3 2 708 47 34 59 3
3683048470: 96 75 30 375 83 5 43
256973: 53 63 246 9 7 55 87 1
102520: 7 4 65 88
2225933284: 851 9 5 71 7 8 906 5 4
37542604686: 29 6 4 410 4 71 805 9 6
67520: 94 68 5 80 5 424 4 292
327564: 5 6 16 6 4 2 44 1 1 8 3 81
1901: 69 43 77 9 2
1620: 3 24 8 132 893 4 6 2 7
90857794: 9 9 701 1 4 5 9 8 6 1 933
115700268: 6 53 486 389 5
82219400127: 3 2 983 9 4 8 878 6 6 3 9
21136652: 8 24 8 2 46 14 4 568
1427939521: 9 67 32 48 74 1
67108800: 9 6 25 2 88 50
16641: 6 94 48 922 1
26292540384: 5 672 450 29 9 6 496
1001612: 6 755 1 6 55 8 2 54 5 4
2414151168: 158 19 30 58 572 24
2720: 1 4 6 1 2 3 3 808 3 18 4 4
938345: 2 232 5 1 7 2 2 3 15 5 2
99930: 9 1 7 7 4 1 1 2 65 18 1 30
601775660952: 1 87 978 897 8 684
4497464: 7 918 71 5 8
12560094: 9 89 7 28 80 413 1
4129444: 1 64 8 446 57 22
174200: 86 35 64 11 4 5
27057: 1 89 3 51 7
1786: 9 5 178 9 58
54693: 20 39 927
5768720477232: 506 5 132 8 5 6 38 7 2 6
31146600: 2 8 36 2 78 322 851
3947: 468 7 98 8 565
15842712170: 8 28 1 9 4 519 94 7 191
636169: 4 7 3 1 82 8 67 5 1 3 1 4
56: 5 1 6 2 2 8 8
723061: 425 1 1 12 10 17
533263: 609 3 572 8 8
17028: 23 74 8
173600: 9 2 7 9 2 102 4 892 1 7 8
3459956367: 799 866 5 286 367
769029: 714 269 4 15 385 365
122265: 8 30 4 9 27 55
8777213: 5 16 943 4 13
36537408: 184 3 2 3 96 229
119835239049: 712 5 3 66 79 8 269 1 8
490999: 2 648 26 31 29
8607: 4 111 49 52 79
20410230: 2 3 629 3 6 1 5 8 26 46 5
12082408000: 55 45 496 204 80 5 5
66449600: 3 657 39 782 56 425
35525: 988 22 5 5 7 1
16848414: 2 11 27 6 6 8 9 430 7 22
6782776812: 769 35 777 4 252
151673550: 740 7 846 4 2 86 5 6 90
202544: 4 9 45 7 7 17 3 9 8 69 39
2259213: 2 59 2 14 73 669
2796643972: 3 5 3 6 9 655 5 88 5 4 71
1114: 65 54 33 455 507
414708: 25 690 9 8 4 5 36 5 4 6
60829779: 9 6 447 9 5 7 14 5 7 4 2 3
89712: 7 97 4 18 8 89
876: 3 9 73
4931115: 3 89 957 5 1 8 5 7 2 39 7
317: 2 14 3 4 46 131 59 29
54352570: 6 79 4 8 570
420090892: 91 411 8 4 7 39 7 9 340
444999585: 94 789 4 47 6 591 312
8010: 3 3 1 20 4 9 1
356488880: 608 6 63 60 58
1091418: 10 90 93 5 7 476
15: 1 7 7
8823837: 1 2 458 58 9 33
16091: 8 577 715 8 4 6 4 3 9 23
6816: 8 7 33 71 2
766544540: 1 3 2 467 7 10 708 8 9 3
1501932255: 8 53 9 7 5 347 3 5 35 3
4323983: 8 7 497 41 42
20608289166: 83 3 726 2 8 57 75 59 7
441181: 7 2 653 8 94 4 31 7 76
304653: 378 72 7 62 587
710454: 2 9 84 6 54
2213436462: 70 54 477 99 6 9 7 6
98118: 3 53 987 765 8 1 1 6 9
954219672: 82 1 43 5 2 9 283 22 4 3
21095946: 534 837 50 6 385 6 51
5642566761: 56 3 93 32 6 67 61
7228316: 7 36 8 2 3 5 14 8 103 4 1
2210044: 309 5 85 7 8 789 57
423890: 444 8 822 34 7 2 48 50
93519: 3 40 59 458 8 2 71
364041: 93 13 8 64 284 8 229
381903882: 585 881 4 1 741 6 627
29806891120: 37 76 766 760 262
27067872: 4 50 6 4 9 7 876 328
597359623: 25 5 8 7 71 1 626 8 375
226280: 3 1 64 190 1 87 80
8668962: 87 369 4 30 8 9
56506: 92 4 833 47 59
33034306813209: 75 478 203 7 7 88 7 5 9
5454: 6 121 259 5 525 4
2583507: 55 6 7 2 2 4 2 477 4 66 9
8103808659: 730 3 9 9 6 669 4 5 51
1479: 4 20 58 27 60
38403454: 426 7 9 445 9
262947960: 571 625 8 2 46
10686030: 17 516 8 61 782
176430814: 502 8 9 2 2 1 5 3 809 7 7
5859: 5 5 1 2 9 801
742331: 6 80 1 62 331
2688: 8 1 33 6 179 92 9 8 8
87255: 5 989 12 64 5 9 9 5 6 9
3484800: 1 1 659 1 2 3 2 6 439 9 9
69072003: 592 19 934 10 3 9 3 9 7
22651682: 152 6 12 423 9 35 32
1637105035: 321 5 3 34 394 109 4 4
126733857845: 2 3 8 17 6 292 5 9 6 7 35
15673587443: 15 3 8 4 4 5 9 8 2 30 4 2
8280845: 8 5 5 7 2 5 5 1 160 1 9 5
543205950: 1 1 83 813 7 575
913793237: 382 56 8 31 427
186: 2 33 1 27 3
6193984: 18 3 769 2 49 6 42 8
792960: 55 4 7 8 30 8
573332: 572 6 7 29 3
2770: 682 1 4 42
33547801: 44 1 85 748 1
1158: 827 81 99 3 148
6568267: 4 9 2 9 8 2 4 2 26 5 4 1
490159312: 9 477 12 403 9 31 2
277338: 6 45 5 2 2 2 4 51 7 47 9
13693: 2 9 6 5 486 767 2 7 1 6
3236553: 1 2 923 116 584 1 7 4 3
4247408169: 257 4 828 499 9
811681: 4 152 89 15 1
798692501: 707 6 8 1 8 40 2 5 7 55 1
9646: 4 9 5 38 4 7 6 8 67 240 7
126767: 42 3 7 941 626 967 21
22174513201: 615 1 9 5 87 18 4 5 1
2030602840: 7 4 5 5 7 4 499 291 8 23
59705: 997 59 5 216 661
158861736: 7 4 8 5 92 2 23 6 4 1 391
388211068124: 1 8 4 972 76 4 70 44 80
3471981: 8 82 123 32 429
2358948: 84 5 3 6 9 3 70 7 5 279 3
29130: 1 1 362 609 6 5
3581662081: 26 717 12 49 4 480
242349: 1 41 23 879 8 2 751 3
24494406076: 6 669 72 18 217 28
307: 12 8 34 8 1 4 100 1 64
110577: 86 791 72 4 1 8 9 1 29
5601800: 85 1 2 8 9 5 482 566 5 8
346475: 779 6 7 74 74 7
6550: 178 162 19 88 2
7620480200: 840 1 70 9 4 3 5 6 1 5 5 8
22327095: 6 30 719 6 6 7 1 2 6 821
290392426890: 6 2 1 37 102 9 7 916 90
3730: 9 59 56 7 6 6 49 81
1820729: 8 20 1 22 517 882 7
9773663881: 315 2 794 8 31 1
51709: 51 168 541
2909966984: 3 84 914 9 6 82 126 8
5650: 384 2 2 25 5 320 1 2 7 5
67037: 166 403 61 78
1097: 83 15 4 95 610
138311712: 74 80 9 24 77 54
9617790661: 546 65 271 576 1 84
23606: 58 9 6 5 58
592711: 23 233 434 859 1
367570476000: 7 87 40 3 5 265 2 2 949
930322983: 5 39 3 70 6 3 4 8 5 8 6 6
10598202: 2 3 9 429 5 8 9 486
168268: 822 445 90 4 31
102663: 235 4 7 674 763 1 33
4155840: 9 521 76 50 4 6 4 520 3
3814732: 95 36 81 2 4
211072962: 1 43 9 6 6 1 648 7 58 3
203168: 902 5 4 8 7
115360: 85 21 5 8 7 876 21 5 16
33175346: 165 8 2 1 4 8 4 4 910 6
146864809872: 97 370 716 682 6
474: 27 1 3 393
13660390: 4 55 3 930 23
8634: 522 3 931 3 297 5 841
2036934: 70 23 33 4 69 83 3 75 9
44976: 18 13 60 5 9 24
30108: 4 9 75 6 2 8 10 766 1 4
4710889260: 38 267 77 9 670
265: 233 6 4 1 18 4
8588112: 9 42 8 12 9 8 3 6 6 6 306
9189: 78 984 764 5 59
386270725: 361 48 1 3 46 8 928 5
439867720: 699 540 5 320 71
2695: 176 9 6 54 11
3755136727: 1 596 7 3 6 5 7 9 5 5 6 4
8204553: 35 389 3 43 2 928 3 7
1723349698390: 282 5 8 60 330 5 499 2
654152568: 47 7 1 1 36 5 6 4 95 8 69
276811: 4 8 4 9 2 2 732 1 7 34 74
30093: 89 47 9 209 21
9676896: 7 4 74 952 32 96
24238: 258 15 500 439 5 193
2340832027: 9 7 26 57 5 4 37 2 829
28458657220: 7 98 32 949 5 21 5 7 85
45796: 427 30 96
22908: 8 27 255 6 8 2 6
282270: 485 97 6
83375383: 29 31 9 246 53 83
98597156: 985 9 7 150 6
34364: 932 4 3 523 8 332
36426613: 98 3 3 413 13
27600: 7 1 54 2 195 1 8 6
24645: 89 173 600 4 7 9 3 497
172383: 4 872 91 1 48 44 499
75150808: 939 3 808 43 8
176064: 275 80 7 1 8
510457: 900 4 618 53 482 6 3
13245932772: 4 9 8 7 82 201 1 327 72
409502: 3 78 879 5 42 2 9 54
94584: 80 64 87 984 7
3708: 6 44 53 9 4
63299: 205 514 87 1 745
32577552: 1 3 910 6 2 5 624 42 14
1117720: 500 53 5 86 20
5150880: 8 96 336 7 64 36 280
548952899: 758 1 722 81 873 899
1884772: 585 805 246 22 2 2
7597152319: 9 6 8 126 4 8 3 405 3 21
42262503: 5 4 44 30 16 6 4 8 391 1
7979383048: 8 9 780 914 24 30 50
7650: 93 8 200 7 64 978
34843752: 932 3 67 2 93
811400: 8 4 193 16 50
730815110: 2 8 8 1 1 8 6 872 8 5 23 2
1129344: 6 375 518 408
123738198: 921 54 8 311 6
85345942: 1 38 7 4 5 361 22
4508: 63 7 1 9 9
5465754: 671 9 34 9 56
1482: 24 248 7 5 87
1614554399: 53 818 449 5 6 929
304361731: 66 3 8 5 6 3 5 6 51 4 867
145: 25 69 37 7 7
132104: 1 6 4 8 4 8 1 50 1 44 8 2
944283906000: 6 86 150 90 971 783
34131285540: 4 4 4 3 4 6 647 4 3 5 66
380: 3 52 3 91 231
124239549: 6 23 9 39 549
593603191: 9 885 8 74 2 7 9 63 6 8 5
3102852: 3 2 85 499 23 39 228
3886014: 56 76 913 9 277
41609227198: 336 5 18 84 8 5 7 1 1 98
49859000: 4 6 38 32 334 41 8
297479190156: 738 332 3 239 508
1631870: 2 84 5 388 363 80 8 3 5
871885: 9 30 3 27 92 3 1
240: 3 5 2 8
6046146756: 4 3 332 4 6 4 83 9 289 9
151958806: 904 51 6 4 4 1 7 6
7704: 3 9 642
160847177919: 804 235 889 59 2 1
1493583: 96 2 864 63 9 24
623494700801: 56 4 19 5 5 1 604 3 343
6031402: 53 51 52 611 12 396 6
541373: 8 8 11 3 9 756 77
201684005: 23 9 704 69 49 6 700 5
4708723: 3 7 67 7 1 8 98 77 2 6 2 5
53297615311: 2 2 3 239 6 1 1 5 311
4791801014: 9 956 7 8 2 309 1 3 62 8
14410560: 554 65 5 82 80
327972699: 33 3 529 3 522 99
458454690: 7 46 865 46 89
12284: 2 1 3 143 308 2 3 2 4 4
17438: 638 9 3 9 203
78327169: 3 885 500 67 59 716
32375064: 699 69 61 1 394 99 84
399150997: 1 5 7 78 13 40 757 4 33
1170925: 62 81 24 70 19 25
17150: 7 3 6 741 409
19662: 1 757 209 1 2
84630: 36 4 64 9 390
23384190: 216 52 108 6 24
480226824001: 5 3 8 893 275 7 8 291 1
2153844: 5 66 1 45 1 701 54 539
10815938219403: 5 9 63 687 79 98 30 6
604591: 8 50 1 5 7 1 4 63 53 6 8 6
704631: 11 64 631
5548: 9 8 7 59 824 4
27947442: 1 1 794 70 10 432
331: 2 33 5 1
1504193664: 4 3 7 196 60 1 8 3 3 43 8
31350058016: 3 1 7 53 96 346 106 4 8
81193315: 811 9 3 306 8
226784880: 1 4 247 8 5 2 7 9 8 849
8226: 90 83 2 299 455
30316870: 8 61 73 851 846
236440248: 8 36 694 87 89
2693846076564: 49 886 9 346 6 56 4
204127695: 509 8 7 4 4 3 9 5 9 719 1
33329: 3 4 476 9 1
9674665: 92 4 74 66 5
837500: 24 8 2 5 670
34652123531: 2 92 4 6 35 18 3 7 192 8
344922: 2 6 1 25 6 3 1 9 1 1 994 4
3042092: 30 4 13 92 639 61
1496043: 40 97 364 2 3
147: 9 13 2 28 1
8480096: 5 1 5 836 7 3 2 6 7 539 9
151031: 5 433 521 7 8 615
4481295: 462 7 21 7 65
46591325: 11 29 58 793 703
67720665600: 7 5 602 8 2 9 31 8 5 1 9 2
33480821524: 5 3 673 61 8 2 7 9 6 7 24
794096355800: 5 3 8 4 3 6 4 4 459 91 4 5
1804: 9 92 74 2
5132160: 5 7 9 5 2 3 2 8 1 9 32 486
199957518054: 1 194 99 964 6 4 3 6 9 6
1046: 6 4 8 8 5 80 7 239
432340440: 5 9 526 309 190
1265235: 6 52 4 6 4 4 1 5 975 660
5571945840: 75 332 3 2 79 6 472
92459: 10 760 791 8 2 1 48
515446: 1 2 86 5 1 4 34 77 68 4 6
174383: 6 28 7 56 83
199584: 6 8 6 44 6 9
19616454: 46 6 282 71 432
2537: 12 1 6 2 54 4 481
372086736912: 2 71 90 8 78 2 792 471
643051629: 2 720 9 67 642 909 81
1169060547357: 48 20 214 487 94 5 5 7
564725: 81 4 424 396 624 5
571610479600: 966 97 4 6 360 610
31209961: 246 8 163 33 324 7 4 9
68400: 5 902 99 514 5 9
8598892528: 1 670 8 75 768 8 7 5 6 8
267913079: 7 539 71 4 296 79
45254106: 841 29 27 520 66
4048: 8 722 5 6 177 217
17548790680: 91 619 421 73 740
2580750: 361 2 425 9 50 5 1
125490: 7 984 251 71 60 15
600817156: 433 91 953 9 4 8 2 1 2
4401306000: 8 5 5 863 42 4 1 4 8 3 5
3964416: 1 1 6 7 1 2 9 6 460 4 768
9109110: 8 3 458 3 265
3234420: 5 24 7 38 612
49103565551: 98 98 859 91 96 62 47
238498274: 2 98 8 98 274
30590: 146 6 5 8 3 8 5 44 7 84
27963329: 228 436 3 94 446 2 19
3564210: 77 8 45 39 703
505284618307: 486 9 7 586 385 3 7
35992: 918 5 418 7 935
85130265: 7 74 2 5 5 9 2 302 5 3 9 3
8605326: 56 2 100 851 64 6 8
4685044: 9 17 669 422 7
249951: 80 712 69 9 29
798: 14 760 21 3 1
76180: 8 3 7 2 65
1564172: 343 76 2 6 80
34832: 68 9 10 8 7
12963338: 1 1 283 229 7 5 7 2 1 8
13329988: 1 6 4 6 440 9 3 29 6 1 28
1530877: 9 7 5 7 3 7 78 5 5 5 118 9
1474: 1 6 9 674 2
307825: 6 5 681 10 3 911
86163: 7 7 10 7 3 1 50 3 2 2 1 77
60159978: 21 98 336 6 87
392781: 4 555 2 7 81
785465: 98 8 9 5 65
323021: 74 351 96 62 1
654120743: 28 3 599 980 13
44980863025: 18 135 32 58 3 9 9 5 7 5
1341782402: 2 9 96 8 46 3 9 8 7 30 2
118477: 118 326 4 140 7
168705: 2 727 37 4 7 54 28 5
2971606226: 3 3 905 234 8 112 3 26
156465: 91 29 313 53 9
22467701: 2 2 368 3 5 2 95 3 7 6 3 8
7586568: 5 19 7 2 6 8 2 2 9 618
501857: 552 909 9 8 72
244683327: 9 2 920 8 50 5 8 7 601
29511845: 295 11 845
1112640: 686 8 2 93 751 1 2 407
46650: 5 83 80 454 75
214341961: 1 1 45 315 9 1 5 185 84
10464105206: 4 36 50 1 1 6 15 4 96 8 6
3304: 23 5 3 4 7
752987896: 7 5 2 987 896
1114: 58 76 980
171875: 27 9 4 3 7 78 91 6 7 8 3
17220: 893 2 531 9 12
47658: 36 75 948 45 3
306742: 371 59 7 96 2 68 36
587181961: 9 5 405 6 3 9 5 4 5 648 1
318928959: 125 84 88 32 9 1 62
2687: 821 4 44 9 3 53
13193910: 44 67 8 61 558 1
257428: 1 13 792 25 28
78352814: 7 593 64 118 81 1
3398720: 38 559 5 4 8
269853: 248 5 2 373 307
30522: 310 8 6 2 762
14947413846: 398 374 622 138 46
656518: 4 776 5 47 263 3 59 2 9
529254: 9 7 8 86 48 870
13113110010: 64 4 9 22 7 3 535 689
2485853: 17 835 35 62 28 517
152623595970: 69 11 7 3 561 656 75 6
908760624: 440 2 16 75 6 8 43
783296: 78 32 96
140095272: 658 8 36 28 6 944 8
63079: 888 8 5 7 5 4
1162196965: 209 1 6 6 878 97 9 2 3 1
18608078: 822 8 65 2 4 1 9 9 7 1 4 8
70896: 90 72 6 6 64 2 9 8 2 4 6 6
1512896: 7 87 7 4 614
4131513: 198 2 5 48 92 7 1 3
105455: 7 8 27 6 6 2 4 1 552 23
48402944: 67 5 896 83 8
10325088: 3 4 7 4 209 7 7 19 389 3
151744: 928 9 45 9 2 45 553
11415140: 2 676 6 4 96 20 8 1 91 9
60890: 7 2 918 306 7 27 5 7 3 1
244184: 2 7 7 3 87 9 886 233 1
4064: 13 54 7 54 68
71333392: 427 7 35 53 80 3 227 4
2278795802: 9 2 16 4 5 434 771 62
871745190: 4 926 69 4 566 4 929 6
1114: 98 6 9 91 87
2163554: 3 298 8 82 66
538760700700: 997 705 90 6 700
24293746: 80 975 4 3 46
24178721: 8 3 165 2 5 9 97 27 7 29
290290824: 4 4 662 4 6 8 43 8 9 123
12398354364: 336 4 5 118 92 40 124
19644: 94 233 10 4 6
3412148: 87 6 80 6 4 93 6 452
408634: 5 8 41 7 38 34
12560011: 3 7 927 18 736 8 6 893
755885: 84 87 68 1 65
2996347: 2 16 926 331 48
331426080529726: 71 7 963 480 52 9 726
2370482: 2 37 5 998 232
917717: 9 461 97
205212: 402 18 6 272 294
735: 9 6 61 1 32 5
30294660: 17 7 213 3 6 5 6 985
438311753: 5 30 2 75 8 3 3 1 17 53
119952: 8 9 588 4 3
121: 5 1 7 74 5
974805267: 3 8 9 28 7 6 33 24 706 3
20133: 8 74 22 905
4889785: 870 81 396 69 6 25
63926: 4 799 20 1 6
378014219744: 572 59 2 8 4 696 2 8 2 7
8867147: 6 9 4 9 13 9 5 413 2 6 5 7
831974987: 7 59 471 7 611 116
95749: 9 563 7 4 42
48146: 2 57 36 8 658
10424368: 62 694 3 8 12 5 8 214
45528: 484 5 22 88 560
31387356: 1 20 871 3 572
4861808: 4 923 8 3 438 8
1636200: 20 7 28 88 8 9 9 51 9 7 2
309698953200: 46 5 7 5 1 8 5 981 5 78 7
2703870365: 693 3 390 365
985320011: 4 43 840 5 6 5 255 1 2
219659: 35 8 6 1 3 9 11 8 8 3 2 5
3525158: 836 694 8 1 382 6 8 54
8928859: 98 3 505 143 6`;
const Rows:[number , number[]][] = raw.split("\n").map((row) => row.split(":")).map(c => {
let c2 = new Array();
for (const i of c[1].split(" ")) {
if (Number(i)) {
c2.push( Number(i));
}
}
return [Number(c[0].trim()) as number, c2 as number[]];
});
type Operation = (a: number, b: number) => number;
class NumberValidator {
private static concatenateNumbers(n1: number, n2: number): number {
return n1 * Math.pow(10, Math.floor(Math.log10(n2)) + 1) + n2;
}
private static parseInput(input: string): Array<[number, number[]]> {
return input
.split("\n")
.filter((line) => line.trim().length > 0)
.map((line) => {
const [expectedStr, ...rest] = line.split(":");
const expected = parseInt(expectedStr);
const nums = rest
.join("")
.trim()
.split(" ")
.filter((n) => n.length > 0)
.map((n) => parseInt(n));
return [expected, nums];
});
}
private static valid(expected: number, numbers: number[], operations: Operation[], accumulator: number): boolean {
// Base case: no more numbers to process
if (numbers.length === 0) {
return expected === accumulator;
}
// Early termination if accumulator exceeds expected
if (accumulator > expected) {
return false;
}
// Try each operation with the next number
const [next, ...rest] = numbers;
return operations.some((op) => this.valid(expected, rest, operations, op(accumulator, next)));
}
private static run(input: string, operations: Operation[]): number {
const parsed = this.parseInput(input);
return parsed
.filter(([expected, nums]) => {
const [first, ...rest] = nums;
return this.valid(expected, rest, operations, first);
})
.map(([expected]) => expected)
.reduce((sum, curr) => sum + curr, 0);
}
static part1(input: string): number {
const operations: Operation[] = [(a, b) => a + b, (a, b) => a * b];
return this.run(input, operations);
}
static part2(input: string): number {
const operations: Operation[] = [(a, b) => a + b, (a, b) => a * b, this.concatenateNumbers];
return this.run(input, operations);
}
}
// Example usage:
let result = NumberValidator.part1(raw);
let result2 = NumberValidator.part2(raw);
console.log(result);
console.log(result2);
@kiritocode1
Copy link
Author

Get Rekt noob @Codimow
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment