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

回答編集履歴

3

コード修正

2019/11/28 10:00

投稿

jimbe
jimbe

スコア13395

answer CHANGED
@@ -15,12 +15,8 @@
15
15
  //int n = 0;
16
16
  //while(n < line.size() && line.get(n) != s) n++;
17
17
  //if(1 <= n && n < line.size()) cnt += n;
18
- for(int n = 0; n < line.size(); n++) {
18
+ int n = line.indexOf(s);
19
- if(line.get(n) == s) {
19
+ if(n > 0) cnt += n;
20
- cnt += n;
21
- break;
22
- }
23
- }
24
20
  }
25
21
  return cnt;
26
22
  }

2

表現修正

2019/11/28 10:00

投稿

jimbe
jimbe

スコア13395

answer CHANGED
@@ -1,4 +1,4 @@
1
- 現在のターンの石では無い石があるかは見ていますが, その先に現在のターンの石があるか, つまり ”挟んでいるか” という判定になっていないのではないでしょうか.
1
+ 現在のターンの石では無い石があるかは見ていますが, その先に現在のターンの石があるか, つまり ”挟んでいるか” という判定になっていないのではないでしょうか.
2
2
 
3
3
  二つのメソッドを修正してみました.
4
4
  ```java

1

コード追加

2019/11/28 09:10

投稿

jimbe
jimbe

スコア13395

answer CHANGED
@@ -1,1 +1,46 @@
1
- 現在のターンの石では無い石があるかは見ていますが, その先に現在のターンの石があるか, つまり ”挟んでいるか” という判定になっていないのではないでしょうか.
1
+ 現在のターンの石では無い石があるかは見ていますが, その先に現在のターンの石があるか, つまり ”挟んでいるか” という判定になっていないのではないでしょうか.
2
+
3
+ 二つのメソッドを修正してみました.
4
+ ```java
5
+ //盤面(x,y)に石sを置いた場合に反転できる石の数を数える
6
+ int countReverseStone(int x, int y, int s) {
7
+ //既に石が置かれていたら、置けない
8
+ if(ste[x][y].obverse != 0)
9
+ return -1;
10
+ //8方向をチェック
11
+ int cnt = 0;
12
+ for(int d = 0; d < 8; d++) {
13
+ ArrayList<Integer> line = new ArrayList<Integer>();
14
+ line = getLine(x, y, direction[d]);
15
+ //int n = 0;
16
+ //while(n < line.size() && line.get(n) != s) n++;
17
+ //if(1 <= n && n < line.size()) cnt += n;
18
+ for(int n = 0; n < line.size(); n++) {
19
+ if(line.get(n) == s) {
20
+ cnt += n;
21
+ break;
22
+ }
23
+ }
24
+ }
25
+ return cnt;
26
+ }
27
+
28
+ //石を置き他を反転させる
29
+ void setStoneAndReverse(int x, int y, int s) {
30
+ //8方向をチェック
31
+ for(int d = 0; d < 8; d++) {
32
+ ArrayList<Integer> p = getLine(x, y, direction[d]);
33
+ int cx = x;
34
+ int cy = y;
35
+ int n = 0;
36
+ //while(n < p.size() - 1 && p.get(n) != s) {
37
+ while(n < p.indexOf(s)) {
38
+ cx += direction[d].x;
39
+ cy += direction[d].y;
40
+ System.out.println(d);
41
+ ste[cx][cy].doReverse(ste[cx][cy].obverse);
42
+ n++;
43
+ }
44
+ }
45
+ }
46
+ ```