aboutsummaryrefslogtreecommitdiff
path: root/2024/src/day04.cpp
diff options
context:
space:
mode:
Diffstat (limited to '2024/src/day04.cpp')
-rw-r--r--2024/src/day04.cpp34
1 files changed, 8 insertions, 26 deletions
diff --git a/2024/src/day04.cpp b/2024/src/day04.cpp
index f586afb..b82e4d6 100644
--- a/2024/src/day04.cpp
+++ b/2024/src/day04.cpp
@@ -57,32 +57,14 @@ part2(map<tuple<size_t, size_t>, char> data, size_t size)
57 long count = 0; 57 long count = 0;
58 for ( size_t y = 0; y != size; ++y ) { 58 for ( size_t y = 0; y != size; ++y ) {
59 for ( size_t x = 0; x != size; ++x ) { 59 for ( size_t x = 0; x != size; ++x ) {
60 if ( data[{ x, y }] == 'A' && 60 string str;
61 data[{ x - 1, y - 1 }] == 'M' && 61 str += data[{ x, y }];
62 data[{ x - 1, y + 1 }] == 'M' && 62 str += data[{ x - 1, y - 1 }];
63 data[{ x + 1, y - 1 }] == 'S' && 63 str += data[{ x - 1, y + 1 }];
64 data[{ x + 1, y + 1 }] == 'S' ) { 64 str += data[{ x + 1, y - 1 }];
65 ++count; 65 str += data[{ x + 1, y + 1 }];
66 } 66
67 if ( data[{ x, y }] == 'A' && 67 if ( str == "AMMSS" || str == "ASMSM" || str == "ASSMM" || str == "AMSMS" ) {
68 data[{ x - 1, y - 1 }] == 'S' &&
69 data[{ x - 1, y + 1 }] == 'M' &&
70 data[{ x + 1, y - 1 }] == 'S' &&
71 data[{ x + 1, y + 1 }] == 'M' ) {
72 ++count;
73 }
74 if ( data[{ x, y }] == 'A' &&
75 data[{ x - 1, y - 1 }] == 'S' &&
76 data[{ x - 1, y + 1 }] == 'S' &&
77 data[{ x + 1, y - 1 }] == 'M' &&
78 data[{ x + 1, y + 1 }] == 'M' ) {
79 ++count;
80 }
81 if ( data[{ x, y }] == 'A' &&
82 data[{ x - 1, y - 1 }] == 'M' &&
83 data[{ x - 1, y + 1 }] == 'S' &&
84 data[{ x + 1, y - 1 }] == 'M' &&
85 data[{ x + 1, y + 1 }] == 'S' ) {
86 ++count; 68 ++count;
87 } 69 }
88 } 70 }