- commit
- bfe65325efed4e95056954216e21d07f6bb0ddd3
- parent
- 55822b915dae0838a0e2d40c53e9f4cbe48ecaa4
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2023-12-07 08:12
2023-12-07
Diffstat
A | 2023/07/input.txt | 1000 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/07/solution.rs | 91 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/07/test.txt | 5 | +++++ |
3 files changed, 1096 insertions, 0 deletions
diff --git a/2023/07/input.txt b/2023/07/input.txt
@@ -0,0 +1,1000 @@ -1 1 JJJJJ 435 -1 2 29QA4 847 -1 3 6A9A9 348 -1 4 TKQKT 260 -1 5 J3J58 486 -1 6 6JT4T 908 -1 7 K898J 553 -1 8 KKJK6 957 -1 9 TQJTT 394 -1 10 33353 431 -1 11 J3JTT 89 -1 12 K787Q 296 -1 13 JA727 236 -1 14 7T779 914 -1 15 9J2J7 774 -1 16 Q866T 36 -1 17 4QQ34 745 -1 18 T3366 197 -1 19 7777Q 825 -1 20 TTA9T 894 -1 21 22292 50 -1 22 Q4KJK 733 -1 23 69TK9 144 -1 24 7427J 930 -1 25 T6372 580 -1 26 T5TT4 451 -1 27 9T5TT 282 -1 28 2Q29Q 778 -1 29 77K77 822 -1 30 J777Q 489 -1 31 27445 542 -1 32 44JAT 474 -1 33 678T9 266 -1 34 J99TT 987 -1 35 88826 907 -1 36 Q2748 477 -1 37 Q7A4K 584 -1 38 J7J72 480 -1 39 94797 417 -1 40 2Q2TQ 972 -1 41 Q8225 943 -1 42 Q5666 731 -1 43 TAA63 485 -1 44 7AATJ 627 -1 45 A496A 609 -1 46 Q7Q72 776 -1 47 Q593K 702 -1 48 KK55J 455 -1 49 5A56K 980 -1 50 44342 969 -1 51 353K3 216 -1 52 44644 759 -1 53 Q777A 884 -1 54 KAKTA 634 -1 55 A4628 75 -1 56 32Q3Q 342 -1 57 J6Q6Q 843 -1 58 8K83K 630 -1 59 7JJT7 1 -1 60 T6T22 931 -1 61 7A329 991 -1 62 893Q7 471 -1 63 TA3AT 290 -1 64 AQJTA 838 -1 65 K733K 793 -1 66 76K27 408 -1 67 6TKJT 701 -1 68 4J3TK 673 -1 69 4278A 487 -1 70 72A24 15 -1 71 89488 779 -1 72 86678 428 -1 73 222TT 248 -1 74 77872 920 -1 75 AKAKK 685 -1 76 76972 72 -1 77 99J2K 948 -1 78 KKTKK 576 -1 79 T7Q6A 671 -1 80 K5T55 76 -1 81 66J55 828 -1 82 Q23A2 183 -1 83 63333 990 -1 84 JJ45A 903 -1 85 84AA8 985 -1 86 J272J 308 -1 87 5666K 953 -1 88 3QT3Q 611 -1 89 777TT 737 -1 90 JAA2A 592 -1 91 2J992 244 -1 92 J5242 268 -1 93 6J86K 973 -1 94 J43KJ 40 -1 95 8A888 832 -1 96 5T66A 723 -1 97 38J55 47 -1 98 9765J 473 -1 99 2K45T 415 -1 100 772J2 788 -1 101 55772 399 -1 102 J6256 676 -1 103 69776 684 -1 104 9KQ99 808 -1 105 J33J3 452 -1 106 TJ4T7 314 -1 107 455J4 550 -1 108 92K99 29 -1 109 KT77J 427 -1 110 3J3A3 965 -1 111 KKQQK 842 -1 112 K4KK5 916 -1 113 QJTT2 614 -1 114 8QQQA 767 -1 115 88JTJ 518 -1 116 T8TTQ 22 -1 117 KKKK8 303 -1 118 4JJ4A 898 -1 119 97T7J 813 -1 120 28JK6 926 -1 121 225KK 189 -1 122 96966 132 -1 123 T34T4 520 -1 124 5QQ5Q 418 -1 125 4J444 482 -1 126 56667 532 -1 127 44JQ4 306 -1 128 JTAA5 762 -1 129 88836 846 -1 130 55655 148 -1 131 57K5K 217 -1 132 3AQQ3 784 -1 133 2TTAT 91 -1 134 88887 327 -1 135 83T4J 720 -1 136 22226 391 -1 137 26266 163 -1 138 QQQKQ 386 -1 139 24JAT 495 -1 140 3TJ3T 919 -1 141 T96TT 849 -1 142 K66K6 612 -1 143 2J272 110 -1 144 68688 792 -1 145 AQAAT 116 -1 146 5AKA7 754 -1 147 JA96A 806 -1 148 T74JJ 498 -1 149 6K629 208 -1 150 7J62Q 209 -1 151 44JT3 768 -1 152 44884 624 -1 153 55575 119 -1 154 5896A 463 -1 155 J262K 66 -1 156 7666Q 739 -1 157 5J52J 9 -1 158 98999 915 -1 159 5TT7T 235 -1 160 2K546 963 -1 161 J6J66 365 -1 162 7J22K 84 -1 163 4J4T4 821 -1 164 222KT 589 -1 165 K33K3 372 -1 166 22777 12 -1 167 66TAJ 258 -1 168 56J42 962 -1 169 28888 19 -1 170 423T5 354 -1 171 K6KKK 818 -1 172 5K489 320 -1 173 37958 62 -1 174 888J8 629 -1 175 665T7 238 -1 176 8888T 615 -1 177 JTQ72 426 -1 178 3333K 142 -1 179 Q6KQQ 38 -1 180 6QKT5 73 -1 181 89558 467 -1 182 K3AKK 703 -1 183 TTKT8 356 -1 184 6J668 597 -1 185 5555J 732 -1 186 57TA2 139 -1 187 34433 439 -1 188 33537 993 -1 189 JJAAK 337 -1 190 A2J24 274 -1 191 688JT 698 -1 192 79AKQ 853 -1 193 34KK4 791 -1 194 492AK 199 -1 195 29323 309 -1 196 KT8KK 42 -1 197 88488 777 -1 198 6K678 870 -1 199 35698 515 -1 200 22683 94 -1 201 T88TJ 594 -1 202 TJTJK 96 -1 203 99699 459 -1 204 44QJ3 711 -1 205 92699 799 -1 206 KJK44 631 -1 207 99299 862 -1 208 6AATA 649 -1 209 K8888 27 -1 210 4T222 493 -1 211 AA4AA 362 -1 212 QKQ4K 856 -1 213 57JA5 146 -1 214 K75JK 669 -1 215 88785 575 -1 216 4TQ2T 864 -1 217 JTTTJ 628 -1 218 3JTJ3 722 -1 219 A26J2 531 -1 220 6J65Q 367 -1 221 74J77 775 -1 222 3888K 728 -1 223 T97T9 527 -1 224 8AA5A 188 -1 225 99555 346 -1 226 J5TJ5 725 -1 227 TTJ63 207 -1 228 7773T 693 -1 229 3KKK2 979 -1 230 97QT2 453 -1 231 4T499 118 -1 232 A662A 548 -1 233 29TTJ 665 -1 234 4A664 952 -1 235 79354 267 -1 236 QQ6Q6 241 -1 237 KA934 69 -1 238 J88KK 623 -1 239 T66T7 332 -1 240 JT7A6 156 -1 241 A555A 335 -1 242 65669 492 -1 243 5AAAA 265 -1 244 22252 566 -1 245 K22Q2 743 -1 246 86K26 900 -1 247 5J726 697 -1 248 9K99K 803 -1 249 39222 387 -1 250 82749 569 -1 251 TT77T 33 -1 252 QJ6QQ 95 -1 253 7487Q 997 -1 254 KAK87 124 -1 255 Q2Q22 404 -1 256 82822 591 -1 257 TJ9A2 177 -1 258 44KK6 14 -1 259 98T4Q 967 -1 260 TA6A6 46 -1 261 2T483 710 -1 262 JK6AA 133 -1 263 92922 128 -1 264 92JAQ 654 -1 265 5TKA7 436 -1 266 97KA6 106 -1 267 4TA52 448 -1 268 98988 140 -1 269 22272 823 -1 270 KTKK5 4 -1 271 599A4 798 -1 272 6J578 411 -1 273 J7777 865 -1 274 3KKK3 845 -1 275 J8JJ8 240 -1 276 A2AQ6 272 -1 277 5TT55 77 -1 278 388A8 873 -1 279 T9K52 816 -1 280 88822 130 -1 281 32888 30 -1 282 J9J7Q 219 -1 283 KTKTK 836 -1 284 6AJ26 839 -1 285 KAA99 67 -1 286 966Q9 41 -1 287 95596 276 -1 288 79467 512 -1 289 233A2 321 -1 290 677A7 195 -1 291 392AK 558 -1 292 24T7K 758 -1 293 QK55K 230 -1 294 T6T66 252 -1 295 JQQJQ 171 -1 296 QTQ95 170 -1 297 JKJ4K 150 -1 298 52A76 851 -1 299 535T5 1000 -1 300 6QQQ8 780 -1 301 K7KKK 600 -1 302 55754 396 -1 303 AA88A 646 -1 304 85J8A 114 -1 305 6666J 595 -1 306 J6Q3Q 514 -1 307 4K774 992 -1 308 67464 297 -1 309 K4777 921 -1 310 8Q38J 464 -1 311 T3933 456 -1 312 573A9 946 -1 313 23949 995 -1 314 5K9KJ 852 -1 315 5K57A 149 -1 316 J2279 854 -1 317 AKAK7 164 -1 318 492TQ 105 -1 319 32JQT 443 -1 320 J737J 412 -1 321 5A552 787 -1 322 4KKKK 369 -1 323 23333 632 -1 324 TJT22 664 -1 325 6T766 423 -1 326 32J54 289 -1 327 5TQK3 984 -1 328 9K955 528 -1 329 34Q6J 607 -1 330 JKKAA 159 -1 331 22627 807 -1 332 98J9Q 513 -1 333 66866 425 -1 334 33776 878 -1 335 J4J4K 11 -1 336 5TKJ5 249 -1 337 65565 419 -1 338 7K7K6 121 -1 339 97QJ2 347 -1 340 TTJ48 228 -1 341 4747T 26 -1 342 65TTJ 410 -1 343 7KQQ2 913 -1 344 K9977 789 -1 345 JKK93 511 -1 346 A32JJ 55 -1 347 AK8Q4 795 -1 348 KQKK3 162 -1 349 Q652K 34 -1 350 T2523 58 -1 351 TKQTT 588 -1 352 99Q63 196 -1 353 4A427 24 -1 354 55A5T 315 -1 355 AA43A 831 -1 356 69692 294 -1 357 TKTTT 688 -1 358 TQJT8 287 -1 359 TAT72 49 -1 360 777T7 445 -1 361 99839 961 -1 362 39545 949 -1 363 TA99A 712 -1 364 KKQKK 934 -1 365 Q7QJQ 281 -1 366 333KJ 334 -1 367 2KKJA 255 -1 368 85T88 866 -1 369 99J9J 805 -1 370 J44J4 247 -1 371 33AK3 97 -1 372 33J38 165 -1 373 2J2K3 168 -1 374 A69J9 180 -1 375 9Q726 695 -1 376 49T32 304 -1 377 86K66 947 -1 378 3Q9K7 277 -1 379 J6662 200 -1 380 A5628 438 -1 381 Q727A 278 -1 382 27688 295 -1 383 J5573 888 -1 384 43T68 640 -1 385 65656 496 -1 386 QJ38J 68 -1 387 83488 536 -1 388 K2K2J 918 -1 389 JK26K 658 -1 390 Q44J2 719 -1 391 73677 261 -1 392 KT3K8 585 -1 393 9J969 226 -1 394 Q7QQ7 837 -1 395 Q7797 705 -1 396 T442A 351 -1 397 66559 134 -1 398 8AJ8T 970 -1 399 3JAAA 892 -1 400 5A5JA 738 -1 401 A2639 54 -1 402 KKT78 284 -1 403 T7864 6 -1 404 997J9 51 -1 405 K8J72 176 -1 406 K7J84 213 -1 407 65668 929 -1 408 KAT63 565 -1 409 8TQ53 988 -1 410 3555J 462 -1 411 K3J5K 279 -1 412 3J99J 98 -1 413 2JK24 932 -1 414 3JK4Q 204 -1 415 7277K 507 -1 416 739AA 465 -1 417 KJ839 187 -1 418 JT69K 620 -1 419 866AA 333 -1 420 36835 582 -1 421 K2255 971 -1 422 9T59T 833 -1 423 7A3K9 886 -1 424 5K844 734 -1 425 73642 458 -1 426 JKKJ8 300 -1 427 6KK99 186 -1 428 K2K2K 577 -1 429 336A2 905 -1 430 4897Q 769 -1 431 22A26 137 -1 432 8Q888 893 -1 433 J443K 694 -1 434 72777 883 -1 435 TQQQQ 951 -1 436 QQQQ5 57 -1 437 5T5TJ 184 -1 438 J7KKQ 358 -1 439 K7796 637 -1 440 55J52 817 -1 441 JJ6Q6 714 -1 442 42556 521 -1 443 2772A 896 -1 444 9K27A 881 -1 445 4574Q 618 -1 446 75557 863 -1 447 A95A5 885 -1 448 AA8AA 794 -1 449 88Q85 108 -1 450 AQQ44 5 -1 451 7JJA7 619 -1 452 3J798 92 -1 453 K6T95 63 -1 454 JA5Q9 112 -1 455 JT2T7 756 -1 456 76677 996 -1 457 4K24K 826 -1 458 KJKKK 909 -1 459 56TQ7 911 -1 460 5T6J2 479 -1 461 T46K2 923 -1 462 658T7 643 -1 463 3T999 225 -1 464 4K75A 126 -1 465 JQ568 23 -1 466 Q5482 721 -1 467 JAATT 706 -1 468 AKJ5T 782 -1 469 776J3 517 -1 470 27227 291 -1 471 42424 283 -1 472 KAT47 234 -1 473 TT8TT 766 -1 474 A7JQA 651 -1 475 222Q2 804 -1 476 JK55Q 85 -1 477 24999 933 -1 478 Q888Q 757 -1 479 74778 141 -1 480 Q855Q 352 -1 481 9J6QQ 552 -1 482 K532T 328 -1 483 AAQQQ 572 -1 484 6J823 407 -1 485 Q29K6 889 -1 486 99644 964 -1 487 62666 590 -1 488 5QQ45 638 -1 489 5J599 912 -1 490 QJQQT 724 -1 491 7J62K 494 -1 492 Q38K5 301 -1 493 Q4Q85 115 -1 494 Q9JT6 275 -1 495 A46A8 319 -1 496 TT4TT 35 -1 497 66QT9 81 -1 498 35242 8 -1 499 43AQT 405 -1 500 J8728 686 -1 501 JTKK4 400 -1 502 62252 214 -1 503 94Q93 325 -1 504 TT4KK 501 -1 505 9QJKA 305 -1 506 JQJ9J 508 -1 507 2497T 786 -1 508 KKK88 522 -1 509 23339 682 -1 510 77Q57 568 -1 511 947JQ 539 -1 512 Q9764 74 -1 513 A3A3A 444 -1 514 282T2 506 -1 515 AQ863 86 -1 516 Q9QQQ 374 -1 517 K8285 879 -1 518 6QAQT 368 -1 519 63K68 976 -1 520 Q4QQQ 382 -1 521 6J8KT 924 -1 522 4JAK5 827 -1 523 93339 475 -1 524 6TTTT 502 -1 525 24Q32 603 -1 526 T6555 650 -1 527 Q6TT6 574 -1 528 3355J 316 -1 529 T4888 750 -1 530 TK82A 229 -1 531 49J7T 764 -1 532 KA69A 403 -1 533 TK777 153 -1 534 79887 497 -1 535 QQQ9J 421 -1 536 JT8KK 959 -1 537 42444 82 -1 538 TTT72 259 -1 539 Q5892 783 -1 540 35Q5Q 111 -1 541 TK2T3 740 -1 542 TTTT3 312 -1 543 85952 392 -1 544 62393 59 -1 545 66466 844 -1 546 TTJ9T 887 -1 547 9TJ64 147 -1 548 4A447 182 -1 549 8Q39Q 790 -1 550 5969Q 535 -1 551 TA28A 117 -1 552 79285 174 -1 553 2376K 641 -1 554 7Q25K 809 -1 555 QTA68 939 -1 556 KKAKK 376 -1 557 532A8 598 -1 558 T4JJK 329 -1 559 QQQ2J 323 -1 560 46A4J 93 -1 561 66333 434 -1 562 A43A9 349 -1 563 4Q4QQ 416 -1 564 5K326 578 -1 565 T8T28 880 -1 566 4KQ63 273 -1 567 J555J 330 -1 568 7748J 977 -1 569 53595 385 -1 570 3JKA3 271 -1 571 JJ222 83 -1 572 4836K 285 -1 573 KQQ4Q 581 -1 574 T63JK 763 -1 575 T35T3 221 -1 576 4KK33 753 -1 577 333TA 557 -1 578 QQJQQ 730 -1 579 J39T7 986 -1 580 33235 80 -1 581 Q828Q 231 -1 582 5TTQ5 983 -1 583 35J7T 668 -1 584 AJ8JA 16 -1 585 JJ4QJ 954 -1 586 6Q62Q 437 -1 587 A3J26 678 -1 588 79654 938 -1 589 6J624 815 -1 590 K9KK7 449 -1 591 TT92T 830 -1 592 926JA 203 -1 593 556Q5 707 -1 594 5565K 835 -1 595 3K4QK 692 -1 596 8JKJ5 727 -1 597 Q7QAQ 161 -1 598 K7KK4 2 -1 599 Q2253 810 -1 600 45K45 37 -1 601 Q975T 123 -1 602 J6J7J 18 -1 603 QQQ24 709 -1 604 69868 322 -1 605 96AQ4 917 -1 606 TT4AT 679 -1 607 T543J 602 -1 608 JATTT 310 -1 609 5Q2K9 251 -1 610 56J99 383 -1 611 56999 796 -1 612 44447 192 -1 613 Q2QK2 748 -1 614 Q362Q 958 -1 615 J8788 88 -1 616 555Q5 937 -1 617 675J6 476 -1 618 9494J 901 -1 619 8A47K 998 -1 620 47869 529 -1 621 7J95J 935 -1 622 5438J 331 -1 623 222J2 254 -1 624 635J9 157 -1 625 QAJ39 989 -1 626 22297 422 -1 627 K8488 160 -1 628 AJAA4 593 -1 629 6KK9J 621 -1 630 66J88 895 -1 631 K9J99 384 -1 632 37Q37 169 -1 633 3333Q 239 -1 634 4K956 546 -1 635 55455 735 -1 636 2JAKA 656 -1 637 878K7 381 -1 638 KK9KK 457 -1 639 K6QT7 904 -1 640 67J7K 897 -1 641 39993 544 -1 642 T8TT5 736 -1 643 T552A 103 -1 644 44555 191 -1 645 K8KQ5 484 -1 646 4TT4T 420 -1 647 555J4 872 -1 648 924T6 713 -1 649 6J7T7 608 -1 650 26TQ9 760 -1 651 95999 390 -1 652 738JQ 135 -1 653 JJTTJ 717 -1 654 54444 504 -1 655 KJJKK 999 -1 656 4Q5TQ 874 -1 657 5558J 470 -1 658 J7898 729 -1 659 7TKK7 336 -1 660 JK8A8 373 -1 661 JJTQ5 344 -1 662 T936A 256 -1 663 AAAJ5 606 -1 664 T7776 526 -1 665 JA467 978 -1 666 J2Q82 755 -1 667 8A878 955 -1 668 A8AQA 670 -1 669 JKK6Q 253 -1 670 A88A8 945 -1 671 7A8K8 224 -1 672 77572 350 -1 673 Q2475 324 -1 674 6444K 409 -1 675 AAK22 819 -1 676 3A68T 461 -1 677 9T9T9 100 -1 678 559KJ 71 -1 679 93J99 683 -1 680 4444Q 560 -1 681 82222 61 -1 682 39Q42 3 -1 683 T2TTQ 547 -1 684 KAAAA 525 -1 685 A2563 446 -1 686 T7JT7 744 -1 687 TK8A9 155 -1 688 66667 811 -1 689 9J599 483 -1 690 TTKKA 193 -1 691 499J9 556 -1 692 K7JT4 79 -1 693 J9999 233 -1 694 8Q88A 771 -1 695 J6TJ8 389 -1 696 48884 940 -1 697 9J398 201 -1 698 TKTKT 343 -1 699 KKKJ4 540 -1 700 AA3AA 696 -1 701 58KKK 269 -1 702 KKJ9Q 432 -1 703 JJ888 488 -1 704 K9999 661 -1 705 QQQ99 361 -1 706 29729 353 -1 707 925JK 243 -1 708 QT642 704 -1 709 47777 770 -1 710 994K8 245 -1 711 74AAK 960 -1 712 83K33 505 -1 713 TTT52 773 -1 714 A52A2 636 -1 715 55992 586 -1 716 9A88A 691 -1 717 52725 860 -1 718 KTJ27 107 -1 719 7K7QK 605 -1 720 T8332 340 -1 721 JJ897 899 -1 722 3AA6A 359 -1 723 6J63K 677 -1 724 88AQQ 524 -1 725 KJQ88 625 -1 726 5A6A4 250 -1 727 599AA 172 -1 728 KK3K5 194 -1 729 2JK7J 393 -1 730 7788J 433 -1 731 2332J 113 -1 732 AJ79K 218 -1 733 TKKKQ 802 -1 734 TT878 371 -1 735 T44T9 503 -1 736 3JA4K 902 -1 737 JAQT7 708 -1 738 95777 781 -1 739 Q82J4 966 -1 740 58484 715 -1 741 557A7 834 -1 742 56568 397 -1 743 75A55 17 -1 744 68TTJ 562 -1 745 994T5 481 -1 746 KAKA8 380 -1 747 TTTTJ 52 -1 748 J3663 812 -1 749 J346J 699 -1 750 4484J 292 -1 751 K4KT7 355 -1 752 4273K 689 -1 753 69889 741 -1 754 66644 642 -1 755 4KT49 151 -1 756 T287J 181 -1 757 85955 549 -1 758 7J643 857 -1 759 7384T 820 -1 760 37877 302 -1 761 27438 509 -1 762 4J222 299 -1 763 69K73 48 -1 764 9478K 179 -1 765 777JJ 906 -1 766 55A3A 868 -1 767 Q7Q77 232 -1 768 82384 469 -1 769 747J4 942 -1 770 8927A 516 -1 771 A86K2 891 -1 772 J66J5 401 -1 773 A624Q 414 -1 774 42JT5 31 -1 775 9K959 928 -1 776 6KT88 360 -1 777 A8796 101 -1 778 AQAQA 626 -1 779 38539 491 -1 780 T5393 413 -1 781 2TK2K 975 -1 782 5K555 44 -1 783 999Q9 604 -1 784 QA8J4 956 -1 785 3Q958 537 -1 786 Q7T82 925 -1 787 8J434 138 -1 788 A992A 613 -1 789 8899J 270 -1 790 285J7 246 -1 791 5TT5K 326 -1 792 JQ373 286 -1 793 5J25T 652 -1 794 QKQQK 158 -1 795 77T96 32 -1 796 AA978 64 -1 797 4ATTJ 478 -1 798 T558Q 215 -1 799 Q2685 500 -1 800 K7QAA 20 -1 801 8TTA3 563 -1 802 3T9TT 441 -1 803 4AKAK 633 -1 804 34434 538 -1 805 AAA7A 747 -1 806 397K2 370 -1 807 Q8878 610 -1 808 QK3KQ 56 -1 809 4T448 175 -1 810 888TT 875 -1 811 3QA85 554 -1 812 T2KTT 660 -1 813 Q6QQQ 824 -1 814 9QA9T 341 -1 815 9QQ54 364 -1 816 89989 858 -1 817 AJAAA 855 -1 818 77977 395 -1 819 55T59 599 -1 820 AQQ77 202 -1 821 74TJ8 466 -1 822 63J93 87 -1 823 K3665 237 -1 824 222TJ 375 -1 825 594JT 7 -1 826 9999T 519 -1 827 J339J 377 -1 828 TJ7A7 551 -1 829 832Q7 388 -1 830 33J33 968 -1 831 7777A 28 -1 832 KAT4A 543 -1 833 6J427 635 -1 834 AAATT 655 -1 835 75AJ4 152 -1 836 AAJJA 622 -1 837 A8A6Q 122 -1 838 5984T 657 -1 839 JA338 125 -1 840 J3J6T 129 -1 841 246QJ 752 -1 842 Q2A65 555 -1 843 A2A95 936 -1 844 9J882 143 -1 845 8A8T6 227 -1 846 958K8 797 -1 847 58T43 653 -1 848 58558 25 -1 849 9JTKQ 718 -1 850 42622 680 -1 851 7837J 167 -1 852 44844 402 -1 853 62K62 675 -1 854 KKK72 746 -1 855 9A33A 876 -1 856 6T666 293 -1 857 Q333Q 571 -1 858 333J6 178 -1 859 K4577 772 -1 860 9T9KK 690 -1 861 J7997 601 -1 862 JTTKK 206 -1 863 5J677 644 -1 864 77Q73 338 -1 865 J3377 877 -1 866 88777 131 -1 867 2J2J5 801 -1 868 62622 534 -1 869 24944 742 -1 870 6TTAK 21 -1 871 A5Q98 749 -1 872 8A8T8 648 -1 873 T2222 366 -1 874 T4335 190 -1 875 46365 761 -1 876 29K92 205 -1 877 444TT 185 -1 878 A4A4A 583 -1 879 3229T 882 -1 880 6QJ93 859 -1 881 22232 223 -1 882 72666 499 -1 883 Q8QQJ 65 -1 884 87667 210 -1 885 98K7T 211 -1 886 7J459 944 -1 887 23537 663 -1 888 AT6Q9 726 -1 889 KA263 666 -1 890 5QK67 567 -1 891 54548 222 -1 892 K7AA7 681 -1 893 89AA9 468 -1 894 JA774 687 -1 895 QTT4Q 564 -1 896 22AKK 561 -1 897 JQ3KQ 981 -1 898 T3T6T 78 -1 899 3666K 430 -1 900 JJJJ8 154 -1 901 5T3TT 639 -1 902 KK4QK 280 -1 903 6T9A9 890 -1 904 K5J4Q 941 -1 905 64464 800 -1 906 J47K3 867 -1 907 AA7A4 667 -1 908 JK68A 166 -1 909 99779 379 -1 910 9K848 212 -1 911 AJ433 378 -1 912 5TQJ4 447 -1 913 53252 785 -1 914 3T333 318 -1 915 777K9 662 -1 916 9J9KK 765 -1 917 2J288 313 -1 918 889J8 298 -1 919 77755 848 -1 920 J4442 406 -1 921 4Q6J8 454 -1 922 79J82 60 -1 923 4AATJ 173 -1 924 KKJK2 53 -1 925 AAQ4Q 39 -1 926 7468K 460 -1 927 6A654 99 -1 928 J3888 345 -1 929 T9TT9 109 -1 930 2243T 13 -1 931 KKKAJ 339 -1 932 Q99JQ 950 -1 933 66689 861 -1 934 K9J8A 104 -1 935 AQ99Q 263 -1 936 T66J6 127 -1 937 3QA44 850 -1 938 QAAA5 523 -1 939 9T3TJ 994 -1 940 A99AA 145 -1 941 6TT6T 242 -1 942 36444 90 -1 943 6QQTT 573 -1 944 57J75 596 -1 945 3725J 579 -1 946 J333Q 814 -1 947 22AA4 533 -1 948 55QQ5 647 -1 949 228JK 424 -1 950 A3333 442 -1 951 29295 45 -1 952 83236 472 -1 953 Q74Q4 490 -1 954 TTATT 317 -1 955 667J7 871 -1 956 AA4QA 288 -1 957 QQ3Q6 429 -1 958 77577 910 -1 959 K9997 220 -1 960 6A738 70 -1 961 TK85T 198 -1 962 T733T 264 -1 963 T23TT 357 -1 964 4K22K 541 -1 965 7TAA8 716 -1 966 39999 363 -1 967 Q6666 136 -1 968 66663 674 -1 969 QQJ37 120 -1 970 22K53 829 -1 971 2Q93T 659 -1 972 23KKQ 262 -1 973 75785 307 -1 974 3TK47 617 -1 975 A8285 840 -1 976 A4238 982 -1 977 4AA44 645 -1 978 972AA 751 -1 979 T465K 927 -1 980 J33KJ 587 -1 981 JT9T7 700 -1 982 6JK49 922 -1 983 4A237 841 -1 984 75Q2J 974 -1 985 6J8AJ 545 -1 986 9KQKK 311 -1 987 K4AJT 450 -1 988 Q7JQ7 257 -1 989 4QJ88 102 -1 990 9JTQJ 570 -1 991 KQJ25 616 -1 992 78J85 440 -1 993 65482 559 -1 994 5Q538 10 -1 995 5JJ62 869 -1 996 777J6 510 -1 997 28T4Q 398 -1 998 AJ53A 672 -1 999 53543 530 -1 1000 77373 43
diff --git a/2023/07/solution.rs b/2023/07/solution.rs
@@ -0,0 +1,91 @@ -1 1 use std::convert::TryInto; -1 2 -1 3 #[path = "../lib.rs"] -1 4 mod lib; -1 5 -1 6 fn parse_line(line: &str) -> Option<([u8; 5], usize)> { -1 7 let (hand, bid) = line.split_once(" ")?; -1 8 let h = hand -1 9 .chars() -1 10 .map(|c| match c { -1 11 '2' => 1, -1 12 '3' => 2, -1 13 '4' => 3, -1 14 '5' => 4, -1 15 '6' => 5, -1 16 '7' => 6, -1 17 '8' => 7, -1 18 '9' => 8, -1 19 'T' => 9, -1 20 'J' => 10, -1 21 'Q' => 11, -1 22 'K' => 12, -1 23 'A' => 13, -1 24 _ => unreachable!(), -1 25 }) -1 26 .collect::<Vec<u8>>() -1 27 .try_into() -1 28 .ok()?; -1 29 let b = bid.parse().ok()?; -1 30 return Some((h, b)); -1 31 } -1 32 -1 33 fn replace_jokers(hand: [u8; 5]) -> [u8; 5] { -1 34 let mut new_hand = [0; 5]; -1 35 for i in 0..5 { -1 36 new_hand[i] = match hand[i] { -1 37 10 => 0, -1 38 x => x, -1 39 }; -1 40 } -1 41 return new_hand; -1 42 } -1 43 -1 44 fn key(hand: [u8; 5]) -> (u8, [u8; 5]) { -1 45 let mut counts = [0; 14]; -1 46 let mut jokers = 0; -1 47 for i in 0..5 { -1 48 if hand[i] == 0 { -1 49 jokers += 1; -1 50 } else { -1 51 counts[hand[i] as usize] += 1; -1 52 } -1 53 } -1 54 counts.sort(); -1 55 counts[13] += jokers; -1 56 let type_ = match counts { -1 57 [.., 0, 0, 0, 0, 5] => 6, -1 58 [.., 0, 0, 0, 1, 4] => 5, -1 59 [.., 0, 0, 0, 2, 3] => 4, -1 60 [.., 0, 0, 1, 1, 3] => 3, -1 61 [.., 0, 0, 1, 2, 2] => 2, -1 62 [.., 0, 1, 1, 1, 2] => 1, -1 63 [.., 1, 1, 1, 1, 1] => 0, -1 64 _ => unreachable!(), -1 65 }; -1 66 -1 67 return (type_, hand); -1 68 } -1 69 -1 70 fn count(lines: &Vec<([u8; 5], usize)>) -> usize { -1 71 return lines -1 72 .iter() -1 73 .enumerate() -1 74 .map(|(rank, (_, bid))| bid * (rank + 1)) -1 75 .sum(); -1 76 } -1 77 -1 78 fn main() { -1 79 let mut lines = vec![]; -1 80 for line in lib::iter_input() { -1 81 lines.push(parse_line(&line).unwrap()); -1 82 } -1 83 -1 84 lines.sort_by_cached_key(|(hand, _)| key(*hand)); -1 85 let sum1 = count(&lines); -1 86 println!("part1: {}", sum1); -1 87 -1 88 lines.sort_by_cached_key(|(hand, _)| key(replace_jokers(*hand))); -1 89 let sum2 = count(&lines); -1 90 println!("part2: {}", sum2); -1 91 }
diff --git a/2023/07/test.txt b/2023/07/test.txt
@@ -0,0 +1,5 @@ -1 1 32T3K 765 -1 2 T55J5 684 -1 3 KK677 28 -1 4 KTJJT 220 -1 5 QQQJA 483