Last active
December 7, 2024 10:05
-
-
Save kiritocode1/bddc6fe3de24ea0b31277a7a12efc0be to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// --- 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); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Get Rekt noob @Codimow
