Taddeus Kroes 4 жил өмнө
parent
commit
a66ccb189b
2 өөрчлөгдсөн 528 нэмэгдсэн , 0 устгасан
  1. 28 0
      2021/05_lines.py
  2. 500 0
      2021/input/5

+ 28 - 0
2021/05_lines.py

@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+import sys
+from collections import defaultdict
+from itertools import repeat
+
+def parse(line):
+    (x1, y1), (x2, y2) = (part.split(',') for part in line.split(' -> '))
+    return int(x1), int(y1), int(x2), int(y2)
+
+def coords(a, b, c, d, diagonal):
+    if a == b:
+        yield from repeat(a, abs(d - c) + 1)
+    elif diagonal or c == d:
+        delta = -1 if a > b else 1
+        yield from range(a, b + delta, delta)
+
+def overlaps(lines, diagonal):
+    grid = defaultdict(int)
+    for x1, y1, x2, y2 in lines:
+        allx = coords(x1, x2, y1, y2, diagonal)
+        ally = coords(y1, y2, x1, x2, diagonal)
+        for x, y in zip(allx, ally):
+            grid[(x, y)] += 1
+    return sum(n > 1 for n in grid.values())
+
+lines = list(map(parse, sys.stdin))
+print(overlaps(lines, False))
+print(overlaps(lines, True))

+ 500 - 0
2021/input/5

@@ -0,0 +1,500 @@
+419,207 -> 419,109
+300,888 -> 803,385
+104,959 -> 457,959
+987,951 -> 987,385
+173,602 -> 919,602
+173,70 -> 305,70
+341,19 -> 486,19
+128,579 -> 128,100
+210,867 -> 969,867
+880,493 -> 880,58
+937,831 -> 131,25
+520,921 -> 476,965
+760,147 -> 461,147
+646,108 -> 646,27
+99,906 -> 99,591
+19,956 -> 19,273
+89,201 -> 326,201
+275,948 -> 962,261
+292,489 -> 689,489
+674,109 -> 20,763
+861,861 -> 529,529
+155,200 -> 273,200
+628,803 -> 209,384
+654,401 -> 578,325
+723,625 -> 828,730
+137,406 -> 862,406
+893,45 -> 41,897
+631,10 -> 941,320
+618,435 -> 537,435
+939,29 -> 30,938
+505,796 -> 505,244
+799,779 -> 77,779
+938,576 -> 427,576
+522,635 -> 405,518
+244,89 -> 946,89
+447,791 -> 316,660
+560,731 -> 687,731
+16,878 -> 835,59
+45,707 -> 45,565
+767,166 -> 404,529
+791,260 -> 791,950
+373,949 -> 373,156
+38,774 -> 38,557
+445,537 -> 445,370
+817,756 -> 959,898
+472,551 -> 952,71
+696,381 -> 657,420
+43,829 -> 43,190
+101,635 -> 728,635
+197,532 -> 140,532
+693,368 -> 299,368
+433,140 -> 433,610
+136,58 -> 136,666
+472,294 -> 886,294
+690,883 -> 671,864
+141,598 -> 141,118
+56,651 -> 56,957
+747,82 -> 747,91
+219,455 -> 55,291
+444,131 -> 444,802
+326,459 -> 528,661
+245,965 -> 143,965
+916,316 -> 630,316
+263,55 -> 977,769
+262,451 -> 587,451
+960,178 -> 960,564
+960,88 -> 476,572
+314,259 -> 314,169
+404,742 -> 429,742
+830,921 -> 409,921
+181,396 -> 463,678
+338,293 -> 23,608
+851,667 -> 851,350
+181,859 -> 718,322
+314,240 -> 870,796
+778,984 -> 77,283
+476,178 -> 440,178
+935,357 -> 841,263
+695,683 -> 414,964
+760,241 -> 306,241
+390,355 -> 791,355
+460,710 -> 851,710
+559,448 -> 870,448
+161,526 -> 301,386
+935,495 -> 633,193
+205,536 -> 383,536
+290,626 -> 290,94
+55,972 -> 946,81
+240,531 -> 631,922
+189,806 -> 573,806
+518,827 -> 866,479
+239,829 -> 260,829
+151,51 -> 849,51
+301,736 -> 532,736
+23,889 -> 336,889
+284,124 -> 284,933
+637,610 -> 67,40
+610,828 -> 610,159
+763,590 -> 763,963
+804,576 -> 804,694
+689,872 -> 82,265
+440,377 -> 190,127
+933,330 -> 310,953
+873,99 -> 873,328
+756,808 -> 860,808
+119,64 -> 928,873
+74,144 -> 489,559
+957,938 -> 838,938
+148,320 -> 932,320
+386,171 -> 386,985
+357,171 -> 494,171
+254,67 -> 254,95
+196,910 -> 827,910
+107,114 -> 758,114
+971,40 -> 801,40
+504,602 -> 215,891
+184,310 -> 720,846
+280,300 -> 955,975
+49,637 -> 49,572
+352,512 -> 739,899
+610,123 -> 585,123
+808,881 -> 758,881
+646,980 -> 818,980
+948,482 -> 384,482
+115,144 -> 852,881
+506,836 -> 547,836
+985,369 -> 374,980
+883,975 -> 48,975
+447,664 -> 312,799
+24,597 -> 24,331
+45,19 -> 979,953
+210,689 -> 210,430
+704,806 -> 704,612
+985,982 -> 124,121
+70,174 -> 550,174
+463,12 -> 637,12
+107,97 -> 716,97
+935,265 -> 390,810
+42,223 -> 42,86
+60,245 -> 60,473
+695,735 -> 208,735
+547,265 -> 802,265
+941,667 -> 941,806
+250,286 -> 611,286
+10,64 -> 630,64
+482,889 -> 482,150
+441,820 -> 776,820
+529,474 -> 529,265
+533,465 -> 217,149
+242,473 -> 242,830
+633,160 -> 476,317
+942,24 -> 942,784
+80,313 -> 92,325
+295,109 -> 295,712
+31,964 -> 857,138
+285,255 -> 955,925
+650,610 -> 650,366
+722,586 -> 625,586
+580,384 -> 580,531
+78,407 -> 896,407
+296,310 -> 730,744
+717,966 -> 924,966
+524,551 -> 524,671
+44,127 -> 784,867
+214,849 -> 238,849
+749,320 -> 749,241
+886,146 -> 336,696
+889,933 -> 455,499
+644,232 -> 79,797
+400,979 -> 626,979
+433,681 -> 433,523
+447,57 -> 676,57
+185,416 -> 659,890
+849,645 -> 257,53
+633,721 -> 633,901
+766,355 -> 766,56
+669,393 -> 669,523
+833,336 -> 833,58
+52,114 -> 52,413
+699,957 -> 109,957
+14,953 -> 945,22
+641,15 -> 929,303
+25,874 -> 866,33
+856,73 -> 28,901
+94,892 -> 592,892
+256,357 -> 256,700
+960,579 -> 31,579
+940,859 -> 940,987
+507,673 -> 820,986
+164,361 -> 133,361
+210,424 -> 876,424
+28,186 -> 28,376
+452,149 -> 531,149
+142,160 -> 142,435
+180,801 -> 180,439
+681,267 -> 42,267
+724,414 -> 786,476
+762,492 -> 762,427
+902,808 -> 227,133
+70,923 -> 821,172
+468,12 -> 457,12
+208,129 -> 986,907
+78,786 -> 78,352
+573,869 -> 820,869
+780,680 -> 520,940
+276,66 -> 276,244
+423,629 -> 592,629
+888,507 -> 888,139
+869,878 -> 869,951
+274,614 -> 625,965
+926,289 -> 982,233
+102,687 -> 102,214
+52,264 -> 52,12
+904,43 -> 657,43
+184,685 -> 184,628
+506,912 -> 601,817
+356,524 -> 87,524
+202,260 -> 202,276
+970,63 -> 83,950
+402,332 -> 950,880
+195,666 -> 843,666
+13,82 -> 892,961
+614,28 -> 614,871
+892,162 -> 892,101
+363,665 -> 59,665
+768,208 -> 410,208
+483,300 -> 295,300
+590,108 -> 881,108
+837,967 -> 837,326
+368,731 -> 368,913
+900,921 -> 873,921
+896,931 -> 848,979
+562,939 -> 857,939
+85,351 -> 598,351
+917,30 -> 624,30
+605,314 -> 605,303
+382,655 -> 340,697
+949,115 -> 653,115
+667,311 -> 370,608
+971,983 -> 39,51
+178,687 -> 178,69
+906,197 -> 296,807
+947,886 -> 383,322
+551,667 -> 551,238
+86,65 -> 916,895
+589,887 -> 865,611
+332,53 -> 84,53
+361,148 -> 55,148
+883,205 -> 661,205
+415,552 -> 52,552
+46,42 -> 46,952
+955,13 -> 39,929
+677,482 -> 208,482
+414,268 -> 927,268
+101,509 -> 101,149
+946,971 -> 139,164
+223,597 -> 223,517
+805,896 -> 796,896
+565,875 -> 878,875
+472,431 -> 472,732
+643,15 -> 643,202
+618,725 -> 618,284
+376,532 -> 376,120
+807,981 -> 415,981
+716,401 -> 61,401
+893,955 -> 743,805
+264,935 -> 264,677
+586,908 -> 638,908
+780,277 -> 780,418
+234,410 -> 428,410
+899,214 -> 899,703
+948,51 -> 948,509
+238,664 -> 879,23
+20,877 -> 638,877
+146,738 -> 109,738
+670,893 -> 524,893
+317,423 -> 27,713
+91,600 -> 477,986
+902,63 -> 902,797
+647,839 -> 647,667
+227,358 -> 236,349
+985,541 -> 660,866
+86,562 -> 86,949
+368,851 -> 863,356
+327,905 -> 57,635
+561,275 -> 781,495
+196,65 -> 626,65
+110,688 -> 720,78
+720,472 -> 115,472
+817,135 -> 817,876
+752,387 -> 752,104
+78,127 -> 635,684
+812,170 -> 155,170
+606,718 -> 804,916
+843,494 -> 979,494
+919,346 -> 454,346
+866,828 -> 818,828
+114,115 -> 114,250
+895,308 -> 370,308
+665,893 -> 690,893
+939,275 -> 741,275
+290,321 -> 290,910
+747,327 -> 107,967
+734,715 -> 391,372
+368,497 -> 506,359
+773,945 -> 391,563
+772,537 -> 733,537
+271,679 -> 488,679
+665,745 -> 665,984
+143,177 -> 685,719
+671,860 -> 147,860
+674,365 -> 857,182
+343,74 -> 985,716
+284,46 -> 180,46
+595,800 -> 20,225
+57,278 -> 792,278
+649,285 -> 165,769
+600,24 -> 600,116
+862,939 -> 862,871
+153,917 -> 682,388
+117,884 -> 257,884
+726,763 -> 531,763
+810,985 -> 899,985
+718,942 -> 718,466
+674,19 -> 674,203
+117,677 -> 117,918
+928,261 -> 928,945
+719,390 -> 719,321
+822,601 -> 484,263
+725,793 -> 725,111
+201,745 -> 588,745
+404,889 -> 908,385
+981,39 -> 610,410
+148,426 -> 711,989
+128,260 -> 319,451
+325,306 -> 325,585
+557,415 -> 557,745
+915,101 -> 648,101
+104,636 -> 104,520
+93,964 -> 641,416
+201,709 -> 201,90
+921,571 -> 798,571
+313,624 -> 313,510
+343,649 -> 28,649
+688,246 -> 24,910
+696,610 -> 353,610
+126,310 -> 126,394
+457,98 -> 457,981
+277,707 -> 277,531
+943,721 -> 37,721
+959,295 -> 702,295
+23,547 -> 891,547
+209,114 -> 931,836
+737,174 -> 737,195
+208,890 -> 115,797
+170,401 -> 726,401
+11,218 -> 11,297
+989,10 -> 10,989
+866,86 -> 487,86
+867,31 -> 867,334
+846,414 -> 861,414
+478,315 -> 478,697
+572,843 -> 731,843
+657,12 -> 161,508
+903,194 -> 142,955
+612,321 -> 147,786
+813,920 -> 259,920
+834,389 -> 651,206
+824,153 -> 824,557
+399,871 -> 115,871
+270,785 -> 270,120
+469,640 -> 753,640
+620,132 -> 620,175
+620,234 -> 666,234
+594,409 -> 948,55
+670,323 -> 670,89
+262,65 -> 262,379
+879,617 -> 284,22
+493,423 -> 761,423
+17,931 -> 906,42
+512,494 -> 473,494
+122,230 -> 122,87
+15,207 -> 533,207
+216,183 -> 50,183
+360,107 -> 280,107
+403,841 -> 941,841
+913,442 -> 500,29
+864,947 -> 864,85
+500,516 -> 634,382
+283,20 -> 669,20
+916,770 -> 176,30
+966,73 -> 252,787
+847,841 -> 171,165
+163,219 -> 766,219
+482,515 -> 275,308
+528,949 -> 240,949
+725,574 -> 847,696
+109,131 -> 109,538
+655,837 -> 476,837
+803,631 -> 803,51
+977,83 -> 149,911
+207,231 -> 171,231
+617,29 -> 617,294
+838,708 -> 446,708
+711,597 -> 612,498
+975,942 -> 279,246
+315,128 -> 315,293
+146,962 -> 873,235
+448,180 -> 54,180
+177,680 -> 866,680
+891,265 -> 741,265
+656,949 -> 414,949
+909,456 -> 196,456
+574,286 -> 58,286
+861,691 -> 861,383
+779,351 -> 779,827
+459,989 -> 459,350
+936,480 -> 936,699
+645,309 -> 348,606
+861,62 -> 621,302
+568,324 -> 568,358
+889,221 -> 889,335
+538,759 -> 538,266
+780,736 -> 780,827
+866,518 -> 983,401
+67,871 -> 840,98
+432,664 -> 664,664
+146,24 -> 755,24
+964,585 -> 964,770
+372,144 -> 809,144
+688,827 -> 867,827
+137,916 -> 137,942
+846,131 -> 846,46
+764,21 -> 457,328
+140,66 -> 799,725
+703,224 -> 83,844
+557,67 -> 557,681
+355,544 -> 764,135
+625,893 -> 126,394
+842,214 -> 842,322
+582,778 -> 582,762
+341,861 -> 341,859
+143,767 -> 52,858
+114,109 -> 114,200
+394,210 -> 396,212
+861,353 -> 861,652
+873,553 -> 62,553
+44,962 -> 984,22
+734,56 -> 734,828
+798,516 -> 950,516
+367,755 -> 367,618
+868,637 -> 868,780
+192,952 -> 192,734
+603,109 -> 705,211
+12,17 -> 984,989
+910,147 -> 910,620
+515,749 -> 515,517
+775,136 -> 761,150
+662,636 -> 662,21
+894,490 -> 310,490
+956,732 -> 297,73
+514,99 -> 140,99
+308,419 -> 691,419
+485,86 -> 485,187
+737,783 -> 979,783
+90,76 -> 869,855
+959,112 -> 84,112
+879,494 -> 879,257
+933,425 -> 933,619
+64,391 -> 64,21
+106,305 -> 253,452
+324,152 -> 853,152
+666,225 -> 39,852
+370,904 -> 257,791
+592,845 -> 592,15
+936,971 -> 267,302
+147,210 -> 62,210
+308,323 -> 495,323
+212,918 -> 110,918
+229,392 -> 685,848
+896,132 -> 326,702
+483,143 -> 605,265
+251,317 -> 130,317
+758,93 -> 445,93
+156,286 -> 458,286
+401,904 -> 383,904
+244,256 -> 851,256
+928,411 -> 612,411
+642,920 -> 642,420
+494,707 -> 494,225
+87,112 -> 87,256
+972,907 -> 83,18
+139,104 -> 139,761
+493,725 -> 493,529
+981,145 -> 459,667
+390,240 -> 702,240
+466,982 -> 807,982
+320,143 -> 692,515
+477,649 -> 477,206
+456,254 -> 456,578