aoc2023

Advent of Code 2023
Log | Files | Refs | README

day4.zig (28835B)


      1 const std = @import("std");
      2 
      3 pub fn main() !void {
      4     try std.fmt.format(std.io.getStdOut().writer(), "day4 pt1: {}\n", .{try solve_pt1(std.heap.page_allocator, puzzle_input)});
      5     try std.fmt.format(std.io.getStdOut().writer(), "day4 pt2: {}\n", .{try solve_pt2(std.heap.page_allocator, puzzle_input)});
      6 }
      7 
      8 fn solve_pt1(a: std.mem.Allocator, input: []const u8) !u32 {
      9     var lines = std.mem.splitScalar(u8, input, '\n');
     10     var sum: u32 = 0;
     11     while (lines.next()) |line| {
     12         var s1 = std.mem.splitScalar(u8, line, ':');
     13         const card_num_str = s1.first();
     14         _ = card_num_str; // I guess we'll use this next round :)
     15         const card_str = s1.next() orelse return error.NoCard;
     16         var s2 = std.mem.splitScalar(u8, card_str, '|');
     17         const winning_nos = try read_nums(a, s2.first());
     18         defer a.free(winning_nos);
     19         const your_nos = try read_nums(a, s2.next() orelse return error.NoNos);
     20         defer a.free(your_nos);
     21         const inter = try intersection(a, winning_nos, your_nos);
     22         defer a.free(inter);
     23         if (inter.len > 0) {
     24             sum += std.math.pow(u32, 2, @intCast(inter.len - 1));
     25         }
     26     }
     27     return sum;
     28 }
     29 
     30 fn solve_pt2(a: std.mem.Allocator, input: []const u8) !u32 {
     31     const n_cards = std.mem.count(u8, input, "\n") + 1;
     32     const card_counts = try a.alloc(u32, n_cards);
     33     defer a.free(card_counts);
     34     @memset(card_counts, 1);
     35 
     36     var lines = std.mem.splitScalar(u8, input, '\n');
     37     var lineix: usize = 0;
     38     while (lines.next()) |line| {
     39         defer lineix += 1;
     40         var s1 = std.mem.splitScalar(u8, line, ':');
     41         const card_num_str = s1.first();
     42         _ = card_num_str; // I guess we'll use this next round :)
     43         const card_str = s1.next() orelse return error.NoCard;
     44         var s2 = std.mem.splitScalar(u8, card_str, '|');
     45         const winning_nos = try read_nums(a, s2.first());
     46         defer a.free(winning_nos);
     47         const your_nos = try read_nums(a, s2.next() orelse return error.NoNos);
     48         defer a.free(your_nos);
     49         const inter = try intersection(a, winning_nos, your_nos);
     50         defer a.free(inter);
     51         if (inter.len > 0) {
     52             // for however many copies we have of the current card///
     53             for (0..card_counts[lineix]) |_| {
     54                 // add more copies of _subsequent_ cards based on the score of this card
     55                 for (lineix + 1..(lineix + 1 + inter.len)) |nix| {
     56                     card_counts[nix] += 1;
     57                 }
     58             }
     59         }
     60     }
     61     var sum: u32 = 0;
     62     for (card_counts) |cc| {
     63         sum += cc;
     64     }
     65     return sum;
     66 }
     67 
     68 fn read_nums(a: std.mem.Allocator, input: []const u8) ![]const u32 {
     69     var res = std.ArrayList(u32).init(a);
     70     errdefer res.deinit();
     71     var toks = std.mem.tokenizeScalar(u8, input, ' ');
     72     while (toks.next()) |tok| {
     73         try res.append(try std.fmt.parseInt(u32, tok, 10));
     74     }
     75     return try res.toOwnedSlice();
     76 }
     77 
     78 // Gets unique values which are present in both inputs.
     79 // caller should free the result
     80 fn intersection(a: std.mem.Allocator, first: []const u32, second: []const u32) ![]const u32 {
     81     var res = std.ArrayList(u32).init(a);
     82     errdefer res.deinit();
     83     for (first) |x| {
     84         for (second) |y| {
     85             if (x == y) {
     86                 for (res.items) |e| {
     87                     if (e == x) break;
     88                 } else {
     89                     try res.append(x);
     90                 }
     91             }
     92         }
     93     }
     94     return try res.toOwnedSlice();
     95 }
     96 
     97 test "pt1" {
     98     try std.testing.expectEqual(@as(u32, 13), try solve_pt1(std.testing.allocator, test_input));
     99 }
    100 test "pt2" {
    101     try std.testing.expectEqual(@as(u32, 30), try solve_pt2(std.testing.allocator, test_input));
    102 }
    103 const test_input =
    104     \\Card 1: 41 48 83 86 17 | 83 86  6 31 17  9 48 53
    105     \\Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
    106     \\Card 3:  1 21 53 59 44 | 69 82 63 72 16 21 14  1
    107     \\Card 4: 41 92 73 84 69 | 59 84 76 51 58  5 54 83
    108     \\Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
    109     \\Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
    110 ;
    111 
    112 const puzzle_input =
    113     \\Card   1: 91 73 74 57 24 99 31 70 60  8 | 89 70 43 24 62 30 91 87 60 57 90  2 27  3 31 25 39 83 64 73 99  8 74 37 49
    114     \\Card   2: 92 38 67 81 28 16 82 30 11 45 | 92 84 67 40 75 44 57 89 11 28 99 81 83 14 77 51 61 27 16 45 30 63 53 38 82
    115     \\Card   3: 16 21 36 18  9  5 27 43 76 52 | 75 44 11 20 54 33 40 18 22 13 85 17 51 98 77 12 73 58 84 64 76 90 53 95  6
    116     \\Card   4:  2  4 14 88 19 99  3 84  1 77 | 61 59 53 88 31 72 62 11  9 50 46 42 66 79 55 87 30 63 37 69 95 83 15 21 35
    117     \\Card   5: 58 85 47  8 52 68 81 16 56 64 | 79 54 88 17 74 89 51 40 98 18 69 48  1 55 26 13 87 45 78 33 65 83 67 36 37
    118     \\Card   6: 31 46 60 12 68 44  5 90  2 15 | 12 81 36 24 48 68 37 27 97 44 85  5 42 59 52 47  2 90  3 63 26 28 31 87 53
    119     \\Card   7: 95 84 91 68 23 15 76 80 30 73 | 55 70 60 43 18 73 30 92 15  9 23 39 95 17 98 33 25 91 80 68  1 76 61 84 35
    120     \\Card   8: 79  7 17 68 19 11 70 51 78 24 | 56 30 34 88 74 65 55 60 61 51 42 78 12 52 26 18 49 38 14 10 97 50 85 33 66
    121     \\Card   9: 18 30 91 65 25 22 17 12 99  5 | 26  9 30 23 44 64 91 95 36 34  8 18  4 22 81 99 94 15 59 70 19 65 25 28 63
    122     \\Card  10: 53  3  8 32 86 87 77 78 59 25 | 72 42 17 69 63 67 82 84 56 22 32 75 33 14 77 61 95 92 57 59 16 20 90 76 68
    123     \\Card  11: 63 44  6 45 66 11 93 48 18 74 | 23 48 66 21 55 97 89 11 41 44 75 18  6 49 91 85 40 53 95 74 37 93 36 63 45
    124     \\Card  12: 56 74 43 42 93 31  2 79 67 48 | 89 86 73 35  6 84 47 61 62  2 65 80 81 14 19 58 24 77 39 26 71 36  5 34 78
    125     \\Card  13: 51 89 44 93 90 17 61 32 95 53 | 28 22 14 12 76 36 98 33 50 56 61 40 13 21  5 54 87 43 67 47 46 83 23 90 44
    126     \\Card  14: 99 25 85 51  3 27 26 16 73 89 |  8 17 20 33 65 38 70  9  7 53 86 96 35 28 99  4 40 66 76 31 95 57 49 69 36
    127     \\Card  15: 42 95 30 60 70 67 59 61  5 71 | 66  5 41 65 74 47 24 86  8 37 68 54 12  1 44 75 48 90 16 30 99 96 98 70 21
    128     \\Card  16: 95 44 98 40 18 81 45 70 37 94 | 59 27 28 93  6 63 33 82 94 61 16 53 47 85 67 54 10 17 90 20 31  7 77 88 11
    129     \\Card  17: 10  7 77 80 92 29 64 99 18 14 | 70 23  7 99 72 49 12 52 73 94  4 91 57 78 97 16 50 26 68 89 80 20 15 87 64
    130     \\Card  18:  8 77 62 36 99 30 92 86 81 91 | 49 14 99  6 77 47 44 84 98 57 48 33  9 80 93 66 10 12 32 97 40 71 18 26 65
    131     \\Card  19: 87 38 27 92 35 94 88 75 37 74 | 89  7 24 54  9 98 13 42 32 60  8  6 90 35 75 18 68 96 80 59 44 85 95 21 17
    132     \\Card  20: 21 59 31 90 66 42  7 24 64 41 | 47 87 51 38  6 34 74 22 82 44 14 71 45 11 81 15 27 83 63 46 79 92 56 80 39
    133     \\Card  21: 67 34 30 82 42  3  8 77 61 31 | 38 92 87 84 28  6 66 25  7 51 29 75 85 80 50 71 13 69 31 74 20 62 88 64 45
    134     \\Card  22: 67 60 88 39 65 12 75 16 26 41 | 56 91 42 45 24 33 84 64 44 73 83 13 90 14 30  6  1 72 15  4  7 49 82 71 94
    135     \\Card  23: 60 27  1 46 47 61 98 11 95 40 | 40 72 32 81 46 12  1 34 44 91 11 27 94 61 54 80 24 47 95 18 67 98 60 19 99
    136     \\Card  24: 87 17 74 69 68 50 58 33 23 73 | 29 33 58 51 74 69  7 22  9 73 87 50 24 76 15 10 23 68 59  5 78 56 17 43 13
    137     \\Card  25: 36 43 83 65 99 25  7 45  6 53 | 61 63 74  7 10 76  4 22 59 31  6 47 45 41 24 21 53 68 99 15 91 46 65 97 69
    138     \\Card  26: 71 30 23 27 62 16 38 97  8 57 | 73 90  8 41 71 86 93 69 62 30 70 61 28 14 27 97 17 38  4 34 16 99 25 57 23
    139     \\Card  27: 38 46 70 79 64  7 40 63 60 99 | 63 79 28 10 85 11 64 60 70 24 99 39 12 27  7 38 31 20 67 40 95 75 46 54 45
    140     \\Card  28: 65 47 39 90 70 99 40 76 26 86 | 46 35 56 38  4 96 26 60 43 66 94  7 29 16 78 69 64 87 37 41 27 80 57 42 12
    141     \\Card  29: 33 39 49 31 36 61 23 94 46  1 | 15 49 36 61 40 83 24 39 13  3 86 92 27 55  1 31 29 94  8 21  7 60 73  4 66
    142     \\Card  30: 14 34 91 83 48 79 45 98 92 46 | 86 74 24 82 53 51 80 14 77 38 32 78 98 68 45 92 91 34 88 95 15 79 46 29 58
    143     \\Card  31: 53 12 68 17 44 54 29 77 92 37 | 74 86 23 44 36  4 69 53 65 13 98 77 67 17 68 29 11 54 12 51 99 37 14 92 64
    144     \\Card  32: 83 75  9 94 30 44  3 22 71 85 | 77 33 88 31 78 80 58 62 53 14 35 12 73 57 98 94 87 11 17 84 81 91 69 68 26
    145     \\Card  33: 43 42 17 85 99 65 52 36 78 46 |  1 41 17 18 80 44 62 47 46 74 67 10 29 37 92 57  9 65 30 14 45 32 55 75 40
    146     \\Card  34: 57 82 29 22 38 76  3 25 16 58 | 94 46 16  5  9  3 14 36 44 23 39 52 20 49  7 28 17 74 76 22 93 92  6 71 96
    147     \\Card  35: 61 95 18 38 87 68 89 24 53 91 | 39 71 86 87 44 29 64 41 70 50 85  3 96 38 89 24 17 81 30 21 42 26 16 76 79
    148     \\Card  36: 30 81 54 63 92 91 13 22 90  6 |  9 30 40 60  5 91 38 45  8 42  6 81 58 24 29  1 13 48 25 41 43 54 69 83 97
    149     \\Card  37: 26 77 91 25 58 10 15 52 13 44 | 98 89 50 39 97 46 49 38  3 64  4 87  2 30 95 54 91 40 41 68 20 93 78 36 17
    150     \\Card  38: 21 74 28  5 52 24  7 87 13  2 | 69 38 40 78 17 60 96 10 29 42 85 26 56 51 30  9 48  7 36 23 21 77  1 81 13
    151     \\Card  39: 55 58 31  7 19 14 73 89  3  9 | 80 15 65 45 66 81  2 82 14 41 48 24 40 11 69 52  3 58  4 70 20 51 29 71 62
    152     \\Card  40: 11 73 21 93 89 68 48 95 49 25 | 14 54 32 18  7 96 56  3 37 98 53 38 31 84  4 92 86 45  9  5 71 40 49  1 46
    153     \\Card  41: 59 94 97 52 64 36 73 14 23 85 | 68 29  1 51 99 44 35  7 71 91 16 54 37 77 45 41 82  2 13 17 22 27 63 96 53
    154     \\Card  42: 77 36 91 83 97 42 98 10 30 80 |  8 47 24 93 88 48 59 38 44 68 99 72 75 49 64  6 85 23 50 29 74 95  5 62 20
    155     \\Card  43: 89 43 72 22 94 79 26 55 13 63 | 35 75 39 50 94 79 48 99  5 76 22 32 46  7 80 44 43 55 16 89 26 63 95 72 13
    156     \\Card  44: 51 89 60 27 97 47 50 98 13 22 | 89 67 22 18 76 27 75 28  6 47 13 34 84 21 50 10 57 97 49 51 60 56 19 98 11
    157     \\Card  45: 62 35 76 38 61 94 29 73 80 60 | 86 87 81 74 84 14 73 76 94 20 19 11  1 78 38 93 29 61  2 80 60 35 72 46 62
    158     \\Card  46: 70 26 86 71 47 20 80 64 67  8 | 93 25 20 14 80 31 91 60 36 12 52 70 26 47 40 22 19 67 95 71 33 58 64 53 75
    159     \\Card  47: 72 37 74 81 14  3 29 77  5 49 |  5 88 89 81 37 14 71 95 63 54 49 24 67 62 77 29 72 92 39 80 60 74 59  3 93
    160     \\Card  48: 75 24  3 20 15 42 98 80 71 99 | 72 81 27 78 96 44 37 91 65 30  4 93 64 15 28 34 48 39 38 66 57 45 24 47  5
    161     \\Card  49: 87 31 80  8 78 83 97 92 66 94 | 56 97 92 51 59 29 47  2 44  4  9 83 41 14 80 87 31 39 75 23 19 82 35 78 60
    162     \\Card  50: 82 75 11 35 29 78 89 38  2 84 |  1 63 91  5 41 45 93 23 60 64 97 58 46 87 18  8 76 30 73 26 43 20 67 54 94
    163     \\Card  51: 92 55 48 66 18 41 37 69 52 36 |  3 26 94  1 37 84 76 43 78 30 87  4 38 20 49 83 66 60 99 89 51  9 36 61  7
    164     \\Card  52: 81 61 94 32 54 93 33  9  1  8 | 39 54  2 21 74 81 61 77 33 83  8 93 32 58 46 13 94 86 90  9 96  4  1 27 47
    165     \\Card  53: 44  2 29 69 86 91 50 92 53 98 | 35 64 62 93 41 96 10 50 67 90 30 53 27 80 32 81 51  3 31 43 86 69 44 60  2
    166     \\Card  54: 63 42 78 59  7 64 77 23 24 16 |  5 48 40 68 93 39 43 15 51 89 92 22 37 30 76  8 70  7 67 36 75 13 73 64 23
    167     \\Card  55: 99 40 83 12  9 86 96 50 64 42 | 19  3 20 68  6 33 56 46 50 16 77 23 99 96 39  4 90 25 61 47  8 54 12 41 15
    168     \\Card  56: 63 34 17 33 52 12 47 21 96 97 | 71 63 66 29 61 24 83 91 52 96 33 45 23 22 56 32 80 94 15 65 55 69 47 27 26
    169     \\Card  57: 70 93 45  7 71 12 84 72 77 26 | 97 15 96 92 63 40 68 34 57  4 36 38 61 26  2 23 59 98 25 24 72 43 88 12  1
    170     \\Card  58: 46 22  7  8 34 94 35 36 53 11 | 43 83 31 24 50 95 20 87 92 66 17 71 16 19 65 48 67 68 72 99 12 59 35  4 11
    171     \\Card  59:  2 38 44 95  5 20 22 90 35  7 |  1 97  8 56 10 35 72 26 71 40 31 99 58 88 64 38 85 25 20 89 46 47 57  5 78
    172     \\Card  60: 90 32 82  1  9 22 50 94 63 60 | 22 72 81 46 33 19 47 35 36 89 15 75 42  6 88 17 69  2  9 78 77 37 41 61 74
    173     \\Card  61: 49 29 23 68 59 55 50 24 41 75 | 65 91 73 48 13 15 59 41 61 85 94 80 27  7 44 17 69 63 92 37 39  6 64 43 82
    174     \\Card  62: 83 82 88  8 95 80  4 87 91 32 | 40 89 41  1 70 28 77 20 97  3 99 53 65 61 98 57 22  4 92 68 15 69 47 84 94
    175     \\Card  63: 66 30  9 84 14 67 44  5 68 54 | 99 86  7 17 89 10 28 71 39 55 46 61 29 58 50 63 15 57 42 85 25 36 83 13  8
    176     \\Card  64: 59  9 73 17 19 30 53 67 23 46 | 58 75  5  9  2 53 25 73 16 71 63 23 67 10 18 29 59 17 90 46 19 30 42 28 38
    177     \\Card  65: 56 68 21  9 52 11 40 83 86 23 | 60 63  1 54 58 18 42  9 22 16 73 68 87 26 69  4 71 84 30 67 23 17 86 37 47
    178     \\Card  66: 70 47 10 59 97 66 30  6 71 96 | 42 70 91 21 66 79 71 97 37  6 48 96 86 59 47  3 88 10 80 11 30 73 18 14 50
    179     \\Card  67: 16 47 83 48 73 86 14 51 55 42 | 70 14 47 67  9 77 56 10 73 24 50 81 54  3 83 55 51  7 42  1 16 80 41 48 86
    180     \\Card  68: 54 25 28 78 64 43 88 20 57 95 | 16 83 63 21 18 58 40 62 95 51 30 70 64 71 23 25 28 20  8 57 46 35 78 49 54
    181     \\Card  69: 56  5 81 35 42 59 82 40 37 54 | 67 95 92 60 83 23 39 14 27 44 86  3 72 88 49 75 25 47 51 99 18 61 37  2  5
    182     \\Card  70: 29 89  6 71 55 50 92 66 17 47 | 31 72 36 95 78  2 14  1 42 52 57 99 84 21 17 39 51 10 48 66  4 71 26 25 32
    183     \\Card  71: 27 62 33 52 11 70 39 93 58 75 | 33 26 98 52 92 35 66 39 11 84 75 62  3 34  8 21  2 61 54 58 65 53 80 27 36
    184     \\Card  72: 69 66 38 84  8 87 77 96 80 51 | 22 63 54 23 21 84 89 55  9 96  8 43 68  2  6 98 71 65 97 51 38 82 80 87 77
    185     \\Card  73: 55 20  1 72 54 78 35 30 17 87 | 17 33 35 78 27 87  1 65 84  8 20 47 60 25 72 55 61 88 58 50 30 10 66 54 56
    186     \\Card  74: 66 63  1 75 82 23 59 68 94  2 | 31 23 55 58 87 66 85 15 42 10 43 28 96 44 99 16 63 79 89 65 60 38 75 56 78
    187     \\Card  75: 47 68 56 86 57  8 69 70 22 17 | 10 26 76 24 79 86 63  2 90 44 17 51 32  1 50  3  6 67 15 27 31 13 45 83 25
    188     \\Card  76:  5 22 18 83 47  2 76 14 26 88 | 18 42 46 22 80 71 76 60 29 68 45 51 26 64 17 62 69 91 28 73 32 21 85 86 79
    189     \\Card  77:  8 22 41 23 46 64 85 16 91 52 | 91 67 54 83 97 15 56 86 59 49 37 62 80 96 70 14 98 30 26 82  7 87 85  1 89
    190     \\Card  78:  1 39 33 31 44 64 81 11 56 35 | 67 92 72 94 41 93 11 28 69 34 71  1 35 79 39 36 64 61 55 63 22 33 77 27 62
    191     \\Card  79: 55 75 39 92 33 77  9 25 52 90 | 11 46 97 99 77 62 29 93 23 40 49 33 34 44 74 60 92 48 54 80 12 14 70 43 71
    192     \\Card  80: 65 57 42 76 26  1 95 60 16 45 | 39  9 75 56 57 94 65 60 63 76 33 91  8 27 68 73 17 19 21 96 66 97 52  3 86
    193     \\Card  81:  6 19 10 16 68 83  1 71 47 55 | 39 93 27 99 64 20 38 73 79 67  7  6 54 72 86 98 25 57 56 53 85 26 95  4 74
    194     \\Card  82: 81 25 13 10 91 34 20 42 45 21 | 76 17 42 58 80 90 55 45 66 89 84 33 52 97 96 56 92 86 48 61  1 13 85 62 91
    195     \\Card  83: 54 83 36 19 43 15 30  7 99  2 |  5 59 58 90 79 12 51 78 89 69 60 57 39 53 63  7 16 28 66 64 23  8 85 13  9
    196     \\Card  84: 62 10 42 43 88 34 99 78 81 52 | 61 36 98 34 99 25 50 71  4  6 65 55 49 93 95 58 79 57 16 84 39 18 21  5 69
    197     \\Card  85: 28 75 22 61 62 74 19 93  8 84 | 33 26 85 84 76 55 38 78 11 96  1 36 31 82 35 48 71 12 21 20  9 51 46 53 80
    198     \\Card  86: 46 96 63 73 11 29 56 78  7 85 | 49 47 43 39 92 66 71 64 44 83  8  2 23 54 75  3 90  5 93 32 59 53 28 94 89
    199     \\Card  87: 21 23 83 93 49 73 29 87 76 34 | 89 99 94 84  7 38 97 57 82 50 22 37 71 59 69 17 39 41 52 15 67  1 56 55 24
    200     \\Card  88: 77 16  3 37 20 75 17 30 63 53 | 20 77 24  3 93 55 75  4 30  5 73 17 37 13 82 64 16 48 38 63 69 53 10  7 78
    201     \\Card  89: 35 19 56 41 14 43 82 93 21 72 | 84 43 21 55 35 25 15 41 80  3 72 82 94 29 93 50 51 56 14 46 19 36 96 86 52
    202     \\Card  90: 37 58 71 21 38 12 49 79 23 43 | 71 86 32 21 70 92 69 37 28 78 49 79 62 59 60 38 47  4 43 12 58  1  2 84 18
    203     \\Card  91: 13 51 63 21 29 86 88 26 90 16 | 63 42 86 46 50  1 29 43  4 74 14  9 25 92 51 13 87 54 55 10 85 32 21 61 80
    204     \\Card  92: 79 24 44 20 42 49 50 41 10 66 | 49 50 73 55 10 56 60  9 41 97 17 61 24 14 94 38 11 78 81 51 66 27 33 18 20
    205     \\Card  93: 38 85 99 95 30 50 68 46 73 98 | 30 73  4 82 68 17 67  9 10 64 50 48 95 37 38 84 26 40  5 58 36 69 15 14 20
    206     \\Card  94: 86 11  2 33 20 90  3  8 62 87 | 77 11 47 20 10 64 87 93 92 70 86 56  8 82 27 57  7 31 17 60 23 97 22 45 79
    207     \\Card  95: 80 22  7 78 61 28 86 70 76 67 | 83 56  7 87 77  8 92 70 84 93 14 30 24  5 73 25 76 96 19 49 81 40 37 15 53
    208     \\Card  96: 43 41  8 17 28 83 18 98 72 16 | 79 25  2 18 97 15 42 91 60 34 40 96 78 49 45 33 51 62 67 56 19 38  7  3 29
    209     \\Card  97: 77 35 99 60 81 87 18 84 43 29 | 72 32 57  3 16 65 78 15 38 44 91 80 60 71 17 36 31 51  9 14 76 96  4 99 75
    210     \\Card  98: 29 86  5 48 21 43 16 27 59  6 | 51 10 61 62 92 43 89 44 37 63 19 39 32 77 47 79 27 22  7 30 78 31 41 64 83
    211     \\Card  99: 20 39 33  4 59 87 86 89 93 60 | 82 77 63 48  9  4 41 61 21 36  7 23 57 54 71 64  8 16  6 65 32 83 37 44 88
    212     \\Card 100: 24 23 36 12 79 94 15 65 67 14 |  1 39 67 42  6 50 26 15 10 73 92 75 83 38 82 47 31 16 89 52 28  8 19 62 35
    213     \\Card 101: 39 96 48 37 89  5 71 31 67 58 | 51 58  6 99 33 91 88 26 68 63 22 15 44  2 45 76 80 36 70 62 11 42 18 19 41
    214     \\Card 102: 93 97 30 54 31 96 26 91 10 33 | 52 56 50 19 78 84 86 70 16 41 36 72 27 43 34 53 74 63 68 89  3 83 38 55 60
    215     \\Card 103: 21 97 79  5 92 91 34 28 23 40 | 23 16 28 29  5 63 92 58 51 91 86 74 13  9 46 52 88 55 72 85 34 99 57 15 80
    216     \\Card 104: 97 39 17 93 21 34 91 89 50 27 | 30 27 97 10 34 91 53 63 22 62 21 83 80 93  7 72 56 60 66 79  4 67 39 32 89
    217     \\Card 105: 98 92 12 26 51 18 46 84 41 54 | 92 30 35 27 54 78  3 40 82 87 84 18 80 14 70 21 46 17 23 51 56 39 49 99 57
    218     \\Card 106: 11 50 62 80  4 10 16 30 92 52 | 68 72 36 29 70 11 95  2 50 31 23 57 65 58 13 52 71 43 12  4 87 44 96 38 74
    219     \\Card 107: 69 34 89 63 87 81  4  1 55 19 | 62 14 80 65 96  7 76 43 24 63 60 95  2 79 77 46 28 55 74 41  5 34 35 29 36
    220     \\Card 108: 70 92 10 47 55 65 85 86 13 41 | 55 18 20 24 85  2 51 66 13 95 10 47  3 93 92 50 56 65 32 80 16 72  1 76 41
    221     \\Card 109: 13 69 43 75 98 40 56 53  7 50 | 42 77 46 43 51 62 54 33 35 65 16 75 92 23 18 29 28  9  8 76 78 57 71 34 74
    222     \\Card 110: 10 89 39  7 69 38 87 27 11 62 |  8 10 53 37 42 41 77 70 68 34 17  2 47 89 97 96 33 29 35 31 98  6 61 86 67
    223     \\Card 111: 65 11 45 95 63 71 44 20 89 57 | 51 30 50 35 98 62 23 95 54 39 80  2 99 91 96 24 67 58 38 85 18 68 19 56 60
    224     \\Card 112: 83 22 25 96 47 65 11  2 63 39 | 62 99  6 93 65 96 56 84 78 32 94 50  2 39 71 88 26 38 80  4 44 36 19 58 12
    225     \\Card 113: 26 68 79 73 46 49 57 65 51  5 | 39 21 86 30 67 48 53 89 71 12 51 88 44 35 18 97 16 98 94 75 74 69 60  7 15
    226     \\Card 114: 51 19 75 48 62  5 46 94 43 56 | 80 71 41 33 62 68  4 67 84 66 92 55 32 24 43 86 35 58 63 23 11 98 10 15 46
    227     \\Card 115: 19 68 84 70 67 91 40 66  7 57 | 52 16 55 60 37  2 34 35 90 15  1 24 79 48 44 42 73 86 43 99 18 45 65 78 50
    228     \\Card 116:  1 33 44 70 71 74 55 30  4 23 | 41  5  6 50 10 32 35 18 28 21 42 17 95 98 75 65 36 39  7 83 96 27 31 99  9
    229     \\Card 117: 77 84 69 17 18 11  4 54 24 56 | 60 20 76 44 99 63 28 70 46 26 21 98 55 85 48  9 64 51 31 75 79 33 67 29 30
    230     \\Card 118: 19 23 64 82 70 17 95  6 47 13 | 50 47 49 44 53  4 36 96 43 78 39  9 82 38 72  8 14 12 24 26 10 64 65 84 37
    231     \\Card 119: 80 94 54 84 46 78 18 49 30 81 | 88  8 68 74 35  1  9 33 16 75 19 59 61 55 63 32 76 25 20 90 43 29 23 72 97
    232     \\Card 120:  7 87 75 59 31 61 29 33 66 39 | 36 20 42 75 61 56  7 37 87 10 29 81 31 66 39 45 68 33 40  1 73 83 52 60 59
    233     \\Card 121: 68 47 97 53 77  5 49 72 80 10 | 43 45 55 22 65  8 62 66 33 21 24 38 81 70 28 17 93 37 58 16  5 54 26 68 64
    234     \\Card 122: 29 48 43 45 95 85 50 42 18 73 | 96  2 30 40 52 46 17 98 13 89  7 53 87 26 15 63 28 22 62 19 27 75 21 69 38
    235     \\Card 123: 65 28  6 43 83 45  1 91 87  5 | 66 37 35 48  6 27  4 22 23 69 46 40 70 75 79 17 24 59 90 39  9  7 57  3 56
    236     \\Card 124: 71 94 76 77 98 48 95 75 83 17 | 17  4 99 70 81 28 23 78 45 20 94 95 76 42 48 98 19 77 30 39 69 71 87 83 75
    237     \\Card 125: 95 32 66 41 96 34  4 68 84 36 | 28  8 70 80 73 68 58 91 57 14 42 35 36  6 22 60 38 32 77 82  4 16 67 10 95
    238     \\Card 126: 88 46 26 45 74 65 80 56 53  8 | 60 63 56 33 78  8 45 74 85 95 65 86 53 70 21 38 68 14 88 79 50 26 90 75 35
    239     \\Card 127: 59 71 83 32 11  4 56 39 63 96 | 86 23  1 70 26 50 47 82 98 42 13 15 35 12 94 53 81 79 19 76 29 45 75 99 27
    240     \\Card 128: 55 53 47 95 28 54 38 83 46 67 | 52 67 46 40 94 95 69 97 54 21 99 66 23  4 98 83 48 62  3 11 29 28 38 63 55
    241     \\Card 129: 86 33 98 10 56 71 70 47 31 38 |  4 52 20 65 93 74 92 77 46 58 48  9 59 27 45 69 47 83 88 40 95 73 76 21 35
    242     \\Card 130: 81 39 87 51 14 71  4 46 88 63 | 70 37 69  8 65 95 29  6 89 54 33 50 96 66  2 32 19 28 90 48 87 26 61 21  4
    243     \\Card 131: 94 58 41 40 68 24 98 55  5  4 | 54 87 82 35 53 14 60 58  4 41 43 62 72 16 90 49 74 30 50 42  5 98 18 68 85
    244     \\Card 132: 55 22 59 97 67  6 90  7 36 51 | 59 66 49 61 25 72 45 93 79 47 50 71 64 69  1  6 16  4 23  7 94  8 53 48 15
    245     \\Card 133: 65 81 78  4 73 64 36 80 58 39 | 56 54 59 73 64 46 93 76 53 65 75 41 43 91 33  5 89 60 13 98 24 85  1 57 58
    246     \\Card 134: 23 48 64 31 94 12 13 41 80 99 | 37 68 31 45  5 30 84 22 89 83 41 65 76  9  3 18 53 85 50 69 12 72 99  8 58
    247     \\Card 135:  6 24 58  1  3 61 45 44 51 70 | 86 78 64 76 66 72 97  5 27 16 18 25 82 32 48 89 62 93 54 75 83 84 57 59 91
    248     \\Card 136: 79 25 90 32 19 21  2 24 94 67 | 51 22 65 48 70  4  1 84 86 50  9 30 18  3 99 67 89 26 34 42 73 93 27 78 63
    249     \\Card 137: 24  1 69  7 49 18  4 37 14 68 | 22  2 67 41 56 43  6 60 94 92 23 83  1 31 13 75 70  5 97 64 88 44 73 72 28
    250     \\Card 138: 12  1 71 46 95 25 37 51 26 27 |  3 11 59 90 92 42 72 65 44 13 97 75 58 39 76 10 45 94 69 86 35 85 73 20 89
    251     \\Card 139: 39 70 36 62 71 18 92 69 24 96 | 39 16 50 54 92 24 70 97 62 69 10 36 78 33 15 96 18 19 11 42 99 71 86 27 80
    252     \\Card 140:  2 11 39 42 10 52 33 71 23 31 | 38 62 73 52 78 92 84 10 35 34  2 31 88 71 59 41 42 45 46 95 64 11 33 23 39
    253     \\Card 141: 47 44 18  9 54  6 31 16 83 81 | 81 88 85 47 18  6 40  9 83 24 68 20 84 95 16 54 82 36  1 56 31 44 74 23 14
    254     \\Card 142: 32 76 54 78  4 99 53 43 18 47 | 19 83 76 63 74 44 85 75 38  1 17 24 12  7 66 31 84 87 54 22 18 34 88 97 50
    255     \\Card 143: 25 14 81 19 44 77 92 76  5 54 | 82 14 77 15 69 84 76 25 62 20 24 95 92 44 78 26  5 19  3 54 74 60 37 50 81
    256     \\Card 144: 49  7  6  5 94 20 54 64 98 97 | 98 93 69 64 97 50 62  5 11 20  6 51 55  2 21 39 28 76 81 71  7 26 52 91 95
    257     \\Card 145:  1  2 66 49 89 56 10 76  7 39 | 86 81 43 39 54 53 58 14 17 29 24  1 19 80 88 82 73 62 20 22 12 37 91 28 23
    258     \\Card 146: 41 69 32 57 15 74 27 61 25 78 | 74 15 27 69 25 17 32 19 78 43  6 60  8 41 30 20 62 73 47 61 76 58 22 37 57
    259     \\Card 147: 11 52 81  6  4 55 73 38 46 50 | 66  4 52 11 59 78 38 73 89 37 35 54 43 99 44 80 55 68 98 29  6 56 50 81 46
    260     \\Card 148: 34 14 67 27 32 70 61 86 81 72 | 70 86 40 53 44 72 61 50 79 34 46 18 10 14 81  7 30 27 64 28 32 66 67  5 55
    261     \\Card 149: 80 90 17 95 51 81 61 83 50  3 | 42  4 83 95 11 51 40 43 90 80 38 50 78 18 61 10 23 94  3  8 86 17 62 20 81
    262     \\Card 150: 96 54 30 34 82 41 76 53 51 85 | 31 47 82 96 22 76 73 25 29 41 10 79 17  9 46 35 30 71 34 97 48 74 56 64 37
    263     \\Card 151: 28 53  3 51 48 79 73 36 58 42 | 28 61 21 57 43 19 67 75 73 85 80 11 22 25 16 93 70  1 64 97 54 20 86 50 89
    264     \\Card 152: 31 90 47 70 45 88 49 61 39  5 | 19  9 22 11 74 95 53 93 14 46 67 36 70 32 34 27 55 17 65 89 40 16 90 96 12
    265     \\Card 153: 96  4 50 16 90 83 48 53 51 13 | 97 33 91 56 23 63  6 70 14 15 61 40 39 94 20 81 84 85 60 80 99 58 38 96 54
    266     \\Card 154: 44 63 29 65 41 23  7 83 42 75 |  2 75 92 65 80 83 24 10 29 96 25 69  8 71 63 60 15 44 38  6 42 20 41 30 12
    267     \\Card 155: 32 11 13 85 55 53 14 84 60  1 | 23 29 40 96 89 11  8 14  7 94 10 83 91  4 17 31 80 85 82 72  3 38 15  2 35
    268     \\Card 156: 60 12 33 95 54 83 55 75 62 51 | 20 29 37 38 96 69 68 47 39 15 50 99 78 30 86 77 74  4 22 40 97 26 71 66 35
    269     \\Card 157: 41 75 99 89  3 48 52 25 76 46 | 90 64 99 18 55 84 38 88 92 34 75 77 51 48 42 39  3 23 61 81 91 72 52 40 47
    270     \\Card 158: 92 41 45 24 86  6 77 59 14 29 | 92 67 83 70 37 32 25 80 94 23 86 64  5 34 85 98  8 89 96 90 97 51 73 91 81
    271     \\Card 159: 60 91 37 80  5 16 98 14 42 21 | 87 91 96 48 59 39  2  9 50 37 19 28 86 11 26 49 46 30 94 36  4 24 13 72 15
    272     \\Card 160: 66 49 88 17 67 95 14 40 76 27 |  6 55 34 72 75 31  2  1 64 58 17 61 67 96 28 24 89 57  3 40 60 22 78 52 21
    273     \\Card 161: 60  2 57 77 76 71 83 86 47 90 | 27 31 51 94 55 96 74 88 52 61 40 45 48 25 30  1 92 58 19 95 29 11 99  4 41
    274     \\Card 162: 52 25  5 95 78 96 45 64  1 97 | 85 74 62 83 16 67 30 13 40 55 93 80 86 21 79 44  9 51 48 54 70 49 18 65 28
    275     \\Card 163: 87 32 84 63 65 89 76 91 88 82 | 10 14 29 16 47 77  2  6 12 35  5 51 31 25 55  7  9 52 54 36 71 19 95 96 17
    276     \\Card 164: 87 10 68 76 17 14 85 43 46 54 | 16 91 11 99 26 28 19 46 43 66 71 76 27 14 37 61 57 32 24 85 54 35 10 23 17
    277     \\Card 165:  1 81 96  5 47 22 18 50 20 30 | 38 97  4 68 13 23 40 63 35  2 30 96 18 60 50 65 20 54 55 81  7 56 71 12  6
    278     \\Card 166: 32  6 13 30 68 46 80 86 84 57 | 84 55 30 31 46 48 27 53 13 90 70 98 36 37 24 47 80 57 67 79 68 19 86  6 22
    279     \\Card 167:  7  9 30 92 95 91 45 88 36 65 | 35 15 81 19 60 25 47  6  2 44 46 83 91 95 88 78 23 68 79 10 92 24 40 89 98
    280     \\Card 168: 90 37 32  3 18 52 95 88 51 48 | 89  4 99 88 48 52 24 32 73 50 18 72 28 33 51  3 68 11 91 67 82 95 85 49  7
    281     \\Card 169: 10  4 66 41 71 40 61 99 26 25 | 43 44 21 80 92 10 23 96 17  7 66 89 55 52 78 97  4 71 57 31 61 74  9 25 30
    282     \\Card 170: 16 95  6 49  5  4 25 82 90 54 |  3 43 73 16 82 35 80 60  4 15 68 42 57 49 37  5 13  2 32 89 47 27 95 58 25
    283     \\Card 171: 93 40 32 45 97 57 69 82 13  8 | 94 40 90 49 82 20 14 74 53 93 79 57 92 96 66  6 30 77 48 45 97  9 70 87  8
    284     \\Card 172: 19 58 52 85 39 80 76  6 43 94 | 42 50 21 94 51 40 28 82 83 52 86 17  4 35 62 81 99 48 11 14 47 84 39 49 20
    285     \\Card 173: 88 65 36 24 56 11 30 46 86 55 | 36 93 43 68 42 49 74 62 87  1 57 27 45 66 13 81  5 90 38 16 89 80 85 77 50
    286     \\Card 174: 53 92 23 87 93 61 30 45 74 27 | 44 25 75  6 27 93 81 49 30 98 61 87 23 88 18 33 70 29 53 26 43 60 74 84 45
    287     \\Card 175: 79 19 52  6 60 13 88 64 96 32 |  7 86 41 34 85 92 40 39 46 58  3 94 50 99 15 44 38  1 89 73 11 37 54 14 36
    288     \\Card 176: 94 48 56 28  3 25 41 35 69 51 | 10 58 30 51 80  1 70 83 35 61 90 41 56 54 67 48 42 11 76 74  9 66 86 50 19
    289     \\Card 177:  2 38 58 92 90 25 20 19  1 29 | 30 69 24 88 82 96 56  3 49 99 59 28 48 74 13 41  8 35 71 22 93 12 33 37 14
    290     \\Card 178: 66 79 20 37 85 81 57 59 74  6 | 85 94 22  5 63 13 99 25 97 68 71 95 83 98 18 39 53  9 27 30 62 69 38 15 56
    291     \\Card 179:  5 83 63 48 88 69 58 74 61 24 | 33 96 73 72 76 43 99 21 49 69 10 82 16 75 78 68 24 67 54 57 51 66 97 20 94
    292     \\Card 180: 79 80 85 56 12 24 64  2 18 88 | 42 73 57 65 66 71  5 15 81 55 37 34  9 28 61 51 36 48 95  3 83 63 77 75 96
    293     \\Card 181: 78 70 14 88 48 82  3 39  7 17 | 82 49 21 50 24 42 43 29 10 94 86 85 73  3 36  6 27 32 35 57  1 34 33 93 89
    294     \\Card 182: 89 44 72 14 32 61 50 71 95  5 | 49 60 69 20 28 68 67 98 10 42 12 87 84 53 24 51  7  3 40 36 76 63 33 30 29
    295     \\Card 183: 13 26 72 88 49  5 50 40 92 98 |  9 70 43 45 86 31 32 66 71 38 57 85 77 90 61 28 44 33  7 37  8 29 54 46 78
    296     \\Card 184: 49 99 25 65 26 54 76 36 19 10 | 55 38 85 40 10  6 42 72 81 50 92 76 99 49 71 65 30 51 62 52 36 93 69 54 88
    297     \\Card 185: 77 29  7 74  5 22 75 27 44 45 | 56 18 52  7  6 75 15 45 84 35  5 54 69 29 91 97 77 71 22 76 59 74 27  1 44
    298     \\Card 186:  1 23 90 57 54 91 26 84 59 36 | 13 36 93 90 99 71 23 61 57 91 49  1 59 30 53 81 84 14 69  9  5 29 76 26 97
    299     \\Card 187: 44 80  8 63 43 30 53 85 67 96 | 63 66 87 46 55 67 43 80 98 96 54 44 60 72 99 30  4  8 85  7 53 13 77 29 15
    300     \\Card 188: 59 29 55 98 92 42 74 62 79 16 | 90 59 74  8 33 14 73 79 41 57 65 21 88 12 35 61 66 97 22 48 72 44  9 80 91
    301     \\Card 189: 35 18 56 44 57 22  3 27 99 39 | 70 22 62 35 44 17 86 72 27 46 38 39 57 69 99 25 21 18 26 56 85  5 97 24 81
    302     \\Card 190: 24 77 20 49 58 11  2 89 67 32 | 93 65 59 18 16 39 54 23 83 92 48 94 87 89 67 13 78 84 29 63 95 98 37 38 45
    303     \\Card 191: 45 48 30 52  3 10 95 59 76 44 |  3 50 43 91 90 88  7 76  9 48 14 86 59 40 52 35 44 10 41 13 95 82 62 49 33
    304     \\Card 192: 31 43 97 75 42 91 34 80  6 99 | 55 22  2 31  3 75 15 90 34 29 82 63 42 93  1 80 99 97 68 65 62 83 50 53  6
    305     \\Card 193: 24 45 50 40 55 81 14 26 92  6 | 13 64 85 73 14 66 92 56  3 24 70 40  6 45  1 19 37 23 31 63 81  4 39 27 75
    306     \\Card 194: 36  4 19 20 99 45 54 58 61 79 | 74 59 53 27 11 79 23 29 90 85 38 52 44 69 14 41  7  1 15 80 56 91 35 31 26
    307     \\Card 195: 71 24 91 55 15 62 68 74 28 78 | 30 24 77 12 98 35 67 66 48 95 65 27 59  4 41 23 82 69 31 15  3 36 92 25 83
    308     \\Card 196: 42 43 26 49 51 25 75 40 69 20 |  6 16 75 18 64 82  4 36 27 87 60 91 46 42 26 33 93 52 24 31 55 29 19 70 86
    309     \\Card 197: 52 78 18 87 19 20 26 50 37 67 | 16 52 96 77 13 99 48 53 86 98 51 71 84 81 41  5 25 27 29  3 72 26 22 68  2
    310     \\Card 198: 48 73 57  9 63 74 42 12 29 85 | 45 77 75  4 69 72 54 55 64  2 86 82 49 95 36 99 34 13 98 79  8  1 23 44 93
    311     \\Card 199: 95 81 47 40 28  2 20 16 12 77 | 38 75 27 28 73 65 10 24 77 85 78 66 61  4 80 96 69  6  7 18 23 42 83 51 50
    312     \\Card 200: 71 94 29  5 99 61 56 14 76 54 | 97 70 48 45 89 46 90 79 20 75 66 44 87 19 23 35 47 60  6 61 43 98 18 21 83
    313     \\Card 201: 67 83  3 45 26 56  4 57 75 19 | 16  1 68 43 27 82 55 71 37 59 33 93 13  8 25 12 15 44 11 48 41 17 47 36 35
    314 ;