mirror of
https://github.com/SebastianStork/advent-of-code.git
synced 2026-01-21 16:51:34 +01:00
Slightly simplify solution for 2024 day 4
This commit is contained in:
parent
713541b469
commit
354d114a8d
1 changed files with 4 additions and 25 deletions
|
|
@ -30,13 +30,11 @@ int xmasCountAt(const vector<string> &matrix, const size_t rowIndex, const size_
|
||||||
|
|
||||||
int xmasCount = 0;
|
int xmasCount = 0;
|
||||||
|
|
||||||
// Horizontal check
|
|
||||||
if (colIndex + 3 < numberOfCols) {
|
if (colIndex + 3 < numberOfCols) {
|
||||||
string horizontalWord = matrix[rowIndex].substr(colIndex, 4);
|
string horizontalWord = matrix[rowIndex].substr(colIndex, 4);
|
||||||
xmasCount += wordIsXmas(horizontalWord);
|
xmasCount += wordIsXmas(horizontalWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vertical check
|
|
||||||
if (rowIndex + 3 < numberOfRows) {
|
if (rowIndex + 3 < numberOfRows) {
|
||||||
string verticalWord;
|
string verticalWord;
|
||||||
for (size_t i = 0; i <= 3; i++) {
|
for (size_t i = 0; i <= 3; i++) {
|
||||||
|
|
@ -45,22 +43,13 @@ int xmasCountAt(const vector<string> &matrix, const size_t rowIndex, const size_
|
||||||
xmasCount += wordIsXmas(verticalWord);
|
xmasCount += wordIsXmas(verticalWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Down-diagonal check
|
|
||||||
if (rowIndex + 3 < numberOfRows && colIndex + 3 < numberOfCols) {
|
if (rowIndex + 3 < numberOfRows && colIndex + 3 < numberOfCols) {
|
||||||
string downDiagonalWord;
|
string downDiagonalWord, upDiagonalWord;
|
||||||
for (size_t i = 0; i <= 3; i++) {
|
for (size_t i = 0; i <= 3; i++) {
|
||||||
downDiagonalWord += matrix[rowIndex + i][colIndex + 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];
|
upDiagonalWord += matrix[rowIndex + (3 - i)][colIndex + i];
|
||||||
}
|
}
|
||||||
xmasCount += wordIsXmas(upDiagonalWord);
|
xmasCount += wordIsXmas(downDiagonalWord) + wordIsXmas(upDiagonalWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
return xmasCount;
|
return xmasCount;
|
||||||
|
|
@ -75,23 +64,13 @@ bool crossMasExistsAt(const vector<string> &matrix, const size_t rowIndex, const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
string downDiagonalWord;
|
string downDiagonalWord, upDiagonalWord;
|
||||||
for (size_t i = 0; i <= 2; i++) {
|
for (size_t i = 0; i <= 2; i++) {
|
||||||
downDiagonalWord += matrix[rowIndex + i][colIndex + 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];
|
upDiagonalWord += matrix[rowIndex + (2 - i)][colIndex + i];
|
||||||
}
|
}
|
||||||
if (!wordIsMas(upDiagonalWord)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return wordIsMas(downDiagonalWord) && wordIsMas(upDiagonalWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue