回答編集履歴

1

コードを修正しました。

2015/11/24 12:58

投稿

sgr-2
sgr-2

スコア294

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  var size; // 処理対象のブロックの大きさ
24
24
 
25
- var i, j; // ループ用
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(i=0;i<size;i++){
57
+ for(col=0; col<size; col++){ // 上の行を埋める
60
58
 
61
- if (i==0){ // 上の行を埋める
59
+ MTX[ptr][ptr+col] = small + 2 * (size - 1) + col;
62
60
 
63
- for(j=0;j<size;j++){
61
+ }
64
62
 
65
- MTX[ptr+i][ptr+j] = small + 2 * (size - 1) + j;
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 if (i==size-1){ // 下の行を埋める
73
+ else{ // 下の行を埋める
72
74
 
73
- for(j=0;j<size;j++){
75
+ for(col=0; col<size; col++){
74
76
 
75
- MTX[ptr+i][ptr+j] = small + size - j - 1;
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 -2, 2));
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(i=0;i<N;i++){
107
+ for(row=0; row<N; row++){
114
108
 
115
- for(j=1;j<N+1;j++){
109
+ for(col=1; col<N+1; col++){
116
110
 
117
- strval = MTX[i][j].toString();
111
+ strval = MTX[row][col].toString();
118
112
 
119
113
  while (maxlen > strval.length) strval = "0" + strval;
120
114