Есть сетка 9 * 9, и я хочу разделить ее на 9 сеток по 3 * 3.
char[][] grid = new[]
{
new[] {'.', '.', '.', '1', '4', '.', '.', '2', '.'},
new[] {'.', '.', '6', '.', '.', '.', '.', '.', '.'},
new[] {'.', '.', '.', '.', '.', '.', '.', '.', '.'},
new[] {'.', '.', '1', '.', '.', '.', '.', '.', '.'},
new[] {'.', '6', '7', '.', '.', '.', '.', '.', '9'},
new[] {'.', '.', '.', '.', '.', '.', '8', '1', '.'},
new[] {'.', '3', '.', '.', '.', '.', '.', '.', '6'},
new[] {'.', '.', '.', '.', '.', '7', '.', '.', '.'},
new[] {'.', '.', '.', '5', '.', '.', '.', '7', '.'}
};
Вот мое решение, которое работает:
List<char[][]> myList = new List<char[][]>();
for (int i = 0; i < 9; i = i + 3)
{
for (int j = 0; j < 9; j = j + 3)
{
List<char[]> temp1 = new List<char[]>();
for (int k = 0; k < 3; k++)
{
List<char> temp2 = new List<char>();
for (int l = 0; l < 3; l++)
{
temp2.Add(grid[i + k][j + l]);
}
temp1.Add(temp2.ToArray());
}
myList.Add(temp1.ToArray());
}
}
Ищем более простой способ сделать это, особенно решение Linq. Хотя это не так эффективно, как этот. В этом случае важнее меньше строк кода.