Minor refactor

This commit is contained in:
Dimitrios Kaltzidis
2024-12-04 13:35:57 +02:00
parent fa7e7a6481
commit d3ab280be6

View File

@@ -14,7 +14,7 @@ int FindMas(char[,] grid)
var rows = grid.GetLength(0); var rows = grid.GetLength(0);
var cols = grid.GetLength(1); var cols = grid.GetLength(1);
var directions = new[,] var searchDirections = new[,]
{ {
{ -1, 1 }, // diagonal up right { -1, 1 }, // diagonal up right
{ 1, 1 }, // diagonal down right { 1, 1 }, // diagonal down right
@@ -24,13 +24,13 @@ int FindMas(char[,] grid)
List<string> masCenterCoordinates = new(); List<string> masCenterCoordinates = new();
for (var r = 0; r < rows; r++) for (var row = 0; row < rows; row++)
{ {
for (var c = 0; c < cols; c++) for (var column = 0; column < cols; column++)
{ {
for (var d = 0; d < directions.GetLength(0); d++) for (var direction = 0; direction < searchDirections.GetLength(0); direction++)
{ {
var masCoordinates = CheckWord(r, c, directions[d, 0], directions[d, 1], grid, "MAS"); var masCoordinates = CheckWord(row, column, searchDirections[direction, 0], searchDirections[direction, 1], grid, "MAS");
if (masCoordinates != null) if (masCoordinates != null)
{ {
masCenterCoordinates.Add($"{masCoordinates[1][0]},{masCoordinates[1][1]}"); masCenterCoordinates.Add($"{masCoordinates[1][0]},{masCoordinates[1][1]}");
@@ -50,7 +50,7 @@ int FindXmas(char[,] grid)
var cols = grid.GetLength(1); var cols = grid.GetLength(1);
var xmasCount = 0; var xmasCount = 0;
var directions = new[,] var searchDirections = new[,]
{ {
{ -1, 0 }, // up { -1, 0 }, // up
{ 0, 1 }, // right { 0, 1 }, // right
@@ -62,13 +62,13 @@ int FindXmas(char[,] grid)
{ 1, -1 } // diagonal down left { 1, -1 } // diagonal down left
}; };
for (var r = 0; r < rows; r++) for (var row = 0; row < rows; row++)
{ {
for (var c = 0; c < cols; c++) for (var column = 0; column < cols; column++)
{ {
for (var d = 0; d < directions.GetLength(0); d++) for (var direction = 0; direction < searchDirections.GetLength(0); direction++)
{ {
if (CheckWord(r, c, directions[d, 0], directions[d, 1], grid, "XMAS") != null) if (CheckWord(row, column, searchDirections[direction, 0], searchDirections[direction, 1], grid, "XMAS") != null)
{ {
xmasCount++; xmasCount++;
} }
@@ -79,20 +79,20 @@ int FindXmas(char[,] grid)
return xmasCount; return xmasCount;
} }
List<int[]>? CheckWord(int r, int c, int dr, int dc, char[,] grid, string word) List<int[]>? CheckWord(int row, int column, int directionRow, int directionColumn, char[,] grid, string word)
{ {
var characterCoordinates = new List<int[]>(); var characterCoordinates = new List<int[]>();
for (var i = 0; i < word.Length; i++) for (var i = 0; i < word.Length; i++)
{ {
var newR = r + i * dr; var newRow = row + i * directionRow;
var newC = c + i * dc; var newColumn = column + i * directionColumn;
if (!IsValid(newR, newC, grid) || grid[newR, newC] != word[i]) return null; if (!IsValid(newRow, newColumn, grid) || grid[newRow, newColumn] != word[i]) return null;
characterCoordinates.Add([newR, newC]); characterCoordinates.Add([newRow, newColumn]);
} }
return characterCoordinates; return characterCoordinates;
} }
bool IsValid(int r, int c, char[,] grid) => r >= 0 && r < grid.GetLength(0) && c >= 0 && c < grid.GetLength(1); bool IsValid(int row, int column, char[,] grid) => row >= 0 && row < grid.GetLength(0) && column >= 0 && column < grid.GetLength(1);