Професионална програма
Loading...
Stoianilliev avatar Stoianilliev 1 Точки

Проблем със задача 9. Miner

Здравейте, имам проблем с горепосочената задача, условието на която се намира тук:

https://softuni.bg/trainings/resources/officedocument/49688/exercise-csharp-advanced-may-2020/2834

Проблемът е следният:

Инпута представлява размер на матрицата, команди и самата char матрица. Обаче тя е изписана с разстояния между отделните символи, които моята програма чете, и не взима цялата матрица. На първия пример взима това:

5
up right right up right
* * * c *
* * * e *
* * c * *
s * * c *
* * c * *

И ако проверя как се е запаметила матрицата, се оказва че се е запаметило това:

* * *
* * *
* * c
s * *
* * c

Тоест е взело само първите 5 символа(включително спейсовете).

Въпросът ми е как мога да си преправя кода така че да не брой празните места в char array-a?

Кодът ми в които съм оградил с коментари къде е проблема: https://pastebin.com/jQNJ74xr

Благодаря предварително!

Тагове:
1
C# Advanced
MartinBG avatar MartinBG 2781 Точки
Best Answer

Използването на Multidimensional Array (char[,]) в тази задача само усложнява ненужно парсването и извеждането ѝ в конзолата.

Тези две операции са много по-лесни, ако се използва Jagged Array (char[][]):

            // Parse from Console
            var matrix = new char[n][];
            for (var row = 0; row < n; row++)
            {
                matrix[row] = Console.ReadLine()
                    .Split(' ', StringSplitOptions.RemoveEmptyEntries)
                    .Select(c => c[0])
                    .ToArray();
            }

            // Print back to Console
            foreach (var row in matrix)
            {
                Console.WriteLine(string.Join(' ', row));
            }

Работа Jagged Array: matrix[row][col] вместо matrix[row, col]

0