Added day 5 code for part 1 and 2
Signed-off-by: Louis Vallat <louis@louis-vallat.xyz>
This commit is contained in:
parent
0294bed274
commit
24539f0f2a
8
day5/Cargo.toml
Normal file
8
day5/Cargo.toml
Normal file
@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "day5"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
500
day5/input
Normal file
500
day5/input
Normal file
@ -0,0 +1,500 @@
|
||||
456,846 -> 221,846
|
||||
980,926 -> 73,19
|
||||
682,930 -> 562,930
|
||||
766,592 -> 274,100
|
||||
247,685 -> 247,21
|
||||
106,800 -> 635,800
|
||||
953,340 -> 135,340
|
||||
293,223 -> 293,12
|
||||
454,196 -> 454,463
|
||||
886,766 -> 164,766
|
||||
592,590 -> 192,590
|
||||
436,982 -> 436,545
|
||||
731,571 -> 420,260
|
||||
741,11 -> 466,11
|
||||
727,541 -> 579,541
|
||||
341,553 -> 25,553
|
||||
942,470 -> 942,196
|
||||
203,600 -> 203,647
|
||||
965,595 -> 949,611
|
||||
554,306 -> 554,401
|
||||
902,438 -> 902,728
|
||||
864,609 -> 525,270
|
||||
187,790 -> 187,323
|
||||
956,950 -> 427,950
|
||||
847,554 -> 422,554
|
||||
935,900 -> 701,900
|
||||
192,854 -> 866,180
|
||||
512,946 -> 543,915
|
||||
978,979 -> 491,979
|
||||
708,61 -> 708,878
|
||||
738,508 -> 282,52
|
||||
23,25 -> 841,843
|
||||
204,750 -> 204,797
|
||||
703,500 -> 703,419
|
||||
14,311 -> 694,311
|
||||
646,301 -> 785,301
|
||||
397,168 -> 439,168
|
||||
680,931 -> 561,812
|
||||
540,448 -> 90,448
|
||||
706,668 -> 91,53
|
||||
848,319 -> 318,319
|
||||
198,948 -> 198,307
|
||||
686,58 -> 686,541
|
||||
867,234 -> 867,498
|
||||
134,125 -> 134,688
|
||||
824,566 -> 53,566
|
||||
437,167 -> 276,167
|
||||
94,65 -> 638,609
|
||||
36,971 -> 971,36
|
||||
494,330 -> 494,197
|
||||
920,438 -> 920,364
|
||||
698,84 -> 49,733
|
||||
59,842 -> 59,876
|
||||
328,577 -> 328,677
|
||||
757,701 -> 134,78
|
||||
466,274 -> 135,605
|
||||
81,925 -> 988,18
|
||||
40,142 -> 882,984
|
||||
50,96 -> 882,928
|
||||
782,47 -> 782,427
|
||||
247,599 -> 24,599
|
||||
112,812 -> 191,733
|
||||
487,198 -> 144,198
|
||||
327,663 -> 327,756
|
||||
117,76 -> 688,76
|
||||
530,71 -> 530,958
|
||||
558,602 -> 671,489
|
||||
677,830 -> 677,556
|
||||
529,669 -> 349,669
|
||||
336,966 -> 341,971
|
||||
20,31 -> 851,862
|
||||
423,880 -> 423,573
|
||||
521,657 -> 552,657
|
||||
412,822 -> 18,428
|
||||
423,311 -> 423,105
|
||||
381,614 -> 705,614
|
||||
521,248 -> 394,121
|
||||
286,47 -> 286,403
|
||||
286,27 -> 711,452
|
||||
347,61 -> 489,61
|
||||
760,454 -> 760,954
|
||||
746,573 -> 911,573
|
||||
839,933 -> 839,776
|
||||
124,815 -> 290,649
|
||||
577,848 -> 419,848
|
||||
393,206 -> 410,206
|
||||
364,755 -> 881,755
|
||||
788,68 -> 788,215
|
||||
94,798 -> 192,798
|
||||
292,250 -> 453,250
|
||||
601,545 -> 293,237
|
||||
438,923 -> 438,655
|
||||
70,757 -> 887,757
|
||||
184,402 -> 818,402
|
||||
586,49 -> 103,49
|
||||
202,315 -> 735,315
|
||||
534,504 -> 534,523
|
||||
367,236 -> 367,736
|
||||
24,163 -> 24,240
|
||||
185,426 -> 634,875
|
||||
485,189 -> 39,189
|
||||
556,30 -> 374,30
|
||||
969,821 -> 676,528
|
||||
254,435 -> 254,43
|
||||
290,615 -> 741,164
|
||||
345,601 -> 120,826
|
||||
224,641 -> 887,641
|
||||
190,716 -> 581,325
|
||||
552,646 -> 552,393
|
||||
413,177 -> 413,103
|
||||
397,900 -> 360,900
|
||||
138,980 -> 138,55
|
||||
909,891 -> 909,593
|
||||
926,986 -> 79,139
|
||||
954,67 -> 53,968
|
||||
180,30 -> 595,30
|
||||
823,165 -> 823,660
|
||||
285,176 -> 375,176
|
||||
915,826 -> 184,95
|
||||
735,230 -> 667,230
|
||||
934,865 -> 917,865
|
||||
48,602 -> 737,602
|
||||
477,319 -> 385,411
|
||||
981,17 -> 11,987
|
||||
458,401 -> 24,401
|
||||
118,415 -> 849,415
|
||||
176,678 -> 176,852
|
||||
567,753 -> 567,37
|
||||
285,868 -> 830,323
|
||||
555,623 -> 822,623
|
||||
522,546 -> 674,546
|
||||
880,21 -> 23,878
|
||||
591,103 -> 591,407
|
||||
434,64 -> 434,401
|
||||
245,968 -> 275,968
|
||||
726,510 -> 450,786
|
||||
768,366 -> 768,738
|
||||
488,745 -> 488,94
|
||||
675,674 -> 675,705
|
||||
618,237 -> 265,237
|
||||
802,709 -> 802,59
|
||||
144,696 -> 144,542
|
||||
547,381 -> 547,799
|
||||
78,667 -> 78,916
|
||||
409,271 -> 302,271
|
||||
294,694 -> 938,50
|
||||
140,571 -> 97,571
|
||||
682,875 -> 682,534
|
||||
748,816 -> 748,183
|
||||
84,622 -> 84,258
|
||||
485,696 -> 582,599
|
||||
909,233 -> 954,233
|
||||
203,711 -> 203,350
|
||||
335,904 -> 455,904
|
||||
578,778 -> 578,21
|
||||
830,954 -> 902,954
|
||||
78,252 -> 78,682
|
||||
920,220 -> 684,220
|
||||
309,301 -> 104,301
|
||||
270,795 -> 270,919
|
||||
906,479 -> 304,479
|
||||
627,164 -> 627,986
|
||||
122,960 -> 915,167
|
||||
664,916 -> 770,810
|
||||
692,810 -> 826,810
|
||||
981,951 -> 192,162
|
||||
183,423 -> 809,423
|
||||
632,464 -> 567,464
|
||||
94,266 -> 94,587
|
||||
261,770 -> 569,770
|
||||
51,403 -> 466,818
|
||||
631,645 -> 187,645
|
||||
141,238 -> 141,145
|
||||
357,21 -> 173,21
|
||||
138,248 -> 839,949
|
||||
889,957 -> 807,957
|
||||
399,431 -> 105,725
|
||||
548,331 -> 548,821
|
||||
790,844 -> 43,97
|
||||
675,671 -> 221,671
|
||||
874,143 -> 620,397
|
||||
205,435 -> 205,546
|
||||
521,434 -> 822,133
|
||||
141,86 -> 257,86
|
||||
427,28 -> 290,165
|
||||
49,694 -> 567,694
|
||||
846,344 -> 266,924
|
||||
425,910 -> 433,918
|
||||
956,498 -> 485,27
|
||||
798,498 -> 798,634
|
||||
879,13 -> 766,126
|
||||
737,475 -> 737,425
|
||||
338,473 -> 425,386
|
||||
510,615 -> 214,319
|
||||
758,415 -> 758,490
|
||||
969,208 -> 239,938
|
||||
917,188 -> 917,528
|
||||
34,820 -> 806,820
|
||||
85,633 -> 857,633
|
||||
262,355 -> 262,748
|
||||
373,784 -> 971,186
|
||||
146,577 -> 60,663
|
||||
613,570 -> 613,199
|
||||
300,319 -> 300,108
|
||||
764,171 -> 764,17
|
||||
555,921 -> 555,825
|
||||
241,197 -> 770,197
|
||||
600,832 -> 600,807
|
||||
934,987 -> 20,73
|
||||
960,730 -> 837,730
|
||||
976,50 -> 46,980
|
||||
829,834 -> 153,158
|
||||
785,835 -> 785,58
|
||||
586,633 -> 689,736
|
||||
804,250 -> 348,706
|
||||
226,539 -> 16,539
|
||||
411,940 -> 98,940
|
||||
289,589 -> 893,589
|
||||
738,616 -> 738,55
|
||||
225,54 -> 542,54
|
||||
793,246 -> 303,736
|
||||
332,752 -> 984,100
|
||||
413,18 -> 839,444
|
||||
840,122 -> 840,233
|
||||
989,970 -> 215,196
|
||||
329,361 -> 573,605
|
||||
242,537 -> 242,619
|
||||
943,898 -> 943,535
|
||||
469,865 -> 501,833
|
||||
226,717 -> 196,687
|
||||
819,803 -> 712,803
|
||||
532,663 -> 532,672
|
||||
61,931 -> 940,52
|
||||
623,218 -> 274,567
|
||||
281,326 -> 281,790
|
||||
815,176 -> 679,176
|
||||
790,862 -> 942,710
|
||||
18,771 -> 18,514
|
||||
479,377 -> 309,377
|
||||
704,402 -> 704,150
|
||||
961,335 -> 492,335
|
||||
745,829 -> 745,477
|
||||
556,543 -> 771,543
|
||||
832,336 -> 917,251
|
||||
742,755 -> 742,174
|
||||
206,735 -> 493,735
|
||||
151,216 -> 312,55
|
||||
445,157 -> 615,157
|
||||
781,143 -> 781,76
|
||||
833,717 -> 514,398
|
||||
357,14 -> 357,36
|
||||
771,405 -> 771,422
|
||||
662,886 -> 169,886
|
||||
689,990 -> 22,990
|
||||
680,445 -> 379,445
|
||||
92,369 -> 502,779
|
||||
64,948 -> 64,363
|
||||
295,957 -> 976,276
|
||||
113,920 -> 634,399
|
||||
542,662 -> 305,899
|
||||
566,514 -> 566,645
|
||||
528,106 -> 549,106
|
||||
205,367 -> 821,367
|
||||
313,105 -> 313,928
|
||||
532,177 -> 532,664
|
||||
862,773 -> 905,816
|
||||
800,796 -> 911,796
|
||||
870,80 -> 11,939
|
||||
188,900 -> 154,900
|
||||
420,509 -> 520,609
|
||||
540,863 -> 28,863
|
||||
31,72 -> 78,72
|
||||
823,648 -> 503,648
|
||||
879,252 -> 606,252
|
||||
677,117 -> 677,507
|
||||
743,303 -> 196,850
|
||||
220,491 -> 220,891
|
||||
216,815 -> 577,815
|
||||
540,819 -> 745,819
|
||||
152,721 -> 382,721
|
||||
280,745 -> 985,745
|
||||
479,367 -> 358,488
|
||||
913,413 -> 649,413
|
||||
40,678 -> 817,678
|
||||
467,533 -> 467,214
|
||||
132,68 -> 843,779
|
||||
519,109 -> 669,259
|
||||
619,791 -> 221,791
|
||||
114,622 -> 628,622
|
||||
951,636 -> 866,636
|
||||
172,569 -> 775,569
|
||||
244,972 -> 173,972
|
||||
283,64 -> 739,520
|
||||
68,604 -> 68,156
|
||||
529,30 -> 529,925
|
||||
813,883 -> 137,883
|
||||
893,231 -> 629,231
|
||||
673,658 -> 673,389
|
||||
725,899 -> 218,899
|
||||
317,318 -> 105,318
|
||||
82,706 -> 100,688
|
||||
222,227 -> 440,227
|
||||
810,371 -> 810,985
|
||||
414,321 -> 289,446
|
||||
901,158 -> 260,799
|
||||
198,967 -> 717,448
|
||||
928,454 -> 875,454
|
||||
974,437 -> 974,764
|
||||
657,13 -> 760,13
|
||||
498,966 -> 976,966
|
||||
66,104 -> 66,15
|
||||
773,569 -> 980,362
|
||||
420,496 -> 403,513
|
||||
57,920 -> 85,920
|
||||
879,551 -> 879,662
|
||||
98,395 -> 98,398
|
||||
483,685 -> 483,55
|
||||
222,935 -> 586,935
|
||||
89,926 -> 807,208
|
||||
744,160 -> 744,462
|
||||
588,973 -> 588,548
|
||||
312,572 -> 38,298
|
||||
27,131 -> 552,656
|
||||
591,935 -> 591,86
|
||||
907,478 -> 907,279
|
||||
981,75 -> 981,972
|
||||
316,947 -> 935,947
|
||||
906,38 -> 906,216
|
||||
374,521 -> 345,550
|
||||
579,29 -> 579,107
|
||||
444,636 -> 444,557
|
||||
458,608 -> 830,980
|
||||
479,839 -> 155,515
|
||||
766,600 -> 766,71
|
||||
976,965 -> 31,20
|
||||
928,49 -> 269,708
|
||||
787,238 -> 787,983
|
||||
583,742 -> 112,742
|
||||
966,268 -> 554,680
|
||||
671,354 -> 671,966
|
||||
274,340 -> 274,894
|
||||
673,185 -> 607,185
|
||||
73,171 -> 874,171
|
||||
861,526 -> 861,410
|
||||
739,591 -> 739,138
|
||||
209,355 -> 209,146
|
||||
286,501 -> 887,501
|
||||
495,902 -> 700,902
|
||||
192,889 -> 821,260
|
||||
400,21 -> 154,21
|
||||
861,301 -> 325,301
|
||||
552,990 -> 511,990
|
||||
908,21 -> 11,918
|
||||
127,724 -> 821,30
|
||||
935,46 -> 170,811
|
||||
947,91 -> 374,91
|
||||
625,420 -> 265,60
|
||||
214,228 -> 546,228
|
||||
375,547 -> 715,887
|
||||
516,350 -> 870,350
|
||||
610,138 -> 665,193
|
||||
214,621 -> 678,621
|
||||
497,248 -> 600,145
|
||||
549,558 -> 576,558
|
||||
364,537 -> 364,312
|
||||
840,324 -> 310,854
|
||||
441,945 -> 441,458
|
||||
459,531 -> 459,100
|
||||
937,113 -> 150,900
|
||||
277,405 -> 259,405
|
||||
409,527 -> 409,359
|
||||
534,766 -> 534,740
|
||||
534,934 -> 681,934
|
||||
456,419 -> 83,419
|
||||
871,986 -> 873,986
|
||||
14,59 -> 916,961
|
||||
911,963 -> 971,963
|
||||
25,325 -> 139,211
|
||||
937,184 -> 354,767
|
||||
460,416 -> 289,245
|
||||
193,171 -> 861,839
|
||||
840,299 -> 840,911
|
||||
531,45 -> 531,619
|
||||
599,315 -> 455,315
|
||||
455,97 -> 455,811
|
||||
38,748 -> 392,748
|
||||
841,79 -> 841,88
|
||||
105,571 -> 105,545
|
||||
801,458 -> 344,458
|
||||
491,535 -> 558,535
|
||||
835,814 -> 223,202
|
||||
563,85 -> 405,85
|
||||
410,396 -> 600,396
|
||||
273,670 -> 818,125
|
||||
671,647 -> 817,647
|
||||
46,892 -> 678,260
|
||||
456,736 -> 110,736
|
||||
962,941 -> 619,598
|
||||
388,406 -> 53,71
|
||||
558,895 -> 227,564
|
||||
944,182 -> 807,319
|
||||
484,898 -> 59,473
|
||||
808,214 -> 488,534
|
||||
451,679 -> 155,383
|
||||
858,931 -> 381,931
|
||||
723,377 -> 723,281
|
||||
694,283 -> 182,795
|
||||
385,191 -> 320,256
|
||||
33,380 -> 584,931
|
||||
480,91 -> 817,91
|
||||
677,91 -> 677,126
|
||||
291,651 -> 760,182
|
||||
832,962 -> 153,283
|
||||
38,60 -> 479,501
|
||||
249,350 -> 789,350
|
||||
603,341 -> 266,678
|
||||
52,303 -> 52,102
|
||||
911,201 -> 559,201
|
||||
46,210 -> 46,275
|
||||
960,212 -> 554,212
|
||||
375,374 -> 169,580
|
||||
10,10 -> 989,989
|
||||
844,140 -> 40,944
|
||||
916,408 -> 916,815
|
||||
834,401 -> 834,169
|
||||
553,479 -> 784,248
|
||||
543,452 -> 543,848
|
||||
854,910 -> 334,390
|
||||
685,491 -> 793,491
|
||||
552,943 -> 709,943
|
||||
723,367 -> 124,367
|
||||
95,55 -> 881,841
|
||||
155,267 -> 573,267
|
||||
59,357 -> 84,357
|
||||
218,435 -> 218,344
|
||||
491,584 -> 491,649
|
||||
676,445 -> 676,333
|
||||
361,618 -> 783,618
|
||||
220,295 -> 220,267
|
||||
668,758 -> 299,389
|
||||
965,845 -> 674,845
|
||||
285,603 -> 47,603
|
||||
853,417 -> 853,757
|
||||
859,906 -> 856,906
|
||||
55,364 -> 753,364
|
||||
893,474 -> 978,474
|
||||
602,32 -> 58,576
|
||||
171,445 -> 96,370
|
||||
214,592 -> 214,286
|
||||
400,946 -> 745,946
|
||||
559,37 -> 112,484
|
||||
624,510 -> 90,510
|
||||
329,714 -> 329,850
|
||||
458,287 -> 657,287
|
||||
99,385 -> 99,949
|
||||
50,736 -> 719,67
|
||||
273,195 -> 273,306
|
||||
490,902 -> 490,798
|
||||
619,131 -> 921,131
|
||||
266,652 -> 266,730
|
||||
745,661 -> 745,555
|
||||
311,878 -> 311,679
|
||||
491,982 -> 643,830
|
||||
735,875 -> 816,875
|
||||
936,353 -> 936,529
|
||||
792,467 -> 565,467
|
||||
141,140 -> 141,988
|
||||
98,171 -> 414,487
|
||||
257,259 -> 257,484
|
||||
24,41 -> 969,986
|
||||
302,453 -> 223,453
|
||||
807,363 -> 492,678
|
||||
823,22 -> 835,10
|
||||
301,94 -> 399,94
|
||||
946,110 -> 248,808
|
||||
983,985 -> 21,23
|
||||
510,145 -> 510,58
|
||||
13,661 -> 13,639
|
||||
218,260 -> 218,54
|
||||
475,846 -> 475,770
|
||||
458,644 -> 458,529
|
||||
912,934 -> 912,136
|
||||
152,823 -> 550,823
|
||||
136,470 -> 443,470
|
||||
253,871 -> 905,219
|
||||
765,212 -> 793,240
|
||||
11,402 -> 11,42
|
||||
348,813 -> 348,768
|
||||
368,321 -> 823,776
|
||||
343,495 -> 343,809
|
||||
117,616 -> 117,273
|
||||
92,92 -> 732,92
|
||||
914,31 -> 28,917
|
||||
259,944 -> 214,944
|
||||
630,759 -> 462,759
|
||||
134,653 -> 134,610
|
||||
14,989 -> 988,15
|
||||
139,181 -> 139,451
|
||||
598,636 -> 598,442
|
||||
263,42 -> 686,465
|
67
day5/src/main.rs
Normal file
67
day5/src/main.rs
Normal file
@ -0,0 +1,67 @@
|
||||
use std::{fs, env, collections::BTreeMap};
|
||||
|
||||
fn read_input(path: &str) -> String {
|
||||
return fs::read_to_string(path).expect("Cannot read file.");
|
||||
}
|
||||
|
||||
fn parse_input(s: &str) -> Vec<((i32, i32), (i32, i32))> {
|
||||
return s.split("\n")
|
||||
.filter_map(|e| e.split_once(" -> "))
|
||||
.filter_map(|e| Some((e.0.split_once(",").unwrap(), e.1.split_once(",").unwrap())))
|
||||
.filter_map(|e| Some((
|
||||
Some(
|
||||
(e.0.0.parse::<i32>().unwrap(), e.0.1.parse::<i32>().unwrap())).unwrap(),
|
||||
Some(
|
||||
(e.1.0.parse::<i32>().unwrap(), e.1.1.parse::<i32>().unwrap())).unwrap()
|
||||
)))
|
||||
.collect();
|
||||
}
|
||||
|
||||
fn mark_coordinate(m: &mut BTreeMap<(i32, i32), i32>, c: &(i32, i32)) {
|
||||
m.insert(c.to_owned(), m.get(c).unwrap_or(&0) + 1);
|
||||
}
|
||||
|
||||
fn find_stepping(r: ((i32, i32), (i32, i32))) -> (i32, i32) {
|
||||
let mut t = (0, 0);
|
||||
if r.0.0 != r.1.0 {
|
||||
t.0 = if r.0.0 > r.1.0 { -1 } else { 1 };
|
||||
}
|
||||
if r.0.1 != r.1.1 {
|
||||
t.1 = if r.0.1 > r.1.1 { -1 } else { 1 };
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
fn update_map(m: &mut BTreeMap<(i32, i32), i32>, r: &((i32, i32), (i32, i32)), d: bool) {
|
||||
let s = find_stepping(*r);
|
||||
if s.0 != 0 && s.1 != 0 && !d { return; }
|
||||
let mut i = -1;
|
||||
while (r.0.0 + i * s.0) != r.1.0 || (r.0.1 + i * s.1) != r.1.1 {
|
||||
i += 1;
|
||||
mark_coordinate(m, &(r.0.0 + i * s.0, r.0.1 + i * s.1));
|
||||
}
|
||||
}
|
||||
|
||||
fn create_vents_map(v: &Vec<((i32, i32), (i32, i32))>, d: bool) -> BTreeMap<(i32, i32), i32> {
|
||||
let mut m = BTreeMap::new();
|
||||
for t in v { update_map(&mut m, t, d); }
|
||||
return m;
|
||||
}
|
||||
|
||||
fn get_points_above(m: &BTreeMap<(i32, i32), i32>, t: i32) -> i32 {
|
||||
return m.values().fold(0, |acc, e| acc + (if e > &t { 1 } else { 0 })).to_owned();
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args: Vec<String> = env::args().collect();
|
||||
for arg in args.iter().skip(1) {
|
||||
let input = read_input(&arg);
|
||||
let vec_in = parse_input(&input);
|
||||
let map_no_diag = create_vents_map(&vec_in, false);
|
||||
let map_w_diag = create_vents_map(&vec_in, true);
|
||||
println!("[{}]", &arg);
|
||||
println!("\t Part 1: {}", get_points_above(&map_no_diag, 1));
|
||||
println!("\t Part 2: {}", get_points_above(&map_w_diag, 1));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user