長い幅と等しい行列(二次元配列)は、反時計回りに90度回転します。
長い幅と等しい行列(二次元配列)を反時計回りに90度回転させます。例えば、次の二次元配列があります。
第1のステップは、行列を「左上」から「右下」までの対角線に沿って合わせます。
00 10 20 30 40 50 60
01 11 21 31 41 51 61
02 12 22 32 42 52 62
03 13 23 33 43 53 63
04 14 24 34 44 54 64
05 15 25 35 45 55 65
06 16 26 36 46 56 66
それを反時計回りに90度回転させると、比較的早い方法は2回の位置で交換すればいいです。第1のステップは、行列を「左上」から「右下」までの対角線に沿って合わせます。
00 01 02 03 04 05 06
10 11 12 13 14 15 16
20 21 22 23 24 25 26
30 31 32 33 34 35 36
40 41 42 43 44 45 46
50 51 52 53 54 55 56
60 61 62 63 64 65 66
第二のステップは、行列の上で下方向に合わせて調整します。すなわち、第一の行と後ろから第一の行を合わせます。第二の行は下から二番目の行に合わせて調整します。順に類推します。最終版の二次元配列(すなわち元の二次元配列は反時計回りに90度回転する配列)が得られます。60 61 62 63 64 65 66
50 51 52 53 54 55 56
40 41 42 43 44 45 46
30 31 32 33 34 35 36
20 21 22 23 24 25 26
10 11 12 13 14 15 16
00 01 02 03 04 05 06
関連するjava版の小テストプログラムは以下の通りです。public class Test {
public static void main(String[] args) {
String m_TestData[][] = {
{"00","10","20","30","40","50","60"},
{"01","11","21","31","41","51","61"},
{"02","12","22","32","42","52","62"},
{"03","13","23","33","43","53","63"},
{"04","14","24","34","44","54","64"},
{"05","15","25","35","45","55","65"},
{"06","16","26","36","46","56","66"}
};
int iX, iY;
String tmpData;
int m_iHeight = 7;
int m_iWidth = 7;
System.out.println(" :");
for(iY=0;iY