adventofcode

git clone https://git.ce9e.org/adventofcode.git

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