this repo has no description

ft: add day 13

Changed files
+1058
2021
+966
2021/day13.txt
··· 1 + 428,532 2 + 925,404 3 + 882,362 4 + 44,836 5 + 191,714 6 + 412,36 7 + 688,523 8 + 522,842 9 + 1054,359 10 + 523,413 11 + 388,638 12 + 60,495 13 + 758,148 14 + 381,42 15 + 1017,80 16 + 279,696 17 + 848,508 18 + 922,638 19 + 381,852 20 + 887,822 21 + 500,672 22 + 969,526 23 + 986,760 24 + 102,187 25 + 1232,303 26 + 758,596 27 + 412,820 28 + 320,296 29 + 935,715 30 + 310,308 31 + 129,422 32 + 383,485 33 + 919,786 34 + 261,318 35 + 745,863 36 + 279,179 37 + 628,266 38 + 1185,798 39 + 388,190 40 + 790,788 41 + 775,254 42 + 771,491 43 + 1034,513 44 + 147,689 45 + 1215,178 46 + 1263,739 47 + 949,228 48 + 152,852 49 + 536,444 50 + 359,705 51 + 946,780 52 + 21,863 53 + 395,864 54 + 527,603 55 + 167,856 56 + 877,516 57 + 1046,586 58 + 1146,287 59 + 651,604 60 + 32,383 61 + 75,800 62 + 364,780 63 + 306,470 64 + 689,332 65 + 310,362 66 + 759,451 67 + 70,198 68 + 748,639 69 + 937,795 70 + 515,453 71 + 1113,24 72 + 873,819 73 + 706,99 74 + 1031,179 75 + 60,88 76 + 211,786 77 + 1051,626 78 + 518,490 79 + 341,722 80 + 413,598 81 + 301,772 82 + 238,38 83 + 159,318 84 + 1265,547 85 + 572,803 86 + 557,241 87 + 947,250 88 + 490,781 89 + 1054,191 90 + 1158,148 91 + 388,358 92 + 575,191 93 + 961,826 94 + 723,268 95 + 314,402 96 + 208,612 97 + 433,348 98 + 549,515 99 + 361,814 100 + 410,4 101 + 618,324 102 + 109,75 103 + 1190,599 104 + 207,864 105 + 78,79 106 + 1151,455 107 + 701,362 108 + 135,266 109 + 1250,399 110 + 1072,808 111 + 616,298 112 + 1163,653 113 + 1200,19 114 + 951,789 115 + 518,404 116 + 698,890 117 + 1029,249 118 + 820,781 119 + 930,555 120 + 92,479 121 + 739,367 122 + 623,677 123 + 252,108 124 + 372,612 125 + 668,884 126 + 842,880 127 + 36,794 128 + 395,30 129 + 1305,742 130 + 987,380 131 + 1164,66 132 + 922,582 133 + 1019,512 134 + 678,273 135 + 187,389 136 + 1136,479 137 + 243,527 138 + 209,476 139 + 446,810 140 + 1245,656 141 + 1068,372 142 + 341,526 143 + 770,635 144 + 92,150 145 + 852,175 146 + 619,473 147 + 195,77 148 + 229,464 149 + 218,705 150 + 887,110 151 + 206,519 152 + 684,333 153 + 221,378 154 + 31,217 155 + 477,498 156 + 967,448 157 + 907,551 158 + 947,306 159 + 1072,114 160 + 1153,71 161 + 987,828 162 + 472,504 163 + 937,520 164 + 952,656 165 + 795,291 166 + 795,697 167 + 1120,14 168 + 1019,382 169 + 279,248 170 + 1181,444 171 + 699,833 172 + 535,254 173 + 629,424 174 + 1176,508 175 + 515,155 176 + 1022,359 177 + 253,123 178 + 701,84 179 + 498,72 180 + 1228,834 181 + 65,689 182 + 470,847 183 + 216,875 184 + 836,756 185 + 1279,229 186 + 1221,703 187 + 406,806 188 + 699,285 189 + 415,373 190 + 154,448 191 + 612,331 192 + 632,173 193 + 67,142 194 + 492,172 195 + 512,120 196 + 1185,350 197 + 537,28 198 + 1079,9 199 + 95,379 200 + 231,254 201 + 398,807 202 + 219,816 203 + 189,333 204 + 386,301 205 + 858,456 206 + 361,142 207 + 242,336 208 + 1103,864 209 + 1165,282 210 + 957,794 211 + 256,817 212 + 743,584 213 + 412,372 214 + 261,211 215 + 65,459 216 + 13,789 217 + 1190,410 218 + 1124,61 219 + 681,526 220 + 31,677 221 + 585,304 222 + 679,155 223 + 13,626 224 + 594,120 225 + 415,521 226 + 951,105 227 + 179,848 228 + 895,231 229 + 960,497 230 + 1237,568 231 + 77,374 232 + 678,173 233 + 1222,562 234 + 565,863 235 + 33,218 236 + 1116,432 237 + 559,110 238 + 658,87 239 + 947,25 240 + 43,61 241 + 937,732 242 + 464,880 243 + 969,78 244 + 622,819 245 + 406,634 246 + 796,61 247 + 736,387 248 + 681,470 249 + 641,341 250 + 1144,820 251 + 544,875 252 + 626,701 253 + 1215,640 254 + 1218,479 255 + 192,834 256 + 1031,226 257 + 437,819 258 + 467,837 259 + 570,134 260 + 1260,795 261 + 760,276 262 + 259,864 263 + 877,277 264 + 135,42 265 + 36,548 266 + 31,789 267 + 147,205 268 + 840,847 269 + 269,861 270 + 509,612 271 + 259,101 272 + 1028,164 273 + 423,784 274 + 1020,873 275 + 490,315 276 + 492,378 277 + 412,558 278 + 375,491 279 + 564,399 280 + 324,606 281 + 740,894 282 + 594,806 283 + 812,72 284 + 102,707 285 + 989,857 286 + 460,550 287 + 412,858 288 + 457,24 289 + 663,11 290 + 184,159 291 + 457,712 292 + 616,477 293 + 348,47 294 + 239,455 295 + 279,198 296 + 385,705 297 + 587,414 298 + 1118,386 299 + 929,747 300 + 1235,416 301 + 900,4 302 + 786,623 303 + 36,570 304 + 281,700 305 + 1034,717 306 + 303,453 307 + 50,795 308 + 776,372 309 + 572,333 310 + 863,618 311 + 622,607 312 + 395,133 313 + 1260,39 314 + 937,645 315 + 139,645 316 + 798,679 317 + 281,697 318 + 428,362 319 + 467,603 320 + 604,263 321 + 734,634 322 + 551,451 323 + 1102,58 324 + 164,579 325 + 1006,497 326 + 616,701 327 + 53,241 328 + 872,427 329 + 1302,726 330 + 576,602 331 + 324,288 332 + 216,467 333 + 45,547 334 + 1049,766 335 + 243,303 336 + 53,721 337 + 78,558 338 + 13,618 339 + 609,621 340 + 1062,806 341 + 305,68 342 + 1136,191 343 + 887,885 344 + 157,71 345 + 70,696 346 + 244,442 347 + 949,142 348 + 47,739 349 + 880,596 350 + 45,697 351 + 2,830 352 + 744,758 353 + 1196,187 354 + 296,572 355 + 179,400 356 + 256,369 357 + 912,646 358 + 1290,47 359 + 304,397 360 + 160,306 361 + 290,138 362 + 443,633 363 + 947,158 364 + 43,462 365 + 1094,331 366 + 845,122 367 + 867,633 368 + 31,705 369 + 324,746 370 + 508,138 371 + 607,646 372 + 937,84 373 + 735,255 374 + 1200,875 375 + 1192,276 376 + 349,68 377 + 408,91 378 + 229,502 379 + 229,397 380 + 525,24 381 + 793,561 382 + 932,177 383 + 647,11 384 + 706,263 385 + 50,487 386 + 1225,547 387 + 673,264 388 + 1089,378 389 + 773,756 390 + 986,148 391 + 242,558 392 + 1290,847 393 + 97,379 394 + 731,106 395 + 238,114 396 + 875,78 397 + 850,717 398 + 67,480 399 + 975,683 400 + 95,672 401 + 1089,617 402 + 1171,645 403 + 53,465 404 + 1275,645 405 + 895,663 406 + 10,255 407 + 160,484 408 + 703,646 409 + 1240,807 410 + 1012,197 411 + 523,553 412 + 1290,582 413 + 735,252 414 + 865,583 415 + 872,467 416 + 646,56 417 + 668,458 418 + 13,520 419 + 1009,772 420 + 1034,316 421 + 965,182 422 + 726,817 423 + 1308,87 424 + 540,259 425 + 735,642 426 + 997,78 427 + 92,253 428 + 734,196 429 + 221,635 430 + 576,303 431 + 77,520 432 + 1031,198 433 + 1059,551 434 + 545,523 435 + 447,618 436 + 401,120 437 + 378,401 438 + 1081,877 439 + 281,249 440 + 169,185 441 + 820,315 442 + 681,368 443 + 977,366 444 + 10,395 445 + 358,238 446 + 415,231 447 + 224,596 448 + 517,561 449 + 1267,432 450 + 398,646 451 + 438,467 452 + 293,114 453 + 1215,379 454 + 1257,465 455 + 612,779 456 + 525,444 457 + 25,526 458 + 345,264 459 + 1213,379 460 + 534,596 461 + 1208,806 462 + 716,774 463 + 944,87 464 + 887,784 465 + 957,346 466 + 480,36 467 + 1121,561 468 + 184,774 469 + 1279,189 470 + 790,386 471 + 443,338 472 + 1218,639 473 + 32,735 474 + 1019,420 475 + 562,422 476 + 334,30 477 + 33,80 478 + 965,264 479 + 1051,101 480 + 1279,665 481 + 1144,606 482 + 535,192 483 + 146,586 484 + 1265,473 485 + 33,814 486 + 67,515 487 + 801,282 488 + 1228,333 489 + 536,724 490 + 252,786 491 + 862,331 492 + 694,535 493 + 338,499 494 + 129,472 495 + 1068,336 496 + 88,758 497 + 962,424 498 + 1170,733 499 + 1250,358 500 + 282,164 501 + 698,779 502 + 1230,248 503 + 1150,858 504 + 187,827 505 + 537,583 506 + 845,781 507 + 810,0 508 + 435,78 509 + 20,586 510 + 333,528 511 + 313,301 512 + 256,191 513 + 455,43 514 + 415,567 515 + 1059,103 516 + 462,60 517 + 189,109 518 + 1150,306 519 + 559,603 520 + 549,281 521 + 856,794 522 + 1039,100 523 + 863,52 524 + 944,417 525 + 536,170 526 + 499,479 527 + 1000,308 528 + 283,14 529 + 515,697 530 + 552,124 531 + 1205,525 532 + 333,857 533 + 753,653 534 + 152,596 535 + 576,292 536 + 1278,287 537 + 485,295 538 + 269,705 539 + 1094,875 540 + 241,99 541 + 298,197 542 + 977,857 543 + 622,523 544 + 351,827 545 + 38,477 546 + 848,732 547 + 306,495 548 + 587,142 549 + 1111,851 550 + 514,733 551 + 1205,515 552 + 587,773 553 + 271,794 554 + 1068,36 555 + 706,631 556 + 164,287 557 + 189,785 558 + 925,267 559 + 70,421 560 + 1104,563 561 + 609,532 562 + 539,627 563 + 208,170 564 + 775,702 565 + 415,663 566 + 835,46 567 + 458,175 568 + 310,586 569 + 1113,450 570 + 1183,800 571 + 102,134 572 + 216,147 573 + 105,187 574 + 1266,388 575 + 1279,637 576 + 715,161 577 + 1205,826 578 + 522,550 579 + 783,458 580 + 354,350 581 + 576,784 582 + 734,740 583 + 1129,406 584 + 1226,760 585 + 935,198 586 + 1140,520 587 + 979,739 588 + 845,113 589 + 641,520 590 + 740,50 591 + 612,115 592 + 1232,558 593 + 987,66 594 + 105,707 595 + 378,347 596 + 324,8 597 + 944,872 598 + 425,464 599 + 682,875 600 + 1215,222 601 + 353,445 602 + 853,712 603 + 1205,379 604 + 1059,247 605 + 748,479 606 + 420,191 607 + 835,848 608 + 525,870 609 + 736,646 610 + 261,576 611 + 251,247 612 + 751,110 613 + 689,80 614 + 139,291 615 + 723,773 616 + 758,124 617 + 281,197 618 + 927,409 619 + 840,868 620 + 537,866 621 + 751,603 622 + 271,485 623 + 947,698 624 + 1151,318 625 + 688,819 626 + 907,654 627 + 109,819 628 + 197,892 629 + 35,645 630 + 734,154 631 + 790,60 632 + 401,351 633 + 313,520 634 + 1138,222 635 + 845,794 636 + 433,98 637 + 656,42 638 + 1099,786 639 + 1007,453 640 + 851,77 641 + 783,352 642 + 328,107 643 + 473,406 644 + 885,654 645 + 323,66 646 + 167,38 647 + 669,480 648 + 567,584 649 + 1308,830 650 + 1228,113 651 + 733,72 652 + 1019,474 653 + 2,298 654 + 363,25 655 + 575,703 656 + 363,158 657 + 137,100 658 + 259,416 659 + 242,50 660 + 738,289 661 + 1066,803 662 + 1020,780 663 + 331,439 664 + 957,445 665 + 743,663 666 + 380,339 667 + 371,61 668 + 222,618 669 + 468,432 670 + 535,842 671 + 1081,502 672 + 226,362 673 + 224,298 674 + 291,535 675 + 1195,871 676 + 725,304 677 + 734,751 678 + 23,739 679 + 535,397 680 + 447,842 681 + 448,331 682 + 291,158 683 + 1004,424 684 + 977,264 685 + 438,595 686 + 89,15 687 + 371,304 688 + 616,193 689 + 120,599 690 + 1240,817 691 + 281,362 692 + 383,346 693 + 388,582 694 + 406,536 695 + 1277,80 696 + 145,52 697 + 32,287 698 + 1235,800 699 + 912,87 700 + 32,299 701 + 893,792 702 + 765,75 703 + 962,343 704 + 1019,333 705 + 192,508 706 + 330,311 707 + 986,288 708 + 559,336 709 + 248,634 710 + 157,80 711 + 1071,455 712 + 276,401 713 + 594,658 714 + 281,795 715 + 470,420 716 + 843,603 717 + 313,78 718 + 711,393 719 + 1139,820 720 + 124,759 721 + 805,610 722 + 85,347 723 + 833,396 724 + 1190,779 725 + 93,366 726 + 1173,100 727 + 495,128 728 + 162,154 729 + 1073,123 730 + 562,639 731 + 291,561 732 + 1151,576 733 + 293,786 734 + 585,590 735 + 1307,738 736 + 1123,827 737 + 661,266 738 + 514,161 739 + 1066,386 740 + 570,894 741 + 725,142 742 + 792,404 743 + 259,478 744 + 36,52 745 + 251,240 746 + 43,432 747 + 190,462 748 + 917,576 749 + 244,4 750 + 259,268 751 + 1141,332 752 + 855,291 753 + 1004,47 754 + 162,68 755 + 502,820 756 + 95,178 757 + 1138,670 758 + 266,326 759 + 666,843 760 + 1084,84 761 + 1051,581 762 + 1220,847 763 + 1027,733 764 + 1153,103 765 + 437,75 766 + 708,299 767 + 1274,346 768 + 264,586 769 + 669,520 770 + 890,191 771 + 247,252 772 + 798,215 773 + 300,19 774 + 166,606 775 + 216,651 776 + 385,267 777 + 248,751 778 + 986,606 779 + 950,147 780 + 468,880 781 + 243,815 782 + 1201,819 783 + 423,110 784 + 939,164 785 + 761,505 786 + 1215,515 787 + 179,429 788 + 1233,374 789 + 551,443 790 + 137,337 791 + 1020,394 792 + 1063,642 793 + 1208,760 794 + 972,499 795 + 922,806 796 + 497,103 797 + 420,705 798 + 92,639 799 + 1081,430 800 + 771,788 801 + 654,225 802 + 751,178 803 + 375,179 804 + 1265,697 805 + 497,743 806 + 331,455 807 + 20,84 808 + 70,817 809 + 1192,450 810 + 835,465 811 + 415,788 812 + 1285,449 813 + 986,135 814 + 699,609 815 + 1222,786 816 + 629,526 817 + 291,512 818 + 1133,172 819 + 924,593 820 + 5,742 821 + 840,287 822 + 893,123 823 + 242,396 824 + 846,462 825 + 410,605 826 + 88,562 827 + 1215,626 828 + 1036,523 829 + 571,367 830 + 1079,885 831 + 425,465 832 + 1158,852 833 + 1218,641 834 + 692,394 835 + 1260,99 836 + 515,291 837 + 990,416 838 + 276,130 839 + 1161,284 840 + 935,226 841 + 843,505 842 + 738,803 843 + 1310,852 844 + 3,738 845 + 288,359 846 + 783,291 847 + 474,756 848 + 689,590 849 + 125,350 850 + 269,259 851 + 102,806 852 + 82,60 853 + 244,803 854 + 977,630 855 + 927,548 856 + 1274,570 857 + 1196,707 858 + 698,563 859 + 115,871 860 + 279,403 861 + 87,231 862 + 1068,74 863 + 652,746 864 + 1057,95 865 + 1282,417 866 + 485,709 867 + 1304,598 868 + 1282,193 869 + 95,515 870 + 647,435 871 + 433,277 872 + 895,106 873 + 70,807 874 + 244,91 875 + 646,838 876 + 748,33 877 + 587,827 878 + 641,480 879 + 1278,299 880 + 1171,301 881 + 1297,268 882 + 50,347 883 + 1089,169 884 + 701,25 885 + 211,338 886 + 1243,379 887 + 13,268 888 + 348,424 889 + 595,733 890 + 616,596 891 + 787,525 892 + 120,779 893 + 423,864 894 + 634,532 895 + 242,844 896 + 873,75 897 + 1267,730 898 + 502,746 899 + 281,173 900 + 822,750 901 + 402,108 902 + 694,701 903 + 206,666 904 + 927,841 905 + 341,816 906 + 594,47 907 + 1067,815 908 + 118,892 909 + 166,807 910 + 95,626 911 + 403,654 912 + 454,100 913 + 59,609 914 + 895,788 915 + 721,241 916 + 676,532 917 + 74,310 918 + 333,485 919 + 1029,84 920 + 830,36 921 + 599,501 922 + 1218,749 923 + 417,123 924 + 1057,123 925 + 694,193 926 + 324,512 927 + 179,494 928 + 842,432 929 + 979,439 930 + 155,479 931 + 1161,610 932 + 187,515 933 + 930,339 934 + 1183,291 935 + 393,318 936 + 1290,532 937 + 788,550 938 + 785,291 939 + 947,830 940 + 1186,759 941 + 867,556 942 + 748,861 943 + 460,177 944 + 713,852 945 + 358,572 946 + 507,633 947 + 1265,421 948 + 631,155 949 + 1243,414 950 + 1222,108 951 + 229,430 952 + 715,285 953 + 818,131 954 + 955 + fold along x=655 956 + fold along y=447 957 + fold along x=327 958 + fold along y=223 959 + fold along x=163 960 + fold along y=111 961 + fold along x=81 962 + fold along y=55 963 + fold along x=40 964 + fold along y=27 965 + fold along y=13 966 + fold along y=6
+92
2021/solutions.livemd
··· 1067 1067 ```output 1068 1068 98441 1069 1069 ``` 1070 + 1071 + ## Day 13 1072 + 1073 + ```elixir 1074 + [input, folds] = 1075 + File.read!("day13.txt") 1076 + |> String.trim() 1077 + |> String.split("\n\n") 1078 + 1079 + input = 1080 + input 1081 + |> String.split("\n") 1082 + |> Enum.map(fn line -> 1083 + [x, y] = String.split(line, ",") 1084 + 1085 + {String.to_integer(x), String.to_integer(y)} 1086 + end) 1087 + |> MapSet.new() 1088 + 1089 + folds = 1090 + folds 1091 + |> String.split("\n") 1092 + |> Enum.map(fn 1093 + "fold along " <> <<c>> <> "=" <> rest -> 1094 + {String.to_atom(<<c>>), String.to_integer(rest)} 1095 + end) 1096 + 1097 + defmodule Day13 do 1098 + def fold({orientation, pos}, set) do 1099 + Enum.reduce(set, MapSet.new(), fn point, acc -> 1100 + new_point = folded_coords(orientation, pos, point) 1101 + 1102 + MapSet.put(acc, new_point) 1103 + end) 1104 + end 1105 + 1106 + defp folded_coords(:x, col, {x, y}) when x > col, do: {abs(2 * col - x), y} 1107 + defp folded_coords(:y, row, {x, y}) when y > row, do: {x, abs(2 * row - y)} 1108 + defp folded_coords(_, _, point), do: point 1109 + 1110 + def draw(set) do 1111 + set 1112 + |> Enum.group_by(&elem(&1, 1)) 1113 + |> Enum.sort() 1114 + |> Enum.map(fn {_, points} -> 1115 + points 1116 + |> Enum.map(&elem(&1, 0)) 1117 + |> Enum.sort() 1118 + |> Enum.chunk_every(2, 1) 1119 + |> Enum.map(fn 1120 + [a, b] -> b - a 1121 + _ -> 0 1122 + end) 1123 + |> Enum.map(&String.pad_trailing("█", &1, " ")) 1124 + end) 1125 + |> Enum.join("\n") 1126 + end 1127 + end 1128 + ``` 1129 + 1130 + ```output 1131 + {:module, Day13, <<70, 79, 82, 49, 0, 0, 13, ...>>, {:draw, 1}} 1132 + ``` 1133 + 1134 + ```elixir 1135 + Day13.fold(hd(folds), input) |> MapSet.size() 1136 + ``` 1137 + 1138 + ```output 1139 + 802 1140 + ``` 1141 + 1142 + ```elixir 1143 + Enum.reduce(folds, input, &Day13.fold/2) 1144 + |> Day13.draw() 1145 + |> IO.puts() 1146 + ``` 1147 + 1148 + ```output 1149 + ███ █ █ █ █ ████ ████ ██ █ █ ███ 1150 + █ █ █ █ █ █ █ █ █ █ █ █ █ █ 1151 + █ █ ██ ████ ███ █ █ █ █ ███ 1152 + ███ █ █ █ █ █ █ █ ██ █ █ █ █ 1153 + █ █ █ █ █ █ █ █ █ █ █ █ █ █ 1154 + █ █ █ █ █ █ █ ████ ███ ██ ███ 1155 + ``` 1156 + 1157 + ```output 1158 + :ok 1159 + ``` 1160 + 1161 + ## Day 14