Solve day05 part 1

This commit is contained in:
Thom Dickson 2021-12-12 00:20:04 -05:00
parent e71d214316
commit 2e74bf7d37
Signed by: boots
GPG Key ID: 40BE2AF8EBF8D2BB
2 changed files with 535 additions and 12 deletions

View File

@ -1,10 +1,500 @@
0,9 -> 5,9 822,976 -> 822,117
8,0 -> 0,8 387,419 -> 387,468
9,4 -> 3,4 659,275 -> 318,616
2,2 -> 2,1 535,940 -> 684,940
7,0 -> 7,4 294,427 -> 294,88
6,4 -> 2,0 568,922 -> 425,779
0,9 -> 2,9 99,265 -> 97,267
3,4 -> 1,4 534,387 -> 402,387
0,0 -> 8,8 958,268 -> 958,315
5,5 -> 8,2 234,714 -> 234,305
507,257 -> 507,328
455,384 -> 455,645
483,641 -> 483,138
410,249 -> 825,249
609,836 -> 528,836
77,913 -> 77,780
478,93 -> 478,123
391,695 -> 715,695
972,586 -> 649,586
936,955 -> 39,58
168,791 -> 944,15
934,222 -> 811,222
372,683 -> 372,93
911,676 -> 771,816
147,34 -> 147,97
524,498 -> 986,960
791,924 -> 239,372
293,145 -> 776,628
195,472 -> 195,31
884,649 -> 215,649
95,53 -> 95,966
484,111 -> 866,493
564,913 -> 681,913
36,362 -> 486,362
762,146 -> 762,323
330,334 -> 937,334
704,714 -> 744,714
56,12 -> 958,914
855,784 -> 855,629
206,665 -> 206,681
436,629 -> 117,948
414,685 -> 414,54
788,401 -> 788,842
442,270 -> 309,270
606,711 -> 416,521
45,630 -> 45,543
221,192 -> 221,537
629,544 -> 417,544
362,605 -> 885,605
988,928 -> 738,678
460,758 -> 981,237
561,26 -> 561,409
543,186 -> 833,186
963,409 -> 910,462
55,129 -> 742,816
245,27 -> 806,27
318,137 -> 318,592
762,700 -> 762,483
436,341 -> 436,654
641,725 -> 641,227
486,446 -> 56,16
113,821 -> 113,196
740,534 -> 821,534
606,765 -> 125,284
614,786 -> 371,786
215,519 -> 215,814
274,496 -> 482,496
131,210 -> 473,552
701,68 -> 701,395
81,713 -> 81,104
458,677 -> 622,677
237,225 -> 237,810
384,246 -> 384,644
411,876 -> 445,910
182,814 -> 182,184
643,858 -> 407,858
698,621 -> 971,348
309,253 -> 511,51
990,368 -> 671,368
129,619 -> 750,619
382,803 -> 382,635
629,270 -> 415,484
550,101 -> 56,595
971,745 -> 971,589
353,947 -> 786,514
71,931 -> 974,28
915,621 -> 363,69
650,547 -> 650,596
884,228 -> 574,228
833,476 -> 833,824
24,722 -> 24,885
401,508 -> 401,553
452,106 -> 740,106
255,840 -> 60,840
551,609 -> 551,767
799,572 -> 356,129
343,138 -> 945,740
77,766 -> 77,72
190,760 -> 190,341
978,583 -> 911,583
557,18 -> 557,640
673,276 -> 882,276
143,348 -> 775,980
776,803 -> 776,812
38,348 -> 38,463
648,567 -> 210,567
468,934 -> 534,868
966,987 -> 26,47
471,465 -> 126,465
26,29 -> 940,943
416,340 -> 361,285
702,66 -> 702,673
34,964 -> 951,47
156,791 -> 65,791
635,678 -> 355,678
898,13 -> 898,909
644,334 -> 644,155
304,93 -> 445,93
946,934 -> 930,918
376,289 -> 317,348
460,491 -> 500,491
761,605 -> 866,710
252,534 -> 413,534
178,23 -> 895,740
677,90 -> 677,592
905,985 -> 211,291
963,65 -> 963,214
853,617 -> 815,617
576,532 -> 319,275
134,59 -> 829,754
926,948 -> 11,33
46,279 -> 760,279
60,389 -> 60,340
49,264 -> 561,776
912,322 -> 790,322
825,205 -> 825,433
637,693 -> 780,693
891,196 -> 200,196
537,604 -> 604,604
870,75 -> 870,342
518,173 -> 455,110
666,67 -> 919,67
536,128 -> 137,527
698,41 -> 44,41
936,982 -> 106,152
780,488 -> 780,918
968,313 -> 56,313
759,36 -> 140,36
111,605 -> 111,430
609,165 -> 54,720
388,452 -> 745,809
986,12 -> 11,987
193,614 -> 335,756
113,239 -> 38,164
715,145 -> 305,555
632,13 -> 508,137
698,673 -> 698,101
954,225 -> 720,225
626,688 -> 626,476
636,697 -> 91,152
228,210 -> 621,210
83,325 -> 989,325
644,358 -> 644,648
481,183 -> 481,901
803,160 -> 250,713
648,96 -> 913,96
921,17 -> 26,912
844,256 -> 844,485
190,138 -> 578,526
383,527 -> 357,501
529,212 -> 757,440
646,399 -> 944,399
961,681 -> 961,178
40,236 -> 484,680
432,465 -> 832,465
988,989 -> 10,11
850,800 -> 850,292
25,97 -> 372,97
383,248 -> 383,125
577,488 -> 852,763
607,322 -> 432,147
611,637 -> 614,637
853,677 -> 755,677
953,225 -> 953,333
984,978 -> 45,39
95,981 -> 314,981
550,400 -> 327,177
929,893 -> 99,63
958,293 -> 152,293
68,656 -> 563,161
45,506 -> 45,925
271,566 -> 289,566
460,440 -> 920,900
392,788 -> 392,263
946,335 -> 946,171
833,405 -> 876,448
268,188 -> 268,678
881,40 -> 30,40
317,84 -> 277,84
415,917 -> 415,358
28,654 -> 28,646
346,461 -> 346,724
935,954 -> 935,362
121,840 -> 121,38
29,55 -> 344,370
774,649 -> 621,649
31,985 -> 396,620
85,579 -> 85,131
181,886 -> 978,89
284,969 -> 284,95
669,943 -> 54,328
72,509 -> 72,857
460,557 -> 986,31
555,460 -> 555,928
921,961 -> 666,706
11,13 -> 951,953
173,948 -> 173,982
680,422 -> 503,245
443,232 -> 443,630
829,487 -> 773,487
176,631 -> 631,176
860,866 -> 559,866
317,537 -> 624,537
937,199 -> 753,199
484,545 -> 293,736
84,616 -> 489,211
340,166 -> 340,876
47,210 -> 47,961
852,404 -> 852,804
831,565 -> 454,188
236,621 -> 556,941
734,640 -> 734,728
756,357 -> 756,433
102,220 -> 157,220
153,800 -> 104,849
710,585 -> 710,666
724,298 -> 724,698
762,257 -> 123,896
402,642 -> 402,964
549,108 -> 945,108
301,966 -> 851,966
399,903 -> 101,605
194,857 -> 605,857
291,373 -> 85,373
601,597 -> 844,597
362,335 -> 362,107
769,66 -> 107,66
49,373 -> 49,143
96,800 -> 894,800
468,116 -> 557,116
549,206 -> 956,206
918,972 -> 35,89
688,632 -> 106,632
267,338 -> 414,485
258,392 -> 258,107
604,964 -> 139,499
975,191 -> 977,191
861,960 -> 93,192
979,570 -> 439,570
961,21 -> 63,919
312,419 -> 881,419
507,779 -> 507,79
775,447 -> 645,447
34,928 -> 626,928
786,515 -> 786,34
81,269 -> 734,922
938,264 -> 266,264
799,271 -> 799,713
765,860 -> 765,43
967,869 -> 135,37
920,757 -> 602,439
419,814 -> 655,814
22,40 -> 472,490
136,672 -> 770,672
667,860 -> 288,481
311,305 -> 311,674
163,569 -> 163,120
801,885 -> 139,223
551,214 -> 551,207
594,979 -> 942,631
347,286 -> 448,185
161,134 -> 855,828
861,864 -> 20,23
309,388 -> 309,676
582,383 -> 86,879
930,58 -> 206,782
538,925 -> 242,925
379,890 -> 704,565
338,350 -> 338,419
916,870 -> 916,283
101,928 -> 402,627
899,696 -> 899,179
96,62 -> 658,624
950,46 -> 11,985
914,510 -> 910,510
98,116 -> 556,116
165,151 -> 913,899
822,76 -> 41,76
878,97 -> 75,900
476,623 -> 873,623
257,494 -> 746,983
638,23 -> 638,778
969,212 -> 259,212
186,146 -> 923,883
799,822 -> 736,822
628,876 -> 532,780
388,604 -> 388,617
591,949 -> 868,949
92,372 -> 107,357
274,691 -> 254,671
169,917 -> 169,317
792,27 -> 710,27
215,645 -> 713,147
886,498 -> 689,498
955,129 -> 214,870
561,380 -> 375,380
391,849 -> 391,75
181,677 -> 759,677
347,394 -> 347,969
52,383 -> 875,383
498,827 -> 729,596
125,832 -> 125,18
799,711 -> 105,711
952,884 -> 129,61
123,269 -> 123,906
792,934 -> 12,154
955,253 -> 753,253
676,957 -> 676,264
437,35 -> 40,35
661,166 -> 509,14
72,978 -> 270,978
554,472 -> 554,627
914,291 -> 464,741
450,841 -> 827,841
846,694 -> 846,281
391,97 -> 890,596
859,512 -> 685,338
349,564 -> 349,187
473,442 -> 896,19
383,949 -> 383,276
568,596 -> 875,596
298,43 -> 298,504
482,632 -> 12,632
44,441 -> 44,978
210,502 -> 210,712
191,391 -> 191,196
27,683 -> 27,840
47,13 -> 960,926
81,779 -> 81,952
914,96 -> 145,96
444,175 -> 151,175
293,934 -> 293,488
106,867 -> 221,982
669,576 -> 858,576
713,142 -> 84,771
60,923 -> 299,923
376,307 -> 281,307
904,53 -> 41,916
763,495 -> 588,495
62,899 -> 843,899
63,939 -> 592,410
294,588 -> 294,437
920,101 -> 879,142
688,527 -> 688,357
679,854 -> 950,854
636,765 -> 329,765
939,87 -> 62,87
952,560 -> 952,193
466,761 -> 32,327
189,245 -> 876,932
42,675 -> 42,311
787,257 -> 62,982
934,983 -> 64,113
548,522 -> 626,522
942,322 -> 942,276
267,298 -> 267,385
632,241 -> 632,117
192,644 -> 192,507
627,33 -> 627,175
350,650 -> 350,157
807,239 -> 113,933
294,713 -> 87,713
81,530 -> 453,530
539,61 -> 240,61
893,76 -> 893,776
39,49 -> 978,988
733,17 -> 606,144
19,408 -> 493,408
364,639 -> 43,639
873,946 -> 69,142
825,875 -> 233,875
708,408 -> 197,919
990,202 -> 990,32
370,393 -> 664,393
764,472 -> 284,472
308,685 -> 308,541
917,68 -> 45,940
397,794 -> 524,667
525,674 -> 313,462
475,981 -> 297,981
728,152 -> 40,840
265,257 -> 162,257
621,847 -> 828,640
547,927 -> 21,401
351,676 -> 357,676
668,640 -> 668,228
138,736 -> 446,736
912,687 -> 912,817
718,278 -> 718,779
674,786 -> 986,474
812,273 -> 891,273
46,341 -> 46,831
404,464 -> 118,464
277,926 -> 114,763
231,786 -> 106,786
266,721 -> 446,541
42,80 -> 675,713
422,116 -> 422,344
922,543 -> 922,511
525,150 -> 525,599
862,288 -> 498,288
961,432 -> 961,693
895,876 -> 895,837
619,361 -> 174,361
275,673 -> 275,415
950,179 -> 405,179
460,460 -> 460,405
222,872 -> 222,959
451,403 -> 21,833
570,367 -> 570,147
260,792 -> 82,970
586,159 -> 108,159
956,25 -> 55,926
71,645 -> 988,645
540,438 -> 44,934
230,160 -> 395,160
811,106 -> 811,598
819,741 -> 596,741
347,731 -> 347,198
503,580 -> 495,580
30,706 -> 603,133
257,498 -> 619,498
232,784 -> 359,784
826,708 -> 396,708
14,977 -> 895,96
964,192 -> 279,192
611,282 -> 611,460
207,903 -> 207,882
969,10 -> 22,957
403,599 -> 970,32
712,671 -> 712,733
795,422 -> 235,422
47,965 -> 939,73
925,839 -> 275,189
102,593 -> 973,593
389,768 -> 389,493
234,365 -> 624,365
50,901 -> 50,702
345,573 -> 638,866
798,280 -> 111,967
258,556 -> 258,978
966,57 -> 88,935
171,279 -> 171,130
238,727 -> 947,727
683,777 -> 290,777
552,308 -> 552,150
81,91 -> 911,921
845,698 -> 845,735
712,241 -> 26,927
120,813 -> 716,217
947,10 -> 25,932
395,381 -> 338,324
408,989 -> 408,529
600,574 -> 600,557
46,567 -> 46,980
983,14 -> 10,987
984,568 -> 642,568
543,250 -> 543,80
765,534 -> 108,534
89,213 -> 120,213
893,813 -> 271,191
133,178 -> 133,654
468,689 -> 468,677
970,203 -> 970,952
892,322 -> 892,417
593,735 -> 152,294
839,75 -> 839,964
746,413 -> 89,413
535,595 -> 535,633
771,646 -> 614,489
572,852 -> 572,718
125,35 -> 838,748
122,812 -> 179,812
467,243 -> 188,243
713,850 -> 51,188
633,279 -> 932,578
428,230 -> 216,18
94,921 -> 973,42
513,609 -> 513,507
826,358 -> 330,854

View File

@ -13,7 +13,27 @@ def build_chart(paths):
"""Create an empty table using the largest x and y values""" """Create an empty table using the largest x and y values"""
size_x = max([x[0][0] for x in paths] + [x[1][0] for x in paths]) size_x = max([x[0][0] for x in paths] + [x[1][0] for x in paths])
size_y = max([y[0][1] for y in paths] + [y[1][1] for y in paths]) size_y = max([y[0][1] for y in paths] + [y[1][1] for y in paths])
chart = [[0 for x in range(size_x)] for y in range(size_y)] chart = [[0 for x in range(size_x + 1)] for y in range(size_y + 1)]
return chart
def graph_line(chart, line):
print("Line:", line)
line.sort()
if line[0][0] != line[1][0] and line[0][1] != line[1][1]:
return chart
# List out the x and y values that will need a marking
x = [x for x in range(line[0][0], line[1][0] + 1)]
y = [y for y in range(line[0][1], line[1][1] + 1)]
# Zip the two lists together
print("X:", x, "Y:", y)
if len(x) >= len(y):
xy = [(x, y[i % len(y)]) for i, x in enumerate(x)]
else:
xy = [(x[i % len(x)], y) for i, y in enumerate(y)]
print(xy)
for x, y in xy:
chart[y][x] = chart[y][x] + 1
return chart return chart
@ -22,7 +42,20 @@ def part1():
with open("day05.in", "r") as f: with open("day05.in", "r") as f:
paths = ingest([line.rstrip() for line in f]) paths = ingest([line.rstrip() for line in f])
chart = build_chart(paths) chart = build_chart(paths)
[print(line) for line in chart] for path in paths:
chart = graph_line(chart, path)
for line in chart:
for point in line:
if point != 0:
print(point, end="")
else:
print(".", end="")
print()
count = 0
for line in chart:
for pt in line:
count += 1 if pt >= 2 else 0
print(count)
def main(): def main():