d07 - but even more inefficient

This commit is contained in:
JonOfUs 2024-12-07 18:02:13 +01:00
parent 03fd24f930
commit f6ebab690b
4 changed files with 958 additions and 2 deletions

9
res/07/example Normal file
View file

@ -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

850
res/07/input Normal file
View file

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

97
src/days/d07.rs Normal file
View file

@ -0,0 +1,97 @@
use std::fs;
use rayon::iter::{ParallelBridge, ParallelIterator};
pub fn solve() {
let path = "res/07/input";
let contents = fs::read_to_string(path).expect("Something went wrong reading the file");
let equations: Vec<(usize, Vec<usize>)> = contents
.lines()
.map(|line| {
let (res_str, nums_str) = line.split_once(": ").unwrap();
let res: usize = res_str.trim().parse().unwrap();
let nums: Vec<usize> = nums_str
.trim()
.split(' ')
.map(|num| num.trim().parse().unwrap())
.collect();
(res, nums)
})
.collect();
let result: usize = equations
.iter()
.par_bridge()
.filter(|(target_res, nums)| {
// try all combinations of + and * between nums and check if res can be achieved
let mut operator_bits = 0;
loop {
let mut res = nums[0];
for i in 1..nums.len() {
if operator_bits & 1 << (i - 1) == 0 {
res += nums[i];
} else {
res *= nums[i];
}
}
if res == *target_res {
return true;
}
if operator_bits == 2usize.pow(nums.len() as u32) - 1 {
return false;
}
operator_bits += 1;
}
})
.map(|(res, _)| res)
.sum();
println!("Result 1: {}", result);
let result: usize = equations
.iter()
.par_bridge()
.filter(|(target_res, nums)| {
// try all combinations of + and * between nums and check if res can be achieved
let mut operator_bits: usize = 0;
loop {
let mut concat_bits: usize = 0;
loop {
let mut res = nums[0];
for i in 1..nums.len() {
if concat_bits & 1 << (i - 1) == 0 {
if operator_bits & 1 << (i - 1) == 0 {
res += nums[i];
} else {
res *= nums[i];
}
} else {
res = concat(res, nums[i]);
}
}
if res == *target_res {
return true;
}
if concat_bits == 2usize.pow(nums.len() as u32) - 1 {
break;
}
concat_bits += 1;
}
if operator_bits == 2usize.pow(nums.len() as u32) - 1 {
break;
}
operator_bits += 1;
}
false
})
.map(|(res, _)| res)
.sum();
println!("Result 2: {}", result);
}
fn concat(a: usize, b: usize) -> usize {
a * 10usize.pow(b.ilog10() + 1) + b
}

View file

@ -4,7 +4,7 @@ extern crate scan_fmt;
use std::time::Instant;
fn main() {
//days::d06::solve()
//days::d07::solve()
_all_days()
}
@ -37,11 +37,11 @@ fn _all_days() {
days::d06::solve();
time = _print_elapsed(time);
/*
println!("\nDay 7");
days::d07::solve();
time = _print_elapsed(time);
/*
println!("\nDay 8");
days::d08::solve();
time = _print_elapsed(time);