回答編集履歴

2

誤字

2017/09/17 15:43

投稿

退会済みユーザー
test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
  }
86
86
 
87
- function arr_reverce(map,arr,size){
87
+ function array_reverse(map,arr,size){
88
88
 
89
89
  arr.forEach(function(val){
90
90
 
@@ -104,7 +104,7 @@
104
104
 
105
105
  arr = test_array(set.col, set.row, 3);//ここの第三引数が反転箇所の半径
106
106
 
107
- result = arr_reverce(map,arr,[col,row]);
107
+ result = array_reverse(map,arr,[col,row]);
108
108
 
109
109
  console.log(result);
110
110
 

1

追記

2017/09/17 15:43

投稿

退会済みユーザー
test CHANGED
@@ -15,3 +15,103 @@
15
15
 
16
16
 
17
17
  JavaScript は得意でないので、回答としてコードが書けないのが残念ですが、他にもやり方や書き方がある質問だと思いますよ。
18
+
19
+
20
+
21
+ **追記**
22
+
23
+ 上記の処理を書いてみましたが、php からの移植なので、JavaScript っぽくないです。
24
+
25
+ あと変数名等、ルールが色々おかしいですが、処理の参考になれば幸いです。
26
+
27
+ ```JavaScript
28
+
29
+ var map = [];
30
+
31
+ var col = 10; // マップ:列
32
+
33
+ var row = 10; // マップ:行
34
+
35
+ var set = {
36
+
37
+ col: 5, // 基準フラグの位置:6列目
38
+
39
+ row: 3 // 基準フラグの位置:4行目
40
+
41
+ };
42
+
43
+
44
+
45
+ for (var i=0; i<col; ++i) {
46
+
47
+ map[i] = [];
48
+
49
+ for (var j=0; j<row; ++j) {
50
+
51
+ map[i][j] = '◯';
52
+
53
+ }
54
+
55
+ }
56
+
57
+
58
+
59
+ function test_array(centerX, centerY, rectSize){
60
+
61
+ let test_array = [];
62
+
63
+ let size_x = rectSize * 2 + 1;
64
+
65
+ for(var i = 0; i < size_x ; ++i) {
66
+
67
+ test_array.push([centerX-rectSize+i, centerY-rectSize]);
68
+
69
+ test_array.push([centerX-rectSize+i, centerY+rectSize]);
70
+
71
+ }
72
+
73
+ let size_y = rectSize * 2 - 1;
74
+
75
+ for(var j = 0; j < size_y ; ++j) {
76
+
77
+ test_array.push([centerX-rectSize, centerY-rectSize+j+1]);
78
+
79
+ test_array.push([centerX+rectSize, centerY-rectSize+j+1]);
80
+
81
+ }
82
+
83
+ return test_array;
84
+
85
+ }
86
+
87
+ function arr_reverce(map,arr,size){
88
+
89
+ arr.forEach(function(val){
90
+
91
+ if(val[0] >= 0 && val[0] < size[0] && val[1] >= 0 && val[1] < size[1]){
92
+
93
+ map[val[0]][val[1]] = map[val[0]][val[1]] === '◯' ? '◎' : '◯';
94
+
95
+ }
96
+
97
+ })
98
+
99
+ return map;
100
+
101
+ }
102
+
103
+
104
+
105
+ arr = test_array(set.col, set.row, 3);//ここの第三引数が反転箇所の半径
106
+
107
+ result = arr_reverce(map,arr,[col,row]);
108
+
109
+ console.log(result);
110
+
111
+ ```
112
+
113
+ 書いてみて気がついたのですが、反転処理を分ける必要ないですね。。。
114
+
115
+ test_array の中でやってしまってかまわない気がします。
116
+
117
+