| @ -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 | |||||
| @ -0,0 +1,500 @@ | |||||
| 284,294 -> 733,743 | |||||
| 625,347 -> 653,375 | |||||
| 561,848 -> 561,181 | |||||
| 836,102 -> 836,339 | |||||
| 946,941 -> 22,17 | |||||
| 18,954 -> 956,16 | |||||
| 370,142 -> 370,700 | |||||
| 990,966 -> 677,966 | |||||
| 366,603 -> 366,465 | |||||
| 728,942 -> 57,271 | |||||
| 615,493 -> 847,493 | |||||
| 584,281 -> 301,281 | |||||
| 125,356 -> 301,180 | |||||
| 941,569 -> 555,183 | |||||
| 151,116 -> 509,116 | |||||
| 41,18 -> 841,818 | |||||
| 627,670 -> 627,630 | |||||
| 965,472 -> 965,100 | |||||
| 93,404 -> 330,641 | |||||
| 475,963 -> 475,514 | |||||
| 389,389 -> 389,326 | |||||
| 842,565 -> 842,576 | |||||
| 454,700 -> 650,700 | |||||
| 73,810 -> 73,319 | |||||
| 450,212 -> 450,284 | |||||
| 316,392 -> 316,697 | |||||
| 915,592 -> 578,592 | |||||
| 622,485 -> 434,485 | |||||
| 109,853 -> 952,10 | |||||
| 305,73 -> 305,222 | |||||
| 27,489 -> 157,489 | |||||
| 191,979 -> 867,979 | |||||
| 527,329 -> 527,292 | |||||
| 301,645 -> 301,162 | |||||
| 639,730 -> 176,730 | |||||
| 46,964 -> 46,458 | |||||
| 727,422 -> 435,714 | |||||
| 28,552 -> 404,552 | |||||
| 33,108 -> 33,21 | |||||
| 227,249 -> 327,249 | |||||
| 414,903 -> 784,903 | |||||
| 69,422 -> 888,422 | |||||
| 422,924 -> 103,605 | |||||
| 793,353 -> 450,10 | |||||
| 714,682 -> 714,972 | |||||
| 201,745 -> 410,745 | |||||
| 408,713 -> 408,847 | |||||
| 174,842 -> 818,198 | |||||
| 863,353 -> 775,353 | |||||
| 199,780 -> 670,780 | |||||
| 877,947 -> 340,410 | |||||
| 163,202 -> 163,91 | |||||
| 955,919 -> 955,585 | |||||
| 836,271 -> 533,271 | |||||
| 258,366 -> 728,836 | |||||
| 582,749 -> 582,12 | |||||
| 80,40 -> 80,704 | |||||
| 287,213 -> 287,635 | |||||
| 390,546 -> 390,194 | |||||
| 837,511 -> 538,810 | |||||
| 473,281 -> 902,281 | |||||
| 851,865 -> 731,745 | |||||
| 918,59 -> 445,532 | |||||
| 796,215 -> 796,248 | |||||
| 875,111 -> 604,111 | |||||
| 660,805 -> 538,805 | |||||
| 507,850 -> 145,850 | |||||
| 585,861 -> 585,52 | |||||
| 426,74 -> 700,348 | |||||
| 206,405 -> 529,405 | |||||
| 418,333 -> 418,17 | |||||
| 368,457 -> 33,792 | |||||
| 186,81 -> 957,852 | |||||
| 505,283 -> 113,283 | |||||
| 20,878 -> 462,878 | |||||
| 750,237 -> 69,918 | |||||
| 15,280 -> 358,623 | |||||
| 798,981 -> 500,683 | |||||
| 965,970 -> 22,970 | |||||
| 950,970 -> 148,970 | |||||
| 660,392 -> 660,884 | |||||
| 862,405 -> 862,527 | |||||
| 801,283 -> 801,361 | |||||
| 71,837 -> 136,837 | |||||
| 651,438 -> 945,144 | |||||
| 524,607 -> 614,517 | |||||
| 348,955 -> 138,955 | |||||
| 957,164 -> 404,717 | |||||
| 531,581 -> 454,504 | |||||
| 710,185 -> 710,271 | |||||
| 822,86 -> 822,966 | |||||
| 745,233 -> 490,488 | |||||
| 350,823 -> 663,823 | |||||
| 824,67 -> 447,444 | |||||
| 846,667 -> 796,617 | |||||
| 666,24 -> 666,906 | |||||
| 640,39 -> 640,145 | |||||
| 654,481 -> 985,481 | |||||
| 581,894 -> 416,729 | |||||
| 443,11 -> 697,11 | |||||
| 318,627 -> 799,146 | |||||
| 113,78 -> 891,856 | |||||
| 181,149 -> 179,151 | |||||
| 451,74 -> 451,262 | |||||
| 458,726 -> 314,726 | |||||
| 218,662 -> 533,662 | |||||
| 965,108 -> 527,108 | |||||
| 782,481 -> 896,367 | |||||
| 557,927 -> 557,938 | |||||
| 506,242 -> 941,677 | |||||
| 948,778 -> 948,629 | |||||
| 567,816 -> 567,956 | |||||
| 323,773 -> 323,364 | |||||
| 864,980 -> 864,12 | |||||
| 611,699 -> 611,886 | |||||
| 613,392 -> 901,104 | |||||
| 528,905 -> 156,905 | |||||
| 632,206 -> 798,40 | |||||
| 338,237 -> 919,818 | |||||
| 256,889 -> 11,644 | |||||
| 835,52 -> 55,832 | |||||
| 464,144 -> 322,144 | |||||
| 254,747 -> 254,509 | |||||
| 866,892 -> 866,916 | |||||
| 827,946 -> 30,149 | |||||
| 899,84 -> 177,806 | |||||
| 134,634 -> 357,634 | |||||
| 781,492 -> 244,492 | |||||
| 817,762 -> 817,976 | |||||
| 818,749 -> 818,860 | |||||
| 262,480 -> 263,480 | |||||
| 409,576 -> 409,698 | |||||
| 242,151 -> 981,890 | |||||
| 149,519 -> 149,557 | |||||
| 42,990 -> 42,930 | |||||
| 687,974 -> 50,337 | |||||
| 758,382 -> 465,382 | |||||
| 760,861 -> 760,934 | |||||
| 17,835 -> 17,915 | |||||
| 645,923 -> 645,648 | |||||
| 702,116 -> 72,746 | |||||
| 153,162 -> 955,964 | |||||
| 185,101 -> 918,834 | |||||
| 554,179 -> 554,353 | |||||
| 879,673 -> 879,949 | |||||
| 368,13 -> 368,512 | |||||
| 582,105 -> 591,114 | |||||
| 146,291 -> 600,745 | |||||
| 609,538 -> 930,538 | |||||
| 320,604 -> 320,146 | |||||
| 566,698 -> 443,575 | |||||
| 167,708 -> 844,31 | |||||
| 712,630 -> 712,421 | |||||
| 912,930 -> 64,82 | |||||
| 980,931 -> 87,38 | |||||
| 23,893 -> 888,28 | |||||
| 640,435 -> 676,435 | |||||
| 701,516 -> 190,516 | |||||
| 684,145 -> 62,767 | |||||
| 127,471 -> 91,435 | |||||
| 685,197 -> 78,197 | |||||
| 103,493 -> 103,522 | |||||
| 309,986 -> 309,850 | |||||
| 938,270 -> 938,300 | |||||
| 295,72 -> 354,72 | |||||
| 948,889 -> 948,455 | |||||
| 254,733 -> 254,175 | |||||
| 95,329 -> 942,329 | |||||
| 19,672 -> 19,445 | |||||
| 206,807 -> 206,934 | |||||
| 886,961 -> 886,690 | |||||
| 117,386 -> 117,292 | |||||
| 199,59 -> 668,528 | |||||
| 299,263 -> 299,878 | |||||
| 28,295 -> 638,905 | |||||
| 10,140 -> 276,406 | |||||
| 279,526 -> 921,526 | |||||
| 485,128 -> 856,499 | |||||
| 418,398 -> 186,398 | |||||
| 296,577 -> 296,521 | |||||
| 514,261 -> 10,765 | |||||
| 691,673 -> 776,758 | |||||
| 131,430 -> 152,430 | |||||
| 858,85 -> 62,85 | |||||
| 394,846 -> 270,970 | |||||
| 827,913 -> 827,376 | |||||
| 634,669 -> 910,669 | |||||
| 12,53 -> 945,986 | |||||
| 782,467 -> 782,421 | |||||
| 159,832 -> 109,832 | |||||
| 793,807 -> 79,93 | |||||
| 120,584 -> 356,584 | |||||
| 645,16 -> 645,355 | |||||
| 526,685 -> 217,376 | |||||
| 296,305 -> 296,929 | |||||
| 954,144 -> 954,839 | |||||
| 748,88 -> 103,733 | |||||
| 523,804 -> 473,754 | |||||
| 524,316 -> 524,756 | |||||
| 696,183 -> 912,183 | |||||
| 288,564 -> 55,797 | |||||
| 568,103 -> 568,348 | |||||
| 468,626 -> 682,412 | |||||
| 163,163 -> 961,961 | |||||
| 762,824 -> 27,89 | |||||
| 623,625 -> 32,34 | |||||
| 865,343 -> 490,718 | |||||
| 259,458 -> 259,33 | |||||
| 944,660 -> 944,176 | |||||
| 781,804 -> 826,759 | |||||
| 15,702 -> 15,553 | |||||
| 403,310 -> 918,825 | |||||
| 438,734 -> 835,734 | |||||
| 825,13 -> 825,245 | |||||
| 129,611 -> 370,611 | |||||
| 49,939 -> 172,939 | |||||
| 687,906 -> 687,532 | |||||
| 629,482 -> 273,126 | |||||
| 727,218 -> 424,218 | |||||
| 447,451 -> 233,451 | |||||
| 142,779 -> 813,779 | |||||
| 527,27 -> 527,804 | |||||
| 482,55 -> 482,200 | |||||
| 39,264 -> 806,264 | |||||
| 884,636 -> 458,636 | |||||
| 467,121 -> 199,389 | |||||
| 856,925 -> 856,666 | |||||
| 666,359 -> 378,359 | |||||
| 11,946 -> 705,946 | |||||
| 491,281 -> 940,730 | |||||
| 86,112 -> 918,944 | |||||
| 974,807 -> 974,707 | |||||
| 445,67 -> 914,536 | |||||
| 953,394 -> 953,822 | |||||
| 468,398 -> 157,87 | |||||
| 231,620 -> 231,646 | |||||
| 979,869 -> 979,911 | |||||
| 450,330 -> 450,79 | |||||
| 675,659 -> 617,659 | |||||
| 66,181 -> 66,723 | |||||
| 181,406 -> 181,192 | |||||
| 908,334 -> 908,526 | |||||
| 254,891 -> 282,891 | |||||
| 777,791 -> 127,141 | |||||
| 469,58 -> 694,58 | |||||
| 954,957 -> 566,569 | |||||
| 957,957 -> 123,123 | |||||
| 741,359 -> 741,986 | |||||
| 763,526 -> 763,101 | |||||
| 857,427 -> 600,170 | |||||
| 527,756 -> 490,719 | |||||
| 625,249 -> 397,249 | |||||
| 798,702 -> 712,702 | |||||
| 868,75 -> 868,853 | |||||
| 332,296 -> 332,629 | |||||
| 211,829 -> 100,940 | |||||
| 12,139 -> 12,218 | |||||
| 655,978 -> 655,242 | |||||
| 99,852 -> 855,96 | |||||
| 486,267 -> 486,855 | |||||
| 474,90 -> 474,244 | |||||
| 948,491 -> 186,491 | |||||
| 896,59 -> 278,677 | |||||
| 295,732 -> 629,732 | |||||
| 860,936 -> 860,556 | |||||
| 143,790 -> 143,26 | |||||
| 371,847 -> 395,847 | |||||
| 739,301 -> 739,44 | |||||
| 384,716 -> 748,716 | |||||
| 848,423 -> 848,923 | |||||
| 855,23 -> 218,660 | |||||
| 381,805 -> 381,438 | |||||
| 451,610 -> 91,610 | |||||
| 906,957 -> 191,957 | |||||
| 118,675 -> 169,675 | |||||
| 836,818 -> 95,818 | |||||
| 368,945 -> 825,488 | |||||
| 165,299 -> 899,299 | |||||
| 392,327 -> 926,861 | |||||
| 663,16 -> 131,548 | |||||
| 630,302 -> 888,302 | |||||
| 206,869 -> 206,331 | |||||
| 979,413 -> 979,204 | |||||
| 894,860 -> 62,28 | |||||
| 444,897 -> 962,379 | |||||
| 550,158 -> 550,885 | |||||
| 845,736 -> 811,736 | |||||
| 846,857 -> 12,857 | |||||
| 981,730 -> 981,154 | |||||
| 694,835 -> 88,835 | |||||
| 21,101 -> 21,385 | |||||
| 19,960 -> 964,15 | |||||
| 283,721 -> 450,721 | |||||
| 59,136 -> 758,835 | |||||
| 287,313 -> 719,313 | |||||
| 471,252 -> 849,630 | |||||
| 682,189 -> 168,189 | |||||
| 10,921 -> 774,157 | |||||
| 884,598 -> 884,540 | |||||
| 207,615 -> 207,443 | |||||
| 627,408 -> 67,408 | |||||
| 285,36 -> 285,792 | |||||
| 116,585 -> 254,585 | |||||
| 183,86 -> 183,702 | |||||
| 220,138 -> 868,138 | |||||
| 833,68 -> 286,615 | |||||
| 367,534 -> 766,534 | |||||
| 907,514 -> 621,228 | |||||
| 133,593 -> 133,581 | |||||
| 164,727 -> 768,123 | |||||
| 566,227 -> 566,555 | |||||
| 983,988 -> 105,110 | |||||
| 620,177 -> 620,821 | |||||
| 612,413 -> 612,176 | |||||
| 168,889 -> 168,210 | |||||
| 871,487 -> 559,175 | |||||
| 399,870 -> 761,870 | |||||
| 236,976 -> 582,630 | |||||
| 699,216 -> 699,887 | |||||
| 153,745 -> 790,745 | |||||
| 444,749 -> 444,257 | |||||
| 808,165 -> 939,165 | |||||
| 546,525 -> 95,976 | |||||
| 583,179 -> 373,389 | |||||
| 235,816 -> 840,816 | |||||
| 744,89 -> 832,89 | |||||
| 425,317 -> 465,357 | |||||
| 267,235 -> 114,82 | |||||
| 887,59 -> 572,374 | |||||
| 808,237 -> 808,626 | |||||
| 431,352 -> 400,383 | |||||
| 815,376 -> 815,905 | |||||
| 249,218 -> 989,958 | |||||
| 120,435 -> 357,198 | |||||
| 807,551 -> 490,234 | |||||
| 910,524 -> 910,725 | |||||
| 802,304 -> 447,659 | |||||
| 789,228 -> 678,339 | |||||
| 229,322 -> 52,322 | |||||
| 658,393 -> 506,393 | |||||
| 378,438 -> 378,569 | |||||
| 163,981 -> 473,671 | |||||
| 537,984 -> 935,586 | |||||
| 58,945 -> 966,37 | |||||
| 132,696 -> 565,263 | |||||
| 136,813 -> 136,284 | |||||
| 606,656 -> 298,348 | |||||
| 533,572 -> 673,712 | |||||
| 872,912 -> 301,341 | |||||
| 16,287 -> 16,613 | |||||
| 571,541 -> 980,950 | |||||
| 117,495 -> 35,495 | |||||
| 85,79 -> 682,676 | |||||
| 425,431 -> 117,739 | |||||
| 982,984 -> 10,12 | |||||
| 28,75 -> 431,478 | |||||
| 259,529 -> 259,436 | |||||
| 762,267 -> 170,859 | |||||
| 323,135 -> 929,741 | |||||
| 81,238 -> 561,718 | |||||
| 128,213 -> 876,961 | |||||
| 649,466 -> 649,540 | |||||
| 715,863 -> 119,863 | |||||
| 830,624 -> 794,660 | |||||
| 123,968 -> 977,114 | |||||
| 489,466 -> 489,811 | |||||
| 27,10 -> 980,963 | |||||
| 255,732 -> 255,484 | |||||
| 574,829 -> 431,829 | |||||
| 548,743 -> 22,217 | |||||
| 903,297 -> 903,763 | |||||
| 684,774 -> 64,154 | |||||
| 260,823 -> 683,823 | |||||
| 422,211 -> 422,826 | |||||
| 10,196 -> 988,196 | |||||
| 108,802 -> 15,802 | |||||
| 104,70 -> 104,452 | |||||
| 885,59 -> 885,36 | |||||
| 68,854 -> 68,774 | |||||
| 731,935 -> 731,718 | |||||
| 657,986 -> 617,986 | |||||
| 732,292 -> 732,32 | |||||
| 841,56 -> 841,83 | |||||
| 74,108 -> 862,896 | |||||
| 654,895 -> 323,895 | |||||
| 374,952 -> 374,217 | |||||
| 90,723 -> 750,63 | |||||
| 246,89 -> 911,754 | |||||
| 453,301 -> 755,301 | |||||
| 983,988 -> 23,28 | |||||
| 81,705 -> 133,757 | |||||
| 752,743 -> 752,397 | |||||
| 53,243 -> 449,639 | |||||
| 451,811 -> 451,187 | |||||
| 26,672 -> 26,699 | |||||
| 254,861 -> 943,861 | |||||
| 643,740 -> 643,966 | |||||
| 486,655 -> 149,318 | |||||
| 375,146 -> 375,973 | |||||
| 76,293 -> 103,293 | |||||
| 246,398 -> 246,248 | |||||
| 324,392 -> 595,121 | |||||
| 130,577 -> 131,577 | |||||
| 380,623 -> 549,454 | |||||
| 224,181 -> 985,942 | |||||
| 310,223 -> 310,594 | |||||
| 23,982 -> 23,738 | |||||
| 19,858 -> 832,858 | |||||
| 726,531 -> 726,578 | |||||
| 730,433 -> 196,433 | |||||
| 606,599 -> 242,599 | |||||
| 444,832 -> 444,238 | |||||
| 198,870 -> 47,870 | |||||
| 944,473 -> 795,473 | |||||
| 737,386 -> 178,945 | |||||
| 328,902 -> 328,644 | |||||
| 422,851 -> 567,851 | |||||
| 674,781 -> 215,781 | |||||
| 920,757 -> 302,757 | |||||
| 225,932 -> 640,517 | |||||
| 359,337 -> 791,337 | |||||
| 935,430 -> 935,262 | |||||
| 772,850 -> 280,358 | |||||
| 175,829 -> 175,451 | |||||
| 938,204 -> 234,908 | |||||
| 253,749 -> 308,749 | |||||
| 704,458 -> 468,458 | |||||
| 222,95 -> 743,616 | |||||
| 968,840 -> 123,840 | |||||
| 491,619 -> 491,889 | |||||
| 979,580 -> 979,459 | |||||
| 901,193 -> 171,923 | |||||
| 246,155 -> 246,680 | |||||
| 711,755 -> 247,755 | |||||
| 671,734 -> 475,734 | |||||
| 803,783 -> 129,109 | |||||
| 145,890 -> 920,115 | |||||
| 463,521 -> 463,700 | |||||
| 782,99 -> 782,311 | |||||
| 547,467 -> 630,467 | |||||
| 14,88 -> 795,869 | |||||
| 653,899 -> 653,90 | |||||
| 488,874 -> 488,570 | |||||
| 93,879 -> 645,327 | |||||
| 320,658 -> 40,938 | |||||
| 611,246 -> 611,22 | |||||
| 258,935 -> 258,829 | |||||
| 931,436 -> 931,263 | |||||
| 252,460 -> 252,461 | |||||
| 490,382 -> 965,382 | |||||
| 242,89 -> 242,617 | |||||
| 271,111 -> 595,435 | |||||
| 462,706 -> 242,486 | |||||
| 557,328 -> 747,328 | |||||
| 486,99 -> 486,333 | |||||
| 156,40 -> 488,372 | |||||
| 323,482 -> 138,297 | |||||
| 595,539 -> 812,756 | |||||
| 923,861 -> 377,315 | |||||
| 934,952 -> 256,274 | |||||
| 314,777 -> 314,12 | |||||
| 508,47 -> 508,144 | |||||
| 888,807 -> 701,807 | |||||
| 745,774 -> 878,907 | |||||
| 740,716 -> 740,215 | |||||
| 62,43 -> 62,12 | |||||
| 571,196 -> 454,196 | |||||
| 568,107 -> 408,107 | |||||
| 549,676 -> 404,676 | |||||
| 595,573 -> 595,970 | |||||
| 148,168 -> 193,123 | |||||
| 763,71 -> 759,71 | |||||
| 797,64 -> 307,64 | |||||
| 959,984 -> 32,57 | |||||
| 457,562 -> 634,562 | |||||
| 127,521 -> 601,47 | |||||
| 112,296 -> 112,120 | |||||
| 148,755 -> 451,755 | |||||
| 636,494 -> 870,494 | |||||
| 910,242 -> 945,277 | |||||
| 912,911 -> 912,892 | |||||
| 759,815 -> 759,314 | |||||
| 391,285 -> 391,959 | |||||
| 455,460 -> 182,460 | |||||
| 112,78 -> 112,385 | |||||
| 842,179 -> 842,592 | |||||
| 236,424 -> 421,424 | |||||
| 508,907 -> 30,907 | |||||
| 637,219 -> 34,822 | |||||
| 503,375 -> 503,205 | |||||
| 570,533 -> 626,533 | |||||
| 658,11 -> 658,94 | |||||
| 179,286 -> 326,433 | |||||
| 918,214 -> 200,932 | |||||
| 339,887 -> 81,887 | |||||
| 794,91 -> 50,835 | |||||
| 225,356 -> 225,261 | |||||
| 80,160 -> 80,335 | |||||
| 148,64 -> 847,763 | |||||
| 595,393 -> 941,393 | |||||
| @ -0,0 +1,124 @@ | |||||
| """ | |||||
| Advent of Code 2021 - Day 05 | |||||
| Run with: | |||||
| python puzzles/day05.py inputs/day05.txt | |||||
| """ | |||||
| import pathlib | |||||
| import sys | |||||
| from typing import Dict, List, Tuple | |||||
| from collections import defaultdict | |||||
| from dataclasses import dataclass | |||||
| @dataclass | |||||
| class Location: | |||||
| x: int = 0 | |||||
| y: int = 0 | |||||
| def __post_init__(self): | |||||
| self.x = int(self.x) | |||||
| self.y = int(self.y) | |||||
| @dataclass | |||||
| class VolcanicVent: | |||||
| start: Location | |||||
| end: Location | |||||
| def __post_init__(self): | |||||
| if self.start.x == self.end.x or self.start.y == self.end.y: | |||||
| self.type = "vertical" if self.start.x == self.end.x else "horizontal" | |||||
| else: | |||||
| self.type = "diagnal" | |||||
| class Chart: | |||||
| vents: List = None | |||||
| diagram: Dict = None | |||||
| def __init__(self, vents: List[VolcanicVent]) -> None: | |||||
| self.diagram = defaultdict(int) | |||||
| self.vents = vents | |||||
| self._generate_diagram() | |||||
| def _generate_diagram(self) -> None: | |||||
| """ | |||||
| .......1.. | |||||
| ..1....1.. | |||||
| ..1....1.. | |||||
| .......1.. | |||||
| .112111211 | |||||
| .......... | |||||
| .......... | |||||
| .......... | |||||
| .......... | |||||
| 222111.... 0,9 -> 5,9 0,9 -> 2,9 | |||||
| """ | |||||
| vents = self.vents.copy() | |||||
| for vent in vents: | |||||
| min_x = min(vent.start.x, vent.end.x) | |||||
| max_x = max(vent.start.x, vent.end.x) | |||||
| min_y = min(vent.start.y, vent.end.y) | |||||
| max_y = max(vent.start.y, vent.end.y) | |||||
| for x in range(min_x, max_x + 1): | |||||
| for y in range(min_y, max_y + 1): | |||||
| if vent.type != "diagnal": | |||||
| self.diagram[x, y] += 1 | |||||
| else: | |||||
| pass | |||||
| def calculate_overlaps(self, max_depth: int = 1) -> int: | |||||
| return sum(depth_count > max_depth for depth_count in self.diagram.values()) | |||||
| def part1(inputs: List[int]) -> int: | |||||
| c = Chart(inputs) | |||||
| return c.calculate_overlaps() | |||||
| def part2(inputs: List[int]) -> int: | |||||
| return False | |||||
| def parse(inputs: str) -> List[int]: | |||||
| """Parse the input string""" | |||||
| results = [] | |||||
| for line in inputs.split("\n"): | |||||
| start_end = line.split(" -> ") | |||||
| start_split = start_end[0].split(",") | |||||
| end_split = start_end[1].split(",") | |||||
| results.append( | |||||
| VolcanicVent( | |||||
| start=Location(x=start_split[0], y=start_split[1]), | |||||
| end=Location(x=end_split[0], y=end_split[1]), | |||||
| ) | |||||
| ) | |||||
| return results | |||||
| def solve(path: str) -> Tuple[int, int]: | |||||
| """Solve the puzzle""" | |||||
| puzzle_input = parse(pathlib.Path(path).read_text().strip()) | |||||
| part1_result = part1(puzzle_input) | |||||
| part2_result = part2(puzzle_input) | |||||
| return part1_result, part2_result | |||||
| def main() -> None: | |||||
| for path in sys.argv[1:]: | |||||
| print(f"Input File: {path}") | |||||
| part1_result, part2_result = solve(path) | |||||
| print(f"Part 1 Result: {part1_result}") | |||||
| print(f"Part 2 Result: {part2_result}") | |||||
| if __name__ == "__main__": | |||||
| main() | |||||
| @ -0,0 +1,34 @@ | |||||
| import pathlib | |||||
| import pytest | |||||
| import day05 as aoc | |||||
| INPUTS_DIR = f"{pathlib.Path(__file__).parent.parent}/inputs" | |||||
| @pytest.fixture | |||||
| def example_data(): | |||||
| input_path = f"{INPUTS_DIR}/day05-example.txt" | |||||
| return aoc.parse(pathlib.Path(input_path).read_text().strip()) | |||||
| @pytest.fixture | |||||
| def day05_data(): | |||||
| input_path = f"{INPUTS_DIR}/day05.txt" | |||||
| return aoc.parse(pathlib.Path(input_path).read_text().strip()) | |||||
| def test_example1(example_data): | |||||
| assert aoc.part1(example_data) == 5 | |||||
| @pytest.mark.skip(reason="Not implemented") | |||||
| def test_example2(example_data): | |||||
| assert aoc.part2(example_data) == ... | |||||
| def test_part1(day05_data): | |||||
| assert aoc.part1(day05_data) == 6572 | |||||
| @pytest.mark.skip(reason="Not implemented") | |||||
| def test_part2(day05_data): | |||||
| assert aoc.part2(day05_data) == ... | |||||