teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字

2017/09/17 15:43

投稿

退会済みユーザー
answer CHANGED
@@ -41,7 +41,7 @@
41
41
  }
42
42
  return test_array;
43
43
  }
44
- function arr_reverce(map,arr,size){
44
+ function array_reverse(map,arr,size){
45
45
  arr.forEach(function(val){
46
46
  if(val[0] >= 0 && val[0] < size[0] && val[1] >= 0 && val[1] < size[1]){
47
47
  map[val[0]][val[1]] = map[val[0]][val[1]] === '◯' ? '◎' : '◯';
@@ -51,7 +51,7 @@
51
51
  }
52
52
 
53
53
  arr = test_array(set.col, set.row, 3);//ここの第三引数が反転箇所の半径
54
- result = arr_reverce(map,arr,[col,row]);
54
+ result = array_reverse(map,arr,[col,row]);
55
55
  console.log(result);
56
56
  ```
57
57
  書いてみて気がついたのですが、反転処理を分ける必要ないですね。。。

1

追記

2017/09/17 15:43

投稿

退会済みユーザー
answer CHANGED
@@ -6,4 +6,53 @@
6
6
  ・反転座標の配列を元に入力値にその座標があれば、反転させる
7
7
  といった操作になると思います。
8
8
 
9
- JavaScript は得意でないので、回答としてコードが書けないのが残念ですが、他にもやり方や書き方がある質問だと思いますよ。
9
+ JavaScript は得意でないので、回答としてコードが書けないのが残念ですが、他にもやり方や書き方がある質問だと思いますよ。
10
+
11
+ **追記**
12
+ 上記の処理を書いてみましたが、php からの移植なので、JavaScript っぽくないです。
13
+ あと変数名等、ルールが色々おかしいですが、処理の参考になれば幸いです。
14
+ ```JavaScript
15
+ var map = [];
16
+ var col = 10; // マップ:列
17
+ var row = 10; // マップ:行
18
+ var set = {
19
+ col: 5, // 基準フラグの位置:6列目
20
+ row: 3 // 基準フラグの位置:4行目
21
+ };
22
+
23
+ for (var i=0; i<col; ++i) {
24
+ map[i] = [];
25
+ for (var j=0; j<row; ++j) {
26
+ map[i][j] = '◯';
27
+ }
28
+ }
29
+
30
+ function test_array(centerX, centerY, rectSize){
31
+ let test_array = [];
32
+ let size_x = rectSize * 2 + 1;
33
+ for(var i = 0; i < size_x ; ++i) {
34
+ test_array.push([centerX-rectSize+i, centerY-rectSize]);
35
+ test_array.push([centerX-rectSize+i, centerY+rectSize]);
36
+ }
37
+ let size_y = rectSize * 2 - 1;
38
+ for(var j = 0; j < size_y ; ++j) {
39
+ test_array.push([centerX-rectSize, centerY-rectSize+j+1]);
40
+ test_array.push([centerX+rectSize, centerY-rectSize+j+1]);
41
+ }
42
+ return test_array;
43
+ }
44
+ function arr_reverce(map,arr,size){
45
+ arr.forEach(function(val){
46
+ if(val[0] >= 0 && val[0] < size[0] && val[1] >= 0 && val[1] < size[1]){
47
+ map[val[0]][val[1]] = map[val[0]][val[1]] === '◯' ? '◎' : '◯';
48
+ }
49
+ })
50
+ return map;
51
+ }
52
+
53
+ arr = test_array(set.col, set.row, 3);//ここの第三引数が反転箇所の半径
54
+ result = arr_reverce(map,arr,[col,row]);
55
+ console.log(result);
56
+ ```
57
+ 書いてみて気がついたのですが、反転処理を分ける必要ないですね。。。
58
+ test_array の中でやってしまってかまわない気がします。