This commit is contained in:
IamTheFij 2023-12-10 17:57:31 -08:00
parent 5aa7827c02
commit b0e596f34d
3 changed files with 291 additions and 0 deletions

200
d09/input.txt Normal file
View File

@ -0,0 +1,200 @@
14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54
12 27 47 68 92 149 343 943 2562 6504 15418 34500 73686 151710 303812 596709 1157888 2232401 4290657 8227316 15717112
-1 12 52 135 290 585 1167 2315 4511 8546 15696 28027 48918 83927 142167 238407 396167 652136 1062308 1710303 2718418
5 20 41 73 130 249 514 1092 2286 4613 8918 16538 29533 51004 85521 139687 222867 348114 533327 802679 1188356
4 -1 -6 -11 -16 -21 -26 -31 -36 -41 -46 -51 -56 -61 -66 -71 -76 -81 -86 -91 -96
17 19 24 49 132 341 793 1706 3535 7295 15259 32346 68692 144135 295652 589171 1137653 2127907 3859274 6798103 11652852
16 22 25 27 42 114 348 958 2336 5146 10447 19849 35706 61350 101370 161940 251200 379694 560869 811639 1153018
2 4 10 20 37 75 187 530 1502 4019 10054 23656 52851 113180 234277 472014 930586 1801798 3433154 6442636 11906905
8 22 38 54 68 88 164 455 1345 3632 8842 19775 41481 83000 160390 301820 555830 1004266 1781894 3105292 5314322
4 22 63 144 299 591 1136 2153 4054 7588 14053 25590 45573 79109 133662 219815 352184 550498 840859 1257196 1842927
6 13 22 44 98 205 391 721 1407 3076 7361 18108 43709 101432 225212 479319 981804 1943871 3734624 6985356 12754124
8 25 56 106 191 351 684 1418 3041 6523 13701 27970 55542 107713 204827 382958 704758 1276453 2273622 3979178 6837897
11 12 13 13 13 23 80 288 893 2417 5907 13437 29194 61894 130093 273458 575643 1208626 2514941 5154141 10354271
17 21 18 5 -24 -70 -112 -80 186 998 2913 6870 14387 27837 50825 88691 149167 243219 386108 598707 909114
4 12 24 38 63 133 320 746 1594 3118 5652 9618 15533 24015 35788 51686 72656 99760 134176 177198 230235
-3 11 47 113 228 443 886 1848 3942 8401 17640 36304 73200 144877 282435 544969 1046991 2015276 3906455 7646338 15104916
20 26 35 65 158 395 924 2025 4263 8821 18160 37222 75475 150196 291499 549740 1006070 1787060 3084489 5181567 8487060
3 12 39 91 186 366 726 1471 3014 6138 12269 23947 45637 85088 155518 278967 491205 848592 1437243 2384731 3874340
19 37 61 91 127 169 217 271 331 397 469 547 631 721 817 919 1027 1141 1261 1387 1519
14 20 35 59 85 104 126 232 679 2087 5744 14072 31304 64429 124469 228159 400108 675526 1103609 1751681 2710199
9 25 43 63 85 109 135 163 193 225 259 295 333 373 415 459 505 553 603 655 709
2 8 32 85 173 292 434 624 1028 2199 5556 14212 34271 76689 159726 311889 575062 1007218 1683688 2695399 4141761
5 2 -3 -1 39 180 528 1245 2563 4797 8366 13873 22401 36426 62308 116593 241137 537800 1244623 2895947 6644891
4 19 56 134 282 555 1056 1972 3652 6782 12759 24462 47816 94935 190357 383171 770012 1537433 3037698 5920442 11355046
-6 -10 -17 -31 -57 -100 -170 -294 -535 -1008 -1843 -2934 -3047 2731 29473 117660 367128 1009454 2556807 6098291 13872479
9 29 67 137 278 564 1112 2091 3733 6343 10299 16025 23910 34134 46348 59139 69193 70049 50315 -8807 -136866
7 2 -7 -10 20 126 358 753 1303 1914 2365 2284 1168 -1514 -6082 -12201 -18145 -19662 -8311 30882 122628
8 13 32 77 159 284 449 647 903 1382 2635 6080 14852 35199 78650 165236 328106 619947 1121690 1954063 3292637
17 28 41 54 57 37 -1 6 241 1104 3384 8601 19718 42627 89216 183610 374677 760736 1537998 3095953 6208677
28 41 65 111 199 382 795 1736 3782 7951 15955 30668 57093 104426 190420 350385 655208 1246346 2401747 4656396 9016415
15 28 50 96 189 365 695 1341 2671 5466 11260 22862 45117 85971 157913 279875 479679 797128 1287846 2027980 3119885
0 -2 -5 0 44 188 531 1228 2552 5080 10164 20983 44686 96460 206828 434143 885144 1747634 3340889 6191378 11143840
7 12 37 108 272 611 1270 2505 4767 8861 16268 29827 55204 104023 200351 393653 783743 1567254 3121671 6153442 11953216
7 22 51 94 151 222 307 406 519 646 787 942 1111 1294 1491 1702 1927 2166 2419 2686 2967
17 37 68 115 201 387 815 1796 3982 8686 18455 38089 76500 150244 290479 556993 1066793 2052462 3980624 7789694 15359333
12 29 70 158 338 695 1395 2758 5380 10356 19729 37409 70976 135004 256818 485919 908676 1670279 3006360 5287104 9077070
9 11 24 67 171 379 747 1347 2276 3678 5789 9018 14080 22200 35410 56964 91899 147773 235614 371117 576129
12 18 23 23 12 -15 -52 -65 34 437 1555 4282 10558 24471 54242 115563 237085 470195 910144 1750748 3435465
11 13 21 48 117 260 525 998 1849 3420 6390 12078 22981 43691 82394 153226 279847 500695 876499 1500764 2514093
15 27 48 91 194 427 895 1747 3214 5711 10060 17946 32844 61917 119904 237026 474887 958111 1936759 3908828 7860042
28 39 63 115 219 418 800 1556 3098 6286 12837 26019 51791 100682 190981 354344 645878 1162408 2075461 3690474 6552873
9 13 33 79 164 305 529 903 1616 3150 6594 14190 30270 62893 126848 249588 483914 936653 1834918 3677991 7576339
5 9 17 37 82 182 407 906 1967 4103 8187 15728 29550 55489 106425 211394 435528 922958 1988216 4308996 9326957
8 34 80 157 294 551 1038 1950 3634 6717 12348 22646 41504 75980 138614 251149 450308 796492 1386520 2371835 3983954
-6 -3 15 68 189 423 836 1550 2823 5196 9732 18375 34460 63408 113643 197771 334064 548295 875973 1365030 2079015
20 32 56 103 184 310 492 741 1068 1484 2000 2627 3376 4258 5284 6465 7812 9336 11048 12959 15080
13 26 66 145 274 462 712 1014 1335 1606 1706 1443 532 -1430 -4992 -10880 -20031 -33630 -53150 -80395 -117546
12 16 32 84 211 467 921 1657 2774 4386 6622 9626 13557 18589 24911 32727 42256 53732 67404 83536 102407
7 23 66 153 308 576 1051 1919 3517 6424 11651 21115 38810 73491 144388 292746 604513 1254817 2596354 5338361 10913870
17 26 41 68 129 269 563 1125 2131 3902 7175 13854 28828 63941 146002 331965 736249 1577770 3257753 6483824 12461119
20 30 56 107 198 360 650 1161 2032 3458 5700 9095 14066 21132 30918 44165 61740 84646 114032 151203 197630
0 -6 -17 -24 -7 75 298 787 1726 3360 5985 9922 15471 22841 32052 42805 54316 65110 72771 73644 62485
19 34 53 76 116 211 441 957 2045 4291 8996 19126 41284 89472 191784 401649 815839 1602184 3040807 5583720 9938820
4 -1 0 32 146 444 1128 2596 5625 11701 23587 46285 88693 166561 307939 563420 1025614 1866587 3410998 6281670 11693720
15 30 55 94 160 288 556 1126 2329 4840 10036 20736 42755 88199 182458 378976 790214 1651973 3455552 7215569 15003665
0 -5 -13 -17 -2 61 225 579 1262 2484 4576 8143 14529 27108 54533 118225 268384 616097 1394301 3068215 6527388
21 41 82 156 282 487 814 1340 2202 3624 5933 9547 14913 22368 31891 42709 52715 57651 50004 17558 -58460
25 36 41 47 83 223 621 1558 3501 7174 13641 24401 41495 67625 106285 161904 240001 347352 492169 684291 935387
14 37 73 138 275 569 1162 2268 4188 7325 12199 19462 29913 44513 64400 90904 125562 170133 226613 297250 384559
0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90 -95 -100
18 40 76 143 285 599 1287 2755 5795 11916 23947 47149 91316 174867 333008 634137 1212496 2331704 4504734 8713171 16794919
7 18 33 54 79 98 89 14 -185 -590 -1311 -2490 -4305 -6974 -10759 -15970 -22969 -32174 -44063 -59178 -78129
11 11 13 30 90 246 601 1358 2908 5977 11864 22809 42535 77053 136050 235979 408212 721139 1337516 2654482 5625835
24 49 104 203 359 592 945 1506 2428 3942 6384 10335 17167 30723 61753 138430 329304 790167 1854528 4200107 9142735
3 8 19 44 92 189 416 975 2290 5152 10926 21868 41673 76521 137145 242859 429109 761008 1356557 2424916 4327258
4 20 49 98 184 338 616 1124 2064 3808 7007 12742 22724 39550 67022 110536 177548 278124 425581 637226 935200
11 16 24 33 39 42 69 224 774 2282 5804 13188 27575 54344 103004 190924 350224 639347 1160147 2078478 3638934
14 32 69 139 259 456 782 1340 2325 4085 7208 12642 21856 37051 61431 99545 157712 244542 371567 553997 811617
-2 -2 12 56 162 407 968 2229 4989 10851 22911 46913 93091 178982 333565 603160 1059608 1811348 3018110 4910054 7812304
21 29 39 52 77 159 421 1122 2738 6082 12494 24159 44662 79979 140242 242794 417206 712882 1209188 2025725 3324402
-2 -4 -7 -3 25 105 287 688 1607 3760 8715 19675 42907 90433 185245 371578 735253 1443981 2827368 5536788 10868414
5 10 33 103 273 631 1327 2631 5037 9428 17317 31179 54889 94281 157843 257563 409941 637182 968585 1442143 2106369
7 13 26 63 156 367 823 1776 3702 7473 14671 28167 53171 99102 182906 335019 610305 1108441 2012048 3657355 6662686
14 30 47 65 82 93 90 61 -10 -133 -273 -250 470 3160 10482 27516 63310 133124 261575 486927 866810
0 -3 -10 -29 -56 -62 19 306 1001 2449 5251 10461 19907 36686 65894 115664 198598 333693 548876 884279 1396402
13 28 43 58 73 88 103 118 133 148 163 178 193 208 223 238 253 268 283 298 313
25 36 50 71 107 171 279 453 758 1447 3369 8924 24050 62057 150699 344900 749324 1557871 3121525 6061842 11454110
4 13 32 63 113 198 350 627 1126 1999 3472 5867 9627 15344 23790 35951 53064 76657 108592 151111 206885
9 33 68 122 220 417 815 1597 3109 6039 11761 22938 44522 85367 160804 296741 536177 949493 1650546 2821490 4750432
4 10 22 53 129 294 635 1340 2809 5850 12013 24155 47404 90822 170284 313426 568010 1015754 1794632 3133921 5407923
11 9 2 -9 -18 2 132 565 1710 4390 10227 22375 46861 94943 187142 360066 678053 1253455 2282820 4112523 7358424
-10 -6 17 74 181 351 590 893 1240 1592 1887 2036 1919 1381 228 -1777 -4918 -9530 -16003 -24786 -36391
27 50 83 126 179 242 315 398 491 594 707 830 963 1106 1259 1422 1595 1778 1971 2174 2387
2 12 36 73 129 231 462 1031 2387 5377 11435 22772 42516 74726 124175 195764 293392 418066 564990 719323 850243
13 35 70 121 191 287 428 663 1117 2111 4467 10240 24360 58086 135883 308552 677687 1441081 2978636 6020619 11989491
5 29 70 144 289 574 1109 2056 3641 6167 10028 15724 23877 35248 50755 71492 98749 134033 179090 235928 306841
22 42 85 161 280 452 687 995 1386 1870 2457 3157 3980 4936 6035 7287 8702 10290 12061 14025 16192
13 37 85 166 297 522 953 1850 3776 7896 16536 34179 69150 136331 261350 486805 881215 1551535 2660231 4448084 7264079
4 -4 -2 27 99 225 407 634 878 1090 1196 1093 645 -321 -2019 -4708 -8696 -14344 -22070 -32353 -45737
1 7 13 19 25 31 37 43 49 55 61 67 73 79 85 91 97 103 109 115 121
24 44 76 119 172 248 395 719 1410 2794 5490 10865 22178 47110 102809 225145 484564 1011728 2036984 3948547 7375008
18 35 62 94 136 228 491 1202 2901 6522 13521 25942 46310 77162 119920 172672 226248 257721 220032 25630 -479544
9 26 59 111 183 274 392 595 1100 2527 6389 16004 38100 85536 181863 369173 722534 1378883 2598862 4903168 9372460
11 37 83 154 266 459 810 1446 2557 4409 7357 11858 18484 27935 41052 58830 82431 113197 152663 202570 264878
10 14 34 88 214 496 1115 2433 5127 10416 20483 39314 74409 140282 265631 508144 985432 1940186 3877340 7849784 16042512
2 9 36 98 222 456 872 1558 2606 4140 6499 10808 20370 43675 100495 233729 531604 1167609 2468728 5024552 9846664
7 5 9 38 131 359 845 1794 3531 6552 11617 19963 33803 57420 99363 176460 320479 588213 1075805 1939698 3434027
-3 7 26 62 129 254 506 1074 2440 5718 13261 29675 63422 129243 251687 470093 845439 1469545 2477196 4061836 6495575
6 12 18 35 81 177 347 638 1192 2431 5468 12952 30738 71143 159309 345729 730982 1514298 3087518 6213025 12352235
26 43 77 147 288 563 1075 1979 3494 5915 9625 15107 22956 33891 48767 68587 94514 127883 170213 223219 288824
9 23 43 81 159 317 632 1263 2548 5192 10600 21426 42428 81740 152695 276358 484955 826413 1370257 2215143 3498341
9 22 31 37 49 85 167 313 547 980 2070 5262 14361 38229 95754 224554 495597 1036890 2070673 3970211 7344377
11 33 76 159 313 602 1164 2275 4434 8462 15617 27791 48060 82371 144294 267164 532755 1134976 2514665 5633815 12515751
17 21 24 26 27 27 26 24 21 17 12 6 -1 -9 -18 -28 -39 -51 -64 -78 -93
9 12 9 -2 -14 -4 83 367 1102 2829 6724 15391 34645 77424 172118 379775 828729 1782963 3775587 7868555 16158866
1 0 9 29 54 80 125 260 651 1612 3669 7635 14696 26508 45305 74018 116405 177192 262225 378633 535002
6 4 2 8 44 152 408 966 2178 4875 10950 24459 53552 113665 232548 457875 868382 1589710 2816394 4841738 8097652
9 23 62 142 287 534 942 1613 2753 4842 9060 18265 39112 86487 192583 425142 923397 1967249 4106934 8399320 16826385
16 23 46 106 239 514 1078 2257 4752 9989 20734 42209 84215 165294 320895 619043 1189419 2275534 4325877 8150883 15193278
10 9 -1 -17 -16 67 372 1162 2893 6316 12624 23660 42205 72368 120103 193881 305548 471403 713533 1061445 1554038
11 19 23 21 23 65 223 627 1475 3047 5719 9977 16431 25829 39071 57223 81531 113435 154583 206845 272327
11 23 53 129 296 621 1202 2195 3882 6825 12211 22622 43706 87655 180149 373736 772873 1579651 3175453 6263703 12114176
-1 -3 -2 16 86 269 648 1322 2427 4250 7557 14342 29357 63076 137304 295658 622899 1279963 2566028 5025708 9629292
13 13 10 -2 -21 -28 22 209 657 1543 3106 5656 9583 15366 23582 34915 50165 70257 96250 129346 170899
3 15 37 80 173 371 776 1596 3275 6741 13859 28269 56964 113246 222107 429622 818599 1533471 2818173 5071426 8924315
4 9 8 1 -2 28 147 448 1081 2311 4697 9602 20510 46142 107299 250961 577774 1293109 2797954 5844727 11795570
25 42 67 118 231 468 944 1897 3836 7829 16046 32755 66079 130948 253802 479689 882415 1578288 2743689 4636120 7617427
14 36 75 146 277 510 901 1531 2554 4322 7641 14226 27437 53392 102567 192007 348286 611368 1039535 1715562 2754333
-5 6 40 106 218 414 787 1525 2957 5604 10241 17990 30487 50205 81091 129836 208435 339366 565970 972814 1724484
6 3 9 48 161 411 893 1753 3225 5717 10024 17822 32699 62091 120575 234955 451340 843767 1522591 2638460 4373689
15 21 36 70 133 235 386 596 875 1233 1680 2226 2881 3655 4558 5600 6791 8141 9660 11358 13245
23 33 51 89 159 273 443 681 999 1409 1923 2553 3311 4209 5259 6473 7863 9441 11219 13209 15423
15 24 31 39 57 114 292 793 2063 5005 11330 24149 49069 96462 186504 360585 706895 1416642 2904797 6063523 12781761
13 40 81 147 273 548 1165 2496 5196 10338 19585 35433 61644 104182 173343 288434 487439 845780 1510745 2761663 5110755
13 25 37 46 58 109 307 906 2420 5797 12715 26149 51505 98839 186991 350881 653751 1206809 2199553 3945040 6945532
0 -6 -10 -5 22 100 291 714 1576 3210 6120 11033 18958 31252 49693 76560 114720 167722 239898 336471 463670
0 1 -1 -6 -14 -25 -39 -56 -76 -99 -125 -154 -186 -221 -259 -300 -344 -391 -441 -494 -550
2 -1 -2 13 77 265 729 1756 3874 8059 16151 31680 61440 118338 226328 428780 802914 1486164 2728269 5001239 9239357
26 40 56 79 111 151 202 298 576 1440 3917 10420 26345 63267 144973 318149 670134 1356592 2641942 4954485 8955747
3 10 41 120 290 627 1265 2437 4537 8208 14461 24830 41568 67889 108261 168755 257455 384934 564801 814324 1155134
14 33 55 74 95 147 304 722 1700 3773 7845 15370 28589 50831 86886 143458 229706 357881 544067 809034 1179211
15 37 86 181 358 679 1234 2141 3570 5849 9753 17131 32091 63039 125955 249387 481753 901661 1632088 2859401 4858356
2 16 45 105 221 427 766 1290 2060 3146 4627 6591 9135 12365 16396 21352 27366 34580 43145 53221 64977
15 27 37 58 130 331 799 1777 3699 7346 14121 26528 49013 89509 162531 295978 546916 1038429 2043527 4168957 8741395
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
19 41 72 112 161 219 286 362 447 541 644 756 877 1007 1146 1294 1451 1617 1792 1976 2169
-7 -8 8 51 124 235 425 815 1679 3563 7498 15404 30858 60508 116563 220982 412229 755762 1359788 2398249 4143512
7 16 35 74 156 326 660 1274 2333 4060 6745 10754 16538 24642 35714 50514 69923 94952 126751 166618 216008
8 5 8 25 69 165 353 682 1201 1989 3337 6310 14092 34793 86871 209194 479406 1047293 2195266 4447395 8763831
14 24 30 38 64 136 303 670 1505 3504 8355 19825 45742 101543 216699 446731 896635 1768371 3459847 6773799 13357499
11 10 10 21 63 168 388 819 1671 3444 7319 15969 35202 77295 167805 359473 760296 1589178 3283975 6707163 13530974
5 13 33 84 206 469 990 1975 3811 7242 13681 25752 48242 89796 165932 304311 553689 998619 1782769 3144676 5470854
-4 -5 -3 -1 4 32 134 417 1107 2714 6424 14930 34018 75315 160620 328062 639778 1189605 2107043 3549937 5672236
20 24 24 32 70 167 358 685 1200 1970 3084 4662 6866 9913 14090 19771 27436 37692 51296 69180 92478
9 12 30 92 241 534 1042 1850 3057 4776 7134 10272 14345 19522 25986 33934 43577 55140 68862 84996 103809
18 37 57 80 123 235 518 1150 2423 4837 9333 17805 34104 65837 127372 244587 462048 853469 1536497 2693078 4596897
13 33 78 165 321 589 1034 1755 2922 4889 8496 15776 31438 65715 139458 292734 598659 1184777 2264994 4185903 7492303
-2 6 19 36 55 73 86 89 76 40 -27 -134 -291 -509 -800 -1177 -1654 -2246 -2969 -3840 -4877
14 38 73 119 176 244 323 413 514 626 749 883 1028 1184 1351 1529 1718 1918 2129 2351 2584
5 3 5 25 93 256 592 1265 2674 5798 12931 29166 65276 143141 305730 635100 1284275 2532733 4881281 9211319 17047183
-3 -3 1 24 91 245 564 1188 2372 4621 9046 18229 38128 81924 177258 379108 791771 1605344 3155293 6019159 11174049
5 23 50 93 165 294 548 1079 2199 4520 9218 18518 36543 70725 134040 248402 449633 794517 1370546 2309075 3802721
19 32 55 104 206 399 732 1265 2069 3226 4829 6982 9800 13409 17946 23559 30407 38660 48499 60116 73714
-4 -4 4 21 42 57 64 112 399 1461 4506 11976 28473 62302 128168 252247 482409 909717 1714123 3260434 6295019
6 18 36 61 97 157 278 556 1217 2758 6232 13819 29927 63223 130271 262026 515676 996954 1903304 3608201 6824609
9 30 67 121 193 284 395 527 681 858 1059 1285 1537 1816 2123 2459 2825 3222 3651 4113 4609
12 5 -4 -13 -20 -23 -20 -9 12 45 92 155 236 337 460 607 780 981 1212 1475 1772
-2 2 19 65 169 381 789 1545 2910 5345 9703 17637 32485 61250 119140 240063 500670 1074228 2347719 5167713 11338385
21 37 56 78 107 164 318 754 1911 4736 11112 24529 51077 100849 189850 342515 594945 998975 1627192 2579024 3988023
11 24 53 106 185 286 415 643 1237 2921 7353 17977 41563 91037 190695 385672 758695 1458798 2748941 5082492 9222453
10 19 30 37 46 92 260 710 1706 3649 7114 12891 22030 35890 56192 85076 125162 179615 252214 347425 470478
4 7 23 68 180 429 923 1809 3268 5503 8719 13094 18740 25653 33651 42299 50820 57991 62023 60424 49844
26 53 96 163 281 519 1022 2061 4116 8038 15402 29305 56147 109464 217837 440608 898232 1829837 3701403 7408696 14659085
-8 -2 11 42 126 332 786 1733 3678 7660 15727 31694 62280 118734 219074 391077 676172 1134402 1850635 2942218 4568282
10 22 51 116 244 487 967 1971 4141 8853 18975 40365 84757 175160 355704 709274 1388765 2672256 5060462 9449432 17437899
15 32 57 101 204 446 965 2004 4026 7958 15651 30672 59575 113830 212621 386755 683953 1175820 1966813 3205543 5098758
14 18 32 70 155 340 737 1547 3091 5862 10652 18864 33219 59263 108486 204742 397534 789596 1593802 3248596 6646237
17 31 54 84 116 149 198 313 617 1392 3260 7528 16831 36443 77356 164169 355445 794257 1827106 4268652 9961370
3 22 67 145 254 392 575 859 1361 2274 3871 6493 10516 16292 24059 33815 45151 57038 67563 73609 70474
14 27 45 72 128 271 634 1495 3414 7499 15926 32979 67167 135533 272295 545819 1091322 2172971 4300619 8447566 16453590
10 20 44 92 183 345 615 1039 1672 2578 3830 5510 7709 10527 14073 18465 23830 30304 38032 47168 57875
19 38 75 144 283 583 1238 2628 5457 10979 21350 40133 72955 128302 218554 361903 587431 949724 1568577 2728286 5107675
3 12 38 103 238 483 887 1508 2413 3678 5388 7637 10528 14173 18693 24218 30887 38848 48258 59283 72098
20 42 83 151 254 400 597 853 1176 1574 2055 2627 3298 4076 4969 5985 7132 8418 9851 11439 13190
16 21 31 67 177 451 1051 2268 4610 8912 16441 28946 48575 77548 117437 167861 224356 275127 296331 245477 52461
16 15 21 56 163 419 953 1982 3902 7514 14541 28726 58047 119055 245250 503149 1022956 2056693 4087257 8030328 15602435
10 20 35 60 114 243 533 1123 2218 4102 7151 11846 18786 28701 42465 61109 85834 118024 159259 211328 276242
15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95
14 8 -3 -19 -40 -66 -97 -133 -174 -220 -271 -327 -388 -454 -525 -601 -682 -768 -859 -955 -1056
14 16 14 7 -6 -26 -54 -91 -138 -196 -266 -349 -446 -558 -686 -831 -994 -1176 -1378 -1601 -1846
21 40 61 94 169 339 682 1314 2435 4440 8145 15229 29124 56865 112927 226919 458261 922696 1837689 3596360 6882391
2 9 24 47 78 117 164 219 282 353 432 519 614 717 828 947 1074 1209 1352 1503 1662
18 39 70 109 156 208 258 317 489 1140 3213 8752 21709 49119 102739 201258 373196 660621 1123824 1847103 2945818
2 8 24 54 108 212 431 928 2093 4801 10925 24391 53406 115159 245503 518181 1081488 2225438 4500282 8918564 17289020
3 20 60 143 306 607 1132 2024 3574 6442 12108 23686 47265 93967 182930 345431 630357 1111208 1894772 3131545 5027876
12 36 75 136 246 465 899 1713 3144 5514 9243 14862 23026 34527 50307 71471 99300 135264 181035 238500 309774
19 32 45 58 71 84 97 110 123 136 149 162 175 188 201 214 227 240 253 266 279
12 26 40 54 68 82 96 110 124 138 152 166 180 194 208 222 236 250 264 278 292
11 19 30 59 141 351 828 1800 3607 6719 11746 19437 30665 46395 67632 95346 130371 173275 224198 282655 347301
8 6 4 2 0 -2 -4 -6 -8 -10 -12 -14 -16 -18 -20 -22 -24 -26 -28 -30 -32
10 15 15 2 -34 -104 -210 -316 -278 315 2473 8430 22707 53773 116505 235821 452390 832619 1487855 2612966 4563720
12 12 18 49 141 350 747 1415 2476 4207 7371 14029 29364 65506 149083 335340 733288 1548610 3154124 6201669 11794547
6 22 64 152 324 657 1297 2514 4826 9273 17979 35256 69772 138925 277940 559112 1132508 2310987 4744434 9769217 20093966
11 22 42 72 112 161 217 277 337 392 436 462 462 427 347 211 7 -278 -658 -1148 -1764
-7 -12 -21 -42 -81 -141 -224 -319 -331 133 2267 9125 27765 73581 179143 412320 913153 1967454 4149807 8592952 17479171
-9 -6 -1 -3 -17 -36 -21 148 774 2543 6916 16900 38546 83790 175685 357737 710017 1375988 2605465 4820519 8711817
26 36 49 75 137 293 671 1518 3264 6602 12585 22741 39207 64883 103607 160352 241446 354816 510257 719727 997669
14 15 18 32 82 220 533 1148 2234 4001 6696 10596 15998 23206 32515 44192 58454 75443 95198 117624 142458
-2 -2 0 7 29 82 191 417 938 2224 5375 12788 29584 66835 148874 329326 724781 1582691 3413771 7243900 15085694
3 3 9 21 35 41 30 31 223 1205 4559 13907 36743 87415 191740 393857 766059 1422495 2537797 4371865 7302235

88
d09/main.py Normal file
View File

@ -0,0 +1,88 @@
from pathlib import Path
class DiffPyramid:
def __init__(self, starting: list[int]) -> None:
self.seq: list[list[int]] = [starting]
while not all([n == 0 for n in self.seq[-1]]):
self.seq.append(
[
self.seq[-1][i + 1] - self.seq[-1][i]
for i in range(0, len(self.seq[-1]) - 1)
]
)
def prepend(self, n: int) -> None:
for _ in range(n):
lasts = [s[0] for s in self.seq]
nexts: list[int] = []
for last in reversed(lasts):
if not nexts:
nexts.append(last)
else:
nexts.append(last - nexts[-1])
for i, next_num in enumerate(reversed(nexts)):
self.seq[i].insert(0, next_num)
def extend(self, n: int) -> None:
for _ in range(n):
lasts = [s[-1] for s in self.seq]
nexts: list[int] = []
for last in reversed(lasts):
if not nexts:
nexts.append(last)
else:
nexts.append(last + nexts[-1])
for i, next_num in enumerate(reversed(nexts)):
self.seq[i].append(next_num)
def __str__(self) -> str:
return "\n".join(
(" " * i) + " ".join(str(ss) for ss in s) for i, s in enumerate(self.seq)
)
def part1(input: Path) -> int:
total = 0
for line in input.read_text().split("\n"):
if not line:
break
pyramid = DiffPyramid([int(i) for i in line.split()])
pyramid.extend(1)
print(str(pyramid))
print()
total += pyramid.seq[0][-1]
return total
def part2(input: Path) -> int:
total = 0
for line in input.read_text().split("\n"):
if not line:
break
pyramid = DiffPyramid([int(i) for i in line.split()])
pyramid.prepend(1)
print(str(pyramid))
print()
total += pyramid.seq[0][0]
return total
if __name__ == "__main__":
# input = Path("sample.txt")
input = Path("input.txt")
result1 = part1(input)
print("part 1", result1)
result2 = part2(input)
print("part 2", result2)

3
d09/sample.txt Normal file
View File

@ -0,0 +1,3 @@
0 3 6 9 12 15
1 3 6 10 15 21
10 13 16 21 30 45