Commit Diff


commit - b70c7b2a5c6627168ec3652c3841e54b97f55bc5
commit + 58c83f8af7c4abc47f02dc051fd17da85272eb0d
blob - /dev/null
blob + ea1f0ebdb1aedb7ad6209ac9f22f3cf121d70aec (mode 644)
--- /dev/null
+++ input/7.txt
@@ -0,0 +1,850 @@
+20069: 49 98 4 6 81 774
+32487400: 750 71 8 61 1 9
+48639094: 6 7 3 9 438 390 94
+51587106: 859 71 7 51 6
+3672960: 20 3 6 527 21 240
+609210: 91 2 85 798 5 14 3
+38998774089: 1 9 3 9 3 5 2 417 8 63 7 2
+72095400778: 1 7 4 1 5 6 6 79 3 5 2 780
+59193807: 4 2 6 7 93 5 2 5 92 2 623
+994866: 5 7 6 9 9 1 337 6 6 24 18
+120929459: 83 4 2 60 7 8 8 6 397 83
+7618089: 5 7 8 6 286 40 542 821
+10399960: 4 4 4 9 84 1 8 53 6 9 7 4
+277851: 49 70 27 7 3
+1434188434: 669 94 17 38 60 3 4
+4709528: 58 799 70 1 8
+1183720: 1 6 19 89 20
+1080799208: 4 16 304 479 7 9 8 65 8
+37909994: 3 4 1 1 72 1 7 90 2 6 643
+6148: 6 95 376 8 9 58 6 16 6 1
+14289972907: 238 165 4 8 6 907
+20290900: 928 544 578 14 707
+59866: 108 889 6 5 41
+5278166023: 1 17 7 95 8 3 1 44 8 18 5
+1970205: 891 737 48 3 60
+51625467: 4 4 7 559 49 366 4 3
+1257282: 3 5 6 5 9 22 68 5 1 5 9 54
+6110: 9 676 3 3 20
+15204233: 7 60 2 2 234
+154315118: 43 6 6 265 5 9 4 6 8 49 6
+238188315: 21 8 892 9 2 8 78 4 8 27
+442298: 6 817 8 76 3 15 7 4 7 2 1
+4830: 9 1 6 64 30
+177606: 175 3 75 33 621
+272730: 74 9 51 7 620 9 8 7 7 9 8
+169752825694: 628 62 9 2 2 169 3 7 9
+2008290036: 5 5 8 1 8 63 4 6 8 91 9 36
+28191424142: 38 72 8 982 80 36 4
+114729841: 15 93 470 72 1
+43589671674: 7 6 1 99 59 96 716 74
+2029: 25 81 3 1 1
+7255912: 270 7 4 880 781 248 8
+243778560: 83 982 2 9 118 480 4
+301107935: 9 878 899 6 3 8 7 3 7 1 3
+330: 9 9 9 2 6
+30847500: 497 4 44 94 2 62 9 8
+4599: 41 65 23 67 315 9
+51599: 3 294 89 207 87 1 6 2
+17824505: 7 9 448 3 4 17 631 9 6 2
+151946690: 18 9 5 8 7 1 3 11 976 82
+73752: 79 9 7 6 124 653 4 7 3
+10185: 6 6 87 411 7
+57039520: 7 4 496 3 247 700 5 2
+3396: 2 129 37 8 1 7 653 374
+3556538: 889 4 517 14 3 4
+4260: 114 23 289 10
+377830219290: 438 73 9 6 1 2 861 93
+17445965060: 9 5 94 63 92 4 2 58 803
+154120940: 4 82 2 7 1 546 5 8 940
+6264691823: 50 72 5 1 9 88 58 6
+17074122568: 2 9 9 7 165 1 5 6 2 8 106
+23075718615: 7 657 77 749 18 29 3
+22847337622: 6 8 7 3 8 6 24 283 42 8 2
+2261: 55 85 2 36 6 298 67
+1742868: 1 91 6 4 9 2 87 195 4
+5430: 16 9 29 8 565 635 46
+1815667: 85 20 213 898 9
+640011968: 50 80 5 374 4 8
+1877860445: 2 4 89 9 52 56 293 3 2
+537568: 2 4 1 64 933 1 34 125 1
+314705: 9 7 5 218 32 557
+591893: 59 128 52 8 85
+1182764689: 36 2 7 2 7 97 8 7 9 4 4 6
+257302664: 43 2 1 2 78 2 3 6 996 2 6
+3653208: 84 57 676 40 8
+85495: 26 9 5 3 44 7 140 7 23 9
+22863672: 9 4 5 52 438 7 5
+48637688: 3 265 7 5 2 74 5 59 153
+20950: 761 27 39 5 4 6 982
+1211846: 75 27 161
+141259: 1 19 261 9 7 3 9 87 3 1
+2335338: 1 9 6 7 4 7 6 2 94 2 6 733
+182736553845: 1 215 705 3 5 6 9 23 8 5
+4481114619: 5 439 7 180 89 9 9 9 57
+20952: 61 333 48 586 5
+84201598: 780 1 4 300 358
+57058360380: 4 5 5 65 8 8 9 7 8 868 5 7
+842520237139: 3 8 8 2 75 68 3 38 77 7
+3479489: 434 9 15 8 169
+455616000: 74 1 4 4 565 8 4 21
+3116820: 8 2 38 818 2
+32902179617: 5 5 3 1 8 88 8 87 92 776
+212372816: 798 2 266 515 1 16
+1676790: 68 43 63 18 558
+88015051: 9 74 214 150 49
+32815837331: 25 30 6 3 6 87 19 149
+4176: 74 11 4 8 12
+8856666: 907 50 5 344 39
+17530866: 3 24 944 30 687
+115597439: 7 96 610 47 6
+59978: 6 5 678 87 35
+2529602475: 951 603 153 5 882 8 7
+2733976483: 7 9 41 75 261 565 918
+342498826656: 258 994 6 687 54 6
+52920: 4 9 6 16 699 1 6 6 2
+42574479: 4 771 5 4 9 5 5 3 6 146 3
+39398867885: 6 638 79 6 147 1 1 9 8 7
+35720: 663 97 47
+242251: 96 9 25 4
+237373235: 63 238 73 6 6 5 9 8 6 5 5
+41911385211: 98 6 3 2 6 651 5 860 9 6
+370930563: 6 618 1 30 508 55
+64746000: 181 6 3 99 96 3 8 75
+208599437: 5 6 9 18 1 9 3 910 7 9 72
+14164484: 30 5 7 368 3 47 97 4 9 5
+3608: 900 4 8
+1361: 6 2 86 7 8 6 939 49 258
+549611: 21 1 8 56 372 12 12
+314435322: 3 49 305 65 5 6 76 6 8 3
+674550: 7 4 610 340 9
+42329897821: 66 6 1 15 64 9 78 69 1
+582868038: 84 5 672 65 38
+1728: 4 8 16 1 9
+74952470475: 8 64 2 9 5 246 2 8 4 75
+1392006: 50 232 15 8 6
+761: 62 3 341 352 3
+48556951: 207 3 92 3 53 31 27 71
+3482293519: 976 8 115 49 31
+102873921024: 4 56 49 43 19 478 6 4
+19766: 984 9 34 1 2
+431516227150: 8 458 926 2 2 7 147 3
+5356: 5 5 95 35 93
+143937: 2 7 316 8 769
+2104720: 3 214 835 360 2
+69616848: 8 8 9 879 38 9
+2130: 5 202 1 53 6
+8747338330: 332 206 266 3 877 9
+1041844: 874 6 9 119 1
+207373691985: 81 457 9 3 2 56 919 85
+1829717: 203 3 9 1 7
+328689: 2 6 520 43 14
+83232: 4 1 866 4 4 6
+354301209: 71 6 67 41 4 67 5 2 25 9
+74368692: 94 199 59 239 18 18
+11635096619412: 8 77 776 36 5 263 8 14
+42726890: 427 26 8 68 22
+960390: 2 1 4 3 80 35 4 3 33 9 6 6
+398159179: 3 981 5 91 78
+56305: 6 9 4 492 4 6 93 1 9 90 1
+162651970: 1 79 88 64 20 440 9 3 7
+1549225440: 499 1 5 616 2 8 7 9 4 4
+654695: 2 4 27 6 440 255
+68838516277: 85 1 9 449 879 2 57 4 1
+2099: 9 607 497 972 5 9
+558468640: 246 5 4 440 556
+15868: 4 69 5 7 799 8
+70180938: 949 14 96 85 82 92 9
+549830219405: 5 95 532 3 74 363 3 9 5
+11182: 1 1 172 5 5
+1475180: 66 399 7 8 6 6 7
+42017863: 6 317 8 3 628 5 55 338
+135921014: 702 8 481 398 34
+72458737096: 316 19 45 7 4 9 4 1 83 6
+8900: 1 9 1 445 1
+18089960: 81 1 8 697 1 1 590 2 40
+4309220520: 9 93 627 53 4 792 85
+3640164: 30 6 937 74 56 1 8 8 44
+1867319341: 9 4 7 71 571 7 7 5 800 6
+1632: 5 29 7 2 615
+13490: 428 904 68 5 11 9 746
+279248: 81 58 2 2 7 496
+2172272: 30 996 7 90 163 9 14
+17347758: 7 77 716 9 232 775 5
+17160: 7 157 7 3 1 35 4 3 1 71 5
+333343: 27 5 99 13 6 195 3 85
+8989031: 3 4 8 5 85 7 7 863 4 1 22
+1761499130: 93 3 9 1 7 2 2 8 1 152 1 8
+975657048520: 6 7 26 2 4 89 41 4 9 7 5 8
+139579800: 28 9 7 4 54 7 8 3 76 3 1 6
+2482480123: 572 62 700 8 4 39
+85846472460: 85 2 1 9 507 6 9 2 7 9 3 4
+2502000: 1 856 8 94 8 45
+3787217460: 8 46 1 52 9 1 1 22 9 10 6
+439999496028: 3 64 91 7 2 23 51 38 6
+4095: 4 55 9
+35011: 41 20 4 285 11
+10685: 91 6 79 7 2 3 288 607
+35578601926: 9 2 5 80 6 308 522 383
+662375767: 602 56 4 375 769
+15404697: 2 499 85 4 4 889 89 9 7
+11267043: 184 2 86 1 356
+24465619: 3 662 2 4 655 14 8 51
+539704843: 441 98 704 8 43
+555385: 2 3 544 6 30 8 5
+1043: 38 660 4 94 244 3
+1878237927: 23 206 4 9 959 806 7
+1251687: 92 17 6 8 9
+2345399977: 7 2 72 1 2 2 3 87 52 29 7
+165458073908: 2 5 713 652 8 9 4 7 3 7 8
+7374228: 871 828 434 56 8
+381388999203: 484 22 30 46 29 895 3
+109360: 58 69 86 7 133
+250904195: 2 1 4 787 316 194
+1965347: 6 55 3 324 23
+35445735: 674 6 89 71 39 15
+95043: 89 5 6 9 767 222 2 7 4
+34424017918: 66 2 520 1 7 918
+14968866015: 7 560 9 30 11 5 3 4
+148080: 4 383 9 96 144
+1605016490: 98 27 289 737 742
+1589: 853 729 7
+5957103105: 914 5 5 3 4 8 31 6 7 4 5
+9277990: 363 5 5 7 1 5 9 80 785 5
+6352990: 3 7 4 8 5 500 7 1 6 7 47 5
+37320978: 43 23 424 89 74
+29637: 85 3 3 75 89
+2302: 613 2 630 1 162 280 3
+3248879: 35 3 35 322 5 4 811 5 8
+1300503637440: 284 553 744 530 21
+46840: 13 46 792 62 2 20 20 8
+14889232: 4 7 111 35 529
+40792766: 6 84 9 6 351 8 849 142
+183080878: 303 2 2 3 808 78
+2642434807267: 324 2 78 973 4 818 67
+250272769: 283 9 5 88 769
+20393268: 285 265 2 270 978
+7584298: 1 39 5 9 5 1 30 376
+57874: 456 122 74
+358: 9 7 28 4 2 6
+7503273: 119 38 59 3 81
+1010814576: 9 3 87 113 8 7 544 3 8 5
+147251520: 7 94 535 2 6 38 20 81
+804846: 59 7 4 609 29 2 1 5 811
+49: 26 4 19
+4281957: 320 357 527 3 4 4 605
+11705: 9 19 64 9 752
+7339912: 3 998 4 7 98 4 8 74
+1149195: 342 7 96 5 75
+2742448: 493 871 7 224 2
+893282: 362 6 6 2 9 172 28 34
+11017745: 23 9 4 46 3 531 4
+10289209: 5 9 1 969 90 1 27 3 78
+97182212: 4 1 399 18 213
+3885618429: 37 7 3 5 618 429
+145649: 2 1 503 40 4 603 7
+1994244325926: 9 6 98 8 3 2 4 8 6 612 7 6
+753358: 170 8 337 1 4 365
+34725415: 178 6 5 9 1 29 5 281 13
+4752181: 61 6 8 2 48 46 4 565 1
+83075: 1 1 59 16 176 8 1 3 23
+1568: 384 9 6 58 670 441
+568: 2 4 92 1 15
+3057604703: 33 737 20 7 65 7 56 33
+75583503: 3 4 1 3 82 8 8 2 6 8 3 453
+535701: 5 35 703
+868646: 8 5 55 98 6 63 2
+15938: 6 65 33 9 81 861 8 914
+9587736: 3 6 7 1 64 600 1 3 9 122
+26545365: 6 522 98 83 5 548 65
+806: 80 34 29 628 35
+7440411: 147 7 5 5 529 13 1
+5767327837: 856 3 9 746 612 3
+760463: 748 2 7 3 460
+1198: 2 66 9 4 890
+24090: 2 165 73
+2039: 61 37 7 6 9 84 1
+1252773413800: 260 6 3 944 612 1 6 5 8
+5076: 3 1 22 7 65 2 1 70 705 4
+1666: 8 99 874
+38680: 5 85 2 4 2 740 826 4 5
+4018260980733: 166 8 79 4 7 36 6 911 3
+694586: 9 3 24 3 3 75 1 5 31
+560147: 853 995 49 295 532
+952110: 233 867 241 2 355
+4351466888: 777 9 2 4 3 9 3 8 5 3 48 8
+235411298: 59 399 12 72 26
+26883288: 8 575 3 832 574
+1410522: 6 13 66 5 186 906 7 6
+1129949506: 120 4 545 1 91 938
+3872354737: 459 4 6 3 98 86 573
+16562310435: 36 2 41 8 38 38 6 3 33
+689204: 9 864 233 5 86
+341716: 73 1 468 7 6
+6564: 998 96 3 2
+44417884568: 1 655 27 1 7 71 28 4 2
+7705702: 242 9 10 307 3
+11207000: 31 56 46 875 4
+24160559: 3 21 158 99 63 93 6
+49078: 2 1 25 3 837 5 1 53
+1236600: 5 828 33 1 4 45 30 45
+513: 18 4 444
+3978571982: 7 578 899 584 734
+13354145: 48 378 736 97 2 62
+14527: 6 8 1 3 91 36
+21447: 79 12 69 54 47
+267775223: 575 84 12 462 21
+5775: 8 7 72 2 4 932 3 6 8 498
+1497878269: 5 7 4 2 586 9 1 2 5 82 6 9
+23121860: 48 7 5 57 8 71 95
+10857369642: 4 6 384 8 88 75 3 4 6 6 7
+932783488: 5 5 1 3 8 6 1 9 582 2 56 4
+2903896064: 597 38 125 86 32 32
+215370686: 588 4 8 402 9 686
+59671754: 764 781 8 327 1
+63863: 80 558 63
+4257: 33 707 5 554 3
+78005462388: 299 1 5 4 2 62 914 42
+2975681: 7 2 3 2 5 153 62 35 681
+2348387090: 2 5 3 5 88 6 47 649 2 58
+6444257: 644 31 10 1 5 5
+127456199: 83 1 344 8 2 93 3 3 62 6
+12835539: 8 444 2 4 589 6 7 5 4 3 1
+576660903: 445 957 4 45 4 5 82 6
+231782: 6 9 25 7 3 8 14 3 8 1 589
+20185: 6 96 687 8 589 4 384
+73624: 846 87 8 6 8
+365768460: 865 58 2 2 9 15 9 6
+5651705392737: 9 2 46 9 764 4 10 8 738
+1445852: 7 7 4 8 1 4 7 931 847 3
+47748768: 419 4 9 45 3 8 6 4 76 8
+1530: 7 16 802 576 40
+369276831: 8 5 4 8 8 6 6 5 293 9 9
+362884: 756 48 4
+9764381: 5 57 612 79 438 1
+38172072960: 7 5 46 5 9 7 8 6 487 64
+182419: 40 86 68 52
+5391208: 77 16 32 609 396 7 4
+1858775369: 6 79 4 6 64 2 7 3 5 361 8
+272349334: 7 70 8 5 6 919 7 7 7 803
+524812358925: 772 5 499 791 675
+60225360: 119 4 97 130 4
+610483: 615 32 7 6 31
+140445400: 8 9 513 6 5 6 2 6 5 335 8
+33807: 74 7 31 869 7
+564: 1 53 41 1 6
+85569: 9 4 68 4 5 69
+7538038: 2 742 9 72 72 762 5
+33801065: 655 5 15 522 508 267
+1327354: 57 1 3 64 7 6 619 4 731
+9971885: 7 539 8 6 6 93 6 98 55
+157591051: 3 8 667 729 1 758 4 4 3
+8155139942: 3 5 8 9 8 9 1 6 608 9 470
+3196408936: 3 93 6 6 3 130 530 17 8
+696844: 177 9 1 456 85 46 4
+237: 6 54 74 87 16
+2884: 7 4 81
+817751: 7 18 64 32 860 53 41 6
+15132: 7 96 2 3 6 8 2 98 2 4 8
+40182: 31 8 1 18 3
+42915027: 6 7 91 491 6 6 5 62 38
+6454770: 1 4 912 2 49 9 2 86 2 5 7
+1791058833: 482 1 63 4 5 327 877 9
+21778440: 8 877 32 8 97
+1432635869: 73 70 263 5 870
+3516361578: 95 7 8 17 59 38 9
+10185774: 1 4 291 7 774
+48363374: 41 388 1 95 16 4 3 2
+414087530: 7 8 3 44 6 4 4 5 91 226 5
+1684394: 42 260 6 7 926
+391844044883: 94 2 96 8 864 3 8 77 6
+68679528: 212 455 89 4 4 2
+35327: 1 33 8 83 129 7
+78688519: 54 6 5 3 7 1 574 6 2 3 8 7
+254803543: 2 830 6 5 4 6 6 708 3 7
+8328: 3 7 379 4 2
+1665845626: 2 524 66 5 6 26
+20496: 25 61 83 275 9 7
+51135: 811 1 9 6 7
+19624: 19 538 83
+9320808: 1 53 4 2 84 509
+665835117: 3 2 121 8 13 1 116
+47370468: 3 942 12 65 717 749
+95256840: 30 1 5 14 378 7 60 2
+72396891: 1 6 56 3 9 6 88 8
+233543453: 3 822 93 66 944 595
+14852498: 355 5 7 57 71 8
+1699424384371: 9 42 6 7 3 58 448 371
+3216560517: 899 20 35 605 17
+2947861799159: 310 8 927 179 914 1 9
+1074493: 2 71 84 6 6 45 8 15 88
+22856160: 501 3 401 68 5 24
+46150657: 475 8 975 805 6
+294566194466: 9 1 11 607 6 7 8 43 8 67
+1906225: 188 16 246 2 5
+697073797: 968 6 1 9 5 5 5 381 7 5 2
+8446: 603 14 4
+623712: 6 3 990 7 5
+1175760: 1 59 4 7 6 6 4 17 791 6 3
+108029: 6 7 21 16 493
+2737934408: 700 60 5 373 5 9 4 8 94
+962793351: 4 7 2 9 8 8 81 459 509
+340298846: 232 13 6 5 188 4 9
+22352423: 6 59 5 3 63 2 3
+158129: 3 92 52 32 8 8 8 2 9 1 7 6
+27342360: 61 5 617 559 40
+388943333: 988 8 6 481 807
+349404941: 6 59 987 6 941
+2453435076: 48 34 6 815 43 507 5 1
+2459968: 64 4 532 68
+112240201: 7 2 60 7 97 167
+2794261: 467 128 968 46 26 11
+1591404240: 12 7 88 1 2 5 530 8
+685271: 748 1 34 5 5 5 6 7 1 7 96
+125129: 3 7 61 8 864 129
+8977363: 419 593 900 4 9 1 4 6 1
+5285802882: 73 333 6 26 5 28 82
+2754039386: 7 10 6 12 6 105 375 4 7
+7714: 904 51 8 5 69
+13696188: 201 24 2 43 66
+356: 1 65 278 9 3
+1552880: 6 64 20 7 2 4 518 472
+726: 6 9 4 88 3
+2571102: 4 1 1 992 779 1 8 7 3 8 6
+12357408: 2 12 71 6 28 74 1
+16311762: 570 78 7 83 7 54 3
+1945492386: 105 1 894 49 238 6
+12663: 120 1 9 57 3
+3948815: 615 2 8 8 13 2
+35568: 3 6 4 86 278 3 76 78
+84256728501: 389 3 977 4 7 22 6 501
+823262: 2 239 6 2 17 2 8 15 93 7
+1922397970538: 409 47 8 4 13 9 705 3 9
+487878: 1 3 37 686 542 17 522
+12149430428: 2 596 26 5 15 3 962 1 6
+53923822174: 5 3 4 5 2 372 3 6 9 3 1 74
+475320446: 57 2 8 3 1 26 6 45 9 446
+53313120: 3 78 820 86 2
+41209672: 7 6 7 7 967 8
+1096059: 868 5 6 3 252 70 39
+8981270437: 255 2 1 7 3 4 6 6 293 3 7
+2819374: 5 99 1 1 65 59 2 82 8 7 5
+59366538: 795 78 24 87 11
+17158148125: 66 67 2 8 25 485
+5104238: 642 1 441 6 8 3 7 50 23
+726652028: 9 8 196 22 74
+17442628: 415 3 6 7 28
+71927491: 5 2 5 953 947
+378: 12 8 4 9 9 9
+143620: 24 5 39 58 9
+1043159045: 924 56 4 6 1 15 4 7 2 1 4
+11605: 2 6 1 5 3 1 40 4 2 275 5
+110873998: 590 1 67 55 28 860
+11366115: 33 2 7 7 8 9 5 34 87
+782061: 75 46 3 809 95 383 7
+1800: 4 803 92 2
+640616724329: 634 4 2 5 1 1 67 2 4 329
+80725522: 954 2 47 2 9 76 1 6 2
+3638325089: 498 4 73 50 86 6
+1298: 65 6 553 75 277
+1767: 3 6 7 14 3
+1015662: 880 12 9 8 4 2 79 82 4 6
+63646: 326 302 1 5 829
+3068658291: 73 2 21 2 65 82 20 71
+15947888527: 632 341 74 16 2 365
+84891057: 9 3 9 96 4 282 74 8 3 9
+64512058: 8 80 168 3 2 58
+2369411264: 14 7 241 1 8 76 88
+2149: 7 9 19 4 948
+490410: 6 6 7 1 3 7 796 5 1 66 3
+63693072702: 772 6 86 45 3 721 5 9 9
+131248727: 63 1 52 4 727
+2017216: 64 9 34 7 355 25 3 4 43
+31570503: 8 9 7 2 4 7 593 99 5 8
+12286406: 7 679 40 4 6
+13258167603154: 220 969 46 60 3 156
+145989: 1 14 343 262 27
+17418519: 73 8 852 94 35 349
+8780960: 5 37 7 9 45 644 6 5 1 8
+15582563: 106 147 54 9 13 1
+302719950: 7 5 528 1 1 7 4 1 1 117 5
+27078: 5 9 2 2 63 28
+1341462168: 67 7 7 84 32 705 2 2 38
+47837667: 4 4 89 536 5 43 4 7 7 50
+3218800322172: 829 5 87 71 19 388
+9487: 49 3 24 7 655 8 6 8 65 9
+511530: 86 90 335 5 30
+37776704: 82 4 4 6 59 638 2 43
+1516669: 6 8 73 212 1 1 1 1 7 4 1 9
+2976000: 6 861 96 15 49 6
+2250547200: 48 814 160 4 90
+287703313: 9 31 8 703 313
+164099: 6 266 201 3 83
+333048: 437 7 111 6 40 8
+465768: 6 69 72 88 1 3 6 2 70 2
+220981018752: 52 8 901 954 618
+3127780532529: 4 991 8 8 946 9 83 32 4
+1064536: 905 98 7 8 1 3 5 14 4
+21752: 8 6 6 8 2 3 46 8 642 3 1 3
+8310: 54 26 840 1 9 1 30
+16196934098: 9 198 65 3 780 98
+2160: 1 5 2 3 24
+112353: 2 89 5 1 4 7 1 333 2 8 17
+8516: 2 7 8 28 7 12 939 2 96 3
+386713691: 478 809 3 8 691
+939440420428: 1 306 30 2 51 1 5 4 4 2 8
+81838: 9 9 761 77
+13775572: 4 21 53 755 72
+132: 42 60 30
+676221: 59 617 2 2 1
+4291208: 2 4 2 5 459 2 74 80 8 5 8
+1558088784: 3 15 2 638 662 97 8 6 6
+191059: 3 182 58 547 9
+2093071741: 6 933 1 6 94 84 47 61
+7165: 1 3 4 7 4 8 3 4 86 1 726 5
+37760: 6 7 7 52 373 1 3 23 4 56
+46798645: 6 7 4 7 8 4 36 2 2 7 965 5
+51543100: 49 4 4 3 409 785 1 5 4 7
+4723119765: 9 6 7 603 1 9 8 1 86 9
+36258390: 6 534 484 383 859 5 6
+1064: 45 2 522 454
+4021732: 57 30 9 335 979 2
+1202: 4 6 1 91 8
+1018471272: 534 3 761 733 8 7 588
+1145208162: 99 769 608 5 8 62 30 7
+32751667271: 9 885 3 80 734 70 5 66
+42116984167: 494 325 5 8 852 7
+2698900: 9 4 49 45 20
+12015: 513 225 6 16 61 50
+547007: 1 460 29 41 66 1
+438450: 20 388 17 992 50
+29582225: 1 1 277 5 72 8 4 2 27
+26610922655: 315 1 5 829 22 6 55
+898290075: 8 98 2 8 97 8 3 3 7 16 5
+25678224: 2 86 26 99 58
+8368417979: 8 4 211 866 60 3
+100799: 700 473 3 81 8 7 16 9
+421835040: 26 631 80 33 6
+91295955: 45 7 83 4 90 2 3 915 79
+130271676: 24 69 5 3 9 34 426 8 3
+1253504: 7 743 241 3 51 9
+3987863381: 9 91 629 919 54 7 4 9
+473941: 4 48 3 15 7 9 382
+22287368: 681 75 94 95 6 8 46
+9234220: 8 8 1 4 6 5 382 43 73 5 8
+85349: 378 9 9 25 74
+6555283: 9 36 469 7
+279138660: 1 2 5 487 932 41
+291432573718: 291 432 573 715 3
+445193: 4 5 9 9 33 8 4 460 7 7 28
+4065: 4 10 65
+20472: 1 94 62 893 41 3
+28878635: 18 7 385 909 294 3 26
+54981: 64 11 6 1 13 56
+14122: 6 5 2 5 46
+266843: 77 82 6 5 600 97 38 7
+314423826: 40 692 89 3 771
+5789580075: 594 4 5 5 303 5 321
+209024064: 241 2 1 85 2 432
+11882: 32 196 44 886 964
+49864: 5 5 22 9 166
+924665242: 3 4 80 466 524 2
+130149: 2 4 8 889 5 4 23 674 5 3
+71274451365: 3 45 1 1 6 6 888 746 7 5
+8816477: 91 48 218 42 588 5
+631041934248: 27 681 312 85 68 11
+39396888: 7 578 970 41 619 612
+80199600: 56 645 79 530 2 97
+22088: 309 3 8 134 5 6 5 8 7 6 3
+434604809: 3 71 8 869 224 5 89 4 9
+20044999032: 94 9 1 88 4 6 6 51 1 6 6
+2666519: 2 7 95 2 58 2 588 3 1 8
+5163719738854: 9 96 857 7 647 1 37 2
+44045: 8 35 1 689 6 7 36 23
+37806900: 1 7 250 2 6 6 9 9 4 1 5 60
+777753619876: 324 8 5 5 603 3 8 9 2 9 7
+53812: 515 22 97 5 4 6
+148622545393: 5 9 87 1 9 7 7 36 5 8 92 3
+54179: 38 4 185 237 380
+90743: 92 975 390 42 611
+20583: 57 361 1 6
+1613374438: 49 774 19 2 853
+80455846: 1 872 18 4 4 4 4 8 5 4 2 4
+27720: 663 76 53 7 5
+7079722751: 70 53 18 8 722 6 77 74
+444271196058300: 6 827 58 869 964 675
+266183007: 899 209 1 9 9 3 1 7 6 8
+84506094: 6 4 780 993 65 99 195
+599644: 7 4 44 987 1 9 1 7 6 5 4
+8160651: 8 159 8 99 747 7
+266326391300: 7 198 37 3 905 8 4 718
+4552311570: 1 2 8 4 4 101 8 8 7 3 262
+2676: 7 6 5 6 9 2 539 61 4 2 1 9
+19462: 5 735 71 3 8
+36876: 83 9 4 76
+1768120275648: 5 52 4 97 6 7 75 648
+4592: 95 48 33
+219223043: 2 54 9 1 77 8 94 320
+2678097: 98 5 4 65 97
+2882547: 44 5 768 8 7 7 5 8 9 54
+154405578: 53 483 13 96 9 37 3
+96526192842: 8 719 4 2 59 6 22 22 2
+713592: 4 8 5 11 6 636
+63693177: 1 399 97 9 6 3 7 3 1 177
+201358: 30 6 65 245 8
+2254767: 49 82 84 73 90 1 2 89 3
+977764227: 48 3 679 4 226
+10015215: 4 930 3 1 8 8 2 6 713 4 7
+26323690657: 367 8 1 7 3 6 904 1 2 58
+61061190261: 7 7 793 183 8 64 61
+1286: 6 96 5 771 3 2
+447: 5 440 2
+785633: 982 8 33
+1137947: 2 316 3 58 6
+958321225: 3 8 6 1 1 14 7 183 366 1
+1800631: 9 9 439 4 2 46 3 6 1 81 1
+449328: 387 5 5 613 176
+6354: 794 6 5 5 687 893
+44233: 78 7 81 5
+5252: 3 2 41 4 3
+3381915: 2 63 720 7 6 849 15
+661467674: 7 3 9 3 86 8 599 6 1 73 1
+6271014: 1 9 97 2 22 340 77 750
+6034: 685 1 81 96 7
+770523445: 80 214 2 7 9 2 5 1 363 5
+25002746133: 31 248 8 43 461 2 1 3
+7024754: 876 578 4 69 7
+289920: 302 8 4 6 5
+994896840: 4 813 3 945 564 2 84 5
+2429887: 90 5 4 459 767 803 9
+9438924: 94 3 1 892 4
+50505: 79 5 2 19 481
+770559050: 377 550 4 50 929
+217464992352: 23 468 12 143 8 8 9 9
+3009273: 29 989 8 999 30 3
+3028939095282: 3 264 5 28 3 3 7 65 2 8 2
+9264583: 3 6 68 8 5 2 6 9 782 7
+9998123: 3 20 9 7 69 21
+522580967: 7 3 53 986 967
+9052256: 60 7 6 9 9 8 23 58 2 914
+495661: 203 5 6 21 81 577 93
+365030675: 77 3 9 119 77 59 25 25
+455763: 3 85 15 4 422 3
+554688: 69 223 16 97 8
+4579: 1 5 21 5 7 1 69 6 1 93
+8698353: 55 2 4 3 3 7 187 7 2 5 3
+626000891: 894 28 698 7 5
+667837: 2 8 212 3 9 8 7 3 4 8 25
+34484: 368 98 74
+2580: 58 2 43
+17105994641: 3 4 418 5 1 7 71 9 4 7 4
+48528: 2 96 61 88 8
+387978366062: 7 917 12 80 583 1 7 7 7
+6170742: 7 565 4 3 899 6
+77987948: 7 33 2 37 7 879 48
+184645: 475 8 76 221 5
+415893: 64 7 9 8 8 88 5 452 49 4
+5727312: 12 45 188 85 1 2 1
+992315: 9 91 38 93 2
+15165: 84 4 1 5 9
+961813017: 57 1 7 5 1 4 5 542 6 4 8 1
+220594828: 5 4 84 5 605 87 40 479
+8752280: 13 698 889 6 80
+755373444668: 645 6 183 3 6 6 9 6 8 65
+15172877612: 436 348 73 4 612
+7385177837: 9 7 7 59 51 7 72 7 9 558
+1568973129: 6 1 3 6 6 6 575 45 2 96 9
+15789456: 26 7 614 76 261
+3038250054: 2 297 1 4 825 5 5 1 4 5 8
+16833: 977 506 47 11 3
+39578980942: 19 789 490 47 2 2
+151692862: 90 3 67 21 7 8 62
+530864308107: 4 1 2 3 6 527 6 7 7 7 81
+52263: 963 9 2 3 260
+864: 9 62 7 8 772 6
+816484929: 6 6 15 56 41 2 1 6 4 4 1
+67327203626: 131 95 23 6 90 3 626
+60: 8 4 28
+36276789519: 4 453 25 615 99 81
+8809691: 2 3 2 193 429 71 80 92
+2052036449131: 569 74 513 5 675 95 6
+8690327: 8 592 97 395 931
+18866: 261 9 8 70 4
+5024917335: 506 906 97 3 113
+2545759132: 6 199 30 2 6 1 1 20 62 7
+5544619441: 92 410 3 6 6 8 41
+12856: 2 837 390 378 8
+4109448: 26 9 80 4 7 3 8 6 4 366
+706240349: 7 5 5 6 8 6 2 3 5 67 4 9
+143401: 1 6 8 3 634 5 707 1 1 42
+3312: 4 19 6 8 3
+200795: 7 2 37 8 386 7 775 65
+597788756: 41 43 8 31 8 9 2 9 4 8 5 9
+43057980: 5 5 3 913 9 7 8 58 6 945
+815894331: 39 2 774 894 329
+5392576857: 5 447 9 3 5 6 22 3 8 619
+279728949679: 113 1 71 6 8 4 3 9 8 7 2 6
+2729370: 71 7 242 692 1 4 6 317
+875: 345 15 8 4 7 41 9 439 7
+14985224: 5 3 317 311 19
+8825568: 702 47 9 97 9 9 5 8 4 6 4
+29595: 9 12 269 3 395 52 91 2
+294474951464: 3 2 718 8 6 3 90 9 1 4 6 4
+3371940: 5 858 131 6
+1563509: 6 26 2 942 567
+424: 38 2 77 271
+14050260: 25 75 14 8 6 8 49 413 4
+120499894680: 11 32 6 49 8 861 9 7 9
+4298688: 28 24 68 136 6
+197892: 77 86 76 9 92
+13400: 55 69 2 262 282 20
+4745778313: 2 1 47 7 10 3 114 16 7 3
+2314: 51 27 62 869 6
+3635936: 4 7 1 9 9 6 6 10 8 6 362 8
+137760: 5 4 26 656 6
+7645820: 2 2 5 3 21 3 4 9 621 63 5
+21660918: 890 566 43 3 95
+722711: 4 68 152 25 5 879 57
+7368978355: 7 368 697 281 355
+2875726825740: 9 3 2 4 9 5 391 424 5 60
+37640889: 8 30 1 5 8 9 305 9 5 5 8 8
+6746614164: 4 5 321 127 332
+4094176223: 9 8 2 3 2 1 544 4 2 1 1 1
+1732: 2 21 9 5 64 9 687 1 27
+2880088: 6 5 93 6 87 813 9 9 9 2 8
+619447169: 879 714 987 46 1
+3197458: 415 30 653 84 1 1 8 11
+2219707: 51 335 3 2 7 811
+234: 7 5 5 9 50
+30353824910: 71 91 870 54 469 10
+1081106212608: 8 959 559 1 50 3 15 4 8
+273013437132: 6 964 6 98 27 9 277 6 4
+1960058: 984 8 1 957 3 74 1 9 6 5
+19648872: 5 14 64 887 2
+19853451: 34 80 10 5 42 32 8
+48399142213: 3 6 3 640 4 2 6 2 8 9 6 14
+107420: 4 27 989 533 9 8 55 3
+34921: 5 92 9 4 4
+8857632: 15 8 580 573 269 28
+190448064: 1 6 4 2 1 7 47 614 2 6 4 3
+15562696212: 593 20 9 9 50 11 2 324
+44634703572: 4 69 838 98 5 95
+2712945205: 677 1 5 2 5 3 57 6 20 2 5
+127609477: 9 6 3 651 99 8 2 218 2
+10118634: 1 862 26 72 90 5 834
+131012422: 80 5 4 8 3 76 9 807 7
+23814144: 3 57 3 4 9 41 4 34 1 96 8
+227387160: 568 6 210 44 9
+6520531715: 333 61 3 548 107 79
+1097244: 545 2 76 768 10 174
+23639802750: 367 4 7 78 2 91 9 41 9 5
+335172916: 56 7 24 53 919
+30: 2 3 7
+3521: 15 336 4 3 1
+319968: 66 8 606
+873380: 1 44 60 93 79
+809700: 8 4 8 702 83 12
+58684: 54 3 1 69 485 96 28
+846269: 4 10 41 516 5 2 22
+51000: 5 136 75
+62599252: 677 94 38 5 983 829
+227717591: 61 56 6 8 3 617 6 167
+19508244: 83 77 72 8 3 204 9 994
+1970830: 39 41 66 5 1
+17424: 6 5 4 32 1 5 9 2 5 24
+52655292: 648 70 89 824 44
+16632105137: 572 5 5 9 4 8 5 8 1 6 97 7
+871: 734 66 71
+176335914: 817 22 1 694 1 6 7 9 3
+24947480114: 8 7 32 1 1 87 3 507 8 2
+606671: 464 75 886 17 8 1
+1383836: 795 1 5 8 347
+2380006962: 8 9 89 7 794 82 141
+2190132: 3 444 578 987 756
+14178: 70 72 2 10 15 9
+1036479406050: 481 4 533 90 495 81 1
+358952220: 177 818 1 9 44 911
+51333269: 47 155 7 337 568 701
+617394060: 348 22 6 3 985
+38196778112: 85 627 16 446 110
+5547327: 616 260 99 9 96
+51231068: 68 894 6 3 9 19 28
+1861484625: 3 548 351 125 77
+3771603234999: 4 7 747 459 234 996
+21430404: 521 8 305 3 388
+26427: 8 4 29 5 8 50 9 5 5 2 4 2
+3371697205: 374 6 330 17 1 4 1 9 1
+11332496952: 1 86 480 8 85 1 76 3 2 7
+73031629: 90 4 5 149 9 2 24 5
+613434: 9 939 6 6 3 4 1 2 741 1 6
+70836214: 271 4 9 19 9 29
+3431889: 442 3 7 77 2
+34170854019: 4 4 961 1 5 6 9 760 1 3 6
+167263: 893 696 81 67 185 9
+273904873: 2 7 3 900 4 44 71
+1365: 25 9 56 4 6 4 2 3 45 5 3
+120350462: 22 547 99 5 62
+32866800: 9 2 7 237 1 174 6 898 1
+28164517: 7 2 520 14 6 517
+108996: 10 1 89 193 93
+313563656: 171 6 272 895 2 5 6 56
+4430029187: 517 9 354 38 952
+59205190: 982 94 488 29 61 22
+8827747002: 13 57 7 42 8 3 7 1 6 1 6 6
+360744024: 9 5 5 433 32 1 16 24
+2473591: 3 762 187 591 1
+29482630: 8 8 67 526 5
+166320055: 313 3 34 6 792 55
+1898094: 31 6 3 49 6
+15911812: 23 8 2 7 8 213 74 937 3
+13734292: 9 254 21 16 286
+177935: 51 7 1 532 6 13 7 5 7 3 8
+128331: 79 274 98 872 97
+537606: 53 7 606
+17655: 5 6 7 81 645
+93780: 525 89 86 8 71 2
+2911393686391: 485 232 273 4 4 6 3 88
+89071041: 7 5 430 838 7 3
+97904: 968 78 45 984
+149112769: 78 48 19 76 9
+968: 9 3 5 3 3 785
+26945100865: 9 4 9 5 455 2 7 85 1 8 5 2
+1744: 27 8 6 8 8
+1011786: 75 79 9 730 6
+326082: 172 87 73 387 7 726 3
+5205200: 34 60 8 98 8 385 65
+65552004: 6 98 687 665 21 2 81
+64161615: 6 4 4 8 2 4 38 2 4 9 7 5
+925274: 299 2 56 4 449 9 301
+152757620568: 6 46 833 3 3 14 61 778
+478023271136: 59 980 759 93 2 8 787
+827867669576: 943 853 78 166 62
+1057: 21 8 41 3 5 7
+3732: 3 9 99 32 2 3 4 9 3 4 1 14
+306435: 7 837 13 2 357 252 3
+95374: 254 3 371 25
+323784: 136 144 5 2 72 7 3 9 8
+79583804468: 3 8 303 66 7 80 4 4 68
+2641410234552: 737 8 8 7 279 2 634 4 4
+4482239: 5 1 3 41 6 54 239
+20539: 4 1 433 48 7 17 6 14 7 4
+1140273895: 35 6 9 5 1 56 46 53 93 2
+138470: 62 4 99 399 17
+13060887: 6 31 58 41 7
+518770: 88 601 5 6 69 8 5 5 95
+1407: 374 883 70 71 9
+350771: 7 350 51 14 54 7 1 8 8 4
+9713019312: 224 83 810 31 432
+33823: 3 38 11 6 6
+322257308: 1 94 8 94 53 2 712 86
+864: 1 3 3 16 9
+137659: 50 87 600 18 41
+47070741: 66 83 8 1 858
+22062: 240 116 5 8 6 1 6 297 2
+1710106191: 134 4 52 1 9 9 3 999 1 9
+1382639297404: 383 1 6 390 8 829 60 4
+77707: 12 58 598 20 3 67
+1678500: 12 31 98 2 45
+349860: 237 1 374 9 9 91 317 7
+77170: 767 6 168 82 8
+994003: 22 954 1 155 5 47
blob - /dev/null
blob + 5b020d98d87433bfd0ea27bbafb88ab2fa205c1d (mode 644)
--- /dev/null
+++ src/day-7.lisp
@@ -0,0 +1,44 @@
+(defpackage #:aoc/day-7
+  (:use #:cl #:aoc/utils)
+  (:export #:day-7))
+(in-package #:aoc/day-7)
+
+(defparameter *operators-task-1* '(+ *))
+(defparameter *operators-task-2* '(+ * combine))
+
+(defun map-operation-combinations (function length operators)
+  (apply #'map-product function (loop for n from 1 below length
+                                      collect operators)))
+
+(defun number-digits (number)
+  (if (zerop number)
+      1
+      (1+ (floor (log number 10)))))
+
+(defun combine (num-1 num-2)
+  (+ (* num-1 (expt 10 (number-digits num-2))) num-2))
+
+(defun calculate (operators numbers)
+  (loop with current = (car numbers)
+        for operator in operators
+        for next in (cdr numbers)
+        do (setf current (funcall operator current next))
+        finally (return current)))
+
+(defun test-value-valid-p (test-value numbers operators)
+  (map-operation-combinations (lambda (&rest operators)
+                                (when (= test-value (calculate operators numbers))
+                                  (return-from test-value-valid-p t)))
+                              (length numbers)
+                              operators)
+  nil)
+
+(defun day-7 (input)
+  (loop for line = (read-line input nil)
+        until (null line)
+        for (test-value . numbers) = (read-number-list line)
+        when (test-value-valid-p test-value numbers *operators-task-1*)
+          sum test-value into task-1
+        when (test-value-valid-p test-value numbers *operators-task-2*)
+          sum test-value into task-2
+        finally (return (values task-1 task-2))))
blob - /dev/null
blob + d987c6c0a59328b0e247ad6d80220232a933cc98 (mode 644)
--- /dev/null
+++ t/day-7.lisp
@@ -0,0 +1,19 @@
+(defpackage #:aoc-test/day-7
+  (:use #:cl #:lisp-unit2)
+  (:import-from #:aoc/day-7))
+(in-package #:aoc-test/day-7)
+
+(define-test test-day-7
+    ()
+  (multiple-value-bind (task-1 task-2)
+      (aoc:run-day 7 "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")
+    (assert= 3749 task-1)
+    (assert= 11387 task-2)))