Added 2021 (python)
This commit is contained in:
500
2021/05/input
Normal file
500
2021/05/input
Normal file
@ -0,0 +1,500 @@
|
||||
609,916 -> 60,367
|
||||
349,494 -> 682,494
|
||||
75,370 -> 397,370
|
||||
55,623 -> 55,183
|
||||
296,865 -> 296,235
|
||||
810,691 -> 504,385
|
||||
256,67 -> 256,468
|
||||
446,679 -> 446,594
|
||||
592,16 -> 98,16
|
||||
866,642 -> 866,622
|
||||
293,672 -> 911,672
|
||||
799,855 -> 799,638
|
||||
890,805 -> 389,304
|
||||
454,263 -> 454,501
|
||||
798,86 -> 540,86
|
||||
331,256 -> 351,256
|
||||
882,93 -> 445,530
|
||||
879,163 -> 879,841
|
||||
448,476 -> 96,476
|
||||
230,198 -> 941,198
|
||||
943,918 -> 70,45
|
||||
666,502 -> 552,616
|
||||
56,14 -> 978,936
|
||||
438,284 -> 850,284
|
||||
86,824 -> 86,277
|
||||
170,461 -> 737,461
|
||||
675,85 -> 675,289
|
||||
289,14 -> 814,539
|
||||
541,94 -> 541,868
|
||||
334,391 -> 470,391
|
||||
782,313 -> 358,313
|
||||
165,301 -> 17,153
|
||||
11,406 -> 11,869
|
||||
758,365 -> 758,708
|
||||
835,313 -> 212,936
|
||||
636,387 -> 636,314
|
||||
393,588 -> 393,694
|
||||
193,639 -> 193,747
|
||||
850,524 -> 557,817
|
||||
465,751 -> 465,652
|
||||
194,552 -> 194,380
|
||||
212,270 -> 212,691
|
||||
230,595 -> 581,595
|
||||
135,698 -> 325,698
|
||||
973,846 -> 333,206
|
||||
508,297 -> 237,297
|
||||
72,397 -> 418,397
|
||||
159,921 -> 914,166
|
||||
579,202 -> 370,202
|
||||
375,86 -> 638,349
|
||||
903,917 -> 14,28
|
||||
43,841 -> 824,60
|
||||
928,11 -> 478,11
|
||||
562,129 -> 803,129
|
||||
880,61 -> 564,377
|
||||
967,949 -> 122,104
|
||||
293,943 -> 293,484
|
||||
674,466 -> 674,192
|
||||
583,724 -> 834,724
|
||||
499,888 -> 973,888
|
||||
302,519 -> 470,351
|
||||
793,284 -> 669,284
|
||||
74,716 -> 799,716
|
||||
517,529 -> 163,529
|
||||
863,711 -> 863,91
|
||||
977,988 -> 62,73
|
||||
989,32 -> 370,651
|
||||
795,627 -> 584,838
|
||||
984,340 -> 96,340
|
||||
780,425 -> 316,889
|
||||
563,140 -> 378,140
|
||||
203,55 -> 719,55
|
||||
273,757 -> 763,267
|
||||
836,901 -> 846,901
|
||||
152,319 -> 136,319
|
||||
92,970 -> 970,92
|
||||
84,46 -> 498,46
|
||||
539,408 -> 539,259
|
||||
822,366 -> 694,366
|
||||
586,819 -> 755,988
|
||||
218,340 -> 218,812
|
||||
394,197 -> 813,616
|
||||
458,24 -> 401,24
|
||||
684,92 -> 241,92
|
||||
456,569 -> 746,859
|
||||
611,961 -> 508,961
|
||||
90,980 -> 90,423
|
||||
21,13 -> 981,973
|
||||
877,27 -> 354,27
|
||||
583,327 -> 583,627
|
||||
512,808 -> 662,958
|
||||
688,832 -> 578,722
|
||||
213,281 -> 901,969
|
||||
473,42 -> 955,524
|
||||
303,442 -> 614,753
|
||||
829,831 -> 162,164
|
||||
176,25 -> 952,801
|
||||
23,12 -> 989,978
|
||||
798,859 -> 710,859
|
||||
140,784 -> 140,285
|
||||
536,248 -> 536,917
|
||||
950,753 -> 738,541
|
||||
331,159 -> 778,159
|
||||
834,385 -> 834,666
|
||||
192,614 -> 650,614
|
||||
820,503 -> 985,503
|
||||
831,845 -> 62,76
|
||||
653,606 -> 984,606
|
||||
534,515 -> 969,515
|
||||
105,824 -> 860,824
|
||||
384,501 -> 486,603
|
||||
425,337 -> 425,199
|
||||
381,212 -> 381,704
|
||||
897,890 -> 897,783
|
||||
378,82 -> 564,82
|
||||
630,940 -> 659,969
|
||||
954,980 -> 815,841
|
||||
718,111 -> 23,806
|
||||
41,732 -> 426,732
|
||||
346,671 -> 597,671
|
||||
931,51 -> 32,950
|
||||
875,738 -> 875,910
|
||||
982,35 -> 97,920
|
||||
646,341 -> 646,471
|
||||
913,788 -> 745,788
|
||||
979,11 -> 32,958
|
||||
618,283 -> 618,382
|
||||
386,47 -> 386,957
|
||||
680,652 -> 430,652
|
||||
26,752 -> 26,978
|
||||
314,689 -> 941,62
|
||||
806,366 -> 454,366
|
||||
27,365 -> 184,365
|
||||
461,915 -> 548,828
|
||||
332,371 -> 878,371
|
||||
446,208 -> 615,208
|
||||
888,673 -> 888,288
|
||||
529,975 -> 47,975
|
||||
755,806 -> 489,806
|
||||
297,108 -> 311,122
|
||||
585,885 -> 968,885
|
||||
334,359 -> 334,251
|
||||
690,401 -> 637,454
|
||||
131,522 -> 964,522
|
||||
103,831 -> 378,556
|
||||
621,327 -> 621,561
|
||||
178,932 -> 979,131
|
||||
452,285 -> 903,285
|
||||
942,448 -> 919,448
|
||||
102,966 -> 818,250
|
||||
116,226 -> 746,856
|
||||
855,799 -> 855,244
|
||||
425,963 -> 387,963
|
||||
548,879 -> 372,703
|
||||
607,157 -> 607,611
|
||||
949,15 -> 79,885
|
||||
978,325 -> 639,325
|
||||
887,605 -> 208,605
|
||||
426,694 -> 426,296
|
||||
498,960 -> 498,358
|
||||
800,874 -> 800,529
|
||||
172,106 -> 701,635
|
||||
985,160 -> 985,473
|
||||
804,34 -> 431,407
|
||||
976,978 -> 10,12
|
||||
865,761 -> 134,30
|
||||
987,825 -> 987,746
|
||||
110,730 -> 370,730
|
||||
237,34 -> 814,611
|
||||
292,700 -> 292,352
|
||||
699,880 -> 699,286
|
||||
611,94 -> 611,234
|
||||
978,248 -> 354,248
|
||||
517,600 -> 329,600
|
||||
782,46 -> 218,610
|
||||
31,15 -> 880,864
|
||||
563,404 -> 472,404
|
||||
696,552 -> 974,552
|
||||
785,202 -> 861,202
|
||||
94,829 -> 94,404
|
||||
541,395 -> 531,395
|
||||
248,810 -> 935,123
|
||||
169,843 -> 169,870
|
||||
557,35 -> 345,247
|
||||
958,24 -> 835,24
|
||||
130,333 -> 302,161
|
||||
961,53 -> 87,927
|
||||
485,285 -> 975,285
|
||||
376,788 -> 260,788
|
||||
378,590 -> 378,253
|
||||
235,961 -> 406,961
|
||||
93,170 -> 93,339
|
||||
707,782 -> 475,782
|
||||
385,719 -> 385,340
|
||||
430,758 -> 412,740
|
||||
169,780 -> 504,445
|
||||
238,109 -> 238,383
|
||||
805,603 -> 805,364
|
||||
981,373 -> 458,896
|
||||
514,203 -> 372,203
|
||||
942,234 -> 855,234
|
||||
446,292 -> 446,917
|
||||
882,478 -> 882,394
|
||||
690,768 -> 742,768
|
||||
356,652 -> 356,891
|
||||
675,751 -> 675,37
|
||||
370,252 -> 574,252
|
||||
777,736 -> 777,177
|
||||
230,367 -> 787,367
|
||||
187,274 -> 187,752
|
||||
850,888 -> 23,61
|
||||
356,258 -> 392,258
|
||||
176,698 -> 434,440
|
||||
133,813 -> 133,635
|
||||
655,574 -> 909,574
|
||||
365,771 -> 635,501
|
||||
738,611 -> 378,611
|
||||
322,85 -> 322,591
|
||||
137,596 -> 137,522
|
||||
686,339 -> 686,59
|
||||
843,886 -> 963,886
|
||||
967,639 -> 179,639
|
||||
491,208 -> 491,950
|
||||
396,526 -> 644,774
|
||||
29,29 -> 986,986
|
||||
250,40 -> 703,40
|
||||
25,784 -> 757,52
|
||||
443,582 -> 324,582
|
||||
753,369 -> 404,369
|
||||
987,966 -> 34,13
|
||||
390,21 -> 983,21
|
||||
861,626 -> 757,730
|
||||
873,220 -> 873,459
|
||||
529,646 -> 529,90
|
||||
886,668 -> 682,464
|
||||
315,310 -> 315,846
|
||||
674,449 -> 674,594
|
||||
719,448 -> 544,623
|
||||
625,170 -> 182,613
|
||||
242,498 -> 337,498
|
||||
496,23 -> 793,23
|
||||
258,240 -> 151,133
|
||||
256,309 -> 110,455
|
||||
312,438 -> 312,672
|
||||
710,549 -> 710,920
|
||||
967,719 -> 967,414
|
||||
201,324 -> 632,324
|
||||
902,167 -> 226,167
|
||||
745,517 -> 677,449
|
||||
548,18 -> 817,18
|
||||
711,806 -> 672,845
|
||||
907,554 -> 907,837
|
||||
144,810 -> 698,256
|
||||
549,247 -> 549,623
|
||||
309,802 -> 330,823
|
||||
528,275 -> 158,645
|
||||
689,372 -> 689,448
|
||||
621,60 -> 621,332
|
||||
38,884 -> 892,30
|
||||
117,898 -> 989,26
|
||||
521,702 -> 521,42
|
||||
985,142 -> 377,750
|
||||
482,517 -> 562,517
|
||||
333,168 -> 963,798
|
||||
296,642 -> 564,642
|
||||
112,541 -> 111,541
|
||||
745,395 -> 474,124
|
||||
279,238 -> 766,238
|
||||
491,747 -> 491,616
|
||||
973,462 -> 150,462
|
||||
867,120 -> 867,966
|
||||
854,498 -> 854,244
|
||||
684,233 -> 929,233
|
||||
120,151 -> 545,151
|
||||
172,361 -> 630,361
|
||||
100,219 -> 416,219
|
||||
988,24 -> 27,985
|
||||
969,160 -> 193,936
|
||||
985,891 -> 158,64
|
||||
284,875 -> 857,302
|
||||
310,363 -> 310,544
|
||||
841,902 -> 245,902
|
||||
964,240 -> 435,240
|
||||
787,358 -> 399,358
|
||||
177,637 -> 177,250
|
||||
397,61 -> 60,61
|
||||
889,180 -> 409,180
|
||||
631,899 -> 551,979
|
||||
253,912 -> 253,876
|
||||
916,700 -> 983,700
|
||||
89,512 -> 515,938
|
||||
516,940 -> 516,526
|
||||
303,587 -> 303,698
|
||||
287,323 -> 287,730
|
||||
907,528 -> 907,722
|
||||
450,118 -> 450,907
|
||||
12,356 -> 12,875
|
||||
210,34 -> 726,550
|
||||
198,364 -> 198,506
|
||||
314,242 -> 942,242
|
||||
939,86 -> 198,827
|
||||
783,959 -> 837,959
|
||||
978,180 -> 979,180
|
||||
72,668 -> 643,97
|
||||
888,841 -> 888,712
|
||||
553,166 -> 553,253
|
||||
733,880 -> 733,805
|
||||
921,36 -> 37,920
|
||||
113,164 -> 909,960
|
||||
27,746 -> 269,746
|
||||
734,978 -> 734,158
|
||||
334,249 -> 218,249
|
||||
966,762 -> 773,762
|
||||
971,862 -> 171,62
|
||||
607,609 -> 607,880
|
||||
140,261 -> 140,983
|
||||
705,944 -> 906,944
|
||||
691,617 -> 130,617
|
||||
657,190 -> 657,84
|
||||
228,840 -> 655,840
|
||||
653,876 -> 311,534
|
||||
620,337 -> 625,337
|
||||
76,510 -> 220,510
|
||||
39,980 -> 931,88
|
||||
339,44 -> 179,44
|
||||
292,830 -> 706,416
|
||||
640,184 -> 441,184
|
||||
583,238 -> 583,896
|
||||
666,593 -> 502,593
|
||||
317,750 -> 743,750
|
||||
574,466 -> 679,466
|
||||
636,348 -> 636,130
|
||||
115,268 -> 443,596
|
||||
411,664 -> 213,664
|
||||
926,615 -> 452,141
|
||||
258,232 -> 147,232
|
||||
786,297 -> 181,297
|
||||
780,271 -> 101,950
|
||||
533,494 -> 159,120
|
||||
478,286 -> 365,286
|
||||
753,247 -> 933,247
|
||||
334,937 -> 334,419
|
||||
821,57 -> 821,647
|
||||
970,68 -> 50,988
|
||||
158,799 -> 158,598
|
||||
574,632 -> 975,632
|
||||
217,184 -> 880,184
|
||||
443,130 -> 573,260
|
||||
937,144 -> 240,841
|
||||
129,547 -> 129,327
|
||||
805,174 -> 900,174
|
||||
650,335 -> 115,870
|
||||
122,804 -> 679,247
|
||||
104,829 -> 104,587
|
||||
933,452 -> 71,452
|
||||
181,469 -> 181,702
|
||||
114,136 -> 890,912
|
||||
649,144 -> 746,241
|
||||
42,297 -> 592,847
|
||||
721,572 -> 34,572
|
||||
291,262 -> 960,931
|
||||
154,503 -> 154,682
|
||||
264,869 -> 264,626
|
||||
310,421 -> 579,421
|
||||
869,390 -> 448,390
|
||||
223,737 -> 223,627
|
||||
760,162 -> 760,210
|
||||
484,465 -> 401,465
|
||||
582,921 -> 582,75
|
||||
31,905 -> 546,905
|
||||
119,376 -> 119,58
|
||||
76,520 -> 76,102
|
||||
780,257 -> 590,257
|
||||
873,796 -> 540,796
|
||||
469,605 -> 421,653
|
||||
188,667 -> 390,869
|
||||
926,279 -> 926,638
|
||||
22,959 -> 163,959
|
||||
444,439 -> 444,647
|
||||
923,513 -> 577,859
|
||||
500,162 -> 374,162
|
||||
143,988 -> 143,29
|
||||
82,754 -> 82,982
|
||||
107,911 -> 107,941
|
||||
281,782 -> 638,782
|
||||
740,445 -> 967,672
|
||||
280,516 -> 280,882
|
||||
203,157 -> 465,157
|
||||
16,984 -> 982,18
|
||||
122,823 -> 81,823
|
||||
881,232 -> 881,78
|
||||
33,94 -> 33,259
|
||||
29,109 -> 695,775
|
||||
24,593 -> 921,593
|
||||
186,503 -> 186,243
|
||||
369,561 -> 369,176
|
||||
381,835 -> 462,835
|
||||
838,911 -> 153,226
|
||||
115,683 -> 115,444
|
||||
429,145 -> 85,489
|
||||
875,577 -> 365,577
|
||||
221,539 -> 221,252
|
||||
65,957 -> 65,468
|
||||
112,175 -> 112,475
|
||||
358,700 -> 676,700
|
||||
428,508 -> 428,36
|
||||
29,962 -> 977,14
|
||||
941,16 -> 87,870
|
||||
599,923 -> 683,839
|
||||
918,244 -> 702,28
|
||||
926,754 -> 262,754
|
||||
455,139 -> 455,851
|
||||
113,189 -> 113,235
|
||||
429,441 -> 546,441
|
||||
151,183 -> 929,961
|
||||
804,335 -> 804,659
|
||||
469,418 -> 469,235
|
||||
103,99 -> 902,898
|
||||
874,737 -> 595,737
|
||||
728,451 -> 524,247
|
||||
758,366 -> 758,690
|
||||
765,40 -> 570,40
|
||||
987,10 -> 19,978
|
||||
601,881 -> 601,703
|
||||
574,525 -> 826,777
|
||||
690,223 -> 690,98
|
||||
841,496 -> 715,496
|
||||
33,32 -> 984,983
|
||||
21,368 -> 21,209
|
||||
883,473 -> 451,905
|
||||
103,151 -> 198,246
|
||||
102,72 -> 792,762
|
||||
525,725 -> 679,879
|
||||
276,742 -> 107,911
|
||||
456,833 -> 456,714
|
||||
781,769 -> 781,643
|
||||
539,951 -> 324,951
|
||||
467,803 -> 250,803
|
||||
30,406 -> 258,634
|
||||
399,475 -> 399,494
|
||||
895,942 -> 515,942
|
||||
512,591 -> 413,591
|
||||
183,112 -> 687,616
|
||||
439,860 -> 439,746
|
||||
864,633 -> 708,477
|
||||
846,137 -> 846,378
|
||||
778,245 -> 330,693
|
||||
309,458 -> 633,458
|
||||
15,457 -> 440,882
|
||||
563,466 -> 799,702
|
||||
307,751 -> 307,723
|
||||
665,987 -> 843,987
|
||||
683,674 -> 683,497
|
||||
644,354 -> 778,488
|
||||
61,809 -> 735,135
|
||||
18,124 -> 18,490
|
||||
171,179 -> 171,216
|
||||
99,372 -> 610,883
|
||||
143,115 -> 871,843
|
||||
385,688 -> 77,688
|
||||
637,500 -> 637,896
|
||||
409,905 -> 225,905
|
||||
654,676 -> 474,676
|
||||
946,81 -> 946,320
|
||||
209,53 -> 209,535
|
||||
757,508 -> 757,636
|
||||
673,162 -> 255,580
|
||||
526,593 -> 862,929
|
||||
476,256 -> 739,256
|
||||
879,954 -> 38,113
|
||||
786,577 -> 141,577
|
||||
672,131 -> 519,284
|
||||
114,334 -> 212,334
|
||||
571,49 -> 571,893
|
||||
958,942 -> 41,25
|
||||
369,545 -> 369,927
|
||||
699,450 -> 244,450
|
||||
15,538 -> 15,67
|
||||
418,419 -> 90,747
|
||||
335,758 -> 540,758
|
||||
165,211 -> 165,357
|
||||
534,347 -> 251,630
|
||||
893,547 -> 893,119
|
||||
475,581 -> 860,196
|
||||
770,492 -> 879,492
|
||||
131,973 -> 742,973
|
||||
297,808 -> 297,490
|
||||
12,974 -> 937,49
|
||||
932,410 -> 802,410
|
||||
40,535 -> 646,535
|
||||
28,37 -> 951,960
|
||||
270,506 -> 270,790
|
||||
655,752 -> 839,752
|
||||
979,220 -> 979,311
|
||||
903,272 -> 234,941
|
||||
960,786 -> 246,72
|
||||
795,156 -> 99,852
|
||||
784,285 -> 221,285
|
||||
100,152 -> 100,910
|
||||
481,628 -> 657,628
|
73
2021/05/prog.py
Normal file
73
2021/05/prog.py
Normal file
@ -0,0 +1,73 @@
|
||||
VERBOSE = True
|
||||
def verbose(s = "", **kwargs):
|
||||
if VERBOSE:
|
||||
print(s, **kwargs)
|
||||
|
||||
def get_c(s: str):
|
||||
c0 = s.split(',')
|
||||
return [int(c0[0]), int(c0[1])]
|
||||
|
||||
def get_input(sample = False, part = 1):
|
||||
with open(f'sample_p{part}' if sample else 'input', 'r') as f:
|
||||
tmp = f.readlines()
|
||||
ret = {"coords": [], "map_dim": [0, 0]}
|
||||
for line in tmp:
|
||||
coords = line.split(' -> ')
|
||||
c0 = get_c(coords[0])
|
||||
c1 = get_c(coords[1])
|
||||
ret["coords"].append([c0, c1])
|
||||
ret["map_dim"][0] = c0[0] + 1 if c0[0] + 1 > ret["map_dim"][0] else ret["map_dim"][0]
|
||||
ret["map_dim"][1] = c0[1] + 1 if c0[1] + 1 > ret["map_dim"][1] else ret["map_dim"][1]
|
||||
ret["map_dim"][0] = c1[0] + 1 if c1[0] + 1 > ret["map_dim"][0] else ret["map_dim"][0]
|
||||
ret["map_dim"][1] = c1[1] + 1 if c1[1] + 1 > ret["map_dim"][1] else ret["map_dim"][1]
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def result(inp, part = 1):
|
||||
m = [[0 for _ in range(inp["map_dim"][0])] for _ in range(inp["map_dim"][1])]
|
||||
for c_pair in inp["coords"]:
|
||||
x1, y1 = c_pair[0]
|
||||
x2, y2 = c_pair[1]
|
||||
if x1 == x2 or y1 == y2 or (part == 2 and abs(x2 - x1) == abs(y2 - y1)):
|
||||
if x1 == x2:
|
||||
for y in range(min(y1, y2), max(y1, y2) + 1):
|
||||
m[y][x1] += 1
|
||||
elif y1 == y2:
|
||||
for x in range(min(x1, x2), max(x1, x2) + 1):
|
||||
m[y1][x] += 1
|
||||
elif abs(y1 - y2) == abs(x1 - x2):
|
||||
d = (
|
||||
1 if x1 < x2 else -1,
|
||||
1 if y1 < y2 else -1
|
||||
)
|
||||
verbose(f"going through {x1, y1 = }, {x2, y2 = } with {d = }")
|
||||
x = x1
|
||||
y = y1
|
||||
m[y][x] += 1
|
||||
for _ in range(abs(y2 - y1)):
|
||||
x = x + d[0]
|
||||
y = y + d[1]
|
||||
verbose(f"{x, y = }")
|
||||
m[y][x] += 1
|
||||
|
||||
|
||||
|
||||
res = 0;
|
||||
for row in m:
|
||||
for cell in row:
|
||||
if cell == 0:
|
||||
verbose('.', end='')
|
||||
else:
|
||||
verbose(cell, end='')
|
||||
res += 1 if cell >= 2 else 0
|
||||
|
||||
verbose()
|
||||
verbose()
|
||||
|
||||
return res
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
VERBOSE = False
|
||||
print(result(get_input(), part = 2))
|
10
2021/05/sample_p1
Normal file
10
2021/05/sample_p1
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
|
9
2021/05/test.py
Normal file
9
2021/05/test.py
Normal file
@ -0,0 +1,9 @@
|
||||
from prog import *
|
||||
import unittest
|
||||
|
||||
class Tests(unittest.TestCase):
|
||||
def test_part1(self):
|
||||
self.assertEqual(result(get_input(sample = True)), 5)
|
||||
|
||||
def test_part2(self):
|
||||
self.assertEqual(result(get_input(sample = True), part = 2), 12)
|
Reference in New Issue
Block a user