如何旋转和翻转2D char数组?

时间:2017-12-08 18:51:02

标签: c# arrays matrix

如何旋转和翻转2D字符数组,以便字母以不同的顺序显示?

char[,] array = new char[6,4] { 
    { 'A', 'B', 'C', 'D' },
    { 'E', 'F', 'G', 'H' },
    { 'I', 'J', 'K', 'L' },
    { 'M', 'N', 'O', 'P' },
    { 'Q', 'R', 'S', 'T' },
    { 'U', 'V', 'W', 'X' }
};

6x4矩阵

Orig.       90°             180°        270°            Flip H      Flip V
A B C D     U Q M I E A     X W V U     D H L P T X     D C B A     U V W X
E F G H     V R N J F B     T S R Q     C G K O S W     H G F E     Q R S T
I J K L     W S O K G C     P O N M     B F J N R V     L K J I     M N O P
M N O P     X T P L H D     L K J I     A E I M Q U     P O N M     I J K L
Q R S T                     H G F E                     T S R Q     E F G H
U V W X                     D C B A                     X W V U     A B C D

旋转数组后,我想将String.Join()所有行放到一行中以供其他用途。

因此,如果您要将阵列翻转90°并String.Join()
ABCDEFGHIJKLMNOPQRSTUVWX将显示为UQMIEAVRNJFBWSOKGCXTPLHD

示例

这是旋转方法90°。

https://stackoverflow.com/a/42535/6806643

char[,] rotated = RotateMatrix(array, 4);


static char[,] RotateMatrix(char[,] matrix, int n) {
    char[,] ret = new char[n, n];

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            ret[i, j] = matrix[n - j - 1, i];
        }
    }

    return ret;
}

但我只能让它显示最多4列

M I E A
N J F B
O K G C
P L H D

什么时候应该是6

U Q M I E A
V R N J F B
W S O K G C
X T P L H D

http://rextester.com/BAMTJ38063

0 个答案:

没有答案