From 86126831e5be11777a6b89344a4983f7801fbb43 Mon Sep 17 00:00:00 2001 From: JonOfUs Date: Mon, 4 Dec 2023 17:32:57 +0100 Subject: [PATCH] day4 --- res/04/example | 6 ++ res/04/input | 213 ++++++++++++++++++++++++++++++++++++++++++++++++ src/days/d04.rs | 52 ++++++++++++ src/main.rs | 2 +- 4 files changed, 272 insertions(+), 1 deletion(-) create mode 100644 res/04/example create mode 100644 res/04/input create mode 100644 src/days/d04.rs diff --git a/res/04/example b/res/04/example new file mode 100644 index 0000000..71f208a --- /dev/null +++ b/res/04/example @@ -0,0 +1,6 @@ +Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11 \ No newline at end of file diff --git a/res/04/input b/res/04/input new file mode 100644 index 0000000..2fe465b --- /dev/null +++ b/res/04/input @@ -0,0 +1,213 @@ +Card 1: 71 88 83 5 15 54 89 55 69 79 | 83 39 58 32 99 54 91 19 44 5 57 29 88 9 95 15 79 71 90 69 43 66 55 12 89 +Card 2: 33 11 66 48 67 95 78 71 98 65 | 66 2 1 59 77 95 61 71 8 38 18 62 10 65 53 17 75 92 64 50 67 21 51 78 98 +Card 3: 28 58 71 40 25 13 7 19 61 72 | 47 89 96 3 84 77 81 76 93 20 34 7 25 91 71 22 36 9 40 98 60 67 35 54 49 +Card 4: 58 26 74 94 42 29 9 90 76 54 | 74 90 41 32 19 80 27 97 9 2 57 45 29 42 76 37 83 58 25 46 94 86 63 24 12 +Card 5: 70 65 54 14 32 29 39 98 9 51 | 61 14 43 9 45 94 40 69 62 29 54 50 15 92 30 4 49 31 55 98 28 1 70 39 20 +Card 6: 2 88 60 55 45 19 59 95 79 4 | 61 65 19 88 34 74 93 4 70 28 60 18 75 55 2 49 3 67 86 57 91 59 95 79 45 +Card 7: 16 87 54 73 30 43 95 74 50 9 | 9 79 13 71 11 87 82 78 50 12 1 18 24 54 73 42 85 3 7 31 40 30 43 83 92 +Card 8: 48 72 63 92 40 70 53 84 37 31 | 72 40 37 60 82 70 7 88 65 6 92 83 56 48 46 33 31 53 14 34 26 63 61 84 91 +Card 9: 28 94 84 98 23 81 95 37 66 31 | 25 16 46 35 79 87 93 49 1 66 43 84 60 94 20 82 57 90 73 42 83 54 27 63 44 +Card 10: 69 76 8 54 49 77 95 26 86 67 | 98 75 82 94 39 90 32 49 37 57 64 24 11 60 59 33 88 52 35 30 10 83 25 20 29 +Card 11: 34 35 98 12 47 28 21 27 83 90 | 59 80 84 73 64 13 7 76 10 92 38 97 71 89 69 67 32 37 70 56 15 87 45 5 6 +Card 12: 24 36 10 93 97 39 35 13 45 7 | 23 74 62 18 63 98 44 17 46 88 83 40 68 48 55 33 86 91 20 27 89 49 11 50 99 +Card 13: 49 78 43 7 52 89 50 66 11 99 | 28 62 16 87 69 97 7 65 66 8 31 89 49 86 23 78 51 11 52 43 42 73 76 50 32 +Card 14: 16 86 45 72 79 99 96 66 1 65 | 33 16 21 86 1 68 56 95 96 74 60 99 45 79 29 49 7 66 27 72 78 81 53 65 38 +Card 15: 69 94 51 93 36 78 52 71 9 46 | 90 88 99 29 97 51 20 14 45 53 31 50 17 40 44 24 54 28 25 96 83 15 92 34 62 +Card 16: 12 35 59 86 76 16 13 95 80 52 | 62 26 70 77 21 35 87 12 58 52 55 63 7 94 6 13 93 44 15 22 47 76 95 59 11 +Card 17: 49 43 92 26 74 54 3 71 12 94 | 27 81 79 42 65 7 40 67 76 86 38 83 85 99 88 84 21 5 35 20 69 80 96 62 44 +Card 18: 54 68 44 79 86 27 77 71 89 73 | 33 89 70 74 38 41 52 18 43 10 88 5 21 1 4 93 28 2 25 87 97 81 64 36 62 +Card 19: 90 89 36 94 75 25 62 99 78 88 | 20 34 31 83 92 23 56 2 43 64 30 61 36 12 89 62 41 98 55 65 24 47 81 38 99 +Card 20: 41 96 39 25 18 66 88 26 90 82 | 90 35 12 6 29 73 4 76 59 26 91 34 74 36 88 55 39 70 21 94 9 62 47 1 60 +Card 21: 57 46 97 63 91 67 74 43 12 79 | 70 57 36 26 64 79 93 60 92 27 88 48 41 51 75 83 46 25 10 82 85 14 61 59 80 +Card 22: 35 53 32 89 2 88 58 43 80 5 | 58 87 41 6 47 3 57 60 85 12 46 86 94 44 83 15 78 59 73 95 62 82 25 11 30 +Card 23: 46 34 61 86 15 4 48 91 42 59 | 25 71 45 58 49 84 26 2 67 92 32 53 31 64 73 59 1 14 41 70 62 9 39 98 85 +Card 24: 40 48 39 46 44 87 57 78 2 35 | 9 37 61 3 95 34 22 15 73 89 71 80 13 53 43 60 20 82 30 75 62 97 7 28 14 +Card 25: 83 22 51 35 59 65 45 41 46 78 | 59 21 80 33 29 41 35 51 2 10 83 99 9 12 45 24 22 78 97 84 70 46 86 16 65 +Card 26: 66 73 14 61 92 63 13 68 90 94 | 95 91 67 69 46 48 74 7 92 68 13 73 10 63 66 97 94 65 84 14 71 90 61 59 72 +Card 27: 25 49 37 59 51 78 54 68 70 2 | 23 59 37 68 70 54 79 14 40 94 2 49 12 26 35 78 25 71 7 51 8 32 17 72 81 +Card 28: 58 30 69 17 18 70 5 29 84 57 | 5 81 35 21 69 95 57 83 93 68 84 29 18 82 55 86 70 7 58 28 17 30 59 38 72 +Card 29: 5 88 2 71 68 39 83 45 36 63 | 35 49 97 13 51 32 31 68 21 2 28 58 26 12 99 94 29 55 74 44 63 66 22 46 30 +Card 30: 56 1 19 30 42 17 50 37 5 53 | 38 65 36 56 75 1 5 50 63 81 90 64 88 33 17 53 30 93 52 19 67 95 37 28 42 +Card 31: 97 36 49 23 98 83 64 77 73 76 | 71 64 92 20 61 12 69 9 83 99 98 18 23 76 86 73 68 10 41 97 36 57 77 49 63 +Card 32: 76 79 96 17 57 80 89 9 78 88 | 48 34 31 49 8 58 25 44 65 43 23 66 91 72 47 74 50 18 28 84 98 59 15 94 30 +Card 33: 3 91 62 38 44 42 81 66 17 12 | 62 80 12 39 77 52 19 71 17 26 35 91 34 25 5 11 98 1 24 9 94 49 66 93 58 +Card 34: 97 42 39 51 28 49 3 77 8 29 | 13 35 98 50 14 76 69 93 56 62 68 80 24 71 90 92 31 5 66 73 74 48 95 87 82 +Card 35: 67 27 89 21 77 31 85 71 26 38 | 7 18 27 31 16 52 78 38 71 65 67 80 85 77 79 95 24 84 59 97 69 36 32 75 68 +Card 36: 2 38 40 26 15 45 98 55 81 39 | 25 77 56 26 63 55 19 45 10 64 90 37 40 3 33 78 69 36 2 14 91 15 61 1 98 +Card 37: 55 58 59 90 52 75 77 65 8 71 | 4 9 69 80 18 38 52 89 76 57 75 64 51 42 95 5 63 39 10 28 47 33 1 36 65 +Card 38: 71 89 56 6 65 72 55 40 66 37 | 85 29 70 12 51 74 87 92 97 19 26 6 83 40 80 3 38 62 11 36 52 93 94 47 69 +Card 39: 26 59 87 70 48 79 43 18 64 10 | 95 9 66 36 98 54 97 96 3 59 79 48 34 56 42 37 18 1 15 6 57 26 84 61 94 +Card 40: 75 98 95 99 9 73 43 3 8 47 | 52 91 16 60 51 1 48 4 59 15 20 95 62 34 87 50 28 55 64 70 65 56 22 37 97 +Card 41: 79 1 71 12 14 3 40 46 43 94 | 75 7 88 50 26 76 58 30 21 97 5 57 22 74 92 29 17 82 41 33 73 83 4 60 86 +Card 42: 5 97 79 75 39 69 62 76 17 89 | 92 11 66 82 99 30 75 88 59 73 29 7 26 85 20 54 57 49 32 87 9 25 78 12 96 +Card 43: 32 95 76 39 10 84 65 29 44 52 | 18 83 64 95 56 66 53 70 93 51 62 2 78 1 52 28 67 61 30 13 38 23 86 19 12 +Card 44: 56 44 27 72 90 50 88 20 94 2 | 23 99 5 74 64 39 41 14 15 1 76 10 3 9 80 91 40 84 60 13 45 32 96 34 85 +Card 45: 13 99 96 30 49 6 17 68 55 80 | 87 12 70 97 78 9 83 71 46 33 44 94 41 22 72 74 76 59 85 20 15 25 66 8 58 +Card 46: 23 70 40 78 5 74 4 64 79 29 | 33 73 75 1 4 13 53 65 45 58 78 82 42 30 83 66 74 29 72 49 23 64 50 36 71 +Card 47: 5 42 30 34 10 12 11 84 28 73 | 18 10 23 84 58 31 25 5 38 28 93 34 9 11 88 42 12 87 40 30 86 73 33 62 57 +Card 48: 68 73 41 50 13 32 45 86 27 24 | 90 41 50 5 45 4 13 77 39 24 17 49 33 99 18 91 32 86 27 23 73 52 80 68 53 +Card 49: 1 47 76 75 90 28 68 53 93 73 | 38 83 8 20 41 75 64 6 44 93 7 69 80 96 39 30 50 71 27 88 1 47 56 61 58 +Card 50: 54 12 73 88 51 81 35 2 39 9 | 45 4 84 2 33 11 46 79 38 78 88 63 59 39 94 54 55 64 73 41 66 30 51 14 35 +Card 51: 49 76 79 24 44 27 40 57 56 11 | 46 71 51 70 82 93 60 75 1 98 45 24 89 48 22 94 35 23 38 47 50 36 83 90 26 +Card 52: 3 35 89 18 36 91 52 98 24 54 | 43 50 25 41 14 13 17 55 81 95 40 59 99 44 11 57 60 65 4 92 20 42 97 21 1 +Card 53: 35 50 38 97 51 99 48 22 31 59 | 97 55 49 74 33 12 64 23 52 31 18 9 89 43 45 96 13 32 92 99 86 26 59 91 46 +Card 54: 27 84 72 69 67 60 74 48 81 18 | 3 63 19 85 65 15 1 83 81 98 22 73 40 12 39 11 79 50 28 61 86 89 31 6 93 +Card 55: 50 35 94 27 87 46 75 92 65 25 | 61 43 89 30 31 72 37 63 85 80 4 26 15 71 22 53 36 67 79 48 62 47 19 84 13 +Card 56: 39 42 44 41 10 35 31 46 51 61 | 94 99 96 41 45 61 8 25 85 48 31 67 3 80 75 42 7 52 78 39 46 37 59 82 29 +Card 57: 82 54 26 93 62 9 38 8 39 99 | 97 22 29 45 86 37 5 59 99 75 30 55 6 12 58 19 61 74 85 23 17 53 48 26 24 +Card 58: 39 77 12 21 85 27 50 36 88 93 | 31 12 34 92 97 89 15 96 46 78 75 85 74 41 2 18 49 76 94 57 50 60 95 77 83 +Card 59: 83 30 32 59 41 96 94 75 46 93 | 73 5 8 88 14 69 94 49 61 68 91 9 41 44 50 53 66 48 93 96 65 43 47 59 82 +Card 60: 76 74 70 63 43 21 56 23 24 35 | 91 55 98 28 31 57 97 15 35 93 53 61 99 18 26 94 24 95 34 64 33 49 74 82 20 +Card 61: 76 6 88 96 87 99 85 45 79 9 | 51 72 87 45 47 11 5 55 60 52 29 19 9 82 33 26 94 85 77 32 22 49 75 76 70 +Card 62: 95 19 6 47 33 54 25 36 64 78 | 54 32 14 70 69 44 8 99 56 82 66 83 86 17 65 31 1 47 60 9 10 62 42 48 88 +Card 63: 33 69 15 41 68 76 97 88 94 55 | 98 2 33 64 63 17 67 32 70 24 31 62 56 21 38 12 95 14 52 20 84 13 8 79 1 +Card 64: 55 7 30 90 72 77 14 50 1 78 | 68 39 19 34 42 10 80 4 25 63 22 47 54 70 8 97 37 44 98 83 99 32 15 31 21 +Card 65: 36 56 93 64 83 86 7 96 99 79 | 5 94 73 95 47 91 14 39 82 36 68 13 19 11 25 38 1 57 40 16 77 53 59 21 18 +Card 66: 55 69 60 50 99 11 57 81 52 96 | 23 82 3 27 18 94 6 8 87 36 26 65 72 98 89 76 75 61 15 13 37 38 46 29 88 +Card 67: 63 19 25 60 87 39 66 70 26 9 | 66 36 30 26 87 25 63 7 46 34 71 9 98 89 69 19 52 8 64 97 78 60 24 45 79 +Card 68: 51 66 43 14 67 2 88 15 80 74 | 5 90 60 14 74 44 10 82 88 80 99 68 43 98 67 15 97 42 66 49 16 51 94 37 2 +Card 69: 43 2 90 92 37 91 35 8 9 88 | 90 75 58 37 9 88 69 8 18 43 32 86 99 2 28 97 6 91 35 3 73 33 85 53 98 +Card 70: 2 6 87 30 45 41 86 34 78 84 | 78 73 21 45 38 77 6 86 30 71 84 79 61 41 70 87 2 34 93 8 64 53 69 12 99 +Card 71: 3 67 92 7 35 48 12 20 54 57 | 65 71 57 23 91 7 49 3 92 95 53 67 12 89 29 54 72 20 48 84 15 51 46 35 39 +Card 72: 68 47 43 65 61 46 62 27 67 92 | 27 51 28 92 1 46 43 68 67 82 93 2 15 38 61 16 70 42 6 47 49 65 62 89 94 +Card 73: 84 29 19 79 98 73 76 43 55 52 | 77 4 68 23 84 11 32 62 7 95 40 13 90 98 55 14 81 8 1 54 57 9 86 46 99 +Card 74: 91 48 72 22 34 4 90 84 66 9 | 72 91 34 93 94 6 38 41 48 87 17 53 92 1 9 84 4 45 27 35 39 42 90 66 22 +Card 75: 42 2 70 8 68 61 51 78 72 94 | 72 78 63 68 1 85 27 96 51 31 74 39 57 18 41 14 97 86 95 71 59 69 90 15 20 +Card 76: 93 19 51 32 72 34 99 16 11 71 | 90 75 22 17 27 11 4 55 7 16 29 30 19 61 78 72 42 95 2 67 10 34 69 93 39 +Card 77: 82 62 19 13 42 80 51 20 60 29 | 62 17 20 29 15 49 63 5 80 42 85 40 48 51 82 6 60 88 77 19 99 13 18 65 35 +Card 78: 86 8 32 7 6 79 60 64 98 85 | 3 14 1 75 20 79 24 50 32 53 43 90 44 60 29 33 52 64 70 45 56 97 41 23 48 +Card 79: 47 33 77 60 48 43 89 37 17 50 | 22 10 62 78 56 72 67 92 28 95 21 9 44 11 30 3 58 46 36 59 42 81 76 82 49 +Card 80: 30 41 23 99 79 74 80 54 95 7 | 20 69 53 7 43 57 19 63 54 91 23 37 2 41 70 18 98 99 58 9 79 26 93 8 80 +Card 81: 22 21 90 33 30 34 47 4 31 18 | 93 87 3 43 63 59 14 64 9 97 48 35 60 84 92 67 25 71 89 55 13 1 27 74 44 +Card 82: 37 34 4 56 14 45 50 18 75 67 | 93 73 25 26 9 23 8 67 70 28 96 41 38 24 86 12 71 6 88 84 92 58 94 18 14 +Card 83: 89 49 62 13 99 56 74 37 94 95 | 14 85 17 42 36 73 51 9 82 77 98 93 45 88 39 69 43 15 71 32 94 46 6 5 63 +Card 84: 10 95 35 43 15 80 11 9 34 8 | 19 70 55 25 3 57 81 30 75 17 68 63 67 2 33 87 27 58 53 39 74 36 14 51 32 +Card 85: 6 98 38 32 88 12 70 93 55 19 | 16 9 53 91 90 14 85 25 69 70 52 24 17 58 23 81 4 47 13 82 74 18 6 15 21 +Card 86: 76 56 70 72 48 40 23 26 85 90 | 30 98 97 53 62 18 76 4 81 65 21 93 77 8 16 66 61 72 94 26 96 14 71 58 27 +Card 87: 84 21 79 35 23 1 22 65 6 38 | 91 55 1 13 16 40 56 28 27 11 12 81 19 99 7 80 25 46 74 36 9 49 97 29 59 +Card 88: 9 6 26 37 96 59 36 40 11 66 | 41 94 58 43 74 49 98 16 90 57 54 70 7 60 14 69 97 79 33 52 35 48 27 61 37 +Card 89: 69 80 19 92 1 9 60 25 43 59 | 23 49 37 42 38 99 16 51 34 6 27 32 78 93 84 2 56 70 71 98 15 7 76 39 4 +Card 90: 70 79 23 8 24 69 81 2 20 43 | 80 79 1 70 62 14 13 63 54 16 12 33 21 75 22 83 74 65 23 2 81 56 69 72 24 +Card 91: 81 10 96 62 43 4 85 9 57 14 | 8 26 17 81 34 4 10 61 71 96 43 9 85 79 1 62 51 60 73 50 23 99 14 57 55 +Card 92: 90 41 54 40 28 63 53 72 59 24 | 63 72 82 90 51 16 91 71 70 15 40 21 37 41 34 68 97 28 86 14 89 65 66 39 55 +Card 93: 62 50 55 59 44 47 24 13 41 99 | 27 79 29 66 96 25 44 99 13 51 81 50 54 59 41 45 86 80 11 55 14 47 62 28 84 +Card 94: 16 58 2 88 37 73 89 32 94 52 | 53 7 92 2 46 61 62 47 9 3 71 58 17 75 51 94 65 60 67 64 54 88 56 28 89 +Card 95: 70 67 87 52 47 89 17 57 8 37 | 73 51 70 50 54 25 67 33 57 64 23 52 99 37 47 8 58 89 17 39 97 28 87 53 10 +Card 96: 26 1 34 71 49 80 79 86 9 43 | 14 86 40 36 57 15 30 52 12 10 4 76 80 39 79 18 9 60 51 29 19 83 33 63 85 +Card 97: 54 52 95 32 19 96 15 46 35 90 | 45 54 30 39 4 75 23 78 33 36 65 86 58 89 77 72 29 96 73 11 52 43 61 27 19 +Card 98: 93 59 51 89 8 55 53 85 31 70 | 66 18 51 32 82 59 44 31 12 38 21 53 55 98 50 16 4 93 33 8 70 29 45 11 89 +Card 99: 41 62 14 52 85 50 10 56 71 65 | 56 55 7 35 40 67 94 68 45 88 71 19 23 14 65 89 62 2 91 58 33 10 15 70 37 +Card 100: 13 11 28 12 63 50 10 49 83 98 | 3 81 63 26 77 98 4 19 22 32 67 46 38 41 71 78 59 6 39 68 82 79 40 37 11 +Card 101: 20 39 57 59 96 32 74 1 84 29 | 38 6 31 18 29 34 63 68 45 83 42 78 20 11 96 88 40 91 66 61 43 58 55 76 3 +Card 102: 96 77 67 50 37 11 39 99 65 57 | 43 69 79 87 45 82 66 15 39 56 46 34 28 17 74 93 76 40 78 77 20 30 89 71 16 +Card 103: 71 64 5 68 26 41 94 49 69 66 | 7 42 38 25 10 37 23 35 32 76 15 29 81 96 91 9 36 50 51 86 88 79 22 59 54 +Card 104: 89 47 29 42 48 76 39 21 12 68 | 22 88 75 20 41 73 48 10 95 38 91 40 62 78 80 65 7 31 1 87 96 46 4 25 94 +Card 105: 40 12 18 26 85 79 76 19 15 62 | 81 78 24 61 71 5 32 25 22 21 4 82 88 66 95 40 1 83 16 93 23 43 65 51 84 +Card 106: 82 94 35 70 16 97 54 2 93 57 | 15 16 43 83 45 60 22 18 40 87 4 53 68 92 96 71 84 63 52 64 1 56 93 67 62 +Card 107: 60 27 80 91 23 82 90 35 66 19 | 51 4 78 40 39 11 13 71 41 86 97 42 56 16 46 62 79 22 2 48 20 88 15 36 26 +Card 108: 18 75 48 24 87 74 73 46 32 37 | 40 39 27 15 97 42 6 66 49 3 60 82 68 13 73 46 33 28 58 95 16 79 31 67 80 +Card 109: 39 84 48 75 1 46 55 95 43 67 | 13 56 34 99 27 54 35 60 2 23 18 49 50 74 83 8 15 71 3 64 68 66 52 86 70 +Card 110: 60 28 49 54 36 33 50 68 1 26 | 69 3 78 35 34 24 92 13 67 15 10 97 37 79 62 52 6 18 93 77 25 2 19 46 85 +Card 111: 40 44 75 55 48 16 64 97 28 10 | 76 50 26 72 18 41 67 96 82 30 49 1 66 29 95 77 45 33 69 6 88 21 62 91 31 +Card 112: 13 6 4 57 32 56 8 86 44 59 | 55 58 57 64 84 71 61 46 8 6 38 94 24 41 74 48 34 98 19 56 16 13 86 23 83 +Card 113: 49 87 71 19 10 47 72 41 13 84 | 10 87 52 33 72 76 41 81 67 78 49 86 36 31 63 84 7 55 47 9 38 22 59 79 13 +Card 114: 62 5 87 64 45 74 98 40 69 60 | 10 98 67 5 6 32 27 18 54 77 9 21 82 87 88 35 64 31 68 93 17 44 43 66 99 +Card 115: 90 77 96 67 56 71 12 24 39 2 | 3 32 57 69 65 56 15 58 47 44 46 91 87 55 21 29 75 95 36 52 73 12 81 1 24 +Card 116: 28 56 74 20 7 27 37 22 41 69 | 54 77 41 22 5 81 69 82 61 92 3 2 7 28 56 90 50 20 37 47 4 27 74 49 53 +Card 117: 88 27 73 60 99 82 14 69 6 48 | 52 92 23 46 13 24 95 98 86 17 94 78 58 41 87 29 77 74 26 97 21 67 8 71 2 +Card 118: 49 20 27 58 22 56 5 43 72 14 | 58 73 82 33 62 48 64 14 99 68 5 79 74 49 21 26 20 95 96 4 56 66 53 30 22 +Card 119: 15 98 49 95 36 48 34 88 99 65 | 53 73 69 48 37 15 50 49 28 4 22 52 98 65 85 90 32 34 25 63 40 42 88 17 99 +Card 120: 4 1 22 40 27 55 12 20 29 78 | 27 5 64 39 33 34 44 87 77 79 21 84 50 78 85 62 18 94 19 91 54 24 52 22 81 +Card 121: 63 13 19 41 27 62 18 10 97 82 | 13 41 86 31 78 42 71 12 29 64 54 34 55 66 59 15 90 63 97 11 10 28 68 48 60 +Card 122: 93 54 83 34 87 84 72 55 24 11 | 25 83 44 60 16 80 73 39 87 76 15 79 77 38 54 72 24 30 78 11 34 64 7 8 61 +Card 123: 9 89 77 35 86 55 22 46 32 27 | 44 53 49 34 28 93 72 37 32 62 43 51 57 50 70 80 19 11 23 12 92 45 56 89 13 +Card 124: 15 79 46 18 87 40 78 9 61 51 | 18 24 15 38 12 44 94 19 3 92 50 4 9 31 56 46 99 1 97 30 61 40 72 98 82 +Card 125: 39 52 23 10 84 7 69 97 59 31 | 36 65 61 27 3 48 90 71 70 51 96 56 21 83 73 53 64 9 74 16 49 79 87 86 77 +Card 126: 20 89 33 16 75 63 19 24 95 69 | 39 80 82 23 66 38 96 92 32 58 90 35 50 26 60 25 10 64 99 83 37 34 49 45 7 +Card 127: 15 8 51 74 38 47 87 17 41 16 | 44 33 42 3 49 66 80 85 75 79 32 83 5 16 45 25 95 17 90 74 86 52 64 1 24 +Card 128: 65 40 98 1 9 91 67 83 7 12 | 23 21 76 37 80 77 85 2 56 53 41 84 11 69 24 89 30 50 44 72 55 82 29 26 33 +Card 129: 21 75 32 9 73 29 10 58 22 19 | 70 14 76 45 27 74 4 79 93 13 39 56 31 33 97 83 42 84 62 51 50 96 30 26 58 +Card 130: 59 98 97 34 10 30 73 1 92 25 | 86 47 68 62 79 76 81 29 12 91 17 15 74 45 7 70 85 24 28 84 90 38 36 4 80 +Card 131: 39 73 50 54 94 89 14 46 6 72 | 88 27 36 34 72 54 73 17 82 6 89 85 74 69 50 93 14 94 39 44 75 80 46 42 38 +Card 132: 29 88 9 33 73 2 43 14 36 28 | 10 77 88 13 2 9 90 6 25 48 38 69 97 46 40 58 28 45 36 65 14 63 98 43 60 +Card 133: 8 64 69 68 60 87 29 51 39 10 | 9 29 14 53 68 99 92 2 79 51 95 16 71 94 33 39 66 69 7 40 20 87 65 70 35 +Card 134: 69 12 15 98 94 20 66 22 8 40 | 15 94 17 78 18 88 73 70 1 55 24 8 43 41 23 82 58 90 48 52 98 99 6 40 62 +Card 135: 20 93 99 39 91 14 28 11 52 32 | 13 59 41 87 56 60 78 49 79 73 28 20 61 85 89 67 93 45 31 71 17 97 39 95 98 +Card 136: 23 99 24 72 7 38 31 17 50 40 | 51 96 86 43 53 19 16 42 67 1 20 45 61 88 30 48 71 54 29 25 38 6 65 73 18 +Card 137: 51 16 2 63 32 52 18 75 30 33 | 6 15 46 3 32 71 12 1 56 49 68 44 77 35 17 87 55 95 9 34 74 80 69 89 38 +Card 138: 80 25 93 18 43 34 60 77 70 36 | 48 93 34 18 25 13 42 52 3 35 44 55 87 17 1 66 85 70 16 53 73 10 77 80 82 +Card 139: 16 77 76 42 52 27 32 23 51 83 | 46 81 6 18 31 61 9 83 25 55 72 65 63 49 79 3 91 76 77 23 1 73 85 16 35 +Card 140: 57 51 65 74 54 46 41 17 15 89 | 52 92 5 21 99 27 98 77 30 65 47 43 18 11 90 31 33 58 8 17 45 57 2 82 9 +Card 141: 29 70 64 91 88 44 86 48 25 74 | 85 94 26 78 75 64 21 16 38 92 74 19 89 52 81 90 97 17 29 91 9 10 60 30 54 +Card 142: 99 21 93 71 1 74 84 89 98 37 | 34 96 2 64 4 51 61 1 87 60 73 31 7 28 21 99 38 69 80 78 12 81 94 76 33 +Card 143: 20 67 93 61 97 51 28 40 60 14 | 50 39 1 6 31 13 55 10 98 46 95 75 38 14 20 25 28 91 7 56 8 53 99 72 51 +Card 144: 8 1 26 79 47 45 5 20 90 43 | 74 75 62 47 30 45 50 14 70 32 7 39 34 5 68 61 90 79 83 1 93 2 72 22 87 +Card 145: 83 51 89 3 58 33 86 60 63 47 | 29 80 93 43 58 77 49 6 73 69 42 22 33 90 98 39 55 16 18 37 13 68 10 92 2 +Card 146: 12 84 88 41 51 5 90 42 4 65 | 66 96 25 19 43 31 42 39 22 59 1 52 89 8 15 7 40 77 73 51 3 33 58 29 56 +Card 147: 89 41 51 59 93 6 31 87 95 28 | 93 72 24 58 16 89 27 87 70 92 28 21 66 59 53 1 55 4 44 86 94 19 20 40 9 +Card 148: 53 77 60 71 70 61 56 85 39 14 | 2 68 3 6 22 35 86 34 78 43 29 54 49 90 27 89 74 69 75 73 41 25 99 36 98 +Card 149: 56 20 14 24 89 72 17 32 12 98 | 36 32 16 80 92 22 4 21 93 69 85 51 83 27 44 88 28 40 98 38 65 71 45 26 76 +Card 150: 30 37 4 74 89 46 69 6 13 80 | 56 87 82 95 38 63 27 23 28 96 5 57 75 53 58 39 79 86 41 43 55 31 72 45 48 +Card 151: 52 45 23 28 1 16 93 6 31 15 | 13 72 3 22 69 27 77 80 47 63 62 89 12 79 6 4 16 67 48 40 44 41 95 91 9 +Card 152: 63 39 31 58 74 53 95 5 18 68 | 72 49 50 16 15 61 96 1 80 89 88 90 41 40 53 56 84 29 25 46 13 75 34 24 57 +Card 153: 61 11 85 76 93 73 96 20 28 83 | 8 21 89 88 74 16 71 25 4 59 32 36 84 13 51 7 95 90 6 38 30 94 22 70 31 +Card 154: 30 61 20 8 9 35 33 5 55 88 | 42 53 85 74 1 63 97 57 98 18 6 99 58 29 89 90 70 11 50 23 37 21 64 49 3 +Card 155: 94 24 89 18 32 27 97 77 98 51 | 51 98 62 44 88 54 91 50 18 7 72 74 94 28 24 27 32 2 97 58 22 77 89 53 30 +Card 156: 81 70 87 64 4 29 13 93 97 32 | 83 62 26 67 48 63 30 35 97 66 86 70 15 56 43 78 96 24 60 59 47 41 13 19 84 +Card 157: 8 29 90 52 64 33 18 49 7 79 | 3 11 79 34 91 84 45 2 5 29 55 8 85 1 49 6 7 18 64 12 92 33 25 38 52 +Card 158: 36 46 15 48 51 38 14 66 50 54 | 44 14 51 24 66 98 78 69 19 68 26 43 41 13 36 46 62 6 29 54 7 92 63 38 15 +Card 159: 29 27 85 90 61 62 16 10 33 72 | 10 37 90 71 94 4 46 32 64 62 21 48 49 83 9 98 14 15 52 77 86 3 72 53 17 +Card 160: 3 1 36 92 62 53 87 83 67 46 | 80 75 63 25 7 28 35 67 65 53 29 93 9 52 33 95 27 18 10 87 98 56 42 37 16 +Card 161: 19 12 30 25 2 94 48 43 41 32 | 32 42 34 14 82 47 80 70 69 74 29 58 43 27 30 10 86 51 2 46 84 33 85 98 53 +Card 162: 71 77 23 55 79 61 99 97 27 26 | 37 26 86 84 52 54 97 62 83 3 91 60 55 69 61 20 12 98 70 39 35 59 21 99 85 +Card 163: 88 59 91 51 33 71 87 15 50 93 | 35 65 58 66 80 79 51 62 71 38 43 11 31 72 33 41 37 61 12 88 87 30 99 59 50 +Card 164: 33 10 66 40 85 78 63 31 81 42 | 23 90 63 46 42 66 57 20 95 52 99 82 2 85 68 43 89 35 33 12 81 51 17 22 70 +Card 165: 97 17 74 94 53 49 99 24 95 25 | 65 38 99 28 19 18 27 4 10 33 58 82 86 17 8 76 66 54 88 84 29 91 43 2 97 +Card 166: 46 65 72 77 30 29 21 5 97 38 | 75 76 48 19 89 83 98 97 8 87 2 93 26 74 35 53 80 73 82 91 71 39 60 70 61 +Card 167: 51 84 70 21 83 43 54 39 86 81 | 62 33 56 31 3 66 96 20 48 75 11 76 43 67 37 15 53 27 95 34 89 41 78 73 1 +Card 168: 29 69 32 52 53 43 36 27 12 82 | 81 9 71 34 10 92 97 57 36 68 54 88 77 73 87 65 93 27 40 85 67 26 82 49 61 +Card 169: 77 96 30 17 68 33 92 12 65 87 | 77 93 6 39 63 26 99 88 66 15 65 55 69 73 46 32 64 10 70 40 27 25 42 95 21 +Card 170: 69 31 8 74 60 12 64 52 56 85 | 4 93 87 46 9 17 91 28 96 66 67 53 70 71 63 37 3 1 58 7 22 40 44 50 35 +Card 171: 72 74 97 56 3 10 90 89 14 92 | 82 21 15 40 44 23 12 64 73 19 2 33 31 78 8 83 24 18 98 42 66 50 49 51 5 +Card 172: 11 71 73 53 84 25 29 34 3 61 | 74 61 9 75 62 29 15 25 87 34 11 71 91 3 19 73 59 93 13 22 66 53 57 43 84 +Card 173: 53 98 87 91 22 71 65 84 81 83 | 56 98 67 72 54 53 41 20 55 81 65 71 38 11 22 25 83 31 84 94 91 1 87 77 28 +Card 174: 82 41 3 52 36 89 43 99 63 59 | 54 92 43 59 96 38 79 78 56 15 65 52 3 99 41 82 83 80 74 40 89 63 87 61 36 +Card 175: 76 8 53 21 52 54 12 55 85 91 | 4 26 90 72 21 6 61 94 37 66 3 12 76 70 65 24 29 45 41 74 10 33 2 75 62 +Card 176: 76 85 52 44 23 16 53 83 65 63 | 33 76 16 92 54 65 63 83 53 44 55 15 45 91 88 22 23 52 84 87 71 85 4 11 97 +Card 177: 49 47 24 12 44 22 30 52 92 88 | 17 97 55 88 18 30 6 12 46 96 92 22 8 47 80 44 52 61 49 69 64 33 24 70 21 +Card 178: 3 30 99 94 86 98 5 57 43 49 | 48 99 91 57 41 5 68 44 66 1 39 52 95 94 3 26 27 49 73 30 86 80 40 81 98 +Card 179: 47 14 58 96 9 70 76 23 6 80 | 9 10 70 14 72 82 47 96 61 62 49 58 35 6 3 30 89 39 71 45 74 84 80 76 23 +Card 180: 87 21 20 73 17 46 58 18 14 75 | 75 88 84 67 11 41 44 81 16 21 87 78 96 17 93 46 37 73 99 18 20 14 5 77 58 +Card 181: 58 95 49 35 39 86 97 1 75 38 | 1 9 86 38 97 77 51 19 44 71 4 91 42 75 39 49 35 21 17 58 30 95 92 60 68 +Card 182: 84 52 77 87 29 93 15 33 16 97 | 87 11 57 79 34 58 6 33 69 17 39 40 22 31 83 27 16 15 5 73 52 55 3 48 32 +Card 183: 43 1 98 22 49 7 27 81 66 48 | 26 47 43 79 3 9 91 40 39 98 1 69 49 80 93 8 64 55 61 37 66 7 54 6 81 +Card 184: 97 14 31 56 53 46 84 26 11 83 | 83 19 41 46 31 84 48 25 11 67 12 1 95 94 29 88 56 97 87 96 50 7 53 26 77 +Card 185: 63 11 46 36 42 41 29 34 92 44 | 70 40 99 19 54 63 4 34 41 75 29 46 85 66 48 49 88 90 7 37 6 81 76 58 61 +Card 186: 97 80 49 66 83 58 47 87 89 32 | 85 65 80 53 75 57 46 33 34 96 7 48 24 45 87 99 12 89 69 60 91 47 83 49 97 +Card 187: 6 50 46 39 71 49 80 34 86 45 | 16 22 64 60 73 53 59 95 54 31 63 65 14 92 94 41 76 77 26 5 52 61 30 20 62 +Card 188: 49 60 66 37 29 38 48 76 59 46 | 48 21 3 95 76 70 83 86 30 52 46 37 40 78 67 49 45 50 60 58 55 65 54 4 59 +Card 189: 50 74 47 7 37 73 1 6 45 85 | 18 15 77 48 54 85 74 38 69 84 63 8 42 72 16 68 61 51 6 91 47 92 21 45 1 +Card 190: 45 30 42 67 53 95 35 13 19 46 | 39 12 92 22 25 90 61 70 52 31 15 10 73 88 68 56 26 93 42 94 46 53 59 72 45 +Card 191: 54 3 43 42 63 26 52 89 18 11 | 17 46 39 56 9 89 85 53 60 6 32 27 76 98 91 30 16 94 71 67 58 79 61 97 47 +Card 192: 50 89 39 56 84 10 7 38 30 16 | 22 74 37 16 32 27 20 82 98 84 54 59 64 18 73 41 49 96 52 31 50 69 80 39 76 +Card 193: 31 55 2 53 20 8 77 4 69 32 | 70 11 93 14 61 89 23 82 83 86 3 95 33 16 87 75 6 26 45 43 78 13 7 65 10 +Card 194: 4 25 98 37 14 57 48 51 32 49 | 1 76 22 36 90 98 69 66 75 5 51 7 11 34 77 82 50 33 19 15 27 35 40 68 62 +Card 195: 71 53 67 95 17 30 70 3 45 34 | 21 18 33 89 79 5 86 90 8 1 47 26 52 19 77 23 35 32 98 67 50 28 84 25 74 +Card 196: 92 31 21 61 43 30 59 60 69 97 | 94 51 64 36 16 22 13 48 20 65 52 90 34 2 42 79 19 5 91 26 29 54 78 87 47 +Card 197: 23 31 94 44 51 27 8 13 14 85 | 20 89 92 5 11 67 3 66 50 99 18 9 34 69 86 81 21 59 16 80 35 15 38 28 77 +Card 198: 32 86 91 57 48 52 69 22 59 56 | 9 28 29 83 80 4 57 32 38 47 91 52 56 19 86 48 6 59 93 22 69 36 96 74 25 +Card 199: 56 75 88 61 80 4 90 82 62 19 | 69 52 32 9 14 11 88 60 37 76 54 55 30 79 61 49 18 35 83 29 77 47 45 73 75 +Card 200: 4 81 76 51 59 48 2 7 78 20 | 22 78 31 7 46 17 76 41 51 6 88 82 81 95 26 52 2 20 42 4 16 5 72 59 91 +Card 201: 90 38 92 41 6 54 2 44 36 14 | 90 48 41 61 8 92 11 70 26 63 42 85 80 7 84 5 32 67 51 36 73 57 45 18 9 +Card 202: 49 48 4 87 99 12 55 27 65 3 | 41 24 57 49 12 66 27 76 38 15 19 9 79 60 81 7 84 33 51 32 71 6 54 85 94 +Card 203: 36 56 3 21 28 68 1 84 8 95 | 66 85 3 11 27 73 76 34 13 53 92 36 14 47 84 72 24 32 68 44 26 83 77 12 4 +Card 204: 70 63 32 11 64 17 7 88 89 78 | 56 63 74 48 36 89 40 11 28 41 66 32 78 91 2 57 59 64 60 4 96 12 9 88 52 +Card 205: 23 13 30 95 93 49 39 57 61 37 | 24 86 36 6 14 39 85 57 51 75 68 1 94 46 47 17 90 92 64 18 4 34 31 26 33 +Card 206: 58 31 3 94 61 15 98 10 72 97 | 38 37 40 96 91 46 86 18 6 14 36 75 78 4 62 55 53 28 60 81 17 23 43 99 64 +Card 207: 90 11 26 6 87 5 89 43 32 70 | 70 65 43 11 3 73 66 83 82 68 64 54 30 53 77 97 13 14 87 20 40 23 9 63 94 +Card 208: 18 73 43 67 86 16 62 52 23 17 | 80 19 31 85 50 88 9 22 23 58 35 71 95 94 91 16 49 3 93 56 66 13 24 60 11 +Card 209: 89 92 77 37 50 32 73 86 17 1 | 63 35 58 28 68 77 4 74 40 57 65 81 11 21 75 99 56 79 25 10 76 18 26 48 12 +Card 210: 95 51 91 92 29 43 24 76 8 71 | 76 90 7 9 38 87 56 36 33 12 27 3 54 30 59 58 64 82 23 98 97 65 93 43 35 +Card 211: 15 96 18 17 95 64 83 51 49 80 | 16 53 69 1 66 42 89 39 83 35 49 63 98 61 70 59 57 78 62 47 12 9 68 48 76 +Card 212: 89 63 7 28 91 90 97 44 4 42 | 74 66 82 95 23 2 93 88 17 75 39 33 21 31 11 59 96 57 14 51 26 56 9 72 91 +Card 213: 7 36 25 23 22 93 18 88 50 30 | 57 51 62 87 48 64 4 20 95 73 26 2 43 5 83 94 96 29 67 59 14 33 81 42 49 diff --git a/src/days/d04.rs b/src/days/d04.rs new file mode 100644 index 0000000..2b830d2 --- /dev/null +++ b/src/days/d04.rs @@ -0,0 +1,52 @@ +use std::collections::HashSet; +use std::{fs, io::BufReader, io::BufRead}; + +pub fn solve() { + let path = "res/04/input"; + + + //let contents = fs::read_to_string(path).expect("I/O error, wrong path?"); + let contents = BufReader::new(fs::File::open(path).expect("I/O error, wrong path?")); + + + + let cards = contents + .lines() + .map(|l| { + if let Ok(line) = l { + let words = line.split_whitespace().collect::>(); + let winning_nums = words[2..12].iter().map(|s| s.parse::().unwrap()).collect::>(); + + let own_nums = words[13..words.len()] + .iter() + .map(|s| s.parse::().unwrap()) + .filter(|u| winning_nums.contains(u)) + .count(); + return own_nums + } + 0 + }) + .collect::>(); + + let result: usize = cards + .iter() + .filter(|i| **i > 0) + .map(|i| 2usize.pow(*i as u32 - 1)) + .sum(); + + println!("Result 1: {}", result); + + let mut card_counts: Vec = vec![1; cards.len()]; + for i in 0..cards.len() { + for j in i+1..i+1+cards[i] { + if j >= cards.len() { + continue + } + card_counts[j] += card_counts[i] + } + } + + let result: usize = card_counts.iter().sum(); + + println!("Result 2: {}", result); +} diff --git a/src/main.rs b/src/main.rs index ed339f5..f89b3a4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ pub mod days; fn main() { - days::d03::solve() + days::d04::solve() //_all_days() }