回答編集履歴
1
コードを修正しました。
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
var size; // 処理対象のブロックの大きさ
|
24
24
|
|
25
|
-
var
|
25
|
+
var row, col; // 行、列
|
26
26
|
|
27
27
|
var ptr; // ブロックの起点を指す(配列の添字)
|
28
28
|
|
@@ -32,9 +32,7 @@
|
|
32
32
|
|
33
33
|
var vallen; // 配列から取り出した値の長さ
|
34
34
|
|
35
|
-
var str; //結果表示
|
35
|
+
var str; // 結果表示
|
36
|
-
|
37
|
-
|
38
36
|
|
39
37
|
|
40
38
|
|
@@ -46,7 +44,7 @@
|
|
46
44
|
|
47
45
|
|
48
46
|
|
49
|
-
// 渦巻き
|
47
|
+
// 渦巻き状の値が入った配列を作成
|
50
48
|
|
51
49
|
small = S - 2 * N - 1; // 最初のブロックの最小値を求める
|
52
50
|
|
@@ -56,33 +54,29 @@
|
|
56
54
|
|
57
55
|
while (size > 0){
|
58
56
|
|
59
|
-
for(
|
57
|
+
for(col=0; col<size; col++){ // 上の行を埋める
|
60
58
|
|
61
|
-
|
59
|
+
MTX[ptr][ptr+col] = small + 2 * (size - 1) + col;
|
62
60
|
|
63
|
-
|
61
|
+
}
|
64
62
|
|
65
|
-
|
63
|
+
for(row=1; row<size; row++){
|
66
64
|
|
65
|
+
if (row < size-1){ // 中の行を埋める
|
66
|
+
|
67
|
-
|
67
|
+
MTX[ptr+row][ptr] = MTX[ptr+row-1][ptr] -1;
|
68
|
+
|
69
|
+
MTX[ptr+row][ptr+size-1] = MTX[ptr+row-1][ptr+size-1] + 1;
|
68
70
|
|
69
71
|
}
|
70
72
|
|
71
|
-
else
|
73
|
+
else{ // 下の行を埋める
|
72
74
|
|
73
|
-
for(
|
75
|
+
for(col=0; col<size; col++){
|
74
76
|
|
75
|
-
MTX[ptr+
|
77
|
+
MTX[ptr+row][ptr+col] = small + size - col - 1;
|
76
78
|
|
77
79
|
}
|
78
|
-
|
79
|
-
}
|
80
|
-
|
81
|
-
else{ // 間の行を埋める
|
82
|
-
|
83
|
-
MTX[ptr+i][ptr] = MTX[ptr+i-1][ptr] - 1;
|
84
|
-
|
85
|
-
MTX[ptr+i][ptr+size-1] = MTX[ptr+i-1][ptr+size-1] + 1;
|
86
80
|
|
87
81
|
}
|
88
82
|
|
@@ -92,7 +86,7 @@
|
|
92
86
|
|
93
87
|
// 次のブロックの最小値を計算
|
94
88
|
|
95
|
-
small+=Math.pow(size, 2) - (size <= 2 ? 0 : Math.pow(size
|
89
|
+
small+=Math.pow(size, 2) - (size <= 2 ? 0 : Math.pow(size-2, 2));
|
96
90
|
|
97
91
|
|
98
92
|
|
@@ -110,11 +104,11 @@
|
|
110
104
|
|
111
105
|
str = "";
|
112
106
|
|
113
|
-
for(
|
107
|
+
for(row=0; row<N; row++){
|
114
108
|
|
115
|
-
for(
|
109
|
+
for(col=1; col<N+1; col++){
|
116
110
|
|
117
|
-
strval = MTX[
|
111
|
+
strval = MTX[row][col].toString();
|
118
112
|
|
119
113
|
while (maxlen > strval.length) strval = "0" + strval;
|
120
114
|
|