Возникли проблемы при отладке тральщика - PullRequest
0 голосов
/ 29 июня 2018

У меня есть некоторые проблемы на codefights.com, и я не могу понять, почему мой код работает так, как он есть.

https://codefightssolver.wordpress.com/2016/11/09/minesweeper/

^^^ Есть ссылка на чей-то блог, содержащий дословное приглашение. Я не уверен, что вы можете увидеть вызов на codefights, если вы не вошли в систему.

int[][] minesweeper(bool[][] matrix)
{
    int[][] mineField = new int[matrix.Length][];
    int[] mineLine = new int[matrix[0].Length];

    for (int i = 0; i < mineLine.Length; i++) { mineLine[i] = 0; }
    for (int i = 0; i < mineField.Length; i++) { mineField[i] = mineLine; }

    for (int i = 0; i < mineField.Length; i++)
    {
        for (int j = 0; j < mineField[0].Length; j++)
        {
            mineField[i][j] = findBorderMines(matrix, i, j);
            Console.Write(mineField[i][j]);
        }
        Console.WriteLine();
    }

    return mineField;
}

int findBorderMines(bool[][] matrix, int x, int y)
{
    int minX = x - 1; if (minX < 0) minX = 0;
    int minY = y - 1; if (minY < 0) minY = 0;
    int maxX = x + 1; if (maxX > matrix.Length - 1) maxX = matrix.Length - 1;
    int maxY = y + 1; if (maxY > matrix[0].Length - 1) maxY = matrix[0].Length - 1;
    int borderingMines = 0;


    for (int i = minX; i <= maxX; i++)
    {
        int j = minY;
        for (; j <= maxY; j++)
        {
            //Console.WriteLine(i + " " + j);
            if (matrix[i][j] == true && !(i == x && j == y)) { borderingMines++; }
        }
    }

    return borderingMines;
}

^^^ Это мой полный код. Я знаю, что это не самое элегантное решение, но я не ищу это прямо сейчас. Моя проблема (я думаю) касается кода ниже vvv

for (int i = 0; i < mineField.Length; i++)
{
    for (int j = 0; j < mineField[0].Length; j++)
    {
        mineField[i][j] = findBorderMines(matrix, i, j);
        Console.Write(mineField[i][j]);
    }
    Console.WriteLine();
}

return mineField;

Линии записи отображают правильную матрицу, но когда я возвращаю полученную матрицу, все строки в матрице волшебным образом преобразуются в последнюю строку matirx. Что мне не хватает? Я надеюсь, что этой информации достаточно, чтобы понять, что я облажался, но я никогда не идеал, чтобы свести мои глупые вопросы к одному сообщению на форуме.

...