This commit is contained in:
Maxime Augier 2023-12-26 12:08:41 +01:00
parent 82aa5ccf03
commit 8f64b8fece
5 changed files with 266 additions and 0 deletions

16
day9/Cargo.lock generated Normal file
View File

@ -0,0 +1,16 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "anyhow"
version = "1.0.76"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59d2a3357dde987206219e78ecfbbb6e8dad06cbb65292758d3270e6254f7355"
[[package]]
name = "day9"
version = "0.1.0"
dependencies = [
"anyhow",
]

9
day9/Cargo.toml Normal file
View File

@ -0,0 +1,9 @@
[package]
name = "day9"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1.0.76"

200
day9/input Normal file
View File

@ -0,0 +1,200 @@
-1 -3 -3 6 51 200 589 1453 3159 6239 11421 19656 32139 50322 75917 110887 157423 217905 294845 390810 508323
17 31 45 59 73 87 101 115 129 143 157 171 185 199 213 227 241 255 269 283 297
1 15 42 97 219 479 997 1980 3789 7041 12757 22588 39217 67234 115332 202040 370273 722263 1498412 3245087 7152983
-4 -9 -3 39 161 434 975 1982 3785 6905 12100 20357 32760 50124 72232 96444 115362 113131 59831 -96733 -442709
11 18 19 10 -13 -54 -117 -206 -325 -478 -669 -902 -1181 -1510 -1893 -2334 -2837 -3406 -4045 -4758 -5549
11 22 43 77 138 261 512 998 1877 3368 5761 9427 14828 22527 33198 47636 66767 91658 123527 163753 213886
17 22 26 29 31 32 32 31 29 26 22 17 11 4 -4 -13 -23 -34 -46 -59 -73
3 -2 -10 -28 -57 -68 34 452 1532 3770 7766 14110 23228 35335 50949 73200 115081 219218 507346 1296240 3354429
12 30 74 172 366 719 1345 2480 4623 8809 17148 33895 67529 134640 266881 522869 1007750 1904216 3520118 6359502 11225952
26 49 77 109 144 185 264 504 1242 3250 8109 18814 40716 82940 160456 297023 529274 912263 1526853 2489387 3964152
-1 6 27 85 214 453 840 1416 2254 3533 5682 9624 17155 31498 58077 105561 187233 322744 540317 879471 1394340
2 12 28 50 78 112 152 198 250 308 372 442 518 600 688 782 882 988 1100 1218 1342
17 23 36 74 178 427 974 2117 4417 8887 17317 32889 61415 113905 211990 399546 767887 1510569 3041952 6250086 13024998
15 28 57 106 178 281 448 781 1534 3258 7036 14842 30102 58727 111485 210121 403181 805016 1686411 3673570 8163302
17 32 50 69 87 102 112 115 109 92 62 17 -45 -126 -228 -353 -503 -680 -886 -1123 -1393
21 38 66 111 188 339 659 1327 2639 5040 9152 15795 25998 40997 62217 91235 129721 179354 241710 318119 409488
13 12 7 -7 -35 -82 -153 -253 -387 -560 -777 -1043 -1363 -1742 -2185 -2697 -3283 -3948 -4697 -5535 -6467
-3 -8 -18 -35 -45 -1 211 842 2408 5900 13101 27035 52572 97211 172060 293028 482239 769672 1195024 1809785 2679505
14 25 39 56 83 144 292 623 1299 2609 5143 10243 21068 44942 98266 216346 472268 1011769 2115335 4305034 8522513
11 26 51 91 145 214 327 601 1356 3311 7892 17700 37255 74342 142839 269248 508226 979187 1950442 4026928 8556410
8 -1 -5 5 48 170 482 1237 2967 6716 14458 29925 60358 120232 238926 475782 948238 1881993 3696785 7147713 13550552
15 21 22 33 93 288 784 1866 3979 7767 14106 24127 39225 61050 91476 132544 186375 255049 340446 444045 566677
-7 -4 6 19 42 119 367 1032 2581 5859 12379 24904 48655 93770 180077 345887 663541 1266374 2395840 4486425 8324732
14 31 46 57 73 117 223 421 694 890 607 -824 -3907 -7338 -3694 30134 152150 491297 1311836 3124051 6868873
22 38 55 70 80 82 73 50 10 -50 -133 -242 -380 -550 -755 -998 -1282 -1610 -1985 -2410 -2888
8 15 37 99 251 588 1272 2568 4933 9231 17182 32180 60624 113903 211235 383939 683078 1196179 2087683 3696857 6764433
8 14 22 28 22 -1 -15 76 484 1580 3920 8236 15370 26125 41003 59796 80992 100954 112826 105116 59902
15 24 33 42 51 60 69 78 87 96 105 114 123 132 141 150 159 168 177 186 195
2 17 41 75 135 264 544 1108 2152 3947 6851 11321 17925 27354 40434 58138 81598 112117 151181 200471 261875
14 20 33 52 71 75 32 -121 -499 -1291 -2765 -5226 -8894 -13688 -18960 -23341 -25064 -23446 -22675 -39696 -118863
15 20 30 66 158 355 752 1537 3061 5934 11150 20244 35484 60101 98560 156875 242971 367096 542286 784886 1115130
-1 15 61 160 350 690 1269 2235 3871 6753 12027 21839 39960 72708 130457 230460 402575 701011 1227721 2176962 3916314
26 44 68 112 201 380 742 1491 3062 6338 13044 26481 52937 104485 204678 400318 785786 1552636 3088196 6165526 12296977
19 39 71 127 239 480 993 2031 4031 7789 14895 28780 57132 117274 247775 532835 1152206 2481069 5286017 11103904 22966726
10 9 16 51 147 363 821 1776 3734 7645 15225 29524 56005 104751 195256 367214 705106 1393721 2840590 5937453 12599023
17 24 32 40 43 28 -29 -165 -431 -892 -1626 -2722 -4277 -6392 -9167 -12695 -17055 -22304 -28468 -35532 -43429
13 28 55 96 164 290 538 1037 2044 4060 8027 15633 29739 54912 97996 168574 279063 444036 678175 992022 1384406
23 37 58 101 196 402 828 1677 3354 6714 13582 27772 56987 116217 233582 459998 884569 1658203 3028570 5390095 9353110
15 34 68 130 239 424 737 1275 2211 3834 6598 11180 18547 30032 47419 73037 109863 161634 232968 329494 457991
10 25 56 121 260 542 1082 2073 3828 6811 11612 18782 28383 39038 46261 40110 3170 -87659 -246764 -433665 -437374
2 -1 -9 -16 -11 21 104 301 808 2191 5920 15479 38521 90807 203033 432124 879174 1716951 3230781 5877690 10369933
1 14 51 122 249 473 857 1485 2457 3880 5855 8460 11729 15627 20021 24647 29073 32658 34507 33422 27849
9 30 60 104 176 313 611 1309 2974 6886 15802 35426 77202 163627 338423 686076 1369195 2699014 5265848 10174832 19461160
11 31 77 175 372 744 1404 2510 4273 6965 10927 16577 24418 35046 49158 67560 91175 121051 158369 204451 260768
1 13 31 55 85 121 163 211 265 325 391 463 541 625 715 811 913 1021 1135 1255 1381
-3 -7 -15 -28 -44 -49 9 272 1059 2997 7205 15540 30914 57691 102173 173184 282761 446961 686793 1029284 1508688
28 44 69 107 153 195 232 319 659 1779 4853 12271 28600 62142 127366 248577 465286 839862 1468181 2494139 4129067
11 32 76 161 318 608 1155 2210 4282 8418 16800 33968 69189 140788 283653 561637 1087221 2051588 3769204 6742123 11750544
9 11 14 30 84 214 471 919 1635 2709 4244 6356 9174 12840 17509 23349 30541 39279 49770 62234 76904
4 16 44 98 194 363 666 1214 2191 3878 6682 11191 18309 29579 47882 78811 133166 231204 409512 731656 1304100
7 15 37 92 212 455 929 1830 3504 6553 12024 21763 39120 70448 128458 239902 463065 926575 1912447 4026810 8537152
13 18 26 47 115 309 794 1895 4217 8824 17490 33035 59759 103987 174738 284531 450341 694718 1047082 1545207 2236907
7 5 19 63 154 316 591 1072 1982 3832 7700 15682 31575 61861 117070 213609 376153 640703 1058425 1700393 2663368
26 55 99 168 291 533 1021 1977 3751 6839 11854 19389 29680 41989 53806 60594 58424 55463 105557 390742 1403433
-1 14 50 114 229 453 906 1809 3539 6711 12334 22187 39770 72581 137210 270169 550218 1143634 2395101 5008646 10404490
26 46 78 122 180 264 419 779 1690 3967 9412 21825 48923 105916 222159 453765 908374 1795600 3532170 6961816 13809018
-3 -8 -8 7 47 122 242 417 657 972 1372 1867 2467 3182 4022 4997 6117 7392 8832 10447 12247
11 21 33 55 120 303 738 1642 3375 6610 12767 24992 50148 102542 210452 426953 847083 1634051 3057981 5551621 9788536
8 8 10 14 19 22 17 -6 -62 -172 -364 -674 -1147 -1838 -2813 -4150 -5940 -8288 -11314 -15154 -19961
10 30 73 157 318 618 1166 2162 3976 7281 13271 24012 42996 75995 132344 226819 382318 633600 1032389 1654207 2607362
2 18 43 77 131 237 456 890 1730 3421 7106 15647 35761 82239 185969 408749 869906 1792856 3584349 6965725 13184631
12 37 69 101 136 203 371 770 1647 3521 7567 16483 36341 80423 177018 384937 823525 1728701 3553434 7140003 14001061
20 31 55 113 229 441 836 1620 3241 6601 13424 26891 52712 100889 188559 344544 616666 1083651 1874757 3202413 5416551
13 38 80 156 306 605 1191 2323 4498 8697 16906 33177 65659 130229 256549 497481 942651 1736308 3098084 5342262 8885920
25 43 66 110 212 451 996 2205 4812 10259 21259 42721 83249 157599 290880 526225 939736 1670768 2983713 5391769 9896915
10 34 72 133 232 385 614 974 1614 2884 5500 10779 20956 39595 72106 126380 213554 348918 552976 852673 1282800
7 17 24 40 100 270 655 1407 2733 4903 8258 13218 20290 30076 43281 60721 83331 112173 148444 193484 248784
7 11 21 55 156 402 916 1876 3525 6181 10247 16221 24706 36420 52206 73042 100051 134511 177865 231731 297912
2 0 4 31 110 287 628 1216 2138 3458 5172 7141 8998 10025 8996 3982 -7886 -30700 -70108 -133701 -231458
-1 10 38 96 211 448 947 1973 3979 7682 14152 24914 42063 68392 107533 164111 243911 354058 503210 701764 962075
4 14 52 144 330 674 1286 2371 4342 8082 15542 31056 64091 134703 283849 592078 1212244 2425122 4731692 9003116 16720052
19 39 80 160 322 656 1325 2594 4870 8779 15350 26476 46021 82296 153205 296246 586837 1170231 2314708 4496920 8534364
-5 -13 -22 -17 31 179 543 1346 2978 6058 11483 20444 34384 54868 83330 120657 166565 218717 271528 314597 330701
12 19 33 66 137 272 504 873 1426 2217 3307 4764 6663 9086 12122 15867 20424 25903 32421 40102 49077
-4 -9 -24 -52 -91 -120 -71 221 1107 3294 8196 18679 40608 85913 178351 363794 727766 1424137 2720416 5067030 9200399
2 11 41 107 224 407 671 1031 1502 2099 2837 3731 4796 6047 7499 9167 11066 13211 15617 18299 21272
11 17 20 15 -3 -39 -98 -185 -305 -463 -664 -913 -1215 -1575 -1998 -2489 -3053 -3695 -4420 -5233 -6139
23 36 58 102 190 353 631 1073 1737 2690 4008 5776 8088 11047 14765 19363 24971 31728 39782 49290 60418
21 46 80 119 166 247 438 915 2048 4571 9882 20589 41590 82411 162547 323802 658368 1371037 2913013 6261452 13487443
15 18 28 52 101 209 477 1153 2765 6346 13845 28927 58549 115975 226270 435788 827723 1546386 2833442 5079798 8897053
6 0 -10 -28 -63 -117 -161 -92 344 1700 5132 13031 30304 66886 142544 295934 601537 1201039 2360569 4572565 8731070
13 21 32 65 155 353 721 1333 2305 3886 6648 11816 21779 40820 76097 138898 246181 422395 701560 1129563 1766603
10 1 -12 -29 -50 -75 -104 -137 -174 -215 -260 -309 -362 -419 -480 -545 -614 -687 -764 -845 -930
3 8 14 32 91 244 586 1299 2739 5580 11030 21134 39179 70216 121714 204361 333027 527904 815838 1231868 1820987
8 8 14 42 124 325 782 1776 3864 8139 16769 34115 68982 138996 278904 556160 1100320 2159190 4207598 8160318 15790908
9 2 -15 -43 -73 -69 58 497 1645 4365 10559 24336 54242 117352 246643 504222 1005132 1960479 3756216 7098314 13282104
3 7 11 28 81 203 437 836 1463 2391 3703 5492 7861 10923 14801 19628 25547 32711 41283 51436 63353
28 42 55 77 137 289 615 1234 2336 4270 7725 14053 25793 47465 86713 155886 274156 470282 786139 1281141 2037697
12 36 72 120 180 252 336 432 540 660 792 936 1092 1260 1440 1632 1836 2052 2280 2520 2772
-4 -7 -6 11 57 142 269 430 602 743 788 645 191 -732 -2321 -4816 -8504 -13723 -20866 -30385 -42795
4 16 39 82 165 333 688 1447 3034 6214 12277 23280 42355 74091 124998 204061 323392 498988 751603 1107742 1600785
6 18 47 104 200 346 553 832 1194 1650 2211 2888 3692 4634 5725 6976 8398 10002 11799 13800 16016
11 23 60 141 296 571 1035 1798 3059 5217 9107 16501 31220 61692 126848 269392 584659 1281199 2803918 6077237 12972824
8 24 54 99 155 213 259 274 234 110 -132 -531 -1131 -1981 -3135 -4652 -6596 -9036 -12046 -15705 -20097
10 17 29 41 43 23 -26 -99 -178 -245 -319 -529 -1237 -3227 -7978 -18041 -37542 -72835 -133331 -232531 -389293
4 15 27 38 46 49 45 32 8 -29 -81 -150 -238 -347 -479 -636 -820 -1033 -1277 -1554 -1866
15 14 9 1 4 54 218 604 1370 2728 4938 8293 13127 19978 30308 48833 89939 193489 460439 1127038 2708540
23 26 28 40 84 208 524 1279 2978 6613 14124 29339 59843 120598 240862 477371 939401 1836040 3563940 6866566 13115574
5 23 50 86 142 246 449 831 1507 2633 4412 7100 11012 16528 24099 34253 47601 64843 86774 114290 148394
18 30 55 98 162 252 382 585 926 1518 2541 4264 7070 11484 18204 28135 42426 62510 90147 127470 177034
9 19 29 45 83 177 400 907 2014 4338 9038 18217 35589 67657 126090 233193 435299 835450 1670308 3482785 7491073
-8 4 26 59 114 213 387 671 1096 1678 2404 3215 3986 4503 4437 3315 488 -4904 -13970 -28109 -49054
24 46 71 94 110 114 101 66 4 -90 -221 -394 -614 -886 -1215 -1606 -2064 -2594 -3201 -3890 -4666
14 23 41 88 196 414 823 1578 3019 5935 12138 25632 54879 117014 245398 502686 1002700 1945919 3675423 6762760 12136558
-1 -3 -8 -16 -26 -25 37 306 1154 3448 9097 22178 51287 114445 249174 532695 1121385 2326075 4752942 9562832 18941724
24 44 86 157 264 419 654 1057 1844 3491 6965 14120 28389 56084 109112 211179 412519 824609 1699279 3601094 7765553
2 5 11 17 32 95 297 816 2001 4594 10273 22867 50909 112798 246987 531706 1122380 2320995 4701423 9329781 18141414
22 31 40 45 46 56 120 349 969 2391 5339 11143 22423 44557 88519 175836 346440 669907 1259714 2288325 3997612
21 46 92 178 349 705 1442 2911 5713 10866 20109 36456 65194 115666 204478 361433 641051 1146218 2079084 3853658 7346377
16 18 28 69 177 408 853 1675 3200 6131 12026 24319 50429 106019 223471 468565 972936 1996360 4044216 8084497 15939745
22 42 82 146 247 418 734 1374 2777 5991 13394 30103 66613 143582 300330 609835 1205364 2328444 4416506 8264224 15319951
12 17 18 22 46 125 330 792 1738 3566 7018 13564 26216 51206 101378 202896 408144 819735 1633666 3214242 6219914
21 41 75 138 258 476 846 1435 2323 3603 5381 7776 10920 14958 20048 26361 34081 43405 54543 67718 83166
17 40 76 121 163 193 241 450 1215 3438 8989 21526 47924 100702 202021 390050 728745 1322328 2335942 4024027 6767821
20 36 58 97 177 334 617 1104 1953 3517 6569 12714 25116 49745 97458 187375 352202 646394 1158348 2028175 3473027
19 19 28 62 148 341 749 1566 3113 5887 10618 18334 30434 48769 75731 114350 168399 242507 342280 474430 646912
17 25 48 95 189 387 809 1675 3354 6447 11960 21676 38910 69931 126463 229836 417551 753253 1341376 2348037 4030115
3 2 4 14 46 140 395 1030 2493 5648 12082 24588 47896 89742 162385 284704 485031 804902 1303936 2066082 3207506
2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62
14 29 56 105 197 370 698 1329 2556 4951 9616 18637 35867 68212 127650 234277 420746 738545 1266648 2123169 3480753
20 43 88 176 347 680 1322 2526 4698 8453 14680 24616 39929 62810 96074 143270 208800 298047 417512 574960 779575
19 27 35 43 51 59 67 75 83 91 99 107 115 123 131 139 147 155 163 171 179
14 20 22 20 14 4 -10 -28 -50 -76 -106 -140 -178 -220 -266 -316 -370 -428 -490 -556 -626
2 13 36 84 190 410 818 1503 2592 4337 7318 12828 23520 44410 84344 158051 288918 512637 881888 1472236 2389434
23 32 40 47 53 58 62 65 67 68 68 67 65 62 58 53 47 40 32 23 13
6 -1 -11 -27 -57 -114 -216 -386 -652 -1047 -1609 -2381 -3411 -4752 -6462 -8604 -11246 -14461 -18327 -22927 -28349
-2 3 11 22 38 63 103 166 262 403 603 878 1246 1727 2343 3118 4078 5251 6667 8358 10358
21 42 77 142 261 466 814 1444 2713 5472 11570 24710 51850 105522 207924 398826 752010 1410653 2663676 5108209 9988532
15 27 55 113 217 387 648 1030 1567 2295 3249 4459 5945 7711 9738 11976 14335 16675 18795 20421 21193
-1 -4 3 25 74 190 486 1225 2939 6604 13899 27636 52626 97674 180308 337685 650730 1295535 2649174 5501050 11463057
8 15 16 9 -2 14 153 641 1946 4977 11459 24688 51127 103862 210125 427584 879270 1827593 3829180 8054089 16932910
10 26 56 108 203 384 726 1345 2401 4092 6666 10572 17083 30138 60904 137892 327797 776319 1785361 3955449 8443968
18 37 71 141 293 611 1229 2342 4216 7197 11719 18311 27603 40331 57341 79592 108158 144229 189111 244225 311105
27 52 85 118 151 213 388 850 1918 4153 8552 16981 33176 64988 129129 260579 530141 1075498 2153663 4226064 8091829
1 0 9 41 126 332 792 1737 3535 6736 12123 20769 34100 53964 82706 123249 179181 254848 355453 487161 657210
17 28 53 121 287 655 1418 2920 5745 10838 19663 34403 58207 95489 152284 236666 359233 533664 777353 1112125 1565039
11 11 24 67 180 439 966 1938 3609 6395 11144 19836 37153 73663 151863 317246 658408 1344048 2692505 5304602 10318455
5 0 -11 -23 -17 48 245 700 1640 3493 7079 13953 26994 51381 96161 176698 318399 562246 972825 1649737 2743505
22 48 94 169 293 505 871 1492 2512 4126 6588 10219 15415 22655 32509 45646 62842 84988 113098 148317 191929
16 40 76 124 201 364 741 1580 3350 6974 14358 29533 61008 126452 261784 538507 1096286 2203386 4367442 8536184 16457365
-2 -6 -1 38 154 425 1000 2169 4491 9021 17709 34098 64531 120196 220500 398475 709188 1242460 2141603 3630366 6050848
25 37 49 66 101 194 458 1165 2885 6691 14443 29164 55521 100424 173756 289247 465505 727217 1106533 1644646 2393581
14 32 59 85 110 174 406 1098 2827 6687 14776 31246 64517 131744 267391 538910 1074172 2107606 4055161 7632447 14036016
2 12 29 56 108 219 443 846 1486 2375 3409 4237 4016 964 -8425 -30703 -77606 -169386 -339835 -643642 -1166892
20 22 34 70 144 270 462 734 1100 1574 2170 2902 3784 4830 6054 7470 9092 10934 13010 15334 17920
15 36 63 87 105 125 179 361 909 2357 5802 13372 29071 60385 121501 239971 470579 923855 1823834 3624037 7240347
20 48 100 199 379 697 1273 2384 4649 9353 18969 37948 73858 138964 252352 442711 751898 1239422 1987994 3110301 4757173
21 36 65 116 199 337 587 1070 2009 3774 6933 12308 21035 34627 55039 84734 126749 184760 263145 367044 502415
4 23 60 128 249 454 783 1285 2018 3049 4454 6318 8735 11808 15649 20379 26128 33035 41248 50924 62229
1 11 34 69 111 152 187 221 273 374 557 853 1395 3037 9727 35840 125933 403123 1179753 3198518 8140105
2 9 20 29 33 37 66 199 647 1904 5007 11948 26288 54030 104815 193512 342280 583187 961478 1539591 2402027
-4 -13 -11 28 152 453 1101 2403 4912 9623 18305 34030 61972 110561 193089 329877 551124 900571 1440125 2255600 3463744
11 12 14 10 -13 -79 -235 -576 -1282 -2650 -5066 -8765 -12997 -13726 1975 68465 267913 783402 2002900 4720048 10520939
16 22 38 81 188 433 948 1948 3760 6856 11890 19739 31548 48779 73264 107262 153520 215338 296638 402037 536924
11 23 50 91 147 240 447 967 2254 5264 11879 25586 52504 102867 193086 348528 607165 1024261 1678280 2678213 4172537
16 32 57 88 132 214 385 730 1376 2500 4337 7188 11428 17514 25993 37510 52816 72776 98377 130736 171108
11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51
26 36 43 55 92 194 439 991 2216 4922 10791 23074 47624 94387 179647 329785 588297 1029631 1786430 3101472 5422579
7 10 16 36 85 182 350 616 1011 1570 2332 3340 4641 6286 8330 10832 13855 17466 21736 26740 32557
1 10 24 50 108 236 501 1028 2079 4258 9002 19664 43738 97183 212489 453289 940269 1896334 3724132 7137066 13377112
12 12 10 -1 -33 -89 -128 -2 642 2502 6810 15577 31901 60345 107392 181984 296152 465744 711258 1058787 1541083
12 11 18 46 109 213 346 484 644 1024 2266 5858 14665 33578 70354 136986 252532 449441 787298 1380894 2454013
5 10 21 51 134 341 802 1734 3475 6524 11587 19629 31932 50159 76424 113368 164241 232990 324353 443959 598434
7 17 43 100 204 373 628 999 1558 2528 4547 9189 19860 43226 91490 186364 367045 708091 1361139 2651210 5291384
6 10 25 60 117 185 229 172 -132 -929 -2572 -5428 -9527 -13670 -13536 1910 56714 198328 513971 1155396 2375181
11 22 39 79 184 434 965 1991 3826 6914 11923 20070 34051 60292 113759 227318 468677 969334 1971767 3903409 7488834
9 2 8 42 119 254 462 758 1157 1674 2324 3122 4083 5222 6554 8094 9857 11858 14112 16634 19439
18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78
-5 5 31 87 208 458 953 1920 3814 7519 14674 28199 53157 98184 177858 316568 554693 958217 1633297 2747775 4562190
-1 -2 2 31 123 341 783 1597 3003 5324 9028 14783 23527 36555 55625 83085 122023 176442 251462 353551 490787
23 45 78 133 230 403 710 1253 2217 3935 6979 12283 21388 37216 66643 128144 272031 629329 1521800 3696473 8804246
19 27 32 35 44 80 183 416 863 1617 2755 4298 6159 8113 9958 12504 21420 59683 203477 677255 2088887
-5 -9 -13 -17 -21 -25 -29 -33 -37 -41 -45 -49 -53 -57 -61 -65 -69 -73 -77 -81 -85
11 23 48 99 193 346 573 908 1477 2689 5652 12964 30059 67286 142841 286529 544071 981251 1686576 2770249 4356077
20 31 45 62 82 105 131 160 192 227 265 306 350 397 447 500 556 615 677 742 810
17 38 72 117 167 211 241 275 405 887 2290 5714 13104 27825 56139 111454 225920 479315 1065071 2430630 5558488
8 7 11 28 68 151 319 661 1386 3031 6986 16673 39948 93633 211603 458733 954644 1914327 3718689 7039014 13058612
1 18 57 139 314 682 1420 2815 5303 9514 16323 26907 42808 66002 98974 144799 207229 290786 400861 543819 727110
15 22 37 77 187 459 1066 2332 4881 9952 20042 40149 80023 157955 306636 581265 1068919 1895445 3220722 5204077 7909209
13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93
2 5 25 79 199 439 882 1647 2896 4841 7751 11959 17869 25963 36808 51063 69486 92941 122405 158975 203875
26 47 92 182 343 616 1083 1925 3549 6867 13908 29133 62164 133241 283799 596529 1232972 2503665 4999047 9834027 19104471
13 18 26 37 51 68 88 111 137 166 198 233 271 312 356 403 453 506 562 621 683
13 25 60 141 311 635 1208 2175 3777 6458 11098 19479 35167 65156 122966 234567 449733 863511 1655808 3162145 5996007
-8 2 25 59 103 159 234 342 506 760 1151 1741 2609 3853 5592 7968 11148 15326 20725 27599 36235
5 18 43 82 146 264 492 922 1691 2990 5073 8266 12976 19700 29034 41682 58465 80330 108359 143778 187966
23 35 47 59 71 83 95 107 119 131 143 155 167 179 191 203 215 227 239 251 263
9 26 65 139 268 497 929 1778 3447 6636 12485 22757 40066 68155 112229 179348 278885 423054 627513 912047 1301336
25 36 47 58 69 80 91 102 113 124 135 146 157 168 179 190 201 212 223 234 245
-6 3 35 97 187 295 423 637 1164 2547 5871 13073 27349 53671 99427 175197 295678 480771 756843 1158177 1728623
2 9 16 23 30 37 44 51 58 65 72 79 86 93 100 107 114 121 128 135 142
7 20 35 54 87 165 371 902 2176 5006 10890 22519 44681 85820 160557 293432 523889 911972 1543161 2529040 3997791
8 11 26 73 191 451 983 2044 4182 8593 17826 37071 76383 154391 304412 584664 1095960 2013947 3650778 6577105 11866651
12 28 59 105 166 242 333 439 560 696 847 1013 1194 1390 1601 1827 2068 2324 2595 2881 3182
-5 -6 6 48 142 313 586 981 1505 2140 2826 3438 3756 3427 1918 -1541 -8025 -18994 -36386 -62724 -101238
-5 -2 7 22 43 70 103 142 187 238 295 358 427 502 583 670 763 862 967 1078 1195
14 36 66 114 213 441 961 2083 4352 8666 16428 29736 51615 86295 139539 219025 334786 499712 730118 1046382 1473657
15 27 37 48 76 176 480 1240 2874 6032 11732 21660 38792 68636 121788 219617 407827 789696 1606507 3425449 7559690
13 17 13 -3 -40 -102 -164 -123 310 1846 6098 16480 39771 88673 185787 369538 702699 1284295 2265811 3872783 6433018
3 8 16 23 24 22 50 207 716 2044 5199 12460 29039 66579 150052 330664 708953 1474532 2971982 5806213 11004922

38
day9/src/main.rs Normal file
View File

@ -0,0 +1,38 @@
use std::io::stdin;
use anyhow::Result;
fn main() -> Result<()> {
let mut sums = (0, 0);
for line in stdin().lines() {
let line = line?;
let sequence: Vec<isize> = line.split_whitespace()
.map(str::parse)
.collect::<Result<_,_>>()?;
let preds = predict(&sequence);
sums.0 += preds.0;
sums.1 += preds.1;
}
println!("Sums are {sums:?}");
Ok(())
}
fn predict(s: &[isize]) -> (isize,isize) {
if s.iter().all(|&x| x == 0) {
(0,0)
} else {
let diff = differentiate(s);
let (a,b) = predict(&diff);
(s[0] - a, s[s.len()-1] + b)
}
}
fn differentiate(s: &[isize]) -> Vec<isize> {
s.iter().skip(1).zip(s).map(|(b,a)| b-a).collect()
}

3
day9/test 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