day 5
This commit is contained in:
parent
a1ff448d58
commit
84c42954ce
10
input/2021/day5-sample1.txt
Normal file
10
input/2021/day5-sample1.txt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
0,9 -> 5,9
|
||||||
|
8,0 -> 0,8
|
||||||
|
9,4 -> 3,4
|
||||||
|
2,2 -> 2,1
|
||||||
|
7,0 -> 7,4
|
||||||
|
6,4 -> 2,0
|
||||||
|
0,9 -> 2,9
|
||||||
|
3,4 -> 1,4
|
||||||
|
0,0 -> 8,8
|
||||||
|
5,5 -> 8,2
|
500
input/2021/day5.txt
Normal file
500
input/2021/day5.txt
Normal file
|
@ -0,0 +1,500 @@
|
||||||
|
491,392 -> 34,392
|
||||||
|
337,52 -> 485,52
|
||||||
|
256,605 -> 256,959
|
||||||
|
889,142 -> 153,878
|
||||||
|
189,59 -> 512,382
|
||||||
|
399,193 -> 598,193
|
||||||
|
578,370 -> 795,153
|
||||||
|
79,450 -> 569,450
|
||||||
|
565,444 -> 270,149
|
||||||
|
39,28 -> 39,846
|
||||||
|
114,353 -> 114,383
|
||||||
|
356,61 -> 356,327
|
||||||
|
140,132 -> 515,132
|
||||||
|
361,848 -> 361,527
|
||||||
|
466,257 -> 466,784
|
||||||
|
818,397 -> 818,14
|
||||||
|
693,554 -> 693,984
|
||||||
|
171,290 -> 171,655
|
||||||
|
989,889 -> 170,70
|
||||||
|
527,855 -> 527,549
|
||||||
|
209,355 -> 486,355
|
||||||
|
800,430 -> 291,939
|
||||||
|
980,38 -> 31,987
|
||||||
|
964,559 -> 964,799
|
||||||
|
491,612 -> 930,173
|
||||||
|
57,977 -> 958,76
|
||||||
|
149,465 -> 349,465
|
||||||
|
512,624 -> 629,507
|
||||||
|
460,943 -> 460,441
|
||||||
|
988,29 -> 988,968
|
||||||
|
104,337 -> 441,337
|
||||||
|
939,48 -> 939,546
|
||||||
|
941,904 -> 498,461
|
||||||
|
850,972 -> 649,771
|
||||||
|
840,901 -> 23,84
|
||||||
|
231,790 -> 231,873
|
||||||
|
230,668 -> 840,58
|
||||||
|
410,922 -> 435,897
|
||||||
|
341,337 -> 341,406
|
||||||
|
264,752 -> 258,752
|
||||||
|
457,969 -> 457,757
|
||||||
|
465,42 -> 465,350
|
||||||
|
748,783 -> 502,783
|
||||||
|
461,930 -> 461,142
|
||||||
|
392,265 -> 215,265
|
||||||
|
417,805 -> 417,231
|
||||||
|
825,870 -> 60,105
|
||||||
|
524,167 -> 703,346
|
||||||
|
963,829 -> 308,174
|
||||||
|
730,361 -> 730,252
|
||||||
|
61,373 -> 61,593
|
||||||
|
873,893 -> 132,152
|
||||||
|
820,719 -> 417,719
|
||||||
|
142,238 -> 212,168
|
||||||
|
142,653 -> 676,119
|
||||||
|
392,955 -> 392,453
|
||||||
|
368,385 -> 414,385
|
||||||
|
464,762 -> 592,762
|
||||||
|
542,168 -> 542,789
|
||||||
|
622,693 -> 166,237
|
||||||
|
477,290 -> 792,290
|
||||||
|
731,56 -> 731,677
|
||||||
|
516,77 -> 326,77
|
||||||
|
595,973 -> 779,973
|
||||||
|
68,487 -> 128,487
|
||||||
|
389,738 -> 762,738
|
||||||
|
721,13 -> 827,119
|
||||||
|
797,625 -> 347,625
|
||||||
|
75,67 -> 75,458
|
||||||
|
931,142 -> 219,854
|
||||||
|
422,835 -> 980,835
|
||||||
|
278,565 -> 753,565
|
||||||
|
225,970 -> 806,389
|
||||||
|
791,725 -> 691,725
|
||||||
|
924,975 -> 18,69
|
||||||
|
326,763 -> 969,120
|
||||||
|
663,895 -> 663,559
|
||||||
|
940,965 -> 142,167
|
||||||
|
146,425 -> 791,425
|
||||||
|
832,968 -> 272,408
|
||||||
|
494,804 -> 694,804
|
||||||
|
23,25 -> 900,902
|
||||||
|
621,163 -> 894,163
|
||||||
|
587,605 -> 587,716
|
||||||
|
41,931 -> 383,589
|
||||||
|
888,530 -> 341,530
|
||||||
|
292,801 -> 292,567
|
||||||
|
537,213 -> 245,213
|
||||||
|
513,84 -> 527,84
|
||||||
|
623,516 -> 623,128
|
||||||
|
549,729 -> 509,729
|
||||||
|
576,232 -> 869,232
|
||||||
|
513,847 -> 433,847
|
||||||
|
536,612 -> 434,612
|
||||||
|
608,377 -> 33,952
|
||||||
|
137,762 -> 424,475
|
||||||
|
329,286 -> 584,541
|
||||||
|
493,296 -> 493,316
|
||||||
|
160,343 -> 189,343
|
||||||
|
477,929 -> 976,430
|
||||||
|
695,607 -> 557,607
|
||||||
|
745,322 -> 28,322
|
||||||
|
777,73 -> 76,774
|
||||||
|
163,723 -> 163,816
|
||||||
|
30,549 -> 63,516
|
||||||
|
163,914 -> 898,179
|
||||||
|
603,823 -> 603,78
|
||||||
|
498,616 -> 886,228
|
||||||
|
229,591 -> 341,591
|
||||||
|
742,841 -> 343,841
|
||||||
|
720,808 -> 934,808
|
||||||
|
985,48 -> 48,985
|
||||||
|
368,859 -> 178,859
|
||||||
|
506,30 -> 144,30
|
||||||
|
19,110 -> 19,750
|
||||||
|
293,689 -> 293,294
|
||||||
|
13,462 -> 980,462
|
||||||
|
536,963 -> 346,773
|
||||||
|
836,471 -> 462,471
|
||||||
|
506,952 -> 489,952
|
||||||
|
830,15 -> 461,15
|
||||||
|
392,378 -> 237,378
|
||||||
|
295,48 -> 295,825
|
||||||
|
264,679 -> 264,602
|
||||||
|
487,582 -> 487,116
|
||||||
|
832,677 -> 788,677
|
||||||
|
469,770 -> 211,512
|
||||||
|
400,773 -> 394,773
|
||||||
|
262,836 -> 262,454
|
||||||
|
51,17 -> 969,935
|
||||||
|
483,525 -> 838,880
|
||||||
|
71,124 -> 164,31
|
||||||
|
103,226 -> 912,226
|
||||||
|
785,169 -> 785,454
|
||||||
|
858,825 -> 176,143
|
||||||
|
248,960 -> 427,781
|
||||||
|
255,37 -> 767,37
|
||||||
|
832,149 -> 506,149
|
||||||
|
256,246 -> 86,246
|
||||||
|
447,448 -> 765,448
|
||||||
|
654,159 -> 654,158
|
||||||
|
120,500 -> 120,341
|
||||||
|
200,19 -> 839,658
|
||||||
|
451,251 -> 763,563
|
||||||
|
931,75 -> 931,312
|
||||||
|
69,404 -> 311,646
|
||||||
|
31,678 -> 31,231
|
||||||
|
410,307 -> 410,236
|
||||||
|
988,976 -> 387,375
|
||||||
|
654,402 -> 738,486
|
||||||
|
30,942 -> 942,30
|
||||||
|
115,652 -> 98,669
|
||||||
|
405,764 -> 375,734
|
||||||
|
88,759 -> 125,759
|
||||||
|
636,835 -> 722,835
|
||||||
|
300,60 -> 126,60
|
||||||
|
159,225 -> 159,319
|
||||||
|
934,188 -> 934,74
|
||||||
|
46,822 -> 708,160
|
||||||
|
605,612 -> 605,463
|
||||||
|
200,281 -> 536,617
|
||||||
|
392,11 -> 79,324
|
||||||
|
917,126 -> 258,785
|
||||||
|
803,143 -> 803,180
|
||||||
|
116,556 -> 651,556
|
||||||
|
922,222 -> 468,676
|
||||||
|
266,782 -> 896,782
|
||||||
|
733,448 -> 764,448
|
||||||
|
915,75 -> 305,685
|
||||||
|
150,243 -> 842,243
|
||||||
|
485,641 -> 963,641
|
||||||
|
965,206 -> 965,275
|
||||||
|
78,868 -> 748,198
|
||||||
|
37,947 -> 859,947
|
||||||
|
429,289 -> 429,48
|
||||||
|
378,261 -> 378,624
|
||||||
|
768,494 -> 768,782
|
||||||
|
702,566 -> 113,566
|
||||||
|
290,148 -> 913,771
|
||||||
|
806,931 -> 849,931
|
||||||
|
725,970 -> 299,970
|
||||||
|
38,565 -> 740,565
|
||||||
|
262,730 -> 973,730
|
||||||
|
826,376 -> 826,97
|
||||||
|
318,576 -> 318,227
|
||||||
|
159,868 -> 448,868
|
||||||
|
344,256 -> 344,615
|
||||||
|
824,188 -> 588,424
|
||||||
|
505,843 -> 897,843
|
||||||
|
293,348 -> 293,488
|
||||||
|
433,833 -> 165,565
|
||||||
|
56,471 -> 169,471
|
||||||
|
77,896 -> 914,59
|
||||||
|
405,904 -> 405,174
|
||||||
|
274,364 -> 274,88
|
||||||
|
785,704 -> 538,704
|
||||||
|
877,389 -> 681,389
|
||||||
|
790,936 -> 327,936
|
||||||
|
89,143 -> 755,809
|
||||||
|
721,450 -> 721,406
|
||||||
|
253,664 -> 811,664
|
||||||
|
881,143 -> 97,927
|
||||||
|
205,738 -> 645,738
|
||||||
|
869,951 -> 282,364
|
||||||
|
374,697 -> 374,592
|
||||||
|
251,989 -> 251,977
|
||||||
|
521,187 -> 885,187
|
||||||
|
536,401 -> 536,38
|
||||||
|
636,840 -> 636,873
|
||||||
|
695,333 -> 52,976
|
||||||
|
790,757 -> 790,358
|
||||||
|
314,765 -> 882,765
|
||||||
|
880,439 -> 127,439
|
||||||
|
266,848 -> 810,304
|
||||||
|
802,419 -> 802,936
|
||||||
|
554,67 -> 554,956
|
||||||
|
311,379 -> 685,753
|
||||||
|
183,544 -> 305,544
|
||||||
|
857,341 -> 407,791
|
||||||
|
306,559 -> 727,980
|
||||||
|
184,477 -> 509,152
|
||||||
|
934,174 -> 934,154
|
||||||
|
28,12 -> 28,968
|
||||||
|
418,984 -> 112,678
|
||||||
|
788,89 -> 837,89
|
||||||
|
229,425 -> 192,462
|
||||||
|
714,701 -> 424,411
|
||||||
|
198,313 -> 156,355
|
||||||
|
142,742 -> 215,742
|
||||||
|
15,639 -> 15,787
|
||||||
|
573,396 -> 462,396
|
||||||
|
954,977 -> 76,99
|
||||||
|
645,448 -> 652,448
|
||||||
|
958,822 -> 376,240
|
||||||
|
47,359 -> 212,194
|
||||||
|
524,366 -> 524,916
|
||||||
|
100,977 -> 501,576
|
||||||
|
932,148 -> 115,965
|
||||||
|
854,120 -> 421,553
|
||||||
|
318,630 -> 318,964
|
||||||
|
196,31 -> 874,709
|
||||||
|
812,826 -> 812,679
|
||||||
|
111,890 -> 897,104
|
||||||
|
46,35 -> 972,35
|
||||||
|
40,842 -> 40,835
|
||||||
|
390,510 -> 98,510
|
||||||
|
832,57 -> 124,765
|
||||||
|
422,331 -> 422,44
|
||||||
|
696,837 -> 696,555
|
||||||
|
849,571 -> 849,679
|
||||||
|
598,143 -> 598,261
|
||||||
|
670,745 -> 670,757
|
||||||
|
660,390 -> 660,912
|
||||||
|
960,578 -> 960,253
|
||||||
|
123,343 -> 123,28
|
||||||
|
643,199 -> 969,199
|
||||||
|
66,642 -> 669,39
|
||||||
|
776,30 -> 776,173
|
||||||
|
595,951 -> 84,951
|
||||||
|
908,183 -> 724,367
|
||||||
|
330,332 -> 330,455
|
||||||
|
954,955 -> 188,955
|
||||||
|
981,269 -> 90,269
|
||||||
|
235,579 -> 513,579
|
||||||
|
217,25 -> 217,990
|
||||||
|
811,810 -> 811,405
|
||||||
|
245,255 -> 367,255
|
||||||
|
860,225 -> 860,100
|
||||||
|
753,626 -> 697,626
|
||||||
|
755,404 -> 836,404
|
||||||
|
733,476 -> 336,476
|
||||||
|
562,172 -> 964,172
|
||||||
|
339,989 -> 749,989
|
||||||
|
167,581 -> 167,611
|
||||||
|
217,475 -> 217,747
|
||||||
|
103,598 -> 431,270
|
||||||
|
11,989 -> 989,11
|
||||||
|
925,90 -> 46,969
|
||||||
|
26,963 -> 935,54
|
||||||
|
40,925 -> 40,816
|
||||||
|
67,942 -> 984,25
|
||||||
|
933,652 -> 933,242
|
||||||
|
942,292 -> 942,138
|
||||||
|
889,909 -> 180,200
|
||||||
|
604,770 -> 237,770
|
||||||
|
30,627 -> 973,627
|
||||||
|
750,777 -> 750,645
|
||||||
|
254,797 -> 254,169
|
||||||
|
939,167 -> 347,759
|
||||||
|
889,682 -> 394,682
|
||||||
|
788,338 -> 388,338
|
||||||
|
757,252 -> 169,252
|
||||||
|
806,131 -> 699,131
|
||||||
|
562,270 -> 562,481
|
||||||
|
950,349 -> 459,840
|
||||||
|
219,915 -> 932,202
|
||||||
|
977,505 -> 977,708
|
||||||
|
915,559 -> 915,125
|
||||||
|
366,397 -> 366,717
|
||||||
|
54,723 -> 433,723
|
||||||
|
570,842 -> 236,508
|
||||||
|
513,365 -> 513,80
|
||||||
|
569,523 -> 569,266
|
||||||
|
278,764 -> 278,178
|
||||||
|
136,136 -> 84,84
|
||||||
|
787,108 -> 787,809
|
||||||
|
461,388 -> 855,782
|
||||||
|
64,898 -> 848,114
|
||||||
|
628,71 -> 178,521
|
||||||
|
842,66 -> 842,699
|
||||||
|
293,68 -> 742,68
|
||||||
|
960,102 -> 358,704
|
||||||
|
834,669 -> 27,669
|
||||||
|
11,43 -> 374,406
|
||||||
|
399,803 -> 340,803
|
||||||
|
564,211 -> 20,755
|
||||||
|
370,841 -> 370,321
|
||||||
|
518,590 -> 518,255
|
||||||
|
470,150 -> 470,850
|
||||||
|
769,182 -> 234,717
|
||||||
|
97,787 -> 97,382
|
||||||
|
36,31 -> 982,977
|
||||||
|
831,467 -> 471,827
|
||||||
|
253,836 -> 547,836
|
||||||
|
957,681 -> 957,919
|
||||||
|
768,831 -> 768,275
|
||||||
|
98,36 -> 955,893
|
||||||
|
283,413 -> 840,413
|
||||||
|
21,870 -> 20,870
|
||||||
|
979,507 -> 979,37
|
||||||
|
339,757 -> 210,757
|
||||||
|
388,594 -> 801,594
|
||||||
|
867,939 -> 91,163
|
||||||
|
755,864 -> 755,501
|
||||||
|
856,177 -> 736,57
|
||||||
|
74,365 -> 376,63
|
||||||
|
386,451 -> 815,22
|
||||||
|
389,883 -> 679,593
|
||||||
|
116,216 -> 157,175
|
||||||
|
693,960 -> 693,454
|
||||||
|
704,962 -> 306,962
|
||||||
|
613,442 -> 867,442
|
||||||
|
578,13 -> 578,855
|
||||||
|
417,683 -> 118,683
|
||||||
|
127,161 -> 742,161
|
||||||
|
646,979 -> 646,270
|
||||||
|
14,842 -> 14,802
|
||||||
|
496,902 -> 506,912
|
||||||
|
468,354 -> 468,875
|
||||||
|
714,431 -> 714,172
|
||||||
|
554,297 -> 554,790
|
||||||
|
717,664 -> 883,664
|
||||||
|
551,182 -> 980,611
|
||||||
|
794,932 -> 499,637
|
||||||
|
384,499 -> 507,499
|
||||||
|
32,368 -> 257,368
|
||||||
|
984,131 -> 904,131
|
||||||
|
973,16 -> 10,979
|
||||||
|
189,178 -> 189,752
|
||||||
|
492,404 -> 492,593
|
||||||
|
11,515 -> 117,515
|
||||||
|
230,182 -> 230,954
|
||||||
|
652,16 -> 663,16
|
||||||
|
698,693 -> 490,693
|
||||||
|
252,942 -> 587,942
|
||||||
|
551,901 -> 428,778
|
||||||
|
899,320 -> 903,316
|
||||||
|
14,577 -> 313,278
|
||||||
|
409,576 -> 409,475
|
||||||
|
466,883 -> 819,883
|
||||||
|
221,472 -> 609,472
|
||||||
|
686,828 -> 686,720
|
||||||
|
988,989 -> 13,14
|
||||||
|
514,171 -> 227,171
|
||||||
|
868,842 -> 632,842
|
||||||
|
279,824 -> 697,406
|
||||||
|
678,464 -> 678,687
|
||||||
|
736,358 -> 736,259
|
||||||
|
933,66 -> 24,975
|
||||||
|
679,470 -> 679,689
|
||||||
|
979,953 -> 45,19
|
||||||
|
98,826 -> 737,187
|
||||||
|
612,732 -> 612,681
|
||||||
|
985,23 -> 23,985
|
||||||
|
787,732 -> 332,277
|
||||||
|
660,211 -> 660,61
|
||||||
|
395,19 -> 246,19
|
||||||
|
129,876 -> 955,50
|
||||||
|
676,246 -> 821,246
|
||||||
|
980,26 -> 18,988
|
||||||
|
142,945 -> 142,218
|
||||||
|
165,240 -> 540,240
|
||||||
|
941,522 -> 941,129
|
||||||
|
876,274 -> 876,340
|
||||||
|
627,782 -> 905,782
|
||||||
|
928,235 -> 246,235
|
||||||
|
336,449 -> 92,205
|
||||||
|
748,62 -> 748,787
|
||||||
|
804,725 -> 356,277
|
||||||
|
910,89 -> 19,980
|
||||||
|
391,99 -> 155,335
|
||||||
|
608,127 -> 516,219
|
||||||
|
337,255 -> 337,649
|
||||||
|
818,831 -> 818,859
|
||||||
|
146,204 -> 301,359
|
||||||
|
629,646 -> 906,923
|
||||||
|
87,860 -> 824,123
|
||||||
|
613,867 -> 613,946
|
||||||
|
286,339 -> 286,626
|
||||||
|
942,120 -> 595,467
|
||||||
|
35,207 -> 187,207
|
||||||
|
684,559 -> 283,158
|
||||||
|
48,768 -> 48,349
|
||||||
|
656,965 -> 656,27
|
||||||
|
865,341 -> 865,576
|
||||||
|
218,786 -> 152,786
|
||||||
|
697,69 -> 583,69
|
||||||
|
790,79 -> 552,79
|
||||||
|
310,547 -> 846,11
|
||||||
|
428,809 -> 428,940
|
||||||
|
664,829 -> 664,455
|
||||||
|
265,775 -> 749,775
|
||||||
|
362,221 -> 309,168
|
||||||
|
437,253 -> 437,597
|
||||||
|
601,324 -> 245,680
|
||||||
|
24,69 -> 24,476
|
||||||
|
420,344 -> 420,525
|
||||||
|
215,866 -> 635,866
|
||||||
|
926,770 -> 315,770
|
||||||
|
413,650 -> 413,624
|
||||||
|
751,765 -> 475,489
|
||||||
|
673,709 -> 39,75
|
||||||
|
230,689 -> 805,689
|
||||||
|
31,209 -> 789,967
|
||||||
|
698,255 -> 909,255
|
||||||
|
641,752 -> 866,527
|
||||||
|
346,780 -> 391,825
|
||||||
|
328,905 -> 328,130
|
||||||
|
628,674 -> 628,354
|
||||||
|
666,110 -> 98,678
|
||||||
|
846,651 -> 846,371
|
||||||
|
28,946 -> 28,482
|
||||||
|
289,844 -> 458,675
|
||||||
|
605,602 -> 605,297
|
||||||
|
355,217 -> 239,217
|
||||||
|
453,96 -> 195,354
|
||||||
|
988,90 -> 145,933
|
||||||
|
801,194 -> 801,109
|
||||||
|
894,708 -> 894,212
|
||||||
|
177,447 -> 607,877
|
||||||
|
824,391 -> 788,391
|
||||||
|
386,940 -> 471,855
|
||||||
|
703,425 -> 583,425
|
||||||
|
848,110 -> 36,922
|
||||||
|
603,596 -> 685,678
|
||||||
|
584,458 -> 584,482
|
||||||
|
464,903 -> 343,903
|
||||||
|
888,413 -> 405,413
|
||||||
|
320,185 -> 103,185
|
||||||
|
475,458 -> 55,878
|
||||||
|
371,843 -> 371,466
|
||||||
|
785,507 -> 785,570
|
||||||
|
904,553 -> 904,983
|
||||||
|
872,600 -> 872,848
|
||||||
|
296,693 -> 751,238
|
||||||
|
490,488 -> 322,488
|
||||||
|
37,371 -> 185,223
|
||||||
|
238,618 -> 238,883
|
||||||
|
232,89 -> 123,89
|
||||||
|
20,14 -> 961,955
|
||||||
|
794,318 -> 914,318
|
||||||
|
407,499 -> 246,338
|
||||||
|
641,514 -> 227,514
|
||||||
|
284,210 -> 562,488
|
||||||
|
164,566 -> 498,900
|
||||||
|
20,825 -> 150,955
|
||||||
|
235,384 -> 537,686
|
||||||
|
151,116 -> 979,944
|
||||||
|
697,133 -> 59,771
|
||||||
|
212,226 -> 38,226
|
||||||
|
523,527 -> 523,497
|
||||||
|
119,493 -> 352,726
|
||||||
|
927,157 -> 154,930
|
||||||
|
336,149 -> 581,394
|
||||||
|
103,580 -> 354,580
|
||||||
|
891,494 -> 532,853
|
||||||
|
22,272 -> 538,788
|
||||||
|
544,296 -> 519,271
|
||||||
|
821,382 -> 821,155
|
||||||
|
501,807 -> 501,202
|
||||||
|
588,76 -> 708,76
|
||||||
|
773,681 -> 184,681
|
||||||
|
754,936 -> 86,268
|
||||||
|
582,972 -> 40,972
|
||||||
|
530,458 -> 530,329
|
||||||
|
109,433 -> 649,433
|
||||||
|
411,215 -> 411,311
|
||||||
|
433,568 -> 433,585
|
||||||
|
232,504 -> 799,504
|
||||||
|
72,442 -> 38,442
|
|
@ -2,5 +2,44 @@ package de.qwertyuiop.aoc.`2021`
|
||||||
|
|
||||||
import de.qwertyuiop.aoc.lib.*
|
import de.qwertyuiop.aoc.lib.*
|
||||||
import cats.*, cats.implicits.given
|
import cats.*, cats.implicits.given
|
||||||
|
import Vectors.{*,given}
|
||||||
|
import util.chaining.given
|
||||||
|
|
||||||
|
extension (a: Int)
|
||||||
|
def <->(b: Int): Range.Inclusive = (a min b) to (a max b)
|
||||||
|
|
||||||
|
case class Line(start: Vec2D[Int], end: Vec2D[Int]):
|
||||||
|
def contains(p: Vec2D[Int]): Boolean =
|
||||||
|
(start.x == end.x && start.x == p.x && (start.y <-> end.y).contains(p.y))
|
||||||
|
||
|
||||||
|
(start.y == end.y && start.y == p.y && (start.x <-> end.x).contains(p.x))
|
||||||
|
||
|
||||||
|
(start.x + start.y == end.x + end.y && p.x + p.y == end.x + end.y
|
||||||
|
&& (start.y <-> end.y).contains(p.y) && (start.x <-> end.x).contains(p.x))
|
||||||
|
||
|
||||||
|
(p.x - p.y == end.x - end.y
|
||||||
|
&& (start.y <-> end.y).contains(p.y) && (start.x <-> end.x).contains(p.x))
|
||||||
|
|
||||||
|
def day5(using InputSource): Unit =
|
||||||
|
val lines = input{ case s"$x1,$y1 -> $x2,$y2" => Line(Vec2D(x1.toInt,y1.toInt), Vec2D(x2.toInt,y2.toInt))}
|
||||||
|
val orthogonalLines = lines.filter(l => l.start.x == l.end.x || l.start.y == l.end.y)
|
||||||
|
val maxX = lines.flatMap(l => List(l.start.x, l.end.x)).max
|
||||||
|
val maxY = lines.flatMap(l => List(l.start.y, l.end.y)).max
|
||||||
|
println(dangerPoints(orthogonalLines, maxX, maxY))
|
||||||
|
println(dangerPoints(lines, maxX, maxY))
|
||||||
|
|
||||||
|
|
||||||
|
def dangerPoints(lines: List[Line], maxX: Int, maxY: Int) = (
|
||||||
|
for
|
||||||
|
x <- 0 to maxX
|
||||||
|
y <- 0 to maxY
|
||||||
|
yield lines.count(_.contains(Vec2D(x,y)))
|
||||||
|
).count(_ > 1)
|
||||||
|
|
||||||
|
//debug output like in the description for part1
|
||||||
|
def printLines(lines: List[Line], maxX: Int, maxY: Int): Unit =
|
||||||
|
for y <- 0 to maxY do
|
||||||
|
for x <- 0 to maxX do
|
||||||
|
print(lines.count(_.contains(Vec2D(x, y))).pipe(i => if i > 0 then i.toString else "."))
|
||||||
|
println()
|
||||||
|
|
||||||
def day5(using InputSource): Unit = ???
|
|
||||||
|
|
Loading…
Reference in a new issue