summaryrefslogtreecommitdiffstats
path: root/2023/rs/code/four/src
diff options
context:
space:
mode:
Diffstat (limited to '2023/rs/code/four/src')
-rw-r--r--2023/rs/code/four/src/input.txt204
-rw-r--r--2023/rs/code/four/src/main.rs32
2 files changed, 236 insertions, 0 deletions
diff --git a/2023/rs/code/four/src/input.txt b/2023/rs/code/four/src/input.txt
new file mode 100644
index 0000000..737abb8
--- /dev/null
+++ b/2023/rs/code/four/src/input.txt
@@ -0,0 +1,204 @@
+Card 1: 43 19 57 13 44 22 29 20 34 33 | 34 68 13 38 32 57 20 64 42 7 44 54 16 51 33 85 43 24 86 93 83 29 25 19 22
+Card 2: 41 56 28 16 47 58 86 8 82 23 | 90 4 63 41 24 8 51 65 39 86 16 53 47 62 74 58 56 82 28 76 37 98 89 67 23
+Card 3: 10 48 83 6 54 51 52 5 22 80 | 36 51 66 86 68 73 93 52 5 65 48 71 85 10 40 22 80 6 20 83 95 54 21 76 92
+Card 4: 17 4 8 74 97 13 52 27 99 95 | 55 31 73 47 95 46 96 69 27 52 45 62 53 12 21 5 74 13 8 50 77 54 91 32 43
+Card 5: 46 50 28 25 44 73 3 14 17 20 | 33 14 44 71 73 59 19 80 40 20 5 6 72 85 47 62 30 50 83 51 24 28 3 77 39
+Card 6: 65 19 45 54 72 39 64 15 3 60 | 91 62 10 73 1 77 25 9 92 7 81 48 19 50 52 32 69 75 24 93 30 60 72 59 53
+Card 7: 41 65 93 76 74 61 59 90 89 87 | 39 61 99 12 71 59 15 10 72 87 41 89 76 88 38 95 90 65 53 80 19 74 93 11 28
+Card 8: 93 64 11 24 13 29 1 51 30 69 | 95 52 7 61 4 44 30 31 64 65 17 34 11 88 71 50 53 73 86 48 60 43 33 51 29
+Card 9: 52 82 95 38 80 53 84 21 93 49 | 41 16 63 88 92 46 23 81 42 3 5 35 8 49 6 22 70 32 38 14 40 61 78 51 10
+Card 10: 41 29 95 65 52 22 51 18 88 44 | 88 92 47 56 71 19 58 52 15 96 25 41 75 29 65 55 43 9 64 81 73 32 5 18 30
+Card 11: 76 66 65 38 41 82 9 81 11 51 | 4 55 70 38 58 17 5 67 26 81 91 48 28 45 83 68 64 66 25 51 95 47 63 71 54
+Card 12: 96 62 75 58 44 72 73 74 9 14 | 20 37 54 97 70 72 18 68 79 3 45 44 15 11 73 59 64 77 61 95 34 16 55 49 2
+Card 13: 79 82 49 23 78 67 45 43 18 11 | 30 28 53 80 13 50 27 70 69 90 18 35 62 98 60 14 38 4 73 15 33 44 77 51 84
+Card 14: 72 65 58 67 11 90 77 21 22 12 | 17 76 4 40 15 22 92 67 43 55 90 79 65 31 71 73 58 12 21 46 20 87 63 77 9
+Card 15: 80 54 73 48 42 70 69 21 23 97 | 31 6 27 93 90 91 16 65 24 25 46 84 37 87 40 58 29 3 64 32 15 62 47 18 94
+Card 16: 15 72 5 85 34 50 49 22 65 64 | 72 92 38 37 79 84 67 93 36 88 50 8 44 19 85 73 76 41 2 45 21 86 6 49 16
+Card 17: 7 70 36 21 60 80 50 31 23 59 | 6 18 1 92 40 22 30 69 38 14 56 81 25 11 77 62 44 4 85 5 82 45 37 24 64
+Card 18: 63 61 70 64 94 76 25 15 26 89 | 22 78 89 65 23 3 29 50 34 72 32 43 8 62 21 15 20 94 68 53 12 84 99 39 57
+Card 19: 34 56 99 80 89 90 47 57 84 39 | 82 6 93 38 61 32 30 46 55 94 85 53 18 1 16 33 11 98 37 5 65 48 12 17 41
+Card 20: 90 72 6 31 62 86 1 29 34 70 | 64 84 86 29 90 3 89 50 6 54 92 85 98 32 63 24 83 43 99 59 77 12 56 38 69
+Card 21: 65 22 72 35 30 38 3 10 98 95 | 63 65 21 71 94 58 25 16 66 51 20 75 28 11 15 24 87 56 83 31 67 1 97 64 52
+Card 22: 95 70 39 21 87 97 98 96 30 6 | 72 26 52 65 62 10 60 49 46 36 25 55 11 42 1 31 3 73 48 29 63 51 66 17 34
+Card 23: 72 74 91 77 42 31 15 61 80 85 | 59 62 43 19 17 16 49 83 95 35 76 67 99 46 48 44 84 98 97 13 51 55 79 29 65
+Card 24: 3 74 76 13 52 81 40 84 73 98 | 23 71 42 2 83 5 18 75 57 41 38 46 60 66 49 62 36 51 12 86 25 22 82 79 1
+Card 25: 39 25 66 16 13 27 48 78 52 23 | 43 48 98 13 88 66 55 18 71 91 11 94 75 96 89 16 4 23 51 50 62 95 63 44 81
+Card 26: 66 30 18 57 40 36 60 95 99 15 | 60 22 73 21 69 84 95 66 51 57 49 12 30 79 99 70 46 61 92 37 36 40 18 31 39
+Card 27: 54 11 56 55 83 78 47 57 50 19 | 45 70 77 49 12 41 69 78 91 20 51 67 3 6 22 62 27 60 4 63 59 75 43 95 31
+Card 28: 71 72 99 35 76 23 8 44 46 53 | 25 97 99 77 37 23 51 22 65 62 60 46 4 47 92 84 9 61 24 82 52 58 39 32 88
+Card 29: 69 33 37 74 19 38 81 82 62 66 | 42 3 67 30 52 90 47 46 34 4 1 71 98 50 54 94 58 15 28 83 91 59 22 78 86
+Card 30: 25 5 15 20 84 23 86 74 50 22 | 20 85 71 46 21 92 61 15 22 73 51 1 84 86 49 25 57 33 44 82 45 5 23 50 74
+Card 31: 26 60 71 4 51 57 81 61 99 64 | 13 70 71 77 9 68 76 99 97 55 94 4 98 34 27 54 61 11 26 31 57 81 39 51 60
+Card 32: 61 16 7 90 49 39 24 34 35 17 | 90 75 34 25 39 26 59 67 24 35 62 19 17 54 31 16 71 76 7 64 8 60 61 13 82
+Card 33: 91 74 62 52 86 6 46 60 16 88 | 27 4 32 1 74 52 69 19 62 16 91 26 86 22 55 59 6 60 83 65 18 72 93 53 41
+Card 34: 79 47 49 71 56 89 21 14 29 58 | 80 2 93 71 37 3 33 70 9 18 20 97 85 6 96 73 35 52 74 63 55 99 41 46 44
+Card 35: 13 30 58 94 50 44 38 99 40 9 | 5 75 79 40 84 20 9 2 67 95 24 30 96 62 50 45 28 99 71 26 52 74 54 44 66
+Card 36: 51 30 95 27 56 7 65 94 32 86 | 33 90 32 80 1 79 97 66 23 29 45 57 13 77 96 55 69 11 76 20 17 92 51 44 95
+Card 37: 14 13 1 4 86 17 9 41 68 91 | 1 17 85 42 82 2 91 9 94 8 35 98 77 25 36 53 95 33 19 21 32 4 59 5 68
+Card 38: 63 34 17 95 15 21 1 29 39 28 | 81 73 45 15 65 54 74 76 12 27 37 99 90 48 62 34 1 17 57 36 78 66 63 18 42
+Card 39: 10 66 55 44 85 58 80 36 46 45 | 45 37 60 8 86 31 76 90 28 25 5 1 91 51 89 41 47 46 82 71 3 61 22 26 29
+Card 40: 31 12 91 62 79 34 7 81 71 28 | 49 90 73 12 57 54 83 45 40 84 43 20 93 44 10 29 85 65 70 11 75 23 38 92 94
+Card 41: 45 60 94 64 30 32 90 44 8 24 | 85 65 13 79 4 36 75 37 20 1 57 84 30 31 25 62 19 67 3 15 54 17 24 78 12
+Card 42: 26 16 82 83 74 68 27 94 61 28 | 21 59 65 72 29 75 34 9 20 88 3 8 77 44 62 50 10 19 95 2 97 58 83 48 80
+Card 43: 33 83 48 64 26 76 63 97 9 30 | 78 22 1 43 27 10 6 92 52 2 93 16 80 89 59 65 47 13 24 4 20 31 69 40 38
+Card 44: 90 68 38 97 53 60 58 50 39 98 | 88 31 11 95 38 10 15 52 9 39 87 19 86 82 80 94 50 42 93 73 8 3 72 57 36
+Card 45: 79 31 56 25 90 33 88 65 14 27 | 90 53 88 34 33 49 83 43 31 75 79 50 52 15 92 98 3 24 85 64 1 42 40 20 32
+Card 46: 46 52 36 88 89 63 39 76 38 40 | 82 91 70 88 30 48 85 62 67 76 29 3 56 53 2 5 4 65 20 87 90 74 33 22 73
+Card 47: 12 95 67 8 37 83 82 52 9 51 | 74 58 50 56 63 38 71 9 90 26 37 81 67 68 5 17 44 19 73 96 85 12 65 8 27
+Card 48: 96 5 43 21 13 20 61 75 46 54 | 36 95 82 54 38 52 8 48 88 92 28 74 78 58 83 99 12 57 72 98 93 45 21 70 19
+Card 49: 21 73 34 9 46 27 41 56 22 77 | 1 42 74 68 79 35 29 31 57 36 67 83 45 40 54 34 71 24 8 20 82 94 59 4 87
+Card 50: 74 82 54 35 88 39 17 67 26 28 | 99 29 88 82 22 33 48 58 7 98 40 35 93 44 32 37 18 39 26 17 74 67 28 70 83
+Card 51: 46 33 77 93 35 62 72 12 27 83 | 61 49 66 87 83 72 36 88 12 56 90 97 78 92 98 29 45 21 62 68 23 99 40 30 27
+Card 52: 50 28 91 14 81 76 63 55 51 61 | 23 56 94 61 70 10 17 16 80 37 67 58 33 81 62 63 40 5 19 36 39 47 59 21 88
+Card 53: 54 41 47 84 31 29 99 75 77 22 | 16 78 58 55 28 49 32 19 15 83 74 23 85 2 33 42 10 11 1 18 21 86 92 20 45
+Card 54: 11 38 69 20 81 8 72 4 46 49 | 95 99 11 90 73 8 61 81 25 64 28 62 48 46 37 42 59 31 72 34 74 29 94 67 76
+Card 55: 36 90 25 99 77 44 62 58 19 46 | 60 38 5 23 50 82 52 83 16 3 33 88 12 63 30 97 73 22 95 21 31 8 68 27 66
+Card 56: 63 72 66 78 91 23 37 62 71 32 | 37 6 15 70 3 49 14 4 46 43 81 80 72 96 42 93 52 16 91 50 55 67 36 41 86
+Card 57: 70 90 17 97 66 41 20 65 3 84 | 27 33 39 21 36 1 5 15 61 79 49 28 8 11 98 99 29 83 45 25 94 85 91 82 89
+Card 58: 59 74 20 5 53 9 60 37 11 90 | 57 78 19 87 22 31 67 62 17 18 71 91 24 94 90 69 41 64 76 21 47 99 52 43 77
+Card 59: 24 66 22 26 95 49 13 2 36 54 | 27 18 3 57 82 23 94 20 25 42 30 43 55 73 78 97 59 12 77 62 53 29 89 33 69
+Card 60: 38 98 78 29 12 30 76 14 35 64 | 78 10 37 53 74 55 9 76 83 86 58 98 36 56 90 30 35 96 88 68 16 12 92 51 44
+Card 61: 28 82 33 89 44 47 66 60 11 30 | 89 30 19 47 17 82 28 87 33 44 31 45 60 11 84 24 22 66 20 74 78 3 63 37 39
+Card 62: 45 58 96 24 76 75 20 46 55 14 | 23 71 94 96 22 32 61 99 19 76 83 24 87 12 75 14 46 57 17 45 20 58 48 31 55
+Card 63: 62 37 26 79 36 54 24 66 91 11 | 41 37 24 54 56 79 75 20 11 9 25 49 52 2 26 53 62 68 80 66 55 70 40 58 47
+Card 64: 86 41 46 48 43 35 16 59 42 2 | 35 42 90 33 48 86 82 41 45 59 52 79 66 28 43 71 68 50 16 32 75 46 77 30 2
+Card 65: 75 92 62 50 28 76 56 81 27 25 | 56 14 36 76 25 43 1 28 82 59 62 51 50 21 92 63 80 26 72 71 27 40 75 88 81
+Card 66: 67 32 62 48 79 84 18 89 41 90 | 96 68 11 39 25 43 92 82 70 67 41 9 62 40 10 78 71 42 97 88 32 79 28 33 64
+Card 67: 10 17 47 94 72 76 98 22 39 53 | 18 39 47 92 95 28 72 94 76 52 71 7 87 17 98 8 22 10 35 32 53 56 24 20 4
+Card 68: 8 81 99 45 34 83 11 4 31 60 | 9 81 27 24 44 51 39 54 83 11 25 76 34 8 60 85 99 20 6 4 50 45 47 31 46
+Card 69: 6 61 47 64 85 33 1 19 43 98 | 6 89 92 58 19 62 85 26 52 64 47 74 37 4 29 43 1 3 53 13 88 93 87 34 63
+Card 70: 6 83 17 47 38 76 34 82 62 7 | 40 38 91 11 7 35 34 97 6 93 69 83 41 96 62 48 18 47 70 16 82 17 20 76 72
+Card 71: 64 67 17 39 76 34 36 51 58 4 | 59 32 22 3 71 69 53 96 90 38 66 34 79 19 62 97 4 25 20 14 45 9 61 64 78
+Card 72: 64 38 32 33 84 53 10 35 40 78 | 99 66 30 75 70 1 97 67 9 28 27 31 56 24 4 52 21 3 76 94 14 95 91 93 19
+Card 73: 57 78 74 39 66 27 45 8 62 94 | 66 5 47 27 74 45 50 63 8 34 17 57 61 68 28 76 39 31 43 13 51 94 78 42 56
+Card 74: 18 73 4 61 11 81 46 47 74 41 | 82 28 16 42 71 47 63 18 99 24 66 58 59 53 62 39 15 81 8 87 49 86 84 14 93
+Card 75: 83 40 90 12 49 50 74 64 72 39 | 98 69 63 48 17 64 42 13 40 87 55 25 1 96 61 6 65 29 31 70 34 49 39 89 83
+Card 76: 38 72 80 64 98 21 48 26 15 84 | 72 51 61 6 59 32 95 68 53 80 8 11 77 21 36 62 74 26 27 22 63 48 66 45 2
+Card 77: 71 78 85 7 28 15 80 33 27 5 | 95 13 16 97 57 2 61 79 87 46 65 74 81 28 55 36 18 91 47 38 27 12 35 30 76
+Card 78: 90 62 20 25 39 9 70 32 13 66 | 5 22 83 73 55 80 67 39 51 57 35 34 77 91 74 68 88 12 29 27 66 3 8 36 98
+Card 79: 75 48 42 36 63 94 24 99 80 86 | 6 61 94 66 18 67 62 2 73 76 92 80 68 45 79 47 98 41 10 46 85 27 53 43 78
+Card 80: 17 64 9 84 28 55 2 67 66 44 | 57 70 21 5 53 81 71 38 54 40 77 83 36 90 51 64 12 48 80 32 58 43 17 56 62
+Card 81: 66 61 2 52 73 26 34 46 69 4 | 94 22 8 50 73 60 33 45 89 18 49 41 95 63 15 62 65 98 1 70 23 64 88 97 38
+Card 82: 73 46 33 91 95 45 75 78 99 54 | 6 45 32 40 23 37 64 88 69 72 53 13 39 31 28 24 5 38 25 66 84 97 17 56 10
+Card 83: 46 4 75 84 40 6 2 31 89 28 | 22 41 9 53 19 71 34 50 3 10 18 54 72 67 48 44 14 24 5 51 70 20 47 76 94
+Card 84: 2 38 47 75 11 4 3 68 87 6 | 99 21 62 31 50 32 79 74 65 66 27 52 45 59 24 12 43 16 25 61 83 42 70 19 85
+Card 85: 63 74 28 97 64 96 13 80 18 40 | 50 54 47 82 32 58 48 17 88 79 56 52 91 6 39 34 1 55 60 99 44 36 68 49 14
+Card 86: 57 83 25 47 23 32 88 24 60 68 | 38 83 72 37 68 45 32 89 24 2 82 57 60 92 1 63 50 25 42 93 35 88 11 76 47
+Card 87: 11 8 86 13 30 96 57 79 63 84 | 98 72 86 42 48 47 89 37 84 3 80 76 6 85 11 4 65 83 66 70 63 94 13 31 57
+Card 88: 52 92 12 37 88 15 13 91 30 96 | 43 13 56 85 90 37 30 54 86 91 52 7 15 88 96 63 92 69 4 89 61 40 64 12 23
+Card 89: 43 93 40 11 65 84 56 25 85 58 | 71 18 24 38 63 41 8 57 23 72 30 86 37 69 3 96 22 85 20 45 5 83 16 97 27
+Card 90: 37 40 65 79 10 50 11 22 49 5 | 11 84 53 5 38 71 10 3 26 32 34 68 69 54 56 16 49 40 30 67 64 20 92 27 22
+Card 91: 14 77 84 35 31 43 62 34 10 76 | 78 39 8 45 46 32 92 51 64 20 30 36 26 47 34 89 67 18 14 10 79 94 40 21 59
+Card 92: 47 24 54 64 90 80 27 50 46 51 | 85 81 6 53 14 40 49 71 54 74 64 76 78 31 17 27 46 83 50 98 11 96 8 62 52
+Card 93: 11 9 75 40 50 28 76 58 43 2 | 55 33 47 87 34 79 69 59 85 25 97 76 35 81 49 88 84 54 90 11 1 17 39 61 51
+Card 94: 10 2 43 14 45 77 86 61 20 37 | 94 48 13 84 70 32 7 71 5 21 55 52 79 25 46 81 82 68 6 39 16 30 60 89 22
+Card 95: 79 14 89 52 90 38 5 23 10 26 | 63 76 9 68 7 86 81 98 53 42 31 50 70 14 6 91 16 11 82 37 39 28 62 95 17
+Card 96: 59 71 75 53 85 30 69 93 84 42 | 60 34 50 21 42 12 8 68 53 44 7 4 66 90 65 64 91 63 6 33 72 40 61 17 11
+Card 97: 21 1 38 56 14 9 77 13 36 39 | 25 29 67 64 71 16 55 39 10 73 19 5 53 8 32 49 76 24 60 3 34 11 97 80 87
+Card 98: 56 69 14 21 45 42 63 39 98 37 | 1 79 89 35 84 71 57 73 82 62 48 47 52 53 93 49 20 99 29 6 60 90 58 11 44
+Card 99: 87 44 47 5 14 65 53 1 34 90 | 48 95 39 15 6 94 78 36 13 89 40 99 63 96 21 2 56 83 24 50 30 85 75 64 32
+Card 100: 69 53 58 40 89 27 18 79 36 83 | 36 79 53 69 9 40 31 68 28 8 55 87 26 57 83 71 5 89 33 19 58 81 18 90 27
+Card 101: 67 38 65 11 74 24 93 86 84 4 | 96 16 31 84 27 38 66 61 89 20 46 32 3 93 78 99 1 29 76 92 91 2 9 13 82
+Card 102: 23 9 84 74 60 1 19 93 77 88 | 58 4 91 88 41 56 9 60 93 86 99 75 90 1 13 89 33 42 43 73 3 96 95 77 74
+Card 103: 27 15 48 43 14 72 25 67 59 65 | 20 27 39 26 72 7 59 21 22 68 65 44 60 62 53 69 14 25 18 15 70 43 67 48 61
+Card 104: 63 37 10 84 96 14 5 67 83 85 | 65 59 62 94 6 36 83 63 46 7 93 85 77 88 55 1 70 91 37 45 8 73 89 84 54
+Card 105: 84 19 9 73 89 4 2 60 22 92 | 60 85 29 73 84 89 68 86 5 57 11 45 4 82 92 22 15 9 14 65 2 17 19 53 8
+Card 106: 3 17 36 19 10 27 38 71 49 70 | 5 77 26 58 93 47 42 22 60 32 96 2 86 1 72 97 19 79 13 87 43 45 98 71 8
+Card 107: 21 98 15 45 7 64 79 32 89 35 | 14 22 13 67 35 57 7 6 1 48 79 91 30 27 98 64 59 78 82 21 15 45 10 81 68
+Card 108: 3 86 63 4 98 36 43 17 74 61 | 12 99 51 24 7 9 36 94 8 46 11 48 74 38 19 28 72 53 18 77 57 39 95 3 69
+Card 109: 59 42 44 91 17 69 54 85 57 68 | 61 55 46 72 64 86 68 40 58 18 42 9 35 91 36 33 95 43 15 17 12 56 41 57 49
+Card 110: 65 63 32 60 12 24 69 68 80 23 | 30 35 83 38 8 92 71 41 2 97 37 33 56 39 14 66 81 27 42 86 15 40 52 26 94
+Card 111: 16 42 73 90 2 82 53 18 70 29 | 9 17 48 52 65 42 23 1 95 37 80 74 72 86 39 75 56 31 14 79 18 43 40 71 63
+Card 112: 44 77 90 41 31 98 27 22 48 10 | 43 7 73 49 76 14 78 86 4 36 94 12 25 29 60 80 35 89 84 13 97 23 44 10 83
+Card 113: 63 66 21 84 24 46 77 33 51 36 | 7 30 59 18 1 65 4 5 64 21 31 66 93 13 67 6 82 15 41 86 32 26 20 84 3
+Card 114: 33 34 25 78 84 30 59 42 50 73 | 44 73 3 6 11 45 80 90 32 5 83 28 70 58 94 93 21 53 43 22 25 77 81 75 19
+Card 115: 46 52 6 12 73 9 77 35 42 54 | 66 3 89 94 25 27 7 31 49 20 2 72 99 52 28 70 96 22 50 14 71 59 4 81 13
+Card 116: 85 17 24 47 55 14 87 32 20 5 | 89 51 43 73 38 92 48 9 31 50 56 91 74 42 3 29 4 6 95 2 7 41 57 80 59
+Card 117: 55 89 88 65 4 7 48 82 46 60 | 20 29 46 2 4 95 82 88 48 39 27 7 60 89 93 56 1 78 36 65 22 64 55 59 57
+Card 118: 54 15 61 52 20 30 63 43 81 49 | 61 43 89 57 99 37 73 82 63 92 83 91 81 3 33 6 8 47 10 41 25 42 53 59 40
+Card 119: 39 12 36 63 64 30 8 48 99 61 | 10 20 26 65 63 16 58 47 96 59 18 52 3 54 21 86 9 66 88 15 30 78 44 71 13
+Card 120: 79 10 41 32 29 63 42 23 33 75 | 40 77 63 47 23 11 14 67 17 42 78 22 96 36 98 50 31 41 62 6 21 99 32 33 66
+Card 121: 61 57 70 39 69 64 35 21 66 74 | 46 90 85 51 40 70 54 77 57 84 36 13 88 48 31 60 38 29 28 3 87 56 21 43 44
+Card 122: 69 24 74 22 44 73 30 4 18 51 | 80 87 96 88 32 59 31 71 65 89 55 10 53 51 26 92 14 21 64 62 79 60 19 82 1
+Card 123: 99 38 93 37 11 3 98 42 30 77 | 84 98 81 3 54 99 11 23 9 38 37 31 87 90 42 17 93 63 30 52 36 56 48 82 77
+Card 124: 89 82 96 5 68 48 49 45 36 94 | 5 79 26 81 89 6 59 63 56 27 48 96 49 1 93 98 41 90 99 47 84 57 2 22 68
+Card 125: 92 40 56 29 81 44 26 79 59 86 | 96 8 86 40 10 59 11 92 56 19 79 48 57 66 29 73 88 81 47 49 14 25 61 7 36
+Card 126: 72 61 69 94 15 64 65 12 9 20 | 76 69 25 56 99 61 84 8 11 45 67 35 53 6 92 65 7 10 5 78 70 1 39 66 4
+Card 127: 18 86 33 91 99 87 44 17 20 29 | 48 68 19 26 89 49 28 50 34 33 15 51 88 73 23 25 40 44 74 53 37 60 27 77 92
+Card 128: 77 7 82 83 60 91 12 88 94 54 | 46 38 79 14 33 85 37 15 99 1 2 65 41 78 84 5 47 93 36 6 83 11 54 71 24
+Card 129: 84 63 2 97 83 6 23 31 13 38 | 99 73 12 35 50 11 90 87 77 9 54 94 71 31 30 92 6 75 60 1 69 97 23 2 57
+Card 130: 8 99 47 42 29 66 19 52 5 31 | 66 23 85 30 79 2 71 96 14 61 53 50 88 41 1 43 78 10 3 92 13 54 52 56 17
+Card 131: 34 30 28 89 25 48 26 70 56 9 | 43 84 30 99 57 88 66 82 42 21 38 33 44 46 36 56 13 77 52 41 80 55 32 74 22
+Card 132: 54 27 7 60 1 35 76 85 43 30 | 97 71 19 16 98 22 50 92 93 70 58 83 51 46 59 11 60 56 10 8 20 35 5 49 31
+Card 133: 24 59 91 33 87 53 70 79 88 44 | 77 9 16 35 83 78 21 15 69 66 11 40 99 10 85 96 38 71 63 58 28 19 5 36 41
+Card 134: 58 46 43 66 18 59 28 52 7 57 | 67 15 84 75 19 39 16 42 50 53 94 10 91 54 33 79 29 72 76 65 44 5 56 96 36
+Card 135: 25 30 26 29 81 72 12 2 10 85 | 29 26 50 30 77 86 60 33 85 93 12 89 72 25 34 2 90 64 96 94 10 81 5 48 55
+Card 136: 53 68 1 91 65 20 39 15 66 43 | 4 23 35 53 88 92 79 66 80 24 71 68 45 91 20 56 39 65 87 15 1 37 90 16 43
+Card 137: 28 84 57 11 38 10 94 64 16 41 | 90 45 5 4 56 18 69 19 39 81 88 65 32 89 12 49 50 15 2 98 33 51 6 86 58
+Card 138: 78 4 35 37 51 50 94 44 14 85 | 93 85 74 98 78 94 44 55 51 20 14 88 50 57 11 32 66 6 35 37 18 36 79 4 67
+Card 139: 49 82 72 75 42 69 64 51 74 57 | 70 80 18 13 61 83 84 24 25 93 34 68 44 46 15 21 87 9 72 86 12 10 26 55 19
+Card 140: 16 29 91 37 79 17 22 1 53 48 | 10 16 17 42 1 88 29 78 62 86 70 48 79 75 22 3 37 25 90 49 15 53 81 91 96
+Card 141: 65 31 54 56 26 86 19 9 22 64 | 70 34 85 56 62 60 89 48 77 45 93 37 33 4 97 61 84 32 10 66 38 16 17 47 55
+Card 142: 29 68 8 77 71 28 37 56 93 6 | 85 55 56 44 1 47 77 54 75 21 78 6 29 28 64 26 37 8 39 93 89 27 68 25 71
+Card 143: 22 97 27 91 53 79 28 67 57 24 | 92 74 67 94 45 79 28 39 37 78 53 58 22 91 49 3 88 97 25 98 38 27 77 24 48
+Card 144: 38 20 12 28 77 32 85 93 14 7 | 52 12 76 53 85 54 24 77 75 32 93 70 20 38 60 14 10 46 7 13 28 2 22 61 92
+Card 145: 85 36 14 44 8 46 57 55 31 73 | 92 9 65 23 15 22 50 4 48 81 35 70 20 5 97 30 56 74 42 39 41 33 2 1 16
+Card 146: 59 82 17 73 65 35 83 67 23 68 | 94 64 35 82 67 68 86 23 89 59 48 78 36 31 6 40 13 4 79 15 33 3 93 5 83
+Card 147: 1 98 13 78 22 33 6 53 56 60 | 52 11 53 69 89 9 92 98 30 86 36 85 73 34 71 64 17 3 18 94 50 61 14 99 96
+Card 148: 65 83 66 50 59 43 88 60 81 36 | 53 3 48 76 17 21 22 49 11 81 61 24 8 71 83 98 43 77 40 88 66 6 28 14 59
+Card 149: 99 36 47 23 21 1 40 79 93 76 | 72 84 68 83 10 88 5 1 56 65 17 15 34 94 80 22 92 74 71 7 95 33 82 19 99
+Card 150: 81 83 82 90 34 27 24 98 11 20 | 89 15 3 83 41 10 8 25 20 95 72 68 27 94 67 24 99 40 42 90 81 98 88 75 11
+Card 151: 31 42 77 92 87 79 94 10 97 60 | 57 89 87 85 74 36 7 56 71 84 48 40 42 65 35 94 82 31 1 68 39 45 22 54 23
+Card 152: 22 39 79 82 27 96 52 62 14 31 | 23 33 27 52 22 38 62 3 14 68 17 30 26 71 65 79 45 39 87 60 84 95 69 97 1
+Card 153: 58 31 75 34 97 79 93 45 46 24 | 58 99 70 46 43 31 84 49 26 75 18 94 91 89 73 81 13 36 1 3 47 55 9 93 29
+Card 154: 65 91 18 76 46 96 95 87 13 86 | 88 67 55 15 38 65 52 31 66 27 6 44 87 58 30 84 32 7 22 75 1 64 50 71 91
+Card 155: 94 5 34 90 49 43 56 91 9 52 | 82 16 55 80 29 81 68 23 33 7 26 41 95 98 96 18 62 30 17 64 97 27 93 89 24
+Card 156: 83 18 55 10 54 41 59 75 36 39 | 57 66 79 61 40 90 16 74 14 70 3 67 96 4 35 94 5 43 72 76 84 56 1 98 20
+Card 157: 57 20 43 21 49 29 26 5 55 61 | 52 75 46 56 30 28 2 51 48 24 42 44 27 97 80 96 50 17 9 45 82 10 83 99 59
+Card 158: 50 7 11 12 24 72 34 37 41 58 | 40 13 93 18 66 97 16 8 91 15 76 31 65 57 95 96 82 37 61 27 51 38 36 78 23
+Card 159: 91 58 69 48 54 18 6 61 46 83 | 1 22 28 73 94 81 31 25 35 55 84 65 50 27 80 77 96 23 60 79 42 5 93 20 97
+Card 160: 33 79 11 82 27 7 37 43 78 49 | 7 14 80 88 33 56 82 60 11 71 94 49 78 79 83 23 43 51 99 25 37 4 10 27 5
+Card 161: 39 26 3 8 88 64 9 92 71 80 | 91 11 73 3 48 97 33 36 90 43 79 58 13 99 17 34 20 30 98 46 15 31 38 35 86
+Card 162: 99 92 73 80 6 59 27 52 11 88 | 47 67 54 42 63 37 44 77 61 53 18 69 21 9 30 81 28 10 86 1 5 17 34 84 51
+Card 163: 67 35 79 21 98 27 69 44 72 91 | 83 69 50 33 18 77 81 58 35 98 31 60 79 27 30 72 54 40 19 34 80 91 63 55 67
+Card 164: 64 13 11 80 38 16 3 9 51 65 | 80 84 19 47 2 43 86 77 28 34 62 95 12 65 21 49 55 48 6 89 71 36 54 25 83
+Card 165: 61 53 14 94 31 85 79 12 49 9 | 92 22 54 78 70 25 86 1 57 95 62 19 23 83 48 89 6 32 56 2 43 55 36 11 7
+Card 166: 63 61 74 93 35 34 90 19 51 72 | 9 41 81 69 40 22 95 64 74 34 56 4 84 76 24 32 54 13 63 59 61 87 28 72 26
+Card 167: 46 83 82 17 67 48 10 60 19 81 | 24 67 73 66 34 77 84 60 99 46 59 52 58 14 8 85 43 93 11 55 31 51 40 38 33
+Card 168: 54 29 39 13 59 34 28 87 27 80 | 61 50 91 32 43 2 62 97 78 85 30 25 83 95 31 93 82 98 76 5 72 92 45 24 33
+Card 169: 15 11 36 72 24 17 87 2 79 63 | 73 10 62 98 63 81 68 64 31 83 91 32 75 17 60 61 1 44 70 23 52 47 89 13 12
+Card 170: 37 16 18 36 45 7 19 68 6 41 | 65 49 18 7 61 9 5 66 97 45 60 19 84 67 50 68 8 51 37 48 96 16 53 36 38
+Card 171: 90 63 61 76 64 85 74 5 26 79 | 76 11 88 49 66 79 45 64 63 9 15 97 74 67 47 5 62 10 29 90 20 61 68 40 26
+Card 172: 28 31 94 82 69 64 9 46 87 27 | 21 11 23 8 42 52 58 57 87 94 51 60 29 19 31 75 63 28 91 26 64 45 69 99 82
+Card 173: 59 70 24 16 18 53 49 2 37 5 | 14 15 65 35 75 22 6 4 40 1 42 97 48 3 31 82 38 33 83 41 61 47 26 91 28
+Card 174: 72 45 56 58 73 38 3 37 51 88 | 6 80 83 78 47 50 11 73 46 49 76 62 48 63 12 39 14 90 5 1 41 55 10 21 27
+Card 175: 71 31 83 6 64 29 92 97 28 56 | 35 13 11 99 43 66 59 40 83 6 88 79 67 4 91 24 93 56 54 1 23 92 96 61 3
+Card 176: 73 5 70 30 22 47 29 96 31 15 | 83 52 87 24 13 97 95 3 58 84 48 38 16 91 77 51 60 10 32 8 33 42 43 62 37
+Card 177: 25 37 40 3 83 63 55 39 93 46 | 42 80 77 58 25 47 38 32 85 14 83 28 31 88 6 29 41 43 2 90 15 36 59 8 68
+Card 178: 5 99 19 65 54 13 14 9 72 78 | 52 83 68 93 79 84 81 36 88 44 41 11 43 85 23 82 47 3 66 14 26 67 34 60 64
+Card 179: 9 40 82 45 92 95 50 69 32 8 | 85 75 18 68 54 42 92 64 3 91 98 49 33 2 47 52 96 4 25 87 89 23 71 55 77
+Card 180: 95 40 55 56 67 79 10 59 44 77 | 4 83 84 58 98 69 20 66 24 49 46 60 61 8 81 11 21 91 15 64 9 5 48 97 39
+Card 181: 26 10 25 23 93 31 54 12 47 15 | 69 29 38 35 10 45 42 83 94 54 23 70 59 15 98 18 73 93 46 97 31 56 82 49 12
+Card 182: 95 99 18 91 62 69 34 85 21 66 | 21 48 87 97 92 1 72 19 70 5 36 85 79 52 88 12 44 62 55 18 37 34 31 4 82
+Card 183: 29 83 51 58 11 54 46 34 65 79 | 52 29 30 11 81 9 53 55 48 76 61 20 32 38 96 33 83 72 34 4 65 3 75 46 89
+Card 184: 95 54 86 73 63 13 24 96 38 76 | 96 60 56 18 76 4 24 73 22 13 45 86 41 54 32 20 38 98 71 89 42 80 95 36 63
+Card 185: 50 49 72 80 29 38 13 36 2 43 | 87 29 8 28 82 64 96 61 92 7 32 12 16 36 43 79 23 86 2 38 75 68 80 31 59
+Card 186: 49 17 36 77 16 91 4 73 87 11 | 46 4 17 43 36 76 15 68 61 73 69 96 11 91 77 16 71 65 40 48 87 81 49 63 83
+Card 187: 59 73 84 61 35 14 12 93 33 32 | 35 57 84 6 25 59 10 40 73 92 98 61 66 70 4 33 14 58 93 11 48 13 32 67 12
+Card 188: 46 39 45 99 62 53 50 11 13 66 | 79 29 32 4 50 26 11 88 34 69 38 28 60 81 46 1 10 77 8 20 24 18 22 9 89
+Card 189: 74 91 68 51 77 90 82 59 96 4 | 59 4 14 64 69 83 55 70 17 22 7 49 99 74 13 90 46 26 66 40 80 27 89 3 77
+Card 190: 94 71 91 48 66 7 58 83 79 92 | 57 51 48 70 68 99 93 21 84 61 86 71 63 75 88 94 18 97 65 95 96 77 10 58 49
+Card 191: 80 49 19 73 45 70 77 46 15 85 | 34 53 73 16 71 65 19 31 36 49 89 95 92 26 80 70 7 85 8 5 82 97 91 57 64
+Card 192: 92 42 39 75 3 91 35 66 96 40 | 82 75 79 29 73 85 43 66 96 3 16 22 89 91 40 52 32 77 92 95 35 42 11 2 39
+Card 193: 32 65 23 85 57 4 96 7 62 43 | 95 62 23 31 30 61 52 4 28 63 58 96 76 16 70 85 7 57 35 43 90 32 34 45 81
+Card 194: 41 51 65 97 91 44 6 62 72 12 | 88 27 73 63 26 37 13 42 12 71 23 69 94 41 11 50 31 67 75 59 35 60 93 3 70
+Card 195: 62 55 31 80 83 60 7 17 21 57 | 26 91 62 21 65 45 89 57 56 80 29 18 3 48 7 61 83 42 60 96 50 31 55 11 33
+Card 196: 99 61 18 79 24 55 51 59 11 77 | 9 7 96 39 52 46 97 49 5 66 77 34 21 95 32 78 44 88 85 41 23 75 51 13 6
+Card 197: 17 38 87 1 54 6 94 9 42 83 | 40 63 85 64 26 81 9 18 27 79 1 37 80 5 83 56 4 87 11 38 25 17 61 49 50
+Card 198: 42 15 87 89 75 81 88 54 52 53 | 37 61 13 77 70 98 64 28 59 22 49 9 88 11 95 73 32 48 43 92 94 66 97 5 44
+Card 199: 56 49 73 32 50 30 14 42 52 55 | 32 30 50 89 83 71 49 42 62 88 82 13 19 59 17 84 22 64 76 58 40 48 65 8 70
+Card 200: 42 4 18 53 51 81 93 60 8 84 | 64 43 24 79 72 70 28 92 73 91 25 47 8 94 75 53 2 81 90 3 56 22 14 83 93
+Card 201: 85 39 13 17 37 24 65 82 66 62 | 11 54 52 21 98 18 69 97 4 77 96 29 38 42 82 48 92 6 86 80 50 61 15 88 57
+Card 202: 13 35 7 18 61 70 93 30 38 43 | 53 37 71 11 46 78 16 54 25 62 70 67 19 32 18 36 96 94 23 4 28 76 51 98 31
+Card 203: 11 56 74 77 61 64 1 23 97 39 | 22 48 2 35 31 39 53 9 38 65 36 67 37 43 92 96 13 4 47 49 8 99 21 20 79
+Card 204: 54 64 29 24 89 96 75 22 16 93 | 21 90 10 28 55 67 63 27 5 43 94 68 66 58 6 88 84 2 44 8 60 20 3 56 30
diff --git a/2023/rs/code/four/src/main.rs b/2023/rs/code/four/src/main.rs
new file mode 100644
index 0000000..7508e4a
--- /dev/null
+++ b/2023/rs/code/four/src/main.rs
@@ -0,0 +1,32 @@
+#![feature(array_chunks)]
+#![feature(iter_array_chunks)]
+
+static INPUT: &[u8] = include_bytes!("input.txt");
+
+fn parse_val(s: &[u8]) -> u8 {
+ (if s[0].is_ascii_digit() { (s[0] - b'0') * 10 } else { 0 }) +
+ s[1] - b'0'
+}
+
+fn main() {
+ let valueified = INPUT.split(|b| *b == b'\n').filter(|s| !s.is_empty())
+ .map(|b| {
+ let win: u128 = b[10..40].array_chunks::<3>().fold(0, |a, b| a | (1 << parse_val(&b[0..2])));
+ let valiter = b[42..].array_chunks::<3>();
+ let val: u128 = valiter.clone().fold(0, |a, b| a | (1 << parse_val(&b[0..2]))) | (1 << parse_val(valiter.remainder()));
+ (win & val).count_ones()
+ });
+
+ let winsum = valueified.clone().map(|c| if c == 0 { 0 } else { 2u32.pow(c - 1) }).sum::<u32>();
+ println!("Sum of Win Scores: {winsum}");
+
+ let mut nums = valueified.map(|n| (n as usize, 1)).collect::<Vec<(usize, u32)>>();
+ for i in 0..nums.len() {
+ let (m, c) = nums[i];
+ for n in i + 1 .. (i + m + 1).min(nums.len()) {
+ nums[n].1 += c;
+ }
+ }
+ let cardsum = nums.into_iter().map(|(_, c)| c).sum::<u32>();
+ println!("Sum of Recursive Card Counting: {cardsum}");
+}