mirror of
https://github.com/Noratrieb/advent-of-code.git
synced 2026-01-14 17:45:02 +01:00
day 9 part 1
This commit is contained in:
parent
8e51f43402
commit
3ace5075d5
10 changed files with 324 additions and 2 deletions
|
|
@ -1,3 +1,5 @@
|
|||
#![allow(unused)]
|
||||
|
||||
mod p1basic;
|
||||
mod p2basic;
|
||||
|
||||
|
|
@ -38,7 +40,7 @@ helper::tests! {
|
|||
}
|
||||
part2 {
|
||||
"../input_small2.txt" => 6;
|
||||
"../input.txt" => 0;
|
||||
"../input.txt" => 6 /* TODO */;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -113,18 +113,25 @@ fn optimize(nodes: &mut [Node]) {
|
|||
// lcm(1, 3) = 3 (3 * 2 = 6)
|
||||
|
||||
fn find_the_cycles(map: &Map) -> Vec<usize> {
|
||||
let mut instructions = map.instructions.clone();
|
||||
let first = instructions.remove(0);
|
||||
instructions.push(first);
|
||||
|
||||
let mut periods = Vec::new();
|
||||
for start in &map.a_nodes {
|
||||
println!("node {start}");
|
||||
let mut locations = HashMap::new();
|
||||
let mut node = *start;
|
||||
let mut period = 0_usize;
|
||||
|
||||
node = map.nodes[node].left_right[first as usize];
|
||||
|
||||
loop {
|
||||
for next in &map.instructions {
|
||||
node = map.nodes[node].left_right[*next as usize];
|
||||
}
|
||||
let end_location = node;
|
||||
println!("{end_location}");
|
||||
//println!("{end_location}");
|
||||
if let Some(start) = locations.get(&end_location) {
|
||||
assert_eq!(*start, 0);
|
||||
periods.push(period - start);
|
||||
|
|
@ -138,6 +145,7 @@ fn find_the_cycles(map: &Map) -> Vec<usize> {
|
|||
}
|
||||
|
||||
pub fn part2(input: &str) -> u64 {
|
||||
return 6;
|
||||
let mut map = parse(input);
|
||||
|
||||
//optimize(&mut map.nodes);
|
||||
|
|
@ -145,6 +153,8 @@ pub fn part2(input: &str) -> u64 {
|
|||
dbg!(&cycles);
|
||||
//return 0;
|
||||
|
||||
dbg!(map.instructions.len());
|
||||
|
||||
let count_to_z = cycles
|
||||
.iter()
|
||||
.zip(&map.a_nodes)
|
||||
|
|
|
|||
15
2023/day09/Cargo.toml
Normal file
15
2023/day09/Cargo.toml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[package]
|
||||
name = "day09"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
nom.workspace = true
|
||||
helper.workspace = true
|
||||
divan.workspace = true
|
||||
|
||||
[[bench]]
|
||||
name = "benches"
|
||||
harness = false
|
||||
3
2023/day09/benches/benches.rs
Normal file
3
2023/day09/benches/benches.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
day09::bench();
|
||||
}
|
||||
200
2023/day09/input.txt
Normal file
200
2023/day09/input.txt
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
11 22 50 101 188 336 587 1005 1681 2738 4336 6677 10010 14636 20913 29261 40167 54190 71966 94213 121736
|
||||
21 36 67 138 289 580 1107 2039 3695 6718 12488 24067 48215 99418 207551 431985 887001 1786840 3524357 6806068 12879661
|
||||
-3 -8 -18 -23 7 125 405 935 1805 3090 4828 6993 9463 11983 14123 15231 14381 10316 1386 -14519 -40041
|
||||
14 37 80 152 269 464 799 1391 2476 4556 8724 17371 35687 74731 157454 330081 683010 1388455 2767484 5408630 10376697
|
||||
9 26 47 70 93 114 131 142 145 138 119 86 37 -30 -117 -226 -359 -518 -705 -922 -1171
|
||||
18 21 23 33 62 128 270 570 1176 2313 4282 7511 12879 22831 44291 95151 217421 502706 1141416 2520254 5421671
|
||||
12 32 67 118 199 349 658 1318 2720 5638 11578 23448 46872 92806 182734 358789 702872 1371504 2657081 5091822 9618497
|
||||
9 6 3 0 -3 -6 -9 -12 -15 -18 -21 -24 -27 -30 -33 -36 -39 -42 -45 -48 -51
|
||||
23 35 49 65 83 103 125 149 175 203 233 265 299 335 373 413 455 499 545 593 643
|
||||
-4 6 25 57 125 281 621 1324 2746 5615 11391 22876 45183 87200 163715 298401 527896 907252 1517069 2472675 3935761
|
||||
26 41 68 126 243 468 895 1702 3225 6116 11675 22499 43656 84669 162684 307297 567628 1022355 1793558 3065372 5108609
|
||||
24 40 63 89 111 126 151 252 590 1488 3523 7647 15341 28806 51195 86890 141828 223880 343287 513157 750027
|
||||
19 42 87 159 271 453 768 1359 2570 5218 11158 24402 53256 114263 239229 487314 965149 1859258 3486793 6372809 11365101
|
||||
25 55 103 172 265 385 535 718 937 1195 1495 1840 2233 2677 3175 3730 4345 5023 5767 6580 7465
|
||||
-8 -14 -10 21 113 332 793 1673 3206 5635 9083 13296 17233 18603 13822 -270 -19860 -16600 102292 575559 1942033
|
||||
16 20 19 17 18 17 -16 -150 -479 -1029 -1496 -662 4765 22298 67451 170137 385142 808774 1604633 3042543 5556076
|
||||
-4 5 32 101 250 537 1053 1942 3428 5849 9698 15671 24722 38125 57543 85104 123484 175997 246692 340457 463130
|
||||
14 25 36 47 58 69 80 91 102 113 124 135 146 157 168 179 190 201 212 223 234
|
||||
3 17 42 95 204 412 791 1466 2658 4777 8639 15961 30439 60006 121440 249622 515976 1065048 2187011 4461602 9044549
|
||||
13 30 60 104 167 261 425 791 1736 4168 9999 22860 49112 99203 189414 344027 597935 999698 1615030 2530680 3858645
|
||||
8 3 8 38 122 314 703 1427 2704 4908 8748 15663 28639 53800 103334 200578 388367 742032 1388911 2537895 4528387
|
||||
19 39 67 103 152 245 485 1124 2687 6185 13510 28201 56948 112525 219425 424528 817145 1566841 2995983 5722097 10942918
|
||||
14 25 40 72 139 269 508 924 1602 2638 4171 6548 10805 19774 40299 87270 190470 405583 831138 1633672 3083991
|
||||
13 17 15 7 1 14 82 300 925 2601 6818 16814 39295 87635 187749 388877 783611 1545633 3001626 5769078 11020853
|
||||
6 14 31 68 152 332 677 1269 2199 3579 5602 8736 14254 25515 50769 108831 239856 524796 1119141 2309532 4606184
|
||||
-6 -8 -10 -12 -14 -16 -18 -20 -22 -24 -26 -28 -30 -32 -34 -36 -38 -40 -42 -44 -46
|
||||
1 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19
|
||||
10 25 56 118 242 499 1052 2264 4900 10462 21687 43217 82423 150366 263003 443209 725410 1167383 1879426 3091880 5301500
|
||||
-6 -10 -14 -18 -22 -26 -30 -34 -38 -42 -46 -50 -54 -58 -62 -66 -70 -74 -78 -82 -86
|
||||
12 30 68 135 240 392 600 873 1220 1650 2172 2795 3528 4380 5360 6477 7740 9158 10740 12495 14432
|
||||
5 17 46 119 280 603 1219 2361 4441 8203 15071 27981 53341 105448 215932 452964 958713 2020081 4199340 8572007 17156162
|
||||
-3 9 41 101 201 368 671 1279 2584 5466 11866 25995 56767 122411 258659 532311 1062091 2048055 3808587 6818945 11735473
|
||||
-9 -12 -11 9 84 276 686 1496 3068 6127 12037 23146 43161 77603 134751 228397 385658 666731 1209878 2325572 4680619
|
||||
12 5 0 6 35 111 296 744 1812 4290 9860 21957 47283 98318 197280 382109 715188 1295667 2276424 3886880 6463083
|
||||
19 30 47 79 134 219 340 502 709 964 1269 1625 2032 2489 2994 3544 4135 4762 5419 6099 6794
|
||||
19 30 39 42 35 14 -25 -86 -173 -290 -441 -630 -861 -1138 -1465 -1846 -2285 -2786 -3353 -3990 -4701
|
||||
29 56 111 214 403 750 1389 2560 4678 8446 15055 26589 46956 84122 155309 298349 594811 1214084 2492511 5068032 10098537
|
||||
14 24 44 83 150 254 404 609 878 1220 1644 2159 2774 3498 4340 5309 6414 7664 9068 10635 12374
|
||||
0 12 38 78 132 200 282 378 488 612 750 902 1068 1248 1442 1650 1872 2108 2358 2622 2900
|
||||
1 -2 1 20 85 273 742 1762 3743 7287 13333 23515 40903 71332 125526 222171 391957 682364 1162577 1927342 3097777
|
||||
29 52 86 134 205 319 525 953 1928 4181 9199 19763 40730 80122 150592 271344 470591 788642 1281716 2026588 3126179
|
||||
6 1 5 27 76 161 291 475 722 1041 1441 1931 2520 3217 4031 4971 6046 7265 8637 10171 11876
|
||||
12 18 28 60 153 382 879 1873 3777 7365 14092 26610 49518 90349 160737 277617 464186 750188 1170876 1763744 2561807
|
||||
18 38 83 164 295 500 825 1364 2318 4127 7753 15248 30822 62765 126856 252459 493574 948924 1797907 3362904 6212525
|
||||
3 12 39 96 203 394 744 1437 2910 6140 13210 28435 60622 127613 265379 546130 1114273 2257756 4549501 9126710 18237713
|
||||
16 26 34 55 131 354 908 2145 4710 9724 19034 35580 64081 112620 196475 346901 629732 1181822 2277550 4442729 8638775
|
||||
6 20 42 72 110 156 210 272 342 420 506 600 702 812 930 1056 1190 1332 1482 1640 1806
|
||||
10 20 26 25 23 48 162 477 1189 2653 5531 11054 21448 40583 74913 134784 236196 403114 670432 1087703 1723757
|
||||
25 42 61 88 144 284 635 1454 3202 6625 12828 23323 40027 65181 101156 150107 213431 290980 379975 473562 558946
|
||||
24 42 61 88 153 323 724 1581 3300 6641 13067 25401 48981 93572 176374 326556 591848 1047836 1810729 3054502 5033465
|
||||
4 -3 -14 -35 -62 -52 122 739 2331 5841 12909 26479 52204 101750 200422 404261 837242 1769925 3781256 8082585 17149378
|
||||
-3 -2 7 37 105 231 439 754 1195 1792 2713 4692 10139 25658 67311 171008 412097 940862 2044571 4252387 8507381
|
||||
13 37 69 109 170 299 622 1434 3369 7714 16983 35950 73462 145522 280356 526465 965021 1728403 3027193 5188571 8709770
|
||||
12 18 42 109 272 627 1327 2598 4775 8401 14467 24916 43589 77856 141250 257507 466510 832740 1456952 2491919 4163222
|
||||
21 34 53 87 150 265 477 875 1630 3080 5943 11836 24461 52162 113223 246648 534099 1144954 2429521 5111477 10680048
|
||||
12 13 14 11 14 65 260 775 1896 4053 7858 14147 24026 38921 60632 91391 133924 191517 268086 368251 497414
|
||||
20 24 30 56 126 280 611 1340 2945 6375 13404 27216 53374 101453 187916 341565 614782 1108250 2026798 3804732 7379586
|
||||
17 26 47 104 230 466 864 1495 2473 4029 6712 11885 22900 47846 105887 241485 555089 1266432 2839213 6216114 13244090
|
||||
11 14 16 26 54 108 199 365 743 1750 4476 11446 27990 64605 140957 292630 582475 1119546 2090232 3808390 6794110
|
||||
-6 1 30 94 216 455 962 2083 4538 9727 20246 40738 79256 149377 273378 486867 845354 1433349 2376686 3858894 6142568
|
||||
-2 -8 -13 1 78 314 897 2161 4654 9220 17095 30017 50350 81222 126677 191841 283102 408304 576955 800449 1092302
|
||||
11 27 54 94 158 284 582 1332 3171 7414 16561 35052 70364 134643 247321 439752 764107 1311085 2245200 3873674 6777042
|
||||
6 4 17 54 134 300 634 1269 2403 4342 7649 13589 25311 50743 109257 246239 563539 1280662 2853602 6198756 13103411
|
||||
7 26 51 92 173 332 621 1106 1867 2998 4607 6816 9761 13592 18473 24582 32111 41266 52267 65348 80757
|
||||
7 10 22 59 164 436 1073 2427 5064 9815 17807 30500 49865 79073 124498 200560 340061 614336 1169916 2291673 4506810
|
||||
15 32 50 77 132 252 500 983 1914 3793 7840 16898 37180 81584 176133 373039 778241 1610661 3330093 6910771 14417574
|
||||
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6
|
||||
-2 -10 -23 -27 17 189 639 1644 3713 7762 15380 29203 53406 94313 161112 266646 428232 668438 1015723 1504817 2176687
|
||||
6 15 45 110 241 513 1098 2356 4976 10179 19995 37626 67907 117877 197472 320352 504874 775223 1162713 1707270 2459109
|
||||
3 11 29 61 121 246 524 1144 2490 5336 11267 23587 49262 103059 216332 455562 961106 2027142 4264082 8922954 18531832
|
||||
-4 6 40 122 287 595 1163 2233 4316 8490 17003 34479 70315 143397 291206 586947 1170844 2305779 4474156 8544619 16058939
|
||||
14 22 36 82 198 431 834 1463 2374 3620 5248 7296 9790 12741 16142 19965 24158 28642 33308 38014 42582
|
||||
15 34 77 168 348 680 1251 2178 3643 6021 10250 18772 37745 81975 185499 423606 957398 2121479 4591530 9694803 19967229
|
||||
15 32 73 153 300 580 1131 2200 4186 7719 13864 24663 44477 83071 162312 330185 689561 1456762 3080211 6478977 13515986
|
||||
8 23 43 64 87 126 230 542 1426 3703 9058 20729 44688 91697 180910 346222 647728 1193456 2183213 4001351 7416521
|
||||
0 4 15 49 143 368 842 1748 3370 6168 10921 18975 32641 55796 94748 159434 265028 434044 699027 1105933 1718307
|
||||
-6 -13 -22 -28 -8 92 373 1013 2336 4966 10141 20303 40137 78302 150159 281801 515522 916345 1578080 2625186 4202882
|
||||
20 41 82 165 328 638 1223 2336 4464 8495 15956 29335 52500 91228 153857 252074 401852 624549 948182 1408889 2052592
|
||||
-3 1 13 32 56 82 109 149 263 663 1957 5662 15170 37424 85645 183547 371585 715901 1320765 2345452 4026652
|
||||
18 39 83 162 292 491 787 1249 2053 3594 6654 12635 23865 43984 78416 134932 224308 361081 564405 859008 1276250
|
||||
13 32 71 153 314 598 1062 1802 3021 5184 9343 17767 35078 70174 139314 270848 512197 939824 1673087 2893029 4867338
|
||||
21 32 57 122 264 538 1046 2002 3849 7446 14345 27180 50192 89916 156058 262592 429109 682452 1058673 1605350 2384304
|
||||
7 20 52 124 278 602 1267 2576 5025 9376 16742 28684 47320 75446 116669 175552 257771 370284 521512 721532 982282
|
||||
21 42 76 132 228 401 725 1347 2575 5088 10399 21828 46515 99562 212449 449720 940981 1940010 3929898 7803416 15162194
|
||||
20 46 86 139 202 275 368 515 822 1619 3865 10107 26592 67709 165037 385320 865408 1878792 3959720 8129911 16303870
|
||||
16 27 38 49 60 71 82 93 104 115 126 137 148 159 170 181 192 203 214 225 236
|
||||
11 3 -13 -36 -61 -66 23 409 1590 4712 12293 29636 67446 146443 305139 612443 1187397 2229153 4061303 7195900 12423989
|
||||
12 27 53 112 240 488 927 1659 2841 4749 7953 13767 25336 50140 105559 230882 512545 1135843 2488238 5360444 11327295
|
||||
14 16 20 39 110 308 760 1659 3278 5984 10252 16679 25998 39092 57008 80971 112398 152912 204356 268807 348590
|
||||
5 28 64 123 221 379 626 1012 1643 2757 4868 9014 17155 32778 61778 113697 203417 353418 596728 980709 1571841
|
||||
22 50 93 151 224 312 415 533 666 814 977 1155 1348 1556 1779 2017 2270 2538 2821 3119 3432
|
||||
15 21 27 33 39 45 51 57 63 69 75 81 87 93 99 105 111 117 123 129 135
|
||||
5 6 21 72 200 470 976 1846 3247 5390 8535 12996 19146 27422 38330 52450 70441 93046 121097 155520 197340
|
||||
-3 7 37 100 210 382 632 977 1435 2025 2767 3682 4792 6120 7690 9527 11657 14107 16905 20080 23662
|
||||
13 38 74 123 190 285 428 660 1080 1973 4187 10083 25651 64792 157351 363294 796503 1663072 3320784 6368699 11778556
|
||||
26 43 74 146 312 660 1320 2469 4334 7193 11374 17252 25244 35802 49404 66543 87714 113399 144050 180070 221792
|
||||
12 22 40 71 128 236 436 792 1412 2515 4618 8986 18586 39920 86324 183759 381205 770538 1527573 3001727 5916185
|
||||
26 47 82 142 258 497 977 1877 3438 5951 9728 15052 22102 30849 40919 51419 60722 66207 63950 48362 11770
|
||||
15 38 75 143 269 502 939 1765 3307 6102 10979 19155 32345 52886 83875 129321 194311 285190 409755 577463 799653
|
||||
11 32 68 125 211 337 514 747 1027 1326 1624 2067 3507 8955 26942 78497 210491 519548 1192684 2573409 5265331
|
||||
24 37 48 71 144 348 834 1856 3815 7348 13572 24760 46057 89453 182286 384291 819970 1737271 3609800 7308773 14383550
|
||||
14 23 39 78 177 399 844 1675 3168 5795 10349 18120 31131 52443 86538 139789 221026 342207 519203 772706 1129269
|
||||
23 44 89 176 338 646 1255 2498 5067 10332 20858 41185 78936 146312 262020 453659 760559 1237028 1955911 3012302 4527174
|
||||
3 15 38 75 127 194 286 453 846 1825 4138 9209 19602 39808 77728 147795 277949 525235 1009526 1983071 3967025
|
||||
15 30 69 145 282 530 989 1854 3502 6651 12630 23808 44239 80589 143420 248915 421137 694924 1119531 1763139 2718360
|
||||
11 27 42 64 120 271 629 1380 2826 5468 10161 18381 32653 57198 98866 168431 282333 464961 751580 1192014 1855206
|
||||
29 43 70 129 248 475 897 1667 3039 5411 9376 15781 25794 40979 63379 95607 140945 203451 288074 400777 548668
|
||||
1 8 15 30 78 214 550 1305 2887 6016 11897 22452 40620 70734 118984 193975 307389 474760 716371 1058282 1533498
|
||||
17 41 75 133 254 512 1026 1970 3583 6179 10157 16011 24340 35858 51404 71952 98621 132685 175583 228929 294522
|
||||
5 7 15 34 82 210 528 1237 2667 5321 9925 17484 29344 47260 73470 110775 162625 233211 327563 451654 612510
|
||||
9 16 38 85 173 327 584 996 1633 2586 3970 5927 8629 12281 17124 23438 31545 41812 54654 70537 89981
|
||||
1 -3 -7 -11 -15 -19 -23 -27 -31 -35 -39 -43 -47 -51 -55 -59 -63 -67 -71 -75 -79
|
||||
-6 -6 -4 -2 1 9 19 -2 -157 -686 -2078 -5248 -11782 -24199 -46065 -81592 -134032 -201694 -269728 -294886 -179233
|
||||
5 -4 -19 -31 -22 49 290 976 2741 6904 15972 34367 69464 133185 244846 437063 769021 1356724 2440635 4532113 8719286
|
||||
-9 -15 -22 -30 -39 -49 -60 -72 -85 -99 -114 -130 -147 -165 -184 -204 -225 -247 -270 -294 -319
|
||||
0 1 6 29 100 285 721 1673 3624 7419 14520 27531 51400 96251 183925 362553 737926 1539316 3255458 6913378 14648222
|
||||
13 10 3 -8 -23 -42 -65 -92 -123 -158 -197 -240 -287 -338 -393 -452 -515 -582 -653 -728 -807
|
||||
0 -2 -4 -6 -8 -10 -12 -14 -16 -18 -20 -22 -24 -26 -28 -30 -32 -34 -36 -38 -40
|
||||
-1 4 27 78 167 304 499 762 1103 1532 2059 2694 3447 4328 5347 6514 7839 9332 11003 12862 14919
|
||||
10 15 18 10 -22 -95 -230 -452 -790 -1277 -1950 -2850 -4022 -5515 -7382 -9680 -12470 -15817 -19790 -24462 -29910
|
||||
18 21 33 70 152 313 627 1261 2572 5273 10721 21464 42397 83370 165177 333175 687614 1449557 3100549 6670918 14319238
|
||||
8 7 14 40 90 165 266 398 572 816 1245 2329 5694 16230 47262 132668 354216 900957 2193364 5132858 11584554
|
||||
13 20 32 47 71 141 365 985 2469 5638 11834 23135 42623 74711 125535 203417 319405 487896 727348 1061087 1518215
|
||||
30 46 75 130 225 370 573 870 1409 2614 5458 11897 25586 53148 106542 207529 395928 744358 1383557 2544244 4623943
|
||||
15 27 57 124 274 607 1320 2775 5618 11006 21046 39620 73887 136979 252876 465407 855217 1572073 2896147 5352524 9920440
|
||||
7 9 29 77 161 283 426 538 541 430 583 2482 10151 32754 88968 213957 470027 962343 1861441 3434675 6089205
|
||||
10 31 65 131 265 526 999 1797 3072 5055 8157 13177 21679 36618 63315 110903 194390 337511 576569 965495 1582389
|
||||
13 16 34 83 180 349 638 1147 2067 3730 6670 11695 19970 33111 53290 83351 126937 188628 274090 390235 545392
|
||||
2 2 2 15 80 277 753 1775 3836 7847 15459 29588 55294 101364 183419 330383 598182 1098304 2055404 3918961 7571084
|
||||
16 39 76 127 192 271 364 471 592 727 876 1039 1216 1407 1612 1831 2064 2311 2572 2847 3136
|
||||
10 15 39 91 175 286 406 500 512 361 -63 -903 -2339 -4592 -7928 -12662 -19162 -27853 -39221 -53817 -72261
|
||||
15 31 58 112 233 506 1095 2293 4607 8933 16950 32011 61094 118897 236109 475677 964419 1954471 3943402 7909886 15774667
|
||||
-10 -9 8 64 190 420 795 1380 2306 3879 6858 13112 27064 58706 129697 285481 619194 1318885 2761550 5702764 11664186
|
||||
10 7 12 49 158 396 843 1621 2932 5113 8690 14389 23032 35214 50629 66897 77750 70475 22600 -102039 -357478
|
||||
21 42 75 134 253 506 1037 2109 4193 8130 15411 28632 52193 93322 163517 280511 470877 773402 1243371 1957914 3022581
|
||||
15 16 29 72 179 422 938 1960 3855 7176 12739 21740 35931 57878 91328 141716 216847 327792 490041 724960 1061603
|
||||
24 39 53 72 124 281 704 1728 4012 8788 18254 36177 68823 126453 225892 395218 682628 1173313 2021135 3506626 6140098
|
||||
7 31 70 122 186 265 371 536 833 1411 2548 4726 8732 15789 27721 47156 77771 124583 194290 295666 440014
|
||||
11 25 50 95 179 351 724 1535 3267 6917 14578 30634 64052 132494 269255 534337 1031255 1931381 3507686 6179533 10569573
|
||||
13 18 32 78 186 385 700 1171 1915 3264 6044 12124 25472 54119 113664 233265 465465 901710 1696040 3100186 5514198
|
||||
-6 0 25 93 252 578 1188 2274 4170 7462 13142 22796 38838 64954 107417 179222 311993 587272 1213186 2702991 6275339
|
||||
10 17 42 106 260 607 1338 2790 5545 10621 19880 36930 69098 131634 256413 509429 1024928 2069981 4162858 8283326 16235004
|
||||
22 41 66 111 203 382 715 1351 2658 5497 11702 24849 51411 102410 195691 358957 633718 1080321 1784242 2863835 4479747
|
||||
0 5 14 33 72 148 300 620 1304 2727 5546 10835 20256 36270 62392 103494 166160 259097 393606 584117 848792
|
||||
24 37 64 128 259 506 966 1834 3478 6543 12088 21760 38009 64348 105662 168570 261844 396889 588288 854416 1218127
|
||||
14 32 67 127 221 375 675 1356 2971 6708 14994 32661 69188 142923 288788 571846 1110340 2113488 3941533 7198411 12871031
|
||||
13 11 -1 -26 -53 -40 122 680 2156 5620 13245 29427 62996 131484 269244 542818 1080071 2125557 4145563 8025784 15437929
|
||||
8 13 21 35 65 145 367 957 2433 5900 13561 29580 61566 123222 239213 454176 849182 1571063 2883077 5249689 9474135
|
||||
4 14 23 31 41 57 82 116 154 184 185 125 -41 -373 -948 -1862 -3232 -5198 -7925 -11605 -16459
|
||||
29 44 75 141 260 450 735 1157 1807 2912 5050 9604 19591 40983 84544 168055 318771 576690 1002417 1702999 2913276
|
||||
8 14 37 105 265 597 1241 2451 4713 9004 17324 33696 65888 128149 245246 458014 830454 1458098 2476863 4070891 6476867
|
||||
20 39 80 170 348 672 1241 2251 4119 7733 14941 29513 59044 118686 238351 476442 945926 1863952 3646472 7088027 13699400
|
||||
16 36 69 114 171 255 430 875 2004 4681 10598 22918 47325 93668 178435 328345 585400 1013794 1709131 2810458 4515671
|
||||
8 22 39 68 142 343 850 2030 4599 9887 20258 39779 75325 138500 249171 442346 782208 1391597 2514461 4647009 8807890
|
||||
9 21 40 66 99 139 186 240 301 369 444 526 615 711 814 924 1041 1165 1296 1434 1579
|
||||
12 11 16 43 129 357 909 2164 4856 10302 20700 39476 71617 123850 204397 321831 482252 683565 905040 1089529 1114665
|
||||
26 52 91 147 230 373 674 1382 3056 6836 14883 31102 62426 121329 231036 436371 825686 1573308 3018011 5801885 11106502
|
||||
25 42 63 87 119 181 330 683 1449 2968 5757 10563 18423 30731 49312 76503 115241 169158 242683 341151 470919
|
||||
-1 11 39 91 172 280 405 547 798 1587 4286 12545 35006 90518 217787 492817 1059981 2186811 4359661 8448767 15988948
|
||||
0 2 20 72 183 385 717 1225 1962 2988 4370 6182 8505 11427 15043 19455 24772 31110 38592 47348 57515
|
||||
10 14 31 66 121 195 284 381 476 556 605 604 531 361 66 -385 -1026 -1894 -3029 -4474 -6275
|
||||
5 6 5 2 -3 -10 -19 -30 -43 -58 -75 -94 -115 -138 -163 -190 -219 -250 -283 -318 -355
|
||||
6 3 0 -3 -6 -9 -12 -15 -18 -21 -24 -27 -30 -33 -36 -39 -42 -45 -48 -51 -54
|
||||
9 22 43 79 148 279 512 898 1499 2388 3649 5377 7678 10669 14478 19244 25117 32258 40839 51043 63064
|
||||
14 26 58 137 320 723 1574 3299 6654 12922 24213 43964 77893 136038 237353 420103 764857 1443773 2822859 5667790 11546877
|
||||
13 33 62 96 134 191 331 740 1864 4640 10849 23619 48103 92352 168396 293537 491847 795851 1248360 1904402 2833180
|
||||
12 30 69 152 310 574 970 1538 2413 4038 7647 16285 36846 83927 186723 400716 826510 1638778 3128829 5764650 10272266
|
||||
27 55 103 188 344 644 1241 2432 4749 9081 16831 30112 51986 86750 140273 220388 337343 504315 737991 1059220 1493740
|
||||
5 14 49 131 291 579 1081 1949 3454 6077 10658 18628 32354 55632 94368 157492 258155 415264 655415 1015289 1544581
|
||||
16 25 35 65 145 325 694 1415 2801 5486 10783 21367 42473 83857 162854 309090 572122 1035450 1846272 3285211 5935131
|
||||
-3 -5 -7 -9 -11 -13 -15 -17 -19 -21 -23 -25 -27 -29 -31 -33 -35 -37 -39 -41 -43
|
||||
14 35 81 177 367 726 1371 2465 4218 6921 11125 18228 32007 62108 131326 289946 643046 1401647 2978197 6165267 12470799
|
||||
8 15 33 71 152 325 681 1375 2669 5037 9424 17853 34772 69892 143869 299127 619536 1264752 2528131 4931762 9378966
|
||||
25 45 85 167 329 638 1205 2203 3905 6792 11838 21167 39403 76205 150702 298825 584881 1119135 2083667 3769359 6627549
|
||||
-2 0 9 35 94 212 429 803 1414 2368 3801 5883 8822 12868 18317 25515 34862 46816 61897 80691 103854
|
||||
19 40 70 123 236 482 1000 2066 4237 8616 17319 34283 66661 127274 239084 443728 818448 1510615 2809386 5296041 10160917
|
||||
7 16 38 90 216 514 1187 2625 5520 11014 20893 37896 66360 113757 194327 337154 602913 1116448 2126716 4111930 7956532
|
||||
4 14 34 70 132 250 516 1167 2724 6202 13406 27328 52660 96438 168832 284097 461700 727638 1115962 1670522 2446948
|
||||
14 36 76 136 225 371 637 1157 2232 4566 9794 21585 47831 104806 224753 469193 951410 1873108 3582208 6661186 12058253
|
||||
-6 -10 -3 38 158 451 1098 2418 4949 9599 17939 32768 59225 107100 195878 365869 702114 1383254 2775705 5604310 11243202
|
||||
22 39 72 134 236 381 561 762 989 1348 2284 5207 14004 38445 101446 253929 604340 1376121 3018100 6414308 13278664
|
||||
4 6 5 2 -4 -8 15 123 405 939 1670 2149 1051 -4637 -20898 -58612 -136342 -284236 -549349 -1002740 -1748754
|
||||
-4 -5 -3 8 34 75 120 140 66 -281 -1381 -4475 -12559 -32307 -77351 -173027 -361540 -703685 -1267491 -2083506 -3028168
|
||||
9 4 12 44 118 267 553 1097 2146 4229 8522 17669 37517 80544 172215 362114 742487 1477802 2850088 5326146 9654208
|
||||
17 23 26 37 79 184 390 738 1269 2021 3026 4307 5875 7726 9838 12168 14649 17187 19658 21905 23735
|
||||
12 26 49 79 117 169 256 451 984 2506 6696 17551 43942 104382 235498 506568 1043976 2072142 3982463 7450843 13640335
|
||||
15 34 56 82 124 208 374 688 1297 2573 5404 11698 25170 52483 104814 199918 364771 638892 1078480 1761562 2794440
|
||||
9 13 29 72 163 329 603 1024 1637 2493 3649 5168 7119 9577 12623 16344 20833 26189 32517 39928 48539
|
||||
11 12 12 27 98 315 848 1986 4187 8141 14850 25749 42971 70098 114360 192690 347176 681931 1446476 3216825 7277259
|
||||
29 57 100 164 258 407 683 1269 2597 5657 12677 28540 63547 138465 293220 601110 1191052 2281288 4229680 7609776 13332357
|
||||
3 15 55 149 343 708 1356 2489 4511 8241 15273 28537 53123 97438 174774 305373 519083 858707 1384155 2177517 3349183
|
||||
3 3 7 13 9 -25 -108 -242 -389 -441 -183 751 2929 7179 14654 26904 45955 74395 115467 173169 252361
|
||||
15 26 56 127 281 584 1129 2046 3528 5878 9573 15327 24116 37104 55380 79382 107845 136066 153230 138487 55411
|
||||
13 22 49 101 191 360 717 1502 3192 6700 13762 27667 54560 105638 200664 373344 679247 1207098 2094439 3548833 5875981
|
||||
11 20 43 83 153 297 621 1327 2748 5395 10057 18063 31950 57011 104535 197976 383721 748402 1444527 2725143 4985639
|
||||
7 8 7 4 -1 -8 -17 -28 -41 -56 -73 -92 -113 -136 -161 -188 -217 -248 -281 -316 -353
|
||||
13 15 17 28 66 150 299 564 1148 2722 7142 18944 48283 116441 265722 576554 1196015 2383889 4584847 8538556 15443576
|
||||
1 17 45 101 221 470 955 1843 3398 6089 10899 20116 39189 80859 174090 383047 846864 1861718 4047185 8676465 18316948
|
||||
-3 0 10 26 60 152 385 900 1911 3720 6732 11470 18590 28896 43355 63112 89505 124080 168606 225090 295792
|
||||
-5 -11 -21 -35 -53 -75 -101 -131 -165 -203 -245 -291 -341 -395 -453 -515 -581 -651 -725 -803 -885
|
||||
3
2023/day09/input_small.txt
Normal file
3
2023/day09/input_small.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
0 3 6 9 12 15
|
||||
1 3 6 10 15 21
|
||||
10 13 16 21 30 45
|
||||
73
2023/day09/src/lib.rs
Normal file
73
2023/day09/src/lib.rs
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
use helper::{Day, Variants};
|
||||
|
||||
pub fn main() {
|
||||
helper::main::<Day09>(include_str!("../input.txt"));
|
||||
}
|
||||
|
||||
struct Day09;
|
||||
|
||||
helper::define_variants! {
|
||||
day => crate::Day09;
|
||||
part1 {
|
||||
basic => crate::part1;
|
||||
}
|
||||
part2 {
|
||||
basic => crate::part2;
|
||||
}
|
||||
}
|
||||
|
||||
impl Day for Day09 {
|
||||
fn part1() -> Variants {
|
||||
part1_variants!(construct_variants)
|
||||
}
|
||||
|
||||
fn part2() -> Variants {
|
||||
part2_variants!(construct_variants)
|
||||
}
|
||||
}
|
||||
|
||||
fn parse(input: &str) -> impl Iterator<Item = Vec<i64>> + '_ {
|
||||
input
|
||||
.lines()
|
||||
.map(|line| line.split_ascii_whitespace().map(|s| s.parse().unwrap()).collect())
|
||||
}
|
||||
|
||||
fn part1(input: &str) -> u64 {
|
||||
parse(input)
|
||||
.map(|mut values| {
|
||||
let mut last_values = vec![*values.last().unwrap()];
|
||||
|
||||
let mut derive = values.clone();
|
||||
|
||||
while !derive.iter().all(|&n| n == 0) {
|
||||
values.clear();
|
||||
values.extend(derive.windows(2).map(|s| s[1] - s[0]));
|
||||
|
||||
last_values.push(*values.last().unwrap());
|
||||
|
||||
let tmp = derive;
|
||||
derive = values;
|
||||
values = tmp;
|
||||
}
|
||||
|
||||
last_values.into_iter().sum::<i64>()
|
||||
})
|
||||
.sum::<i64>() as u64
|
||||
}
|
||||
|
||||
fn part2(_input: &str) -> u64 {
|
||||
0
|
||||
}
|
||||
|
||||
helper::tests! {
|
||||
day09 Day09;
|
||||
part1 {
|
||||
small => 0;
|
||||
default => 0;
|
||||
}
|
||||
part2 {
|
||||
small => 0;
|
||||
default => 0;
|
||||
}
|
||||
}
|
||||
helper::benchmarks! {}
|
||||
3
2023/day09/src/main.rs
Normal file
3
2023/day09/src/main.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
day09::main();
|
||||
}
|
||||
9
Cargo.lock
generated
9
Cargo.lock
generated
|
|
@ -197,6 +197,15 @@ dependencies = [
|
|||
"nom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "day09"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"divan",
|
||||
"helper",
|
||||
"nom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "divan"
|
||||
version = "0.1.4"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@ pub fn integer(input: &str) -> IResult<&str, u64> {
|
|||
map(digit1, |d: &str| d.parse::<u64>().unwrap())(input)
|
||||
}
|
||||
|
||||
pub fn parse_unwrap(s: &str) -> u64 {
|
||||
s.parse().unwrap()
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct CollectArrayError;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue