commit d23cd36cd3c107662e3ba682530ec7350c7b9a71 parent eb6b4b70ef991fc68c6610326d52e178e29355b2 Author: Lukas Henkel <lh@entf.net> Date: Sat, 9 Dec 2023 06:15:26 +0100 Day 9 task 1 Diffstat:
A | input/9.txt | | | 200 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | src/day-9.lisp | | | 20 | ++++++++++++++++++++ |
A | t/day-9.lisp | | | 11 | +++++++++++ |
3 files changed, 231 insertions(+), 0 deletions(-)
diff --git a/input/9.txt b/input/9.txt @@ -0,0 +1,200 @@ +13 23 46 97 206 436 919 1924 3971 8016 15765 30243 56875 105604 195153 361805 677725 1289089 2494076 4898137 9713336 +-7 6 44 130 309 672 1404 2864 5712 11113 21082 39112 71386 129156 233312 422773 769075 1400300 2538072 4551386 8029995 +-4 10 38 80 136 206 290 388 500 626 766 920 1088 1270 1466 1676 1900 2138 2390 2656 2936 +6 22 45 75 118 191 327 580 1030 1788 3001 4857 7590 11485 16883 24186 33862 46450 62565 82903 108246 +6 9 3 -13 -36 -44 46 466 1757 5034 12396 27528 56549 109167 200209 351601 594880 974327 1550817 2406489 3650346 +18 32 43 49 49 49 78 219 663 1804 4416 9995 21416 44153 88445 172969 330808 618784 1131569 2022397 3532683 +24 43 71 108 154 209 273 346 428 519 619 728 846 973 1109 1254 1408 1571 1743 1924 2114 +6 15 29 51 84 131 195 279 386 519 681 875 1104 1371 1679 2031 2430 2879 3381 3939 4556 +1 1 -4 -16 -25 8 184 735 2161 5488 12747 27876 58445 118951 236991 464473 897257 1708331 3201934 5899064 10668691 +1 9 26 62 136 276 514 870 1313 1689 1629 525 -2148 -5472 -3189 25675 137017 461857 1281452 3160632 7174504 +24 41 60 75 78 57 -8 -151 -428 -927 -1780 -3177 -5382 -8751 -13752 -20987 -31216 -45383 -64644 -90397 -124314 +12 20 43 87 160 290 567 1227 2801 6357 13868 28744 56571 106105 190574 329346 550026 891050 1404849 2161661 3254074 +26 42 58 71 89 144 318 793 1947 4551 10188 22125 47034 98189 201074 402733 786688 1495856 2766622 4978083 8721479 +9 18 47 102 202 401 817 1671 3349 6520 12388 23262 43870 84366 167046 340850 711513 1501874 3168053 6615410 13586842 +8 14 26 44 79 174 436 1078 2472 5216 10220 18818 32915 55180 89298 140296 214960 322362 474518 687200 980927 +1 3 20 74 204 488 1090 2344 4898 9972 19850 38845 75167 144405 275720 522347 978623 1806489 3275240 5819188 10118814 +20 36 57 83 114 150 191 237 288 344 405 471 542 618 699 785 876 972 1073 1179 1290 +23 34 40 48 79 180 457 1140 2694 6009 12747 26005 51580 100305 192174 363299 677153 1242060 2237506 3952574 6840661 +8 15 24 42 81 153 268 437 685 1100 1991 4320 10764 28175 73069 183472 443566 1032945 2321042 5040898 10596771 +4 10 24 43 74 152 380 1009 2582 6171 13737 28637 56286 104953 186625 317809 520056 819880 1247606 1834511 2607418 +24 44 77 139 255 470 878 1684 3336 6799 14098 29352 60697 123823 248435 489943 950296 1814366 3411995 6321153 11535115 +19 31 59 117 218 374 596 894 1277 1753 2329 3011 3804 4712 5738 6884 8151 9539 11047 12673 14414 +12 33 78 169 336 633 1179 2237 4349 8562 16818 32654 62498 118130 221468 414062 776118 1464511 2787642 5349519 10319560 +6 25 52 88 142 230 367 544 692 670 390 326 2868 15311 55767 164035 420607 978910 2119697 4345211 8551659 +-5 -4 7 47 152 382 828 1619 2929 4984 8069 12535 18806 27386 38866 53931 73367 98068 129043 167423 214468 +0 8 31 73 150 317 705 1559 3271 6413 11804 20724 35592 61916 113439 224826 481282 1084644 2495329 5727341 12944138 +17 25 50 113 247 511 1011 1935 3618 6663 12155 22017 39570 70373 123434 212899 360343 597805 971728 1547985 2418193 +-1 11 52 145 321 619 1086 1777 2755 4091 5864 8161 11077 14715 19186 24609 31111 38827 47900 58481 70729 +1 12 29 57 108 216 468 1052 2323 4888 9711 18239 32550 55524 91038 144186 221525 331348 483985 692133 971216 +12 28 67 137 255 469 892 1760 3544 7173 14463 28900 56998 110548 210183 390779 709232 1254986 2163159 3628955 5919877 +18 26 37 69 159 376 839 1737 3348 6061 10430 17351 28579 48027 84656 158325 310782 625108 1258451 2494889 4827831 +17 29 63 137 288 584 1137 2127 3862 6926 12504 23012 43186 81774 153897 283957 508619 878815 1458833 2319271 3518848 +12 33 71 137 257 478 874 1552 2658 4383 6969 10715 15983 23204 32884 45610 62056 82989 109275 141885 181901 +12 28 49 76 113 182 347 738 1577 3231 6348 12176 23246 44780 87596 174181 351487 717876 1479589 3068493 6386422 +-7 -1 17 47 97 191 384 800 1723 3795 8424 18610 40612 87300 184845 385966 796054 1624768 3288496 6614938 13252176 +16 25 40 60 98 208 521 1283 2901 6037 11855 22634 43133 83390 164214 327891 659530 1331133 2695222 5486076 11249640 +5 1 -3 -7 -11 -15 -19 -23 -27 -31 -35 -39 -43 -47 -51 -55 -59 -63 -67 -71 -75 +-1 0 20 69 167 353 704 1379 2703 5306 10332 19733 36663 65987 114920 193811 317087 504372 781796 1183509 1753415 +2 3 4 19 89 297 788 1809 3805 7642 15088 29780 59043 117084 230178 444302 834916 1516804 2648886 4425710 7048281 +9 23 54 114 223 423 799 1519 2927 5754 11569 23708 49147 102203 211662 434082 877765 1744413 3398952 6482562 12089647 +17 37 61 83 106 162 346 871 2151 4919 10387 20455 37976 67084 113592 185467 293389 451401 677657 995275 1433302 +16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 +13 30 54 86 134 222 399 748 1395 2518 4356 7218 11492 17654 26277 38040 53737 74286 100738 134286 176274 +-4 8 44 123 269 513 902 1517 2514 4228 7431 13939 27982 59219 129286 285925 633337 1397010 3060897 6653815 14337180 +9 10 7 10 49 194 592 1530 3549 7659 15749 31379 61343 118803 229564 444399 862521 1674696 3239547 6213864 11767869 +14 39 81 143 232 378 681 1404 3145 7147 15848 33856 69715 139224 271888 523649 1001864 1913279 3653475 6968245 13235306 +9 23 61 135 270 529 1048 2081 4055 7635 13799 23923 39876 64125 99850 151069 222773 321071 453345 628415 856714 +23 43 70 116 214 439 946 2030 4218 8423 16243 30611 57276 108191 209139 416469 852765 1780599 3750593 7890457 16454556 +9 26 52 87 130 189 296 517 942 1635 2519 3166 2457 -1928 -14235 -41626 -95489 -193128 -359898 -631855 -1058996 +-3 -11 -12 6 65 215 557 1273 2680 5362 10515 20798 42263 88397 188021 399842 837947 1714583 3409322 6577322 12314041 +7 21 39 54 65 88 167 385 875 1831 3519 6288 10581 16946 26047 38675 55759 78377 107767 145338 192681 +16 26 42 78 166 379 875 1971 4256 8752 17132 32004 57270 98569 163813 263825 413088 630614 940942 1375274 1972758 +23 28 37 56 93 165 324 713 1673 3961 9224 21028 46997 103022 221119 463435 946235 1879594 3631143 6825792 12498133 +18 28 45 76 134 248 472 890 1614 2772 4483 6816 9730 12992 16070 17998 17210 11340 -3015 -30572 -77682 +13 31 63 116 202 341 562 919 1554 2854 5764 12333 26585 55822 112481 216682 399619 707961 1209445 1999858 3211620 +9 12 27 65 144 291 558 1064 2069 4083 8026 15510 29459 55604 106049 207437 419000 871647 1851981 3982751 8610147 +1 20 49 87 144 245 442 844 1672 3349 6664 13132 25855 51571 105380 221323 475498 1035585 2265214 4940856 10697077 +20 31 41 43 33 21 43 167 482 1055 1837 2495 2143 -1059 -10473 -31757 -73888 -150481 -281455 -495101 -830611 +24 31 34 39 72 206 598 1537 3515 7346 14369 26776 48101 83887 142511 236088 381290 599801 917980 1365117 1969438 +11 27 57 121 245 471 881 1632 3001 5458 9834 17743 32565 61514 119614 236800 469863 921581 1770135 3312813 6029069 +13 30 46 68 122 255 537 1080 2099 4042 7807 15049 28588 53036 96143 172417 313188 593395 1199071 2589143 5867173 +5 24 53 95 161 279 514 1006 2043 4217 8784 18496 39443 84916 183116 391935 826470 1709219 3460544 6860658 13338822 +14 32 60 103 163 246 395 763 1752 4272 10222 23377 51012 106855 216409 426451 821902 1555956 2904856 5370003 9872717 +23 45 92 172 303 525 918 1640 3015 5736 11310 22969 47411 97926 199712 398503 774023 1460255 2675080 4762506 8251479 +8 13 34 87 201 419 809 1511 2859 5645 11645 24625 52228 109491 225421 455418 905058 1776117 3455960 6690231 12911995 +27 39 62 123 268 576 1178 2283 4221 7523 13080 22476 38702 67666 121264 223324 420543 801679 1529818 2894601 5393968 +14 21 31 34 15 -46 -174 -399 -756 -1285 -2031 -3044 -4379 -6096 -8260 -10941 -14214 -18159 -22861 -28410 -34901 +3 10 25 46 84 190 509 1380 3520 8372 18768 40160 82803 165428 321110 606202 1113353 1989734 3461635 5866538 9693582 +0 9 35 82 158 287 535 1071 2306 5184 11734 26021 55642 113880 222530 415216 740692 1265123 2071629 3254396 4903358 +6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 +7 12 17 22 27 32 37 42 47 52 57 62 67 72 77 82 87 92 97 102 107 +-2 -1 -3 -14 -30 -30 35 260 811 1952 4055 7541 12635 18705 22775 16533 -19228 -124323 -375327 -911356 -1973816 +-5 -5 7 49 160 420 993 2210 4717 9725 19417 37596 70711 129506 231764 407081 705499 1213455 2083311 3587347 6214382 +12 29 61 121 222 371 565 787 1002 1165 1278 1574 2966 7981 22506 58808 140456 309973 640283 1251295 2333286 +12 37 74 123 184 257 342 439 548 669 802 947 1104 1273 1454 1647 1852 2069 2298 2539 2792 +16 40 91 188 358 639 1083 1759 2756 4186 6187 8926 12602 17449 23739 31785 41944 54620 70267 89392 112558 +21 33 45 52 47 22 -23 -46 127 997 3763 10966 27533 62382 130787 257744 482625 865457 1495217 2500592 4063715 +11 27 56 95 149 255 524 1218 2891 6635 14484 30041 59405 112487 204816 359948 612603 1012667 1630208 2561667 3937397 +-4 2 24 86 222 480 948 1815 3485 6773 13239 25787 49822 95600 183048 351463 678422 1315463 2553596 4941421 9496582 +2 -7 -17 -11 54 255 702 1538 2967 5353 9441 16740 30063 54121 95894 164225 267672 409073 574491 713167 703772 +17 36 65 112 195 355 697 1471 3217 7026 15015 31180 62889 123456 236632 444752 824221 1515854 2784479 5133532 9517231 +2 2 7 14 15 -3 -58 -168 -318 -344 376 3631 13862 41085 106404 252178 560806 1190354 2444946 4919463 9804667 +-3 -3 -8 -25 -68 -163 -349 -660 -1056 -1251 -373 3606 14711 40089 91426 186737 352847 629405 1076250 1787593 2919062 +11 38 92 198 404 794 1506 2771 4997 8940 16058 29279 54708 105384 209300 425892 878717 1818165 3738797 7595280 15197340 +4 22 51 91 159 315 707 1644 3706 7906 15942 30629 56703 102388 182507 324665 581418 1053878 1936935 3605539 6780609 +3 4 6 17 57 167 418 920 1831 3366 5806 9507 14909 22545 33050 47170 65771 89848 120534 159109 207009 +9 19 50 107 204 386 770 1609 3391 7016 14173 28216 56206 113507 233663 488650 1028597 2156561 4464100 9068785 18017472 +8 6 4 -5 -24 -32 57 461 1629 4398 10294 22203 45938 93846 192838 401646 846714 1794630 3794236 7948031 16417184 +5 12 24 46 95 206 446 956 2058 4501 9988 22236 48984 105591 221168 448576 880107 1671258 3075720 5495546 9551445 +20 41 76 138 261 526 1100 2303 4744 9603 19180 37882 73873 141668 266008 487407 869812 1510861 2555260 4211826 6774757 +3 6 18 59 158 353 691 1228 2029 3168 4728 6801 9488 12899 17153 22378 28711 36298 45294 55863 68178 +-6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 +18 25 38 71 154 353 801 1736 3534 6719 11936 19902 31431 47806 72110 112722 191158 357953 722542 1506357 3132916 +-4 -4 -2 2 8 16 26 38 52 68 86 106 128 152 178 206 236 268 302 338 376 +1 5 14 35 72 123 185 270 437 858 1970 4843 12061 29744 71949 169761 389261 865947 1869614 3926351 8049450 +10 14 35 85 184 371 715 1326 2366 4060 6707 10691 16492 24697 36011 51268 71442 97658 131203 173537 226304 +17 27 40 52 55 35 -24 -123 -204 -40 1036 4758 15262 41708 103078 236445 510523 1046945 2052488 3866384 7027937 +14 35 59 79 82 52 -8 -26 220 1210 3805 9364 19824 37701 65958 107673 165426 240309 330447 428901 520806 +7 34 81 148 241 379 612 1060 1983 3903 7834 15755 31611 63382 127161 254777 507343 998264 1930775 3657070 6768613 +27 54 90 137 215 373 714 1462 3114 6750 14645 31484 66804 139927 289908 595522 1215293 2467390 4988160 10043503 20131333 +-3 7 31 80 172 338 635 1176 2192 4140 7875 14931 28026 52049 96078 177612 331616 630033 1223598 2429432 4908353 +-5 -10 -7 29 147 444 1105 2468 5126 10089 19059 34931 62734 111379 196797 347340 612693 1078016 1885613 3267121 5590037 +16 21 31 56 120 278 650 1477 3201 6568 12750 23479 41183 69111 111431 173282 260758 380799 540961 749034 1012474 +7 25 67 152 315 620 1190 2282 4450 8854 17788 35515 69512 132243 243593 434111 749225 1254607 2042881 3241882 5024689 +11 36 85 178 342 623 1111 1991 3656 6945 13605 27133 54251 107430 209138 398861 744402 1359335 2428352 4240735 7227845 +8 14 21 44 125 340 799 1644 3069 5426 9551 17553 34466 71378 150931 316441 646326 1276062 2430521 4470290 7956435 +-3 -10 -20 -28 -19 44 243 743 1845 4045 8078 14916 25700 41678 64543 98429 156809 281636 589856 1376300 3325427 +19 41 73 119 186 280 402 556 799 1384 3069 7695 19208 45513 102135 220101 463635 969699 2033581 4286419 9047366 +9 14 36 89 204 442 905 1745 3171 5454 8930 14001 21134 30858 43759 60473 81677 108078 140400 179369 225696 +7 21 58 144 326 688 1382 2676 5023 9171 16382 28935 51303 92815 173441 335978 671180 1368830 2820287 5821759 11971085 +-4 -2 10 54 179 490 1191 2654 5539 11008 21109 39481 72705 132996 243637 449773 839098 1579738 2986320 5629696 10510627 +-5 -9 -15 -23 -33 -45 -59 -75 -93 -113 -135 -159 -185 -213 -243 -275 -309 -345 -383 -423 -465 +11 27 67 140 261 473 889 1762 3591 7271 14295 27016 48977 85317 143261 232702 366883 563187 844043 1237956 1780669 +-3 -5 3 45 164 432 977 2053 4189 8471 17055 34100 67463 131722 253412 479864 893977 1639171 2962687 5293055 9381682 +7 3 -1 -5 -9 -13 -17 -21 -25 -29 -33 -37 -41 -45 -49 -53 -57 -61 -65 -69 -73 +-2 6 20 46 95 183 331 565 916 1420 2118 3056 4285 5861 7845 10303 13306 16930 21256 26370 32363 +4 27 60 94 130 207 458 1210 3150 7596 16947 35457 70626 135812 255313 474469 879864 1639433 3080750 5840376 11141418 +30 40 49 57 68 109 275 817 2306 5932 14031 30970 64562 128262 244604 450863 809062 1424596 2481377 4306931 7488472 +17 38 73 138 269 531 1032 1952 3610 6617 12200 22838 43451 83581 161394 311059 596331 1135260 2144231 4014470 7441293 +19 24 27 37 69 150 339 777 1806 4236 9900 22732 50766 109764 229823 467712 930781 1824952 3553109 6917463 13530779 +15 25 45 88 176 341 638 1175 2166 4017 7462 13776 25105 44969 79013 136103 229889 380985 619947 991264 1558614 +10 26 67 154 322 624 1145 2050 3709 6973 13719 27834 56858 114544 224615 426015 780029 1380065 2366608 3955639 6505607 +0 11 38 96 213 433 816 1440 2418 3951 6446 10736 18447 32565 58264 104064 183396 316659 533862 877952 1408937 +-5 -2 6 19 37 60 88 121 159 202 250 303 361 424 492 565 643 726 814 907 1005 +7 8 10 13 17 22 28 35 43 52 62 73 85 98 112 127 143 160 178 197 217 +18 24 35 50 72 128 296 746 1820 4208 9330 20124 42597 88779 182255 368507 734433 1445718 2819290 5464722 10559977 +19 34 58 88 120 149 179 259 567 1570 4294 10744 24520 51681 101915 190079 338179 577866 953530 1526080 2377504 +12 26 59 124 230 392 667 1240 2611 5979 13985 32066 70789 149681 303251 590116 1106398 2004856 3521559 6012296 10001360 +18 36 75 148 268 448 701 1040 1478 2028 2703 3516 4480 5608 6913 8408 10106 12020 14163 16548 19188 +9 21 48 111 250 530 1056 2010 3741 6985 13383 26632 54914 115835 246209 521028 1089449 2241425 4527818 8970897 17422850 +3 5 11 22 48 116 278 619 1265 2391 4229 7076 11302 17358 25784 37217 52399 72185 97551 129602 169580 +7 4 -3 -14 -29 -48 -71 -98 -129 -164 -203 -246 -293 -344 -399 -458 -521 -588 -659 -734 -813 +10 22 58 129 242 409 672 1150 2117 4123 8173 15982 30327 55520 98029 167277 276652 444764 696988 1067335 1600696 +13 28 56 105 179 279 417 660 1227 2671 6209 14357 32257 70571 151776 323527 686257 1448906 3039526 6321693 13012007 +10 11 15 30 73 187 470 1119 2509 5367 11187 23209 48630 103358 221787 476160 1013788 2126863 4380707 8844928 17502431 +19 36 73 141 246 382 532 686 877 1225 1970 3478 6236 10939 18951 33743 64439 133418 291127 642979 1395586 +6 32 88 200 409 772 1366 2314 3874 6672 12223 23972 49209 102403 210849 424209 830870 1586548 2965002 5448180 9885105 +3 8 19 36 59 88 123 164 211 264 323 388 459 536 619 708 803 904 1011 1124 1243 +0 -3 5 37 113 274 617 1366 3002 6501 13782 28566 58048 116225 230699 456855 907515 1814172 3650322 7372038 14870974 +0 19 59 126 225 365 569 889 1426 2355 3955 6644 11019 17901 28385 43895 66244 97699 141051 199690 277685 +11 26 55 106 200 377 714 1378 2745 5635 11759 24571 50905 104115 210015 417862 820107 1586876 3024411 5671340 10453066 +13 8 13 51 164 430 993 2125 4348 8650 16835 32057 59607 108056 190913 329043 554215 914324 1481065 2361143 3712494 +19 27 31 31 27 19 7 -9 -29 -53 -81 -113 -149 -189 -233 -281 -333 -389 -449 -513 -581 +7 6 11 30 71 142 251 406 615 886 1227 1646 2151 2750 3451 4262 5191 6246 7435 8766 10247 +17 41 83 155 274 458 719 1057 1471 2022 3013 5416 11838 28713 71313 175132 421247 991316 2283386 5148637 11361490 +10 22 44 76 118 170 232 304 386 478 580 692 814 946 1088 1240 1402 1574 1756 1948 2150 +5 7 14 31 63 114 192 330 633 1361 3058 6737 14131 28020 52644 94212 161517 266667 425942 660787 998951 +10 11 18 47 129 315 684 1368 2625 5010 9718 19209 38284 75878 147990 282404 526196 957501 1703666 2968779 5074683 +3 9 15 21 27 33 39 45 51 57 63 69 75 81 87 93 99 105 111 117 123 +1 2 1 -10 -31 -41 24 316 1159 3184 7529 16159 32500 62915 120250 232087 459219 935950 1957040 4164915 8952479 +21 35 48 68 117 248 575 1320 2894 6052 12213 24160 47615 94751 191745 394246 817455 1691793 3461354 6951076 13640477 +10 31 64 115 204 366 661 1208 2266 4411 8929 18707 40223 87797 192183 417052 889342 1853707 3769186 7481203 14530338 +16 29 69 151 300 569 1067 1998 3718 6842 12496 22937 42996 83194 166045 338218 693377 1414688 2854176 5681928 11167621 +4 17 40 86 186 408 901 1986 4331 9261 19263 38750 75167 140633 254725 450201 786413 1381772 2490389 4675201 9181539 +15 31 52 90 166 310 561 967 1585 2481 3730 5416 7632 10480 14071 18525 23971 30547 38400 47686 58570 +10 29 59 104 171 280 496 1007 2292 5456 12864 29305 64113 135074 275765 549603 1077102 2089119 4030930 7764569 14957893 +8 32 74 152 309 623 1225 2333 4322 7887 14438 27021 52323 104736 214077 439448 892940 1778514 3453514 6522974 11980273 +14 25 45 74 113 173 285 510 964 1899 3925 8548 19387 44795 103243 233860 516166 1105745 2297468 4637363 9123483 +-7 -9 2 42 127 279 539 998 1881 3767 8114 18407 42520 97423 218483 477938 1021879 2144437 4435508 9070042 18361211 +2 3 1 -11 -36 -65 -67 23 318 995 2313 4633 8440 14367 23221 36011 53978 78627 111761 155517 212404 +-4 -3 8 41 127 338 813 1789 3643 6957 12625 22029 37320 61850 100812 162157 257870 405701 631462 972017 1479109 +5 4 10 38 120 316 731 1544 3055 5756 10432 18298 31178 51732 83737 132428 204905 310612 461894 674638 969004 +23 40 65 97 145 237 423 782 1451 2698 5062 9587 18208 34465 65055 123550 239469 479962 1000077 2155915 4752833 +6 11 23 41 56 51 6 -92 -234 -369 -379 -49 968 3191 7356 14466 25846 43203 68691 104981 155336 +3 14 40 99 222 471 973 1978 3961 7802 15099 28714 53761 99496 183107 337505 627435 1182642 2265502 4407205 8677732 +15 22 35 65 125 231 408 701 1191 2016 3397 5669 9317 15017 23682 36513 55055 81258 117543 166873 232829 +13 15 22 46 108 238 475 867 1471 2353 3588 5260 7462 10296 13873 18313 23745 30307 38146 47418 58288 +10 14 30 66 131 240 432 807 1586 3191 6341 12204 22828 42593 82667 173150 393155 940161 2281533 5472143 12798414 +8 17 41 86 174 362 760 1556 3084 6025 11925 24374 51469 110698 238396 508039 1066177 2204547 4507512 9156526 18558761 +7 27 55 104 214 474 1061 2317 4899 10051 20061 38980 73694 135454 241983 420293 710359 1169811 1879819 2952360 4539070 +21 31 57 123 271 581 1214 2486 4989 9793 18802 35423 65897 122057 227165 428294 822253 1608595 3194807 6398347 12822067 +5 16 46 115 260 545 1087 2106 4013 7582 14326 27342 53155 105549 213132 433634 880121 1768543 3505104 6852298 13257950 +-8 -18 -36 -63 -95 -121 -122 -71 66 328 756 1389 2259 3385 4766 6373 8140 9954 11644 12969 13605 +5 23 59 123 228 390 628 964 1423 2033 2825 3833 5094 6648 8538 10810 13513 16699 20423 24743 29720 +25 35 56 96 171 325 666 1438 3166 6937 14921 31304 63925 127127 246738 468893 876059 1617167 2966314 5440124 10034771 +29 46 68 106 176 307 563 1077 2101 4089 7857 14922 28250 53929 104915 209369 429033 899314 1915842 4119400 8885928 +7 6 8 13 32 111 374 1095 2820 6588 14353 29809 60022 118697 232793 455988 895961 1768874 3505814 6955337 13758096 +-5 9 36 74 130 239 504 1169 2737 6145 13008 25944 48992 88135 151940 252327 405479 632905 962668 1430790 2082846 +24 38 51 65 89 139 238 416 710 1164 1829 2763 4031 5705 7864 10594 13988 18146 23175 29189 36309 +8 12 25 57 127 259 476 803 1301 2176 4059 8668 20299 49050 117525 274253 619578 1353888 2864529 5877639 11715811 +8 18 41 81 141 223 341 557 1052 2245 4975 10769 22245 43786 82899 153459 283992 538500 1066173 2213033 4758245 +-6 -4 2 5 2 10 94 425 1412 4000 10308 24916 57330 126508 268886 552198 1098715 2123770 3999783 7365629 13323955 +8 5 10 38 115 294 678 1444 2869 5374 9626 16779 29024 50837 91836 173300 342697 704862 1486077 3160259 6687872 +5 -1 -1 24 119 366 897 1923 3806 7224 13521 25407 48292 92721 178645 342640 649699 1211901 2217139 3972202 6965893 +0 14 41 89 173 314 549 976 1886 4071 9452 22273 51311 113943 243619 503542 1011599 1985716 3826524 7268507 13656492 +8 16 35 63 99 154 273 574 1317 3041 6865 15156 32948 70816 150540 316231 656430 1348482 2747675 5564101 11205817 +18 26 34 42 50 58 66 74 82 90 98 106 114 122 130 138 146 154 162 170 178 +26 45 68 95 126 161 200 243 290 341 396 455 518 585 656 731 810 893 980 1071 1166 +13 31 72 145 259 423 646 937 1305 1759 2308 2961 3727 4615 5634 6793 8101 9567 11200 13009 15003 +19 30 43 64 111 222 460 924 1800 3522 7160 15210 33030 71246 149543 302358 587105 1095686 1970177 3423724 5767841 +-1 -3 -8 -26 -72 -155 -241 -171 489 2695 8307 20654 45335 91306 172310 308804 530964 884730 1446663 2362839 3948615 +0 15 52 125 264 529 1024 1911 3424 5883 9708 15433 23720 35373 51352 72787 100992 137479 183972 242421 315016 +10 17 36 94 246 603 1381 2979 6094 11881 22166 39720 68602 114579 185631 292549 449634 675505 994024 1435346 2037102 +2 5 5 2 -4 -13 -25 -40 -58 -79 -103 -130 -160 -193 -229 -268 -310 -355 -403 -454 -508 +-3 3 17 37 73 154 325 644 1205 2230 4291 8742 18461 39023 80447 159683 304029 555693 977741 1661699 2737105 +8 13 26 64 158 359 744 1434 2658 4926 9421 18808 38833 81444 170909 355931 733854 1499311 3042418 6147952 12401826 +-9 -5 8 27 42 39 21 58 378 1509 4475 11051 24144 48600 93345 177119 342852 691330 1455909 3161838 6955781 +6 4 11 39 99 201 354 566 844 1194 1621 2129 2721 3399 4164 5016 5954 6976 8079 9259 10511 +0 -8 -12 4 69 236 599 1312 2617 4909 8893 15917 28592 51831 94450 171471 307246 539478 924146 1541242 2501095 +10 10 16 32 62 110 180 276 402 562 760 1000 1286 1622 2012 2460 2970 3546 4192 4912 5710 diff --git a/src/day-9.lisp b/src/day-9.lisp @@ -0,0 +1,20 @@ +(defpackage #:aoc/day-9 + (:use #:cl #:aoc/utils) + (:export #:day-9)) +(in-package #:aoc/day-9) + +(defun find-next-value (numbers) + (let ((new-sequence (loop with last = (first numbers) + for number in (rest numbers) + collect (- number last) + do (setf last number)))) + (if (every (curry #'= 0) new-sequence) + (first numbers) + (+ (lastcar numbers) + (find-next-value new-sequence))))) + +(defun day-9 (input) + (loop for line = (read-line input nil) + while line + for numbers = (read-number-list line) + sum (find-next-value numbers) fixnum)) diff --git a/t/day-9.lisp b/t/day-9.lisp @@ -0,0 +1,11 @@ +(defpackage #:aoc-test/day-9 + (:use #:cl #:lisp-unit2)) +(in-package #:aoc-test/day-9) + +(define-test test-day-9 + () + (multiple-value-bind (task-1) + (aoc:run-day 9 "0 3 6 9 12 15 +1 3 6 10 15 21 +10 13 16 21 30 45") + (assert= 114 task-1)))