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

回答編集履歴

4

バグ修正

2020/01/13 13:33

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -21,11 +21,12 @@
21
21
  ```java
22
22
  void Game(int bn) {
23
23
  int i = bn;
24
+ int move = BOXs[bn];
25
+ BOXs[bn] = 0;
24
- for (int move=BOXs[bn]; --move>=0; ) {
26
+ while (--move>=0) {
25
27
  i = (i+1) % 8;
26
28
  BOXs[i]++;
27
29
  }
28
- BOXs[bn] = 0;
29
30
  OneMore = (i == 3 || i == 7);
30
31
  }
31
32
  ```

3

コード修正

2020/01/13 13:33

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -19,11 +19,13 @@
19
19
  以上を踏まえた上で, i の調整をしている外側の do-while 等も含めて整理すると, 以下のようにも書けます.
20
20
  game メソッドの move 引数は不要になります.
21
21
  ```java
22
+ void Game(int bn) {
22
- int i = bn;
23
+ int i = bn;
23
- for (int move=BOXs[bn]; --move>=0; ) {
24
+ for (int move=BOXs[bn]; --move>=0; ) {
24
- i = (i+1) % 8;
25
+ i = (i+1) % 8;
25
- BOXs[i]++;
26
+ BOXs[i]++;
27
+ }
28
+ BOXs[bn] = 0;
29
+ OneMore = (i == 3 || i == 7);
26
30
  }
27
- BOXs[bn] = 0;
28
- OneMore = (i == 3 || i == 7);
29
31
  ```

2

文言追加

2020/01/13 13:24

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -16,7 +16,7 @@
16
16
  そして肝心の条件も, 最後の1つかは move==1 として, 墓地の位置は i==3 と i==7 のはずです. さらにはなぜ "!" が付いているのでしょう.
17
17
 
18
18
  ---
19
- 以上を踏まえた上で, i の調整をしている外側の while 等も整理すると, 以下のようにも書けます.
19
+ 以上を踏まえた上で, i の調整をしている外側の do-while 等も含めて整理すると, 以下のようにも書けます.
20
20
  game メソッドの move 引数は不要になります.
21
21
  ```java
22
22
  int i = bn;

1

コード追加

2020/01/13 13:22

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -13,4 +13,17 @@
13
13
  ```
14
14
  駒を配って OneMore を判定している個所ですが, まず, なぜ判定の2つの if 文が for の内と外に分かれているのでしょうか.
15
15
  2か所の「墓地」と言われた場所への配置を判定するのであれば, 2つとも内か外に一緒にあるべきではないでしょうか.
16
- そして肝心の条件も, 最後の1つかは move==1 として, 墓地の位置は i==3 と i==7 のはずです. さらにはなぜ "!" が付いているのでしょう.
16
+ そして肝心の条件も, 最後の1つかは move==1 として, 墓地の位置は i==3 と i==7 のはずです. さらにはなぜ "!" が付いているのでしょう.
17
+
18
+ ---
19
+ 以上を踏まえた上で, i の調整をしている外側の while 等も整理すると, 以下のようにも書けます.
20
+ game メソッドの move 引数は不要になります.
21
+ ```java
22
+ int i = bn;
23
+ for (int move=BOXs[bn]; --move>=0; ) {
24
+ i = (i+1) % 8;
25
+ BOXs[i]++;
26
+ }
27
+ BOXs[bn] = 0;
28
+ OneMore = (i == 3 || i == 7);
29
+ ```