diff options
Diffstat (limited to '2024')
| -rw-r--r-- | 2024/src/day04.cpp | 34 |
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 | } |
