From 365306bf1ebbbec117c5c767c3d221af7ae17ec9 Mon Sep 17 00:00:00 2001 From: Martin Ashby Date: Sat, 9 Dec 2023 00:06:43 +0000 Subject: day7 pt1 --- day7.zig | 1143 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1143 insertions(+) create mode 100644 day7.zig (limited to 'day7.zig') diff --git a/day7.zig b/day7.zig new file mode 100644 index 0000000..0419cef --- /dev/null +++ b/day7.zig @@ -0,0 +1,1143 @@ +const std = @import("std"); + +const Card = enum(u8) { + @"2" = 0, + @"3", + @"4", + @"5", + @"6", + @"7", + @"8", + @"9", + T, + J, + Q, + K, + A, + + fn parse(ch: u8) !Card { + const ei = @typeInfo(Card).Enum; + inline for (ei.fields) |field| { + if (ch == field.name[0]) { + return @enumFromInt(field.value); + } + } else { + return error.InvalidCard; + } + } +}; + +const HandType = enum(u8) { + HighCard = 0, + OnePair, + TwoPair, + ThreeOAK, + FullHouse, + FourOAK, + FiveOAK, +}; + +const Hand = struct { + handtype: HandType, + cards: [5]Card, + + fn cmp(_: void, lhs: Hand, rhs: Hand) bool { + if (@intFromEnum(lhs.handtype) < @intFromEnum(rhs.handtype)) return true; + if (@intFromEnum(lhs.handtype) > @intFromEnum(rhs.handtype)) return false; + for (lhs.cards, rhs.cards) |lc,rc| { + if (lc != rc) { + return @intFromEnum(lc) < @intFromEnum(rc); + } + } + return false; + } + + fn parse(input: []const u8) !Hand { + if (input.len != 5) return error.InvalidHand; + var hand: Hand = undefined; + for (input, 0..) |ch, ix| { + hand.cards[ix] = try Card.parse(ch); + } + const ei = @typeInfo(Card).Enum; + var cts = [_]u8{0}**ei.fields.len; + for (hand.cards) |card| { + cts[@intFromEnum(card)] += 1; + } + std.mem.sort(u8, &cts, {}, Hand.u8cmprev); + hand.handtype = switch (cts[0]) { + 5 => .FiveOAK, + 4 => .FourOAK, + 3 => switch (cts[1]) { + 2 => .FullHouse, + else => .ThreeOAK, + }, + 2 => switch (cts[1]) { + 2 => .TwoPair, + else => .OnePair, + }, + else => .HighCard, + }; + return hand; + } + + fn u8cmprev(_: void, lhs: u8, rhs: u8) bool { + return lhs > rhs; + } +}; + +const Turn = struct { + hand: Hand, + bid: u64, + + fn parse(input: []const u8) !Turn { + var toks = std.mem.tokenize(u8, input, " "); + const hand_str = toks.next() orelse return error.Foo; + const bid_str = toks.next() orelse return error.Bar; + return .{ + .hand = try Hand.parse(hand_str), + .bid = try std.fmt.parseInt(u64, bid_str, 10), + }; + } + + fn cmp(_: void, lhs: Turn, rhs: Turn) bool { + return Hand.cmp({}, lhs.hand, rhs.hand); + } +}; + +fn solve_pt1(a: std.mem.Allocator, input: []const u8) !u64 { + var spl = std.mem.split(u8, input, "\n"); + var al = std.ArrayList(Turn).init(a); + defer al.deinit(); + while (spl.next()) |line| { + try al.append(try Turn.parse(line)); + } + const turns = try al.toOwnedSlice(); + defer a.free(turns); + std.mem.sort(Turn, turns, {}, Turn.cmp); + var sum: u64 = 0; + for (turns, 1..) |turn, rank| { + //std.log.warn("turn {any} rank {}", .{turn, rank}); + sum += turn.bid * rank; + } + return sum; +} + +test "pt1" { + try std.testing.expectEqual(@as(u64,6440), try solve_pt1(std.testing.allocator, test_input)); +} + +pub fn main() !void { + try std.fmt.format(std.io.getStdOut().writer(), "day7 pt1: {}\n", .{try solve_pt1(std.heap.page_allocator, puzzle_input)}); +} + + +const test_input = +\\32T3K 765 +\\T55J5 684 +\\KK677 28 +\\KTJJT 220 +\\QQQJA 483 +; + +const puzzle_input = +\\9A35J 469 +\\75T32 237 +\\6T8JQ 427 +\\3366A 814 +\\K2AK9 982 +\\J8KTT 9 +\\94936 970 +\\Q8AK9 15 +\\3QQ32 940 +\\65555 484 +\\8K88K 674 +\\Q67T5 788 +\\77575 476 +\\KAKAA 785 +\\AA3AA 240 +\\44767 423 +\\Q923A 300 +\\KK444 650 +\\QQQ6Q 313 +\\5JA22 167 +\\7A264 837 +\\TTKTT 646 +\\K62JJ 682 +\\34A63 532 +\\7J554 393 +\\Q86T6 745 +\\9963K 718 +\\92K85 97 +\\3KKJ3 604 +\\98Q26 257 +\\7AJ6Q 132 +\\K48T5 125 +\\554J4 408 +\\T6333 178 +\\5757J 479 +\\8J222 488 +\\KKJ6A 460 +\\95T38 944 +\\23J22 796 +\\AK333 69 +\\25AK9 978 +\\77779 123 +\\K9T83 56 +\\46A39 730 +\\655J5 77 +\\A2T2A 78 +\\J8Q75 847 +\\QA82A 700 +\\TTT67 443 +\\KT9A5 343 +\\6969T 582 +\\A7779 703 +\\3QA93 597 +\\6JT6T 558 +\\28888 290 +\\26TT2 147 +\\T9356 587 +\\6T542 482 +\\3J733 140 +\\TQT72 534 +\\3K3K3 208 +\\5JA6J 833 +\\64646 277 +\\86K68 795 +\\24455 997 +\\3633K 504 +\\K3K36 790 +\\22KK2 731 +\\AA8AA 991 +\\A6666 312 +\\38395 712 +\\46J44 229 +\\52529 268 +\\49AA9 573 +\\J7J94 258 +\\87TKA 947 +\\J2999 555 +\\T9KJK 194 +\\7KK3K 146 +\\T255T 875 +\\9QAT4 475 +\\759A2 169 +\\22322 510 +\\27T69 299 +\\644K6 4 +\\44J84 227 +\\6A722 806 +\\775KJ 25 +\\37425 679 +\\7TA8T 226 +\\3Q6TK 391 +\\8T3J4 196 +\\67534 339 +\\5QQ55 565 +\\J33A3 305 +\\8A8AJ 732 +\\2QQJ5 523 +\\AAAJA 618 +\\97733 858 +\\2A6Q2 433 +\\J8QT3 390 +\\3333J 910 +\\K2AK2 884 +\\AQTTQ 810 +\\55666 855 +\\7Q7QJ 743 +\\K8KK3 489 +\\4AKKJ 619 +\\QQKQQ 373 +\\QJ59A 688 +\\2687J 622 +\\7Q77J 512 +\\578A3 120 +\\T2662 737 +\\JKJK7 807 +\\44T94 223 +\\454Q5 607 +\\75J58 551 +\\A686J 763 +\\TAT4T 108 +\\75356 591 +\\96989 977 +\\K7KTK 775 +\\5252Q 318 +\\77A5A 599 +\\22K87 359 +\\JJQQQ 930 +\\8TKT8 436 +\\A9QQ8 374 +\\4T2JA 30 +\\777AJ 463 +\\8J888 87 +\\42K8Q 657 +\\J5JJ5 713 +\\AKQJ3 45 +\\T59K4 765 +\\22A77 266 +\\K8KK8 219 +\\6T666 349 +\\72T7T 92 +\\3JQJQ 964 +\\AA2J9 672 +\\66997 803 +\\5A8A2 467 +\\KKKQ7 98 +\\67Q5J 669 +\\J57A6 503 +\\98347 331 +\\6J668 279 +\\9K7KK 319 +\\84848 337 +\\33353 974 +\\A333T 576 +\\66636 461 +\\6AAA2 281 +\\Q52QQ 691 +\\7876A 892 +\\533T8 966 +\\5A9Q7 533 +\\A6AAQ 21 +\\688Q6 100 +\\K8483 764 +\\62865 453 +\\39323 189 +\\TTJJT 498 +\\5J437 306 +\\55A7A 876 +\\9A366 562 +\\8J479 249 +\\65544 640 +\\83T88 325 +\\AK45A 321 +\\39QQ3 849 +\\83838 749 +\\43394 602 +\\33722 843 +\\T5KTJ 428 +\\JJKK9 549 +\\33737 27 +\\4KKK4 638 +\\KK398 246 +\\J6828 372 +\\99229 23 +\\2963K 577 +\\3ATJJ 862 +\\6488T 912 +\\48554 903 +\\3A353 627 +\\86923 768 +\\79A98 540 +\\77TTT 965 +\\TK2T7 188 +\\2A644 687 +\\QT943 253 +\\K2QJT 887 +\\J5KK5 915 +\\9Q2JA 980 +\\J237J 28 +\\A46Q2 264 +\\7T2TT 621 +\\A4T8J 57 +\\Q5QT5 217 +\\K9AK7 248 +\\TAJTT 973 +\\82822 919 +\\858AA 265 +\\5555J 800 +\\552J2 908 +\\Q5248 272 +\\A5KK5 529 +\\K8J9T 85 +\\888TT 477 +\\665Q5 823 +\\Q42AT 449 +\\4843A 83 +\\Q5476 885 +\\Q52T2 409 +\\6A2TJ 580 +\\92A99 483 +\\Q9Q6Q 734 +\\36662 134 +\\88899 401 +\\KQQQ9 389 +\\JQ259 658 +\\57895 639 +\\KQ654 852 +\\94273 612 +\\77KT7 987 +\\3Q4AQ 364 +\\6KQK6 651 +\\4AQ23 163 +\\34TTT 107 +\\T98T2 870 +\\J78Q9 756 +\\3K3J3 404 +\\J993J 328 +\\Q8JQA 678 +\\96759 326 +\\2J22J 383 +\\2T222 236 +\\76666 772 +\\QQ5QJ 225 +\\A47AA 505 +\\967TJ 924 +\\Q3TJ4 63 +\\2KK29 879 +\\44Q4Q 685 +\\TTQ9T 659 +\\7244J 414 +\\T22TJ 269 +\\55552 3 +\\J78TK 474 +\\3J3J3 559 +\\8QJ42 382 +\\28T86 740 +\\TKTT8 381 +\\22J44 579 +\\J8668 242 +\\88TT6 709 +\\KKKJ9 192 +\\478K2 501 +\\3Q66J 22 +\\K9KAJ 774 +\\K3333 113 +\\4TJT4 945 +\\Q55KK 609 +\\Q7272 955 +\\6AKAA 490 +\\964T5 971 +\\36Q3Q 51 +\\3T9AT 969 +\\Q8TQT 256 +\\4A833 632 +\\5499J 812 +\\44222 176 +\\6QQ6Q 317 +\\TJT2T 206 +\\A862Q 468 +\\36663 464 +\\54JK9 302 +\\8J828 103 +\\32QQ2 38 +\\66675 595 +\\2J8TQ 50 +\\2QQQQ 783 +\\333QQ 282 +\\67KKK 511 +\\2996J 518 +\\J824K 44 +\\K6656 726 +\\Q7Q5T 793 +\\KQ27T 494 +\\T2KQA 308 +\\AAAA2 441 +\\24J49 716 +\\K58TT 873 +\\7TA49 39 +\\6KQ7T 298 +\\6Q555 455 +\\66AJA 819 +\\5A9A3 922 +\\AAA88 170 +\\42324 962 +\\22Q22 616 +\\44QJQ 399 +\\9J3TA 342 +\\56K3A 588 +\\99T9A 224 +\\56T66 869 +\\77997 671 +\\53222 161 +\\8KKJT 384 +\\37777 567 +\\TKTK5 42 +\\6J622 127 +\\387Q5 417 +\\T3A73 360 +\\28AKA 868 +\\K26Q5 288 +\\J6J88 692 +\\KKKK9 690 +\\2A5QA 435 +\\K83T4 158 +\\QAA3A 104 +\\T7Q66 914 +\\A3A6A 270 +\\J888J 838 +\\3JTKQ 867 +\\7KKKK 451 +\\K7766 824 +\\Q4Q9Q 620 +\\65A33 957 +\\99A9A 781 +\\A9AAA 344 +\\44744 935 +\\6666J 804 +\\A8QJ9 155 +\\AQKAA 681 +\\6K7KJ 853 +\\A99JA 366 +\\65JJ5 47 +\\4TQ8T 769 +\\66555 457 +\\TJ226 222 +\\78777 758 +\\5K488 999 +\\Q65T4 362 +\\4Q738 80 +\\5JJ55 323 +\\8Q65A 918 +\\A5TT5 353 +\\294J3 471 +\\33Q44 102 +\\66668 254 +\\7663Q 516 +\\AAAJJ 798 +\\3344J 10 +\\85888 507 +\\68868 144 +\\588T5 124 +\\TT4TT 834 +\\QQ7QK 168 +\\75555 593 +\\849KA 446 +\\9QT7A 165 +\\5AA7A 697 +\\J99J9 213 +\\6834K 5 +\\TQQQT 292 +\\7A655 403 +\\982AQ 143 +\\A6237 334 +\\QK5T6 963 +\\99895 232 +\\56366 376 +\\34J35 231 +\\AAQAQ 150 +\\78887 485 +\\QQQQJ 263 +\\TAQ98 197 +\\425J5 895 +\\JQ7QQ 992 +\\J9JJ9 61 +\\5888J 665 +\\6J6K6 496 +\\78J82 293 +\\22292 73 +\\TT2TT 911 +\\ATAAT 322 +\\339AA 953 +\\A7465 413 +\\AA4AA 283 +\\QT3TQ 84 +\\QQA5Q 66 +\\J472J 784 +\\T3JTT 131 +\\333A4 210 +\\79299 550 +\\88A8J 594 +\\J9749 584 +\\J735K 902 +\\933JQ 109 +\\5T926 481 +\\4T4T4 561 +\\87TK6 247 +\\98964 159 +\\78997 354 +\\36JT4 29 +\\59464 771 +\\2AA5A 33 +\\77J43 244 +\\37T7T 448 +\\23QJ3 925 +\\K7K5Q 792 +\\QQQQ9 411 +\\KK568 278 +\\49TK7 961 +\\55TAA 817 +\\33J4Q 984 +\\5QJK9 105 +\\9A9J9 623 +\\AK62Q 842 +\\38333 735 +\\9A8J8 333 +\\9T243 204 +\\6K2J3 547 +\\78JKQ 959 +\\AA3A9 634 +\\KJJKT 13 +\\KJKKJ 921 +\\99934 310 +\\4J929 431 +\\55559 445 +\\TT62T 355 +\\32K25 825 +\\622A6 480 +\\334Q9 412 +\\26922 114 +\\638KJ 900 +\\364T8 462 +\\QQJT7 234 +\\TK586 525 +\\K342K 816 +\\TTT99 699 +\\JT658 315 +\\36388 24 +\\2666J 185 +\\53455 592 +\\4AJAA 304 +\\J3QQ8 228 +\\22J2A 416 +\\99768 927 +\\TKJ9A 487 +\\5A55J 744 +\\QKQ44 613 +\\336QA 81 +\\66622 200 +\\JTTTK 717 +\\59ATT 513 +\\33938 813 +\\66AKJ 466 +\\3976Q 941 +\\8888T 491 +\\JJK47 836 +\\99Q7Q 654 +\\Q896K 633 +\\Q8JKQ 553 +\\J6K6K 811 +\\2T323 750 +\\KKAKK 952 +\\Q6JJ4 929 +\\77J77 993 +\\9KQJT 989 +\\44254 857 +\\4AA5A 514 +\\TATJA 715 +\\74422 145 +\\33332 544 +\\5T5QT 311 +\\78JT8 913 +\\JKKT2 94 +\\26QK7 71 +\\444JJ 287 +\\99979 133 +\\Q999Q 314 +\\48888 649 +\\33T8K 368 +\\77T57 711 +\\4T42Q 351 +\\89Q99 89 +\\69666 846 +\\3A33A 890 +\\8Q8A3 636 +\\4A888 603 +\\9TQTA 747 +\\9AAA9 52 +\\TJ4TT 267 +\\J76J7 72 +\\K773Q 370 +\\77Q77 329 +\\636QQ 575 +\\ATQAA 917 +\\2743Q 932 +\\2KKKJ 452 +\\93929 686 +\\4ATTA 458 +\\42222 252 +\\35225 402 +\\45JKA 160 +\\4TAT6 201 +\\7A278 839 +\\4A7Q5 543 +\\Q33T6 641 +\\JQ99Q 238 +\\A793A 86 +\\78575 187 +\\49T9T 303 +\\8542K 198 +\\25A82 786 +\\77A77 363 +\\244KK 397 +\\87877 689 +\\T6T6T 778 +\\KKKK4 392 +\\22T2J 171 +\\T77A7 174 +\\99KJK 180 +\\2444J 761 +\\QAQQA 508 +\\3373T 121 +\\222TT 137 +\\736T2 8 +\\4444J 12 +\\33555 566 +\\487A4 230 +\\22626 439 +\\QQQQ8 336 +\\5T552 521 +\\QTQQQ 872 +\\63836 614 +\\66695 450 +\\AKAAA 361 +\\95A95 111 +\\644JK 701 +\\ATAAA 840 +\\9J99T 35 +\\3333A 664 +\\99992 99 +\\5A5A5 680 +\\Q7J5J 405 +\\59999 954 +\\2KTQ9 255 +\\6QQ96 149 +\\37333 67 +\\QJ6Q3 425 +\\Q6K29 415 +\\J7277 126 +\\AA29Q 220 +\\AAKJK 831 +\\27QQ2 986 +\\AJ367 891 +\\33292 666 +\\Q8786 933 +\\TAJ28 554 +\\K4448 585 +\\Q8225 931 +\\46242 598 +\\7AT98 693 +\\78J56 369 +\\TTTTJ 371 +\\TKJKK 990 +\\66767 802 +\\56956 789 +\\544K4 275 +\\46699 215 +\\26666 710 +\\AQQQQ 116 +\\6A858 757 +\\55757 142 +\\J2KA4 723 +\\6229K 906 +\\6K366 179 +\\4378K 527 +\\AA664 832 +\\72242 499 +\\2TT2Q 998 +\\5QQQ5 647 +\\5858J 856 +\\555KJ 655 +\\7788J 524 +\\36J5J 82 +\\99666 2 +\\9AKK3 177 +\\47447 596 +\\9266J 572 +\\4TTQ4 946 +\\999J9 110 +\\T74K4 899 +\\Q27J8 156 +\\98AK5 754 +\\3TJ6T 396 +\\75QK7 517 +\\K22KJ 741 +\\9699T 916 +\\66QAQ 202 +\\7329Q 32 +\\89JAT 708 +\\444Q4 841 +\\73366 880 +\\677QK 683 +\\48J84 394 +\\2966T 6 +\\9KT9K 531 +\\8544T 746 +\\2222A 934 +\\T2QKT 615 +\\8J282 430 +\\K9K9K 214 +\\336TJ 904 +\\9JTJ9 777 +\\QKAKK 68 +\\62A66 48 +\\49499 280 +\\97967 46 +\\8T66T 273 +\\94349 379 +\\57777 719 +\\2QT5K 827 +\\4TTT2 40 +\\J2252 859 +\\A3TQA 426 +\\468JA 611 +\\57745 662 +\\424AA 938 +\\J33AT 309 +\\99339 610 +\\872KJ 570 +\\K2395 571 +\\77A5Q 996 +\\JQ7Q6 340 +\\973J9 776 +\\J6K92 14 +\\5J5Q9 191 +\\Q5555 773 +\\A7KA7 11 +\\54545 851 +\\AJ9A8 968 +\\QQAJ7 821 +\\T6JTT 670 +\\3T2TT 151 +\\TTTT3 886 +\\33933 850 +\\KKKQQ 656 +\\T2TT2 54 +\\QA44J 995 +\\89J27 335 +\\3742A 212 +\\T7Q88 260 +\\TT666 75 +\\JKQ28 724 +\\548T3 698 +\\3883K 148 +\\39966 864 +\\69424 320 +\\4QJ5J 332 +\\J4297 346 +\\78A66 605 +\\82333 809 +\\4K777 644 +\\9739T 936 +\\JJ433 755 +\\88688 43 +\\3TJ33 988 +\\J37K3 628 +\\3KK3T 583 +\\A433J 195 +\\89K46 262 +\\JKKQK 545 +\\7AA27 437 +\\977T8 828 +\\757Q7 759 +\\7T7A8 805 +\\33336 19 +\\KJKKK 118 +\\44445 586 +\\84Q8K 205 +\\439K3 909 +\\6J663 762 +\\33777 975 +\\9AAQA 564 +\\JJ8JJ 91 +\\24555 696 +\\62644 707 +\\AA3J5 31 +\\6T2KQ 135 +\\24244 34 +\\3QK3K 560 +\\9J3T9 787 +\\7QTA8 705 +\\A22JA 528 +\\84844 537 +\\87667 937 +\\QJ5K4 90 +\\2K326 239 +\\59878 421 +\\7J377 536 +\\857K7 350 +\\2K2A2 704 +\\39T9T 493 +\\QKT86 829 +\\3AQJT 714 +\\7AAAJ 600 +\\9QK56 983 +\\35K33 193 +\\89888 589 +\\TQ477 432 +\\777K7 59 +\\86AQJ 17 +\\QQQJ3 407 +\\68K25 166 +\\32288 748 +\\TKTQK 65 +\\J9K56 530 +\\AA323 960 +\\27266 112 +\\22722 675 +\\73367 497 +\\Q7JJ3 16 +\\444T4 438 +\\22323 74 +\\3QQ6K 348 +\\A68J8 454 +\\42K64 367 +\\3AA7J 889 +\\AT492 398 +\\AAA6A 673 +\\2Q9QQ 95 +\\A7477 815 +\\4A8KA 444 +\\6JJ66 893 +\\84445 429 +\\7997J 101 +\\A5A6A 958 +\\K27A2 486 +\\4A4J4 327 +\\464TJ 434 +\\5554J 766 +\\KTKT8 801 +\\573K5 64 +\\JKK88 522 +\\A9999 291 +\\T787T 338 +\\39648 502 +\\46464 733 +\\AQAAA 357 +\\8TTTT 797 +\\64444 515 +\\8588T 53 +\\AKAKK 617 +\\8AJ99 888 +\\3TAAJ 874 +\\338Q3 694 +\\TT443 578 +\\86227 419 +\\9J9JQ 736 +\\22522 943 +\\823J3 866 +\\24444 519 +\\A7A7A 207 +\\5JJ99 36 +\\K2896 250 +\\66A5J 129 +\\JJJJJ 668 +\\8J548 721 +\\J8J63 385 +\\3Q442 79 +\\8K868 141 +\\AAA67 767 +\\T968K 289 +\\5QJ5K 245 +\\TKQK5 96 +\\54774 122 +\\89666 568 +\\95596 538 +\\9K3J4 380 +\\66665 20 +\\7759A 209 +\\6JTA6 702 +\\29574 88 +\\AA6A4 181 +\\Q28T4 152 +\\777KQ 386 +\\47888 271 +\\K8KKQ 738 +\\J7337 162 +\\JQA88 820 +\\QQ4QQ 276 +\\TKKTT 728 +\\JTKTK 316 +\\3J334 684 +\\9944Q 830 +\\8485A 753 +\\JKKJ8 221 +\\A9QJ6 948 +\\KJ3KQ 727 +\\Q5QQQ 695 +\\Q8QTQ 542 +\\2QQQ8 119 +\\JJ55Q 845 +\\52725 950 +\\QAJ33 808 +\\JAA7J 557 +\\Q22AA 183 +\\Q8Q8Q 661 +\\J55JT 410 +\\KKQJJ 901 +\\Q5455 539 +\\AQJJ9 956 +\\7QJ7T 896 +\\K5KKJ 994 +\\388KK 822 +\\2QQ2K 218 +\\3J4K3 285 +\\256K7 923 +\\K2KKA 157 +\\QQTKQ 139 +\\48TTT 1 +\\TTT44 770 +\\JJ777 898 +\\Q466K 117 +\\TQ4QQ 172 +\\43333 883 +\\855T3 324 +\\8T933 645 +\\579K9 347 +\\A76Q4 729 +\\3TTT3 115 +\\QJAQA 928 +\\65T65 541 +\\77A7A 625 +\\29J9J 472 +\\TKT74 926 +\\A934K 643 +\\JT533 199 +\\TT4AJ 216 +\\KKKK6 55 +\\6J3K5 676 +\\398J3 18 +\\778K8 653 +\\79773 406 +\\25446 606 +\\54323 76 +\\2T992 601 +\\8A888 241 +\\9AJQK 509 +\\3Q3QK 739 +\\KKKK8 667 +\\JJ494 590 +\\83JKT 203 +\\J9957 751 +\\JJAQQ 296 +\\4835Q 301 +\\333T3 722 +\\KKK2K 535 +\\8Q2QJ 378 +\\5J396 652 +\\TQ7J8 624 +\\5JJ22 447 +\\TT777 62 +\\TTJT7 60 +\\TA2QT 626 +\\T3Q79 791 +\\K6QQ8 294 +\\28K52 967 +\\6K374 663 +\\7877A 495 +\\24226 352 +\\88KAK 907 +\\J242T 546 +\\K77JT 465 +\\Q77Q5 863 +\\TQTQT 284 +\\49K62 26 +\\6TTT8 569 +\\Q77QQ 779 +\\99T6T 70 +\\K4AKA 130 +\\J5TT5 979 +\\KQJT8 175 +\\96K99 648 +\\A56J3 422 +\\53585 58 +\\6QJTQ 794 +\\9QJ77 388 +\\88944 235 +\\55A2Q 780 +\\9Q992 297 +\\96699 660 +\\682QJ 865 +\\6TTTK 799 +\\Q47QQ 358 +\\2929K 920 +\\J5535 752 +\\T3383 631 +\\6737Q 894 +\\9QT72 440 +\\844J9 470 +\\6AA6A 211 +\\5AA5A 981 +\\8KJ88 49 +\\55855 93 +\\5J495 261 +\\8QQQ5 629 +\\J4493 860 +\\ATTKA 818 +\\77264 877 +\\55K58 365 +\\QQ666 106 +\\238T6 459 +\\77QQK 848 +\\5757A 233 +\\84AT3 951 +\\TT7TT 642 +\\72236 345 +\\TQ333 760 +\\77744 720 +\\QQ4QK 478 +\\Q82A2 506 +\\AJ3AA 942 +\\JJ958 526 +\\AJ4A4 341 +\\A26J8 742 +\\5TK28 871 +\\865J3 136 +\\66A6A 556 +\\Q4A55 552 +\\K8429 37 +\\7QQ9Q 442 +\\323J5 375 +\\6J456 608 +\\73Q6A 424 +\\8QQ68 976 +\\J9KA7 286 +\\Q5Q5J 418 +\\74472 154 +\\KKQT9 637 +\\Q8Q88 574 +\\7543A 190 +\\KA87J 456 +\\2877K 635 +\\J76A4 330 +\\83Q69 128 +\\A88A8 377 +\\9999K 630 +\\J698Q 878 +\\67777 243 +\\A232A 844 +\\8K66J 835 +\\QJ36A 420 +\\22QQ6 782 +\\3339K 677 +\\K72QK 563 +\\86777 307 +\\323JJ 972 +\\955KQ 826 +\\33443 259 +\\88Q88 897 +\\85778 939 +\\7T268 356 +\\5T85J 861 +\\833J8 387 +\\4AA4A 7 +\\QTQJJ 725 +\\TT36T 395 +\\6KJAJ 520 +\\5J525 473 +\\T88JT 182 +\\44T66 173 +\\Q75A8 251 +\\K777A 985 +\\88T33 905 +\\99575 949 +\\62222 186 +\\22923 492 +\\J4Q42 706 +\\AA872 500 +\\JA895 153 +\\TT562 295 +\\34434 854 +\\2222J 881 +\\69K46 882 +\\TK74J 274 +\\T46TT 548 +\\K54KJ 164 +\\9999Q 184 +\\3QTJJ 400 +\\8QK59 41 +\\994Q9 1000 +\\347J4 581 +\\Q7289 138 +; \ No newline at end of file -- cgit v1.2.3-ZIG