diff --git a/2024/day-04/main.cpp b/2024/day-04/main.cpp index 99b69d3..b9badeb 100644 --- a/2024/day-04/main.cpp +++ b/2024/day-04/main.cpp @@ -30,13 +30,11 @@ int xmasCountAt(const vector &matrix, const size_t rowIndex, const size_ int xmasCount = 0; - // Horizontal check if (colIndex + 3 < numberOfCols) { string horizontalWord = matrix[rowIndex].substr(colIndex, 4); xmasCount += wordIsXmas(horizontalWord); } - // Vertical check if (rowIndex + 3 < numberOfRows) { string verticalWord; for (size_t i = 0; i <= 3; i++) { @@ -45,22 +43,13 @@ int xmasCountAt(const vector &matrix, const size_t rowIndex, const size_ xmasCount += wordIsXmas(verticalWord); } - // Down-diagonal check if (rowIndex + 3 < numberOfRows && colIndex + 3 < numberOfCols) { - string downDiagonalWord; + string downDiagonalWord, upDiagonalWord; for (size_t i = 0; i <= 3; i++) { downDiagonalWord += matrix[rowIndex + i][colIndex + i]; - } - xmasCount += wordIsXmas(downDiagonalWord); - } - - // Up-diagonal check - if (rowIndex + 3 < numberOfRows && colIndex + 3 < numberOfCols) { - string upDiagonalWord; - for (size_t i = 0; i <= 3; i++) { upDiagonalWord += matrix[rowIndex + (3 - i)][colIndex + i]; } - xmasCount += wordIsXmas(upDiagonalWord); + xmasCount += wordIsXmas(downDiagonalWord) + wordIsXmas(upDiagonalWord); } return xmasCount; @@ -75,23 +64,13 @@ bool crossMasExistsAt(const vector &matrix, const size_t rowIndex, const return false; } - string downDiagonalWord; + string downDiagonalWord, upDiagonalWord; for (size_t i = 0; i <= 2; i++) { downDiagonalWord += matrix[rowIndex + i][colIndex + i]; - } - if (!wordIsMas(downDiagonalWord)) { - return false; - } - - string upDiagonalWord; - for (size_t i = 0; i <= 2; i++) { upDiagonalWord += matrix[rowIndex + (2 - i)][colIndex + i]; } - if (!wordIsMas(upDiagonalWord)) { - return false; - } - return true; + return wordIsMas(downDiagonalWord) && wordIsMas(upDiagonalWord); } int main()