C#, поворачивая 2D массивы

Я посмотрел на другое сообщение при вращении 2D массивов, но это не совсем, что я хочу. Я хочу что-то вроде этого

 int[,] original= new int[4,2]
       {
           {1,2},
           {5,6},
           {9,10},
           {13,14}
       };

Я хочу повернуть его как это, rotatedArray = {{1,5,9,13}, {2,6,10,14}}; я хочу сделать некоторый анализ столбцом, в противоположность строками.

Это работает, но является там более легким путем??

 private static int[,] RotateArray(int[,] myArray)
  {
        int org_rows = myArray.GetLength(0);
        int org_cols = myArray.GetLength(1);

        int[,] myRotate = new int[org_cols, org_rows];

        for (int i = 0; i < org_rows; i++)
        {
            for(int j = 0; j < org_cols; j++)
            {
                myRotate[j, i] = myArray[i, j];
            }
        }

        return myRotate;
    }

Существует ли простой способ выполнить итерации через столбцы в c#?
B

7
задан Sumon Banerjee 17 February 2014 в 13:40
поделиться

1 ответ

Если вы измените свой массив на массив массивов, это станет проще. Я нашел это, если вы измените его на int [] []:

int[][] original = new[]
                                   {
                                       new int[] {1, 2},
                                       new int[] {5, 6},
                                       new int[] {9, 10},
                                       new int[] {13, 14}
                                   };

и метод поворота:

private static int[][] Rotate(int[][] input)
{
    int length = input[0].Length;
    int[][] retVal = new int[length][];
    for(int x = 0; x < length; x++)
    {
        retVal[x] = input.Select(p => p[x]).ToArray();
    }
    return retVal;
}
6
ответ дан 7 December 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: