My attempts to solve puzzles of Advent of Code
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(2022): day9

+2184 -2
+2000
data/day9.txt
··· 1 + D 2 2 + R 1 3 + L 2 4 + U 1 5 + R 2 6 + L 2 7 + R 2 8 + L 1 9 + R 1 10 + L 1 11 + R 2 12 + L 2 13 + R 1 14 + D 2 15 + U 1 16 + R 1 17 + L 2 18 + U 2 19 + R 2 20 + U 2 21 + R 2 22 + D 1 23 + L 1 24 + U 1 25 + R 2 26 + L 1 27 + D 1 28 + U 1 29 + L 1 30 + U 1 31 + D 2 32 + U 1 33 + R 2 34 + U 1 35 + L 1 36 + D 1 37 + L 1 38 + U 1 39 + R 1 40 + L 1 41 + U 2 42 + L 2 43 + D 2 44 + L 2 45 + R 2 46 + U 1 47 + R 1 48 + U 2 49 + D 2 50 + R 2 51 + L 1 52 + R 1 53 + D 1 54 + U 2 55 + R 1 56 + L 1 57 + U 2 58 + L 2 59 + U 1 60 + L 2 61 + U 1 62 + R 1 63 + L 1 64 + D 2 65 + U 2 66 + R 2 67 + D 1 68 + R 1 69 + U 2 70 + R 2 71 + L 2 72 + U 1 73 + L 1 74 + D 2 75 + R 2 76 + L 1 77 + R 1 78 + D 1 79 + R 1 80 + L 1 81 + D 2 82 + R 1 83 + U 1 84 + L 1 85 + R 1 86 + L 1 87 + D 2 88 + L 1 89 + U 1 90 + R 1 91 + D 1 92 + R 1 93 + D 1 94 + L 2 95 + U 1 96 + D 1 97 + R 2 98 + D 2 99 + R 2 100 + L 2 101 + U 2 102 + L 1 103 + U 1 104 + L 1 105 + R 1 106 + L 1 107 + U 2 108 + L 2 109 + U 2 110 + L 1 111 + U 1 112 + D 1 113 + U 3 114 + R 2 115 + D 2 116 + R 1 117 + U 2 118 + L 2 119 + D 1 120 + U 1 121 + R 2 122 + U 3 123 + D 1 124 + L 3 125 + U 2 126 + D 2 127 + R 1 128 + D 1 129 + L 1 130 + D 2 131 + L 2 132 + U 1 133 + L 2 134 + R 3 135 + U 3 136 + L 1 137 + U 3 138 + L 1 139 + D 1 140 + U 3 141 + R 1 142 + U 3 143 + D 2 144 + L 3 145 + R 3 146 + L 2 147 + U 1 148 + D 1 149 + U 1 150 + L 1 151 + D 1 152 + R 2 153 + U 3 154 + D 3 155 + L 3 156 + R 1 157 + U 3 158 + D 1 159 + U 3 160 + L 1 161 + D 3 162 + R 3 163 + U 2 164 + D 1 165 + R 2 166 + U 1 167 + R 3 168 + U 1 169 + D 1 170 + U 1 171 + L 1 172 + R 3 173 + U 2 174 + D 3 175 + U 2 176 + R 2 177 + L 1 178 + D 3 179 + R 3 180 + L 2 181 + U 1 182 + L 2 183 + U 2 184 + R 3 185 + U 3 186 + D 2 187 + U 2 188 + D 3 189 + R 1 190 + D 1 191 + R 3 192 + D 1 193 + L 3 194 + R 2 195 + D 1 196 + L 1 197 + D 1 198 + L 3 199 + D 1 200 + L 3 201 + D 2 202 + L 2 203 + D 2 204 + R 1 205 + U 2 206 + D 1 207 + U 3 208 + L 3 209 + D 1 210 + R 3 211 + L 2 212 + D 2 213 + U 2 214 + R 1 215 + U 2 216 + R 3 217 + L 1 218 + R 3 219 + L 1 220 + D 1 221 + U 2 222 + L 3 223 + U 3 224 + R 2 225 + L 1 226 + R 2 227 + U 4 228 + R 1 229 + U 2 230 + L 2 231 + D 3 232 + U 1 233 + L 2 234 + U 1 235 + L 2 236 + D 3 237 + U 1 238 + D 3 239 + U 1 240 + D 3 241 + L 2 242 + R 1 243 + L 3 244 + R 2 245 + U 2 246 + L 2 247 + D 3 248 + L 2 249 + U 3 250 + R 4 251 + L 3 252 + D 4 253 + L 3 254 + U 2 255 + L 2 256 + U 4 257 + R 2 258 + D 4 259 + R 1 260 + D 4 261 + U 4 262 + D 3 263 + R 2 264 + D 4 265 + U 1 266 + D 4 267 + U 4 268 + R 2 269 + D 3 270 + R 4 271 + D 2 272 + L 2 273 + R 4 274 + L 1 275 + D 2 276 + U 4 277 + R 4 278 + U 4 279 + L 4 280 + U 2 281 + D 3 282 + L 3 283 + U 3 284 + R 1 285 + L 2 286 + D 2 287 + L 3 288 + R 2 289 + U 3 290 + D 4 291 + L 1 292 + D 4 293 + U 3 294 + L 3 295 + U 4 296 + D 1 297 + U 2 298 + D 4 299 + L 4 300 + D 3 301 + R 3 302 + U 1 303 + L 4 304 + D 2 305 + R 4 306 + U 4 307 + L 4 308 + U 3 309 + L 4 310 + R 3 311 + D 3 312 + L 1 313 + U 2 314 + R 1 315 + U 2 316 + D 3 317 + U 4 318 + L 1 319 + D 2 320 + U 1 321 + D 1 322 + L 1 323 + D 1 324 + U 1 325 + D 3 326 + L 1 327 + D 4 328 + L 2 329 + R 3 330 + L 2 331 + R 4 332 + L 4 333 + U 2 334 + R 3 335 + L 2 336 + D 3 337 + L 2 338 + U 2 339 + R 3 340 + U 1 341 + D 3 342 + U 5 343 + D 4 344 + U 3 345 + L 1 346 + D 4 347 + U 3 348 + D 2 349 + L 1 350 + R 3 351 + U 5 352 + L 5 353 + R 1 354 + D 2 355 + R 2 356 + D 3 357 + L 4 358 + D 4 359 + U 2 360 + D 3 361 + R 5 362 + D 3 363 + U 2 364 + D 4 365 + L 1 366 + D 5 367 + R 2 368 + D 1 369 + U 2 370 + L 1 371 + R 5 372 + U 4 373 + L 5 374 + D 2 375 + U 4 376 + D 5 377 + U 4 378 + L 4 379 + U 3 380 + D 2 381 + L 2 382 + R 2 383 + D 1 384 + U 1 385 + R 5 386 + L 3 387 + R 4 388 + D 5 389 + R 5 390 + D 4 391 + L 1 392 + R 2 393 + U 3 394 + R 5 395 + D 5 396 + R 3 397 + D 1 398 + R 3 399 + D 2 400 + U 4 401 + D 1 402 + U 5 403 + L 1 404 + U 3 405 + L 3 406 + D 1 407 + R 3 408 + U 1 409 + L 3 410 + R 2 411 + L 4 412 + R 4 413 + U 1 414 + D 5 415 + R 2 416 + L 5 417 + R 5 418 + U 3 419 + D 1 420 + R 4 421 + D 5 422 + L 5 423 + R 4 424 + U 5 425 + R 4 426 + D 3 427 + R 4 428 + D 2 429 + R 2 430 + U 1 431 + D 2 432 + L 1 433 + R 1 434 + L 3 435 + D 3 436 + L 5 437 + D 4 438 + R 5 439 + D 2 440 + L 5 441 + U 3 442 + R 3 443 + L 5 444 + U 3 445 + L 5 446 + R 5 447 + L 2 448 + U 4 449 + D 2 450 + R 1 451 + L 5 452 + R 1 453 + U 5 454 + L 2 455 + R 2 456 + U 6 457 + L 6 458 + U 2 459 + R 5 460 + U 3 461 + R 2 462 + D 3 463 + U 3 464 + D 1 465 + L 1 466 + U 2 467 + R 5 468 + L 1 469 + R 5 470 + D 6 471 + R 4 472 + L 4 473 + U 1 474 + R 3 475 + D 5 476 + U 3 477 + L 6 478 + U 1 479 + D 6 480 + R 6 481 + L 4 482 + R 4 483 + U 6 484 + R 6 485 + U 3 486 + R 6 487 + U 2 488 + R 6 489 + U 4 490 + R 2 491 + L 5 492 + U 2 493 + D 6 494 + L 4 495 + U 5 496 + L 4 497 + R 6 498 + L 1 499 + R 3 500 + L 3 501 + D 1 502 + L 5 503 + D 1 504 + L 5 505 + R 2 506 + D 3 507 + L 1 508 + U 6 509 + R 6 510 + U 2 511 + L 3 512 + R 4 513 + U 6 514 + R 3 515 + L 4 516 + U 1 517 + R 1 518 + D 1 519 + L 4 520 + D 6 521 + U 1 522 + R 2 523 + L 6 524 + U 3 525 + R 1 526 + L 1 527 + D 3 528 + R 1 529 + U 4 530 + D 2 531 + L 1 532 + D 3 533 + R 2 534 + D 5 535 + L 3 536 + R 6 537 + U 4 538 + D 4 539 + L 4 540 + U 2 541 + D 2 542 + L 4 543 + D 6 544 + U 5 545 + D 5 546 + R 6 547 + D 1 548 + L 4 549 + R 2 550 + U 3 551 + D 5 552 + R 4 553 + U 6 554 + R 4 555 + U 6 556 + L 7 557 + U 6 558 + D 1 559 + U 2 560 + D 6 561 + R 4 562 + U 7 563 + D 2 564 + L 6 565 + R 2 566 + U 7 567 + R 7 568 + L 1 569 + U 2 570 + L 5 571 + R 4 572 + L 7 573 + R 3 574 + D 5 575 + U 7 576 + D 4 577 + L 6 578 + U 5 579 + L 4 580 + D 2 581 + U 2 582 + D 2 583 + U 5 584 + R 7 585 + D 3 586 + U 3 587 + D 6 588 + U 4 589 + D 2 590 + R 6 591 + L 5 592 + U 3 593 + R 1 594 + D 7 595 + R 7 596 + U 4 597 + R 7 598 + U 2 599 + R 1 600 + L 4 601 + U 6 602 + L 1 603 + D 1 604 + U 3 605 + R 7 606 + U 1 607 + R 3 608 + L 3 609 + R 2 610 + U 6 611 + L 6 612 + D 7 613 + L 7 614 + R 3 615 + U 5 616 + L 5 617 + D 4 618 + L 7 619 + R 5 620 + U 7 621 + D 5 622 + R 2 623 + U 2 624 + L 4 625 + U 4 626 + D 5 627 + L 6 628 + R 3 629 + D 4 630 + U 3 631 + D 6 632 + L 5 633 + U 1 634 + L 4 635 + R 2 636 + L 2 637 + U 7 638 + R 4 639 + U 4 640 + L 4 641 + D 1 642 + U 1 643 + D 3 644 + U 3 645 + D 3 646 + R 6 647 + L 5 648 + R 6 649 + D 1 650 + U 4 651 + L 5 652 + U 2 653 + D 6 654 + L 1 655 + U 5 656 + D 5 657 + R 5 658 + D 1 659 + L 4 660 + D 2 661 + U 1 662 + R 3 663 + U 3 664 + L 3 665 + D 5 666 + U 2 667 + R 4 668 + U 1 669 + D 8 670 + R 2 671 + U 4 672 + L 4 673 + D 8 674 + R 2 675 + U 6 676 + D 4 677 + R 5 678 + U 4 679 + R 2 680 + L 2 681 + U 4 682 + D 8 683 + R 7 684 + L 5 685 + R 5 686 + U 6 687 + R 6 688 + U 7 689 + D 2 690 + U 6 691 + D 1 692 + R 5 693 + U 1 694 + D 6 695 + R 7 696 + L 1 697 + R 1 698 + D 1 699 + R 3 700 + D 8 701 + R 1 702 + U 2 703 + L 4 704 + R 4 705 + L 6 706 + R 2 707 + U 7 708 + R 1 709 + L 3 710 + D 1 711 + L 3 712 + U 7 713 + R 8 714 + L 7 715 + D 1 716 + R 1 717 + L 7 718 + D 7 719 + U 5 720 + D 5 721 + L 1 722 + U 7 723 + D 7 724 + R 5 725 + D 5 726 + U 5 727 + R 6 728 + L 8 729 + R 6 730 + L 1 731 + R 3 732 + D 1 733 + L 2 734 + U 7 735 + R 5 736 + L 4 737 + U 3 738 + L 6 739 + U 6 740 + R 6 741 + L 4 742 + U 6 743 + R 5 744 + U 2 745 + R 7 746 + U 8 747 + R 5 748 + U 2 749 + R 4 750 + L 5 751 + R 1 752 + D 4 753 + L 8 754 + R 3 755 + L 2 756 + U 7 757 + R 4 758 + L 6 759 + R 5 760 + U 2 761 + L 3 762 + D 8 763 + R 8 764 + D 7 765 + L 4 766 + D 4 767 + R 6 768 + L 7 769 + U 8 770 + L 5 771 + R 4 772 + D 4 773 + R 8 774 + D 2 775 + L 7 776 + D 6 777 + U 3 778 + L 4 779 + R 6 780 + U 8 781 + L 2 782 + R 6 783 + L 7 784 + U 4 785 + L 3 786 + D 2 787 + R 8 788 + U 3 789 + D 2 790 + U 5 791 + R 7 792 + D 7 793 + L 6 794 + U 8 795 + D 6 796 + U 5 797 + D 6 798 + U 2 799 + L 7 800 + R 4 801 + L 9 802 + R 2 803 + U 3 804 + R 7 805 + U 6 806 + L 3 807 + U 8 808 + L 9 809 + U 5 810 + R 1 811 + L 5 812 + D 5 813 + R 8 814 + L 3 815 + U 1 816 + L 2 817 + D 5 818 + U 1 819 + D 8 820 + U 5 821 + D 7 822 + L 9 823 + U 6 824 + D 4 825 + R 5 826 + U 3 827 + L 1 828 + D 9 829 + R 4 830 + D 7 831 + U 2 832 + R 2 833 + D 4 834 + L 2 835 + U 9 836 + R 7 837 + U 1 838 + R 2 839 + D 7 840 + R 3 841 + D 6 842 + L 7 843 + U 5 844 + R 9 845 + U 4 846 + L 7 847 + R 5 848 + U 7 849 + L 4 850 + D 4 851 + R 9 852 + D 5 853 + L 5 854 + D 1 855 + R 2 856 + D 6 857 + L 8 858 + U 8 859 + L 6 860 + D 7 861 + L 5 862 + U 2 863 + L 3 864 + D 9 865 + U 8 866 + D 3 867 + L 8 868 + R 2 869 + D 7 870 + R 5 871 + D 3 872 + U 1 873 + R 3 874 + L 9 875 + U 3 876 + D 2 877 + L 4 878 + D 7 879 + R 8 880 + U 7 881 + D 5 882 + U 5 883 + R 7 884 + L 8 885 + D 7 886 + L 7 887 + D 8 888 + U 5 889 + R 9 890 + U 10 891 + R 5 892 + U 6 893 + R 7 894 + D 9 895 + L 2 896 + R 1 897 + D 2 898 + R 9 899 + L 4 900 + U 4 901 + R 5 902 + D 9 903 + U 4 904 + L 7 905 + D 9 906 + L 4 907 + D 4 908 + L 10 909 + U 9 910 + L 8 911 + R 10 912 + U 9 913 + L 10 914 + U 2 915 + R 8 916 + L 2 917 + D 6 918 + R 1 919 + D 1 920 + L 5 921 + U 2 922 + R 9 923 + U 2 924 + R 1 925 + U 1 926 + L 6 927 + D 1 928 + R 2 929 + D 10 930 + L 7 931 + R 2 932 + U 7 933 + D 4 934 + R 9 935 + L 7 936 + D 8 937 + U 5 938 + R 10 939 + L 10 940 + D 2 941 + U 2 942 + R 8 943 + U 9 944 + D 1 945 + R 2 946 + L 10 947 + U 5 948 + R 8 949 + L 7 950 + D 1 951 + R 7 952 + D 3 953 + U 8 954 + L 4 955 + D 3 956 + U 4 957 + R 5 958 + U 9 959 + R 10 960 + U 3 961 + R 10 962 + L 6 963 + R 5 964 + U 8 965 + D 9 966 + R 4 967 + U 9 968 + L 1 969 + U 7 970 + R 4 971 + U 2 972 + L 7 973 + D 9 974 + U 8 975 + L 7 976 + U 8 977 + L 3 978 + R 7 979 + D 7 980 + L 7 981 + D 6 982 + L 2 983 + D 5 984 + U 4 985 + R 8 986 + L 6 987 + R 7 988 + D 4 989 + U 10 990 + L 8 991 + R 10 992 + D 2 993 + R 1 994 + U 7 995 + L 5 996 + R 5 997 + L 10 998 + D 5 999 + R 10 1000 + U 7 1001 + L 7 1002 + R 9 1003 + D 2 1004 + L 8 1005 + R 11 1006 + D 4 1007 + R 6 1008 + L 5 1009 + R 8 1010 + U 1 1011 + L 6 1012 + U 3 1013 + L 1 1014 + D 10 1015 + L 9 1016 + D 3 1017 + U 10 1018 + L 9 1019 + U 8 1020 + D 11 1021 + U 11 1022 + L 1 1023 + R 2 1024 + U 1 1025 + L 3 1026 + U 2 1027 + D 1 1028 + U 4 1029 + R 6 1030 + L 6 1031 + R 7 1032 + L 9 1033 + R 8 1034 + L 4 1035 + D 11 1036 + L 4 1037 + U 10 1038 + D 6 1039 + L 10 1040 + U 2 1041 + R 3 1042 + L 10 1043 + D 5 1044 + L 1 1045 + D 2 1046 + R 6 1047 + U 2 1048 + L 2 1049 + U 9 1050 + R 10 1051 + L 4 1052 + D 2 1053 + R 10 1054 + L 5 1055 + U 2 1056 + L 1 1057 + D 6 1058 + L 4 1059 + U 5 1060 + D 8 1061 + U 11 1062 + D 5 1063 + U 10 1064 + L 8 1065 + R 5 1066 + L 6 1067 + R 5 1068 + L 2 1069 + R 7 1070 + D 4 1071 + L 9 1072 + D 2 1073 + R 11 1074 + D 5 1075 + U 6 1076 + D 2 1077 + L 4 1078 + R 9 1079 + L 2 1080 + D 5 1081 + R 2 1082 + D 9 1083 + R 8 1084 + L 3 1085 + U 8 1086 + R 9 1087 + D 8 1088 + R 4 1089 + D 5 1090 + U 7 1091 + D 7 1092 + R 4 1093 + D 10 1094 + L 1 1095 + D 5 1096 + U 11 1097 + L 11 1098 + U 11 1099 + L 10 1100 + U 9 1101 + L 6 1102 + D 4 1103 + R 6 1104 + D 8 1105 + U 6 1106 + D 11 1107 + R 2 1108 + U 9 1109 + L 6 1110 + U 5 1111 + R 10 1112 + D 8 1113 + L 9 1114 + R 8 1115 + D 6 1116 + L 8 1117 + D 12 1118 + U 2 1119 + R 1 1120 + L 1 1121 + U 1 1122 + R 6 1123 + D 3 1124 + U 6 1125 + D 5 1126 + R 9 1127 + L 12 1128 + U 7 1129 + R 6 1130 + L 9 1131 + U 1 1132 + R 12 1133 + D 11 1134 + R 6 1135 + U 11 1136 + D 4 1137 + L 2 1138 + R 12 1139 + U 5 1140 + R 3 1141 + U 11 1142 + D 6 1143 + U 9 1144 + L 10 1145 + U 2 1146 + L 9 1147 + U 9 1148 + R 6 1149 + L 12 1150 + D 2 1151 + U 10 1152 + R 3 1153 + U 12 1154 + L 12 1155 + R 4 1156 + L 11 1157 + D 1 1158 + L 3 1159 + D 11 1160 + U 5 1161 + D 1 1162 + U 12 1163 + L 12 1164 + U 5 1165 + R 8 1166 + L 1 1167 + D 1 1168 + L 3 1169 + U 1 1170 + R 4 1171 + D 4 1172 + L 6 1173 + R 11 1174 + U 11 1175 + D 2 1176 + U 7 1177 + L 3 1178 + D 3 1179 + R 10 1180 + D 1 1181 + U 8 1182 + D 7 1183 + U 6 1184 + L 10 1185 + R 3 1186 + L 6 1187 + D 10 1188 + L 2 1189 + U 6 1190 + D 8 1191 + R 2 1192 + L 5 1193 + U 1 1194 + D 5 1195 + U 10 1196 + D 5 1197 + L 7 1198 + U 3 1199 + R 6 1200 + D 2 1201 + U 5 1202 + D 10 1203 + L 5 1204 + D 2 1205 + R 9 1206 + L 11 1207 + D 3 1208 + L 6 1209 + R 11 1210 + U 10 1211 + L 12 1212 + D 12 1213 + U 8 1214 + D 5 1215 + R 1 1216 + L 6 1217 + D 11 1218 + U 12 1219 + R 11 1220 + D 12 1221 + L 5 1222 + D 7 1223 + R 10 1224 + U 4 1225 + L 1 1226 + R 3 1227 + U 9 1228 + L 13 1229 + U 8 1230 + R 3 1231 + D 4 1232 + R 8 1233 + D 3 1234 + R 8 1235 + D 13 1236 + U 1 1237 + R 12 1238 + U 12 1239 + L 8 1240 + R 5 1241 + D 1 1242 + U 3 1243 + R 9 1244 + D 6 1245 + U 11 1246 + R 3 1247 + D 12 1248 + R 8 1249 + L 6 1250 + D 8 1251 + U 6 1252 + R 13 1253 + L 10 1254 + U 6 1255 + R 5 1256 + L 11 1257 + U 9 1258 + L 12 1259 + R 8 1260 + L 6 1261 + R 3 1262 + D 12 1263 + L 9 1264 + D 3 1265 + U 5 1266 + L 6 1267 + R 7 1268 + L 13 1269 + D 4 1270 + R 7 1271 + U 5 1272 + D 13 1273 + R 4 1274 + U 11 1275 + D 8 1276 + R 5 1277 + D 5 1278 + U 3 1279 + L 6 1280 + U 4 1281 + R 8 1282 + D 8 1283 + U 9 1284 + L 8 1285 + U 2 1286 + R 7 1287 + L 2 1288 + U 1 1289 + D 12 1290 + R 3 1291 + L 2 1292 + R 8 1293 + D 4 1294 + L 7 1295 + R 8 1296 + D 6 1297 + U 10 1298 + R 7 1299 + L 9 1300 + D 5 1301 + R 12 1302 + U 2 1303 + R 10 1304 + U 4 1305 + L 13 1306 + R 9 1307 + L 12 1308 + U 3 1309 + R 10 1310 + U 3 1311 + L 8 1312 + R 12 1313 + U 8 1314 + R 11 1315 + U 5 1316 + L 3 1317 + D 10 1318 + R 8 1319 + D 4 1320 + R 4 1321 + U 9 1322 + L 13 1323 + U 5 1324 + R 11 1325 + L 12 1326 + U 11 1327 + D 9 1328 + L 5 1329 + R 13 1330 + U 2 1331 + L 1 1332 + U 12 1333 + R 13 1334 + L 1 1335 + R 2 1336 + U 6 1337 + R 12 1338 + D 11 1339 + L 8 1340 + U 13 1341 + L 14 1342 + U 13 1343 + L 3 1344 + U 9 1345 + L 10 1346 + R 11 1347 + D 6 1348 + U 8 1349 + D 11 1350 + U 5 1351 + L 11 1352 + U 8 1353 + L 3 1354 + R 2 1355 + D 11 1356 + L 12 1357 + U 14 1358 + R 3 1359 + D 1 1360 + U 14 1361 + R 7 1362 + D 14 1363 + R 4 1364 + D 5 1365 + L 13 1366 + R 2 1367 + L 13 1368 + U 8 1369 + L 7 1370 + D 14 1371 + L 2 1372 + U 13 1373 + D 2 1374 + L 13 1375 + D 13 1376 + U 5 1377 + L 12 1378 + U 3 1379 + L 6 1380 + D 2 1381 + U 3 1382 + L 9 1383 + D 14 1384 + R 3 1385 + L 1 1386 + R 6 1387 + D 3 1388 + U 6 1389 + D 9 1390 + L 5 1391 + D 11 1392 + L 1 1393 + D 11 1394 + L 9 1395 + D 8 1396 + U 13 1397 + D 4 1398 + R 5 1399 + D 14 1400 + L 10 1401 + U 14 1402 + D 14 1403 + R 1 1404 + L 8 1405 + U 5 1406 + D 11 1407 + U 8 1408 + D 14 1409 + L 4 1410 + D 13 1411 + U 13 1412 + R 6 1413 + U 11 1414 + L 9 1415 + U 6 1416 + D 11 1417 + R 11 1418 + U 11 1419 + D 14 1420 + R 6 1421 + L 13 1422 + U 1 1423 + R 11 1424 + L 9 1425 + R 11 1426 + L 4 1427 + R 14 1428 + L 2 1429 + D 14 1430 + R 3 1431 + U 9 1432 + D 6 1433 + U 12 1434 + R 7 1435 + U 9 1436 + L 4 1437 + D 9 1438 + R 11 1439 + L 9 1440 + R 14 1441 + L 12 1442 + U 1 1443 + L 10 1444 + U 7 1445 + R 13 1446 + D 3 1447 + R 8 1448 + L 4 1449 + R 4 1450 + L 3 1451 + U 1 1452 + R 14 1453 + D 4 1454 + R 9 1455 + U 3 1456 + L 12 1457 + U 11 1458 + R 5 1459 + U 4 1460 + L 11 1461 + D 14 1462 + L 12 1463 + R 7 1464 + L 15 1465 + R 14 1466 + D 12 1467 + U 10 1468 + R 11 1469 + D 9 1470 + U 14 1471 + R 5 1472 + D 13 1473 + L 14 1474 + D 9 1475 + U 1 1476 + R 10 1477 + U 15 1478 + R 12 1479 + D 13 1480 + L 9 1481 + R 9 1482 + U 8 1483 + R 2 1484 + U 3 1485 + R 3 1486 + D 8 1487 + U 14 1488 + R 4 1489 + L 7 1490 + U 11 1491 + D 6 1492 + L 14 1493 + D 6 1494 + R 8 1495 + U 8 1496 + R 5 1497 + L 13 1498 + R 9 1499 + D 6 1500 + R 6 1501 + L 9 1502 + U 2 1503 + R 13 1504 + U 4 1505 + D 9 1506 + U 14 1507 + R 15 1508 + D 2 1509 + R 6 1510 + D 7 1511 + L 3 1512 + U 14 1513 + D 5 1514 + U 13 1515 + R 8 1516 + D 15 1517 + U 3 1518 + R 9 1519 + D 10 1520 + R 11 1521 + U 12 1522 + D 8 1523 + R 3 1524 + L 5 1525 + D 15 1526 + L 1 1527 + U 6 1528 + R 15 1529 + D 1 1530 + R 13 1531 + D 1 1532 + U 2 1533 + R 15 1534 + D 3 1535 + L 4 1536 + U 9 1537 + D 1 1538 + L 13 1539 + R 11 1540 + U 15 1541 + R 5 1542 + U 15 1543 + R 13 1544 + L 5 1545 + U 2 1546 + R 5 1547 + D 11 1548 + U 11 1549 + L 12 1550 + D 15 1551 + R 11 1552 + L 7 1553 + D 2 1554 + L 11 1555 + D 2 1556 + L 7 1557 + U 7 1558 + R 5 1559 + D 8 1560 + R 6 1561 + L 10 1562 + U 5 1563 + R 3 1564 + U 7 1565 + R 1 1566 + U 7 1567 + L 5 1568 + U 11 1569 + R 14 1570 + U 9 1571 + D 8 1572 + R 10 1573 + L 9 1574 + R 11 1575 + U 6 1576 + R 14 1577 + U 16 1578 + D 13 1579 + U 16 1580 + L 1 1581 + D 2 1582 + R 13 1583 + D 11 1584 + U 9 1585 + R 4 1586 + L 11 1587 + U 2 1588 + L 7 1589 + R 2 1590 + U 14 1591 + L 11 1592 + R 10 1593 + L 1 1594 + R 15 1595 + U 9 1596 + L 16 1597 + R 11 1598 + D 15 1599 + U 10 1600 + L 7 1601 + R 9 1602 + L 9 1603 + D 16 1604 + U 7 1605 + D 10 1606 + R 11 1607 + L 3 1608 + R 16 1609 + L 6 1610 + R 7 1611 + L 7 1612 + R 13 1613 + L 5 1614 + R 6 1615 + D 15 1616 + R 11 1617 + D 7 1618 + U 5 1619 + D 11 1620 + U 13 1621 + R 13 1622 + U 12 1623 + D 10 1624 + L 11 1625 + D 10 1626 + R 6 1627 + U 10 1628 + D 9 1629 + U 1 1630 + L 13 1631 + U 13 1632 + L 11 1633 + U 15 1634 + L 7 1635 + R 2 1636 + D 2 1637 + U 9 1638 + D 1 1639 + L 15 1640 + U 6 1641 + D 3 1642 + U 7 1643 + D 6 1644 + L 6 1645 + U 14 1646 + L 3 1647 + U 16 1648 + L 8 1649 + D 8 1650 + R 4 1651 + D 1 1652 + U 13 1653 + L 4 1654 + U 1 1655 + R 15 1656 + U 3 1657 + D 6 1658 + L 4 1659 + D 12 1660 + L 16 1661 + D 7 1662 + U 10 1663 + L 3 1664 + R 6 1665 + L 12 1666 + R 9 1667 + D 1 1668 + U 7 1669 + L 14 1670 + D 5 1671 + U 15 1672 + D 14 1673 + L 5 1674 + R 6 1675 + D 4 1676 + U 10 1677 + L 17 1678 + R 9 1679 + D 1 1680 + R 12 1681 + U 17 1682 + R 14 1683 + U 4 1684 + R 14 1685 + U 2 1686 + D 13 1687 + R 6 1688 + L 12 1689 + D 10 1690 + L 9 1691 + D 17 1692 + R 14 1693 + D 12 1694 + L 5 1695 + D 17 1696 + L 8 1697 + U 16 1698 + D 9 1699 + U 7 1700 + L 11 1701 + R 13 1702 + U 2 1703 + D 15 1704 + R 2 1705 + L 5 1706 + U 6 1707 + L 5 1708 + U 15 1709 + D 13 1710 + U 17 1711 + R 17 1712 + L 4 1713 + U 17 1714 + R 1 1715 + D 16 1716 + L 16 1717 + R 7 1718 + U 14 1719 + L 3 1720 + D 12 1721 + L 2 1722 + D 6 1723 + R 10 1724 + U 11 1725 + R 8 1726 + D 8 1727 + U 3 1728 + R 5 1729 + U 12 1730 + D 5 1731 + U 14 1732 + R 13 1733 + U 12 1734 + R 1 1735 + U 4 1736 + D 12 1737 + L 6 1738 + R 8 1739 + D 9 1740 + U 4 1741 + D 16 1742 + L 4 1743 + D 7 1744 + L 2 1745 + U 13 1746 + L 7 1747 + D 16 1748 + U 1 1749 + D 14 1750 + U 14 1751 + L 10 1752 + U 2 1753 + D 11 1754 + L 5 1755 + D 14 1756 + U 14 1757 + L 11 1758 + R 17 1759 + D 3 1760 + R 7 1761 + D 6 1762 + R 17 1763 + D 4 1764 + R 14 1765 + L 7 1766 + U 17 1767 + L 6 1768 + D 7 1769 + L 9 1770 + U 10 1771 + L 4 1772 + D 1 1773 + L 17 1774 + R 4 1775 + D 13 1776 + L 4 1777 + D 9 1778 + U 12 1779 + L 6 1780 + R 18 1781 + L 8 1782 + R 16 1783 + L 14 1784 + D 9 1785 + L 18 1786 + D 2 1787 + U 4 1788 + D 7 1789 + R 8 1790 + D 13 1791 + L 17 1792 + U 3 1793 + D 10 1794 + R 10 1795 + L 13 1796 + D 15 1797 + L 14 1798 + D 11 1799 + R 7 1800 + L 3 1801 + R 17 1802 + U 13 1803 + R 14 1804 + D 5 1805 + L 12 1806 + U 4 1807 + R 17 1808 + D 2 1809 + U 7 1810 + R 9 1811 + U 16 1812 + L 18 1813 + D 13 1814 + R 6 1815 + D 8 1816 + L 18 1817 + D 7 1818 + L 11 1819 + R 9 1820 + U 18 1821 + L 10 1822 + U 11 1823 + D 10 1824 + L 7 1825 + D 9 1826 + R 17 1827 + L 4 1828 + R 2 1829 + U 1 1830 + D 9 1831 + U 16 1832 + D 1 1833 + U 5 1834 + R 9 1835 + U 13 1836 + D 10 1837 + U 10 1838 + L 5 1839 + D 1 1840 + U 11 1841 + L 3 1842 + D 15 1843 + U 2 1844 + R 15 1845 + D 1 1846 + L 15 1847 + R 16 1848 + U 14 1849 + L 9 1850 + D 4 1851 + R 15 1852 + L 9 1853 + U 6 1854 + L 4 1855 + R 13 1856 + U 17 1857 + D 6 1858 + L 14 1859 + D 18 1860 + L 17 1861 + D 2 1862 + L 12 1863 + D 11 1864 + R 14 1865 + U 3 1866 + R 12 1867 + L 9 1868 + R 14 1869 + L 16 1870 + U 14 1871 + L 9 1872 + D 1 1873 + L 7 1874 + D 2 1875 + R 2 1876 + L 18 1877 + D 3 1878 + L 10 1879 + D 15 1880 + L 14 1881 + U 11 1882 + L 11 1883 + D 3 1884 + L 4 1885 + R 14 1886 + D 11 1887 + R 8 1888 + D 8 1889 + L 2 1890 + U 15 1891 + L 15 1892 + D 6 1893 + U 1 1894 + D 19 1895 + U 5 1896 + L 5 1897 + U 17 1898 + D 6 1899 + R 5 1900 + L 10 1901 + R 19 1902 + D 9 1903 + R 12 1904 + L 10 1905 + R 1 1906 + L 17 1907 + U 14 1908 + L 1 1909 + D 1 1910 + U 14 1911 + D 14 1912 + L 8 1913 + D 10 1914 + U 12 1915 + L 18 1916 + U 3 1917 + D 17 1918 + U 4 1919 + L 13 1920 + D 3 1921 + R 16 1922 + U 7 1923 + R 19 1924 + U 14 1925 + D 7 1926 + R 15 1927 + L 19 1928 + R 15 1929 + U 11 1930 + L 9 1931 + U 15 1932 + D 16 1933 + U 3 1934 + L 10 1935 + U 1 1936 + D 4 1937 + U 13 1938 + R 7 1939 + U 15 1940 + D 13 1941 + R 18 1942 + L 4 1943 + U 11 1944 + D 3 1945 + L 14 1946 + R 9 1947 + L 8 1948 + R 8 1949 + U 10 1950 + R 17 1951 + L 16 1952 + U 17 1953 + D 15 1954 + U 8 1955 + D 5 1956 + L 8 1957 + R 9 1958 + D 12 1959 + L 2 1960 + U 19 1961 + L 11 1962 + R 18 1963 + D 14 1964 + R 6 1965 + D 4 1966 + L 3 1967 + D 15 1968 + L 3 1969 + R 1 1970 + U 4 1971 + L 6 1972 + U 14 1973 + L 18 1974 + D 13 1975 + R 12 1976 + U 4 1977 + L 12 1978 + U 15 1979 + L 15 1980 + D 2 1981 + L 13 1982 + R 15 1983 + L 3 1984 + U 13 1985 + R 6 1986 + D 1 1987 + U 12 1988 + D 19 1989 + U 10 1990 + L 13 1991 + D 9 1992 + L 18 1993 + U 3 1994 + D 13 1995 + U 2 1996 + L 10 1997 + D 18 1998 + U 16 1999 + D 9 2000 + U 12
+2 -2
src/main.rs
··· 1 - use crate::solutions::year_2022::{Day2, Day3, Day4, Day5, Day6, Day7, Day8}; 1 + use crate::solutions::year_2022::{Day2, Day3, Day4, Day5, Day6, Day7, Day8, Day9}; 2 2 use aoc_lib::Solver; 3 3 pub mod solutions; 4 4 5 5 fn main() { 6 - let sol = Day8::solve_part2(); 6 + let sol = Day9::solve_part2(); 7 7 println!("{:?}", sol); 8 8 }
+180
src/solutions/year_2022/day9.rs
··· 1 + use std::collections::HashSet; 2 + 3 + use aoc_lib::Solver; 4 + 5 + #[derive(Debug)] 6 + pub struct Day9 { 7 + head_positions: Vec<Coord>, 8 + tail_positions: HashSet<Coord>, 9 + current_tail_position: Coord, 10 + } 11 + 12 + #[derive(Hash, PartialEq, Eq, Debug, Default, Clone, Copy, PartialOrd, Ord)] 13 + struct Coord(i32, i32); 14 + 15 + impl Solver for Day9 { 16 + fn solution_part1(input: aoc_lib::Input) -> Option<Self::OutputPart1> { 17 + let mut d = Day9::default(); 18 + let instrs = input.lines.iter().map(MotionInstruction::from); 19 + 20 + instrs.for_each(|x| { 21 + for _ in 1..=x.distance() { 22 + d.move_rope(x).adjust_tail(); 23 + } 24 + }); 25 + 26 + Some(d.tail_positions.len()) 27 + } 28 + fn solution_part2(input: aoc_lib::Input) -> Option<Self::OutputPart2> { 29 + let mut d = Day9::default(); 30 + let instrs = input.lines.iter().map(MotionInstruction::from); 31 + let mut tails = [Coord::default()].repeat(9); 32 + 33 + instrs.for_each(|x| { 34 + for _ in 1..=x.distance() { 35 + d.move_rope(x); 36 + let new_head_pos = d.head_positions.last().expect("head position"); 37 + tails[0] = d.get_new_tail_position(*new_head_pos, tails[0]); 38 + for i in 1..=8 { 39 + tails[i] = d.get_new_tail_position(tails[i - 1], tails[i]); 40 + } 41 + d.tail_positions.insert(tails[8]); 42 + } 43 + }); 44 + 45 + Some(d.tail_positions.len()) 46 + } 47 + 48 + fn day() -> u8 { 49 + 9 50 + } 51 + 52 + type OutputPart1 = usize; 53 + type OutputPart2 = usize; 54 + } 55 + 56 + impl Default for Day9 { 57 + fn default() -> Self { 58 + Day9 { 59 + head_positions: vec![Coord::default()], 60 + tail_positions: HashSet::from([Coord::default()]), 61 + current_tail_position: Coord::default(), 62 + } 63 + } 64 + } 65 + 66 + fn move_closer(dest: i32, src: i32) -> i32 { 67 + if dest.abs_diff(src) <= 1 { 68 + src 69 + } else if src > dest { 70 + move_closer(dest, src - 1) 71 + } else { 72 + move_closer(dest, src + 1) 73 + } 74 + } 75 + 76 + impl Day9 { 77 + fn move_rope(&mut self, instr: MotionInstruction) -> &mut Self { 78 + let curr_head_pos = self 79 + .head_positions 80 + .last() 81 + .expect("head positions should not be empty"); 82 + self.head_positions 83 + .push(self.get_new_head_position(instr, *curr_head_pos)); 84 + self 85 + } 86 + 87 + fn get_new_head_position( 88 + &self, 89 + instr: MotionInstruction, 90 + Coord(curr_x, curr_y): Coord, 91 + ) -> Coord { 92 + match instr { 93 + MotionInstruction::Right(_) => Coord(curr_x + 1_i32, curr_y), 94 + MotionInstruction::Left(_) => Coord(curr_x - 1_i32, curr_y), 95 + MotionInstruction::Up(_) => Coord(curr_x, curr_y + 1_i32), 96 + MotionInstruction::Down(_) => Coord(curr_x, curr_y - 1_i32), 97 + } 98 + } 99 + 100 + fn get_new_tail_position( 101 + &self, 102 + Coord(curr_h_x, curr_h_y): Coord, 103 + Coord(curr_t_x, curr_t_y): Coord, 104 + ) -> Coord { 105 + let (mod_t_x, mod_t_y) = { 106 + if (curr_h_y == curr_t_y && curr_h_x.abs_diff(curr_t_x) > 1) 107 + || (curr_h_x == curr_t_x && curr_h_y.abs_diff(curr_t_y) > 1) 108 + { 109 + if curr_h_y == curr_t_y { 110 + (move_closer(curr_h_x, curr_t_x), curr_t_y) 111 + } else { 112 + (curr_t_x, move_closer(curr_h_y, curr_t_y)) 113 + } 114 + } else if (curr_h_x.abs_diff(curr_t_x) > 1 && curr_h_y.abs_diff(curr_t_y) == 1) 115 + || (curr_h_y.abs_diff(curr_t_y) > 1 && curr_h_x.abs_diff(curr_t_x) == 1) 116 + { 117 + if curr_h_y.abs_diff(curr_t_y) == 1 { 118 + (move_closer(curr_h_x, curr_t_x), curr_h_y) 119 + } else { 120 + (curr_h_x, move_closer(curr_h_y, curr_t_y)) 121 + } 122 + } else { 123 + ( 124 + move_closer(curr_h_x, curr_t_x), 125 + move_closer(curr_h_y, curr_t_y), 126 + ) 127 + } 128 + }; 129 + 130 + Coord(mod_t_x, mod_t_y) 131 + } 132 + 133 + fn adjust_tail(&mut self) -> &mut Self { 134 + let curr_head_position = self 135 + .head_positions 136 + .last() 137 + .expect("head positions should not be empty"); 138 + let Coord(mod_t_x, mod_t_y) = 139 + self.get_new_tail_position(*curr_head_position, self.current_tail_position); 140 + 141 + self.tail_positions.insert(Coord(mod_t_x, mod_t_y)); 142 + self.current_tail_position = Coord(mod_t_x, mod_t_y); 143 + 144 + self 145 + } 146 + } 147 + 148 + #[derive(Debug, Clone, Copy)] 149 + enum MotionInstruction { 150 + Right(usize), 151 + Left(usize), 152 + Up(usize), 153 + Down(usize), 154 + } 155 + 156 + impl MotionInstruction { 157 + fn distance(&self) -> usize { 158 + match self { 159 + MotionInstruction::Right(x) => *x, 160 + MotionInstruction::Left(x) => *x, 161 + MotionInstruction::Up(x) => *x, 162 + MotionInstruction::Down(x) => *x, 163 + } 164 + } 165 + } 166 + 167 + impl From<&String> for MotionInstruction { 168 + fn from(s: &String) -> Self { 169 + let xs = s.split(' ').collect::<Vec<_>>(); 170 + let dist = xs.get(1).map(|n| n.parse::<usize>().expect("")).expect(""); 171 + 172 + match *xs.first().expect("there should be some character") { 173 + "R" => MotionInstruction::Right(dist), 174 + "L" => MotionInstruction::Left(dist), 175 + "U" => MotionInstruction::Up(dist), 176 + "D" => MotionInstruction::Down(dist), 177 + _ => panic!("not possible"), 178 + } 179 + } 180 + }
+2
src/solutions/year_2022/mod.rs
··· 6 6 mod day6; 7 7 mod day7; 8 8 mod day8; 9 + mod day9; 9 10 pub(crate) use day1::*; 10 11 pub(crate) use day2::*; 11 12 pub(crate) use day3::*; ··· 14 15 pub(crate) use day6::*; 15 16 pub(crate) use day7::*; 16 17 pub(crate) use day8::*; 18 + pub(crate) use day9::*;