| @ -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,139 @@ | |||
| """ | |||
| 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: | |||
| self.direction = "vertical" | |||
| elif self.start.y == self.end.y: | |||
| self.direction = "horizontal" | |||
| else: | |||
| self.direction = "diagnal" | |||
| class Chart: | |||
| chart: Dict = None | |||
| vents: List = None | |||
| def __init__(self, vents: List[VolcanicVent], diagnals: bool = True) -> None: | |||
| self.vents = vents | |||
| self._generate_chart(diagnals=diagnals) | |||
| def _generate_chart(self, diagnals: bool = True) -> None: | |||
| """ | |||
| .......1.. | |||
| ..1....1.. | |||
| ..1....1.. | |||
| .......1.. | |||
| .112111211 | |||
| .......... | |||
| .......... | |||
| .......... | |||
| .......... | |||
| 222111.... 0,9 -> 5,9 0,9 -> 2,9 | |||
| """ | |||
| self.chart = defaultdict(int) | |||
| for vent in self.vents: | |||
| if vent.direction != "diagnal": | |||
| self._chart_line_horiz_vert(vent.start, vent.end) | |||
| elif diagnals: | |||
| self._chart_line_diagnal(vent.start, vent.end) | |||
| def _chart_line_diagnal(self, start: Location, end: Location) -> None: | |||
| if end.x > start.x: # direction: left | |||
| x_range = range(start.x, end.x + 1) | |||
| else: # direction: right | |||
| x_range = range(start.x, end.x - 1, -1) # reverse range | |||
| if end.y > start.y: # direction: down | |||
| y_range = range(start.y, end.y + 1) | |||
| else: # direction: up | |||
| y_range = range(start.y, end.y - 1, -1) # reverse range | |||
| for x, y in zip(x_range, y_range): | |||
| self.chart[x, y] += 1 | |||
| def _chart_line_horiz_vert(self, start: Location, end: Location) -> None: | |||
| min_x = min(start.x, end.x) | |||
| max_x = max(start.x, end.x) | |||
| min_y = min(start.y, end.y) | |||
| max_y = max(start.y, end.y) | |||
| for x in range(min_x, max_x + 1): | |||
| for y in range(min_y, max_y + 1): | |||
| self.chart[x, y] += 1 | |||
| def calculate_overlaps(self, max_depth: int = 1) -> int: | |||
| return sum(depth_count > max_depth for depth_count in self.chart.values()) | |||
| def part1(inputs: List[int]) -> int: | |||
| c = Chart(inputs, diagnals=False) | |||
| return c.calculate_overlaps() | |||
| def part2(inputs: List[int]) -> int: | |||
| c = Chart(inputs) | |||
| return c.calculate_overlaps() | |||
| def parse(inputs: str) -> List[int]: | |||
| """Parse the input string""" | |||
| results = [] | |||
| for line in inputs.split("\n"): | |||
| start_end = line.split(" -> ") | |||
| results.append( | |||
| VolcanicVent( | |||
| start=Location(*start_end[0].split(",")), | |||
| end=Location(*start_end[1].split(",")), | |||
| ) | |||
| ) | |||
| 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,32 @@ | |||
| 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 | |||
| def test_example2(example_data): | |||
| assert aoc.part2(example_data) == 12 | |||
| def test_part1(day05_data): | |||
| assert aoc.part1(day05_data) == 6572 | |||
| def test_part2(day05_data): | |||
| assert aoc.part2(day05_data) == 21466 | |||