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

回答編集履歴

1

追記

2019/04/25 01:23

投稿

y.nakamura
y.nakamura

スコア190

answer CHANGED
@@ -1,9 +1,11 @@
1
+ 興味が湧いたのでデバッグしてみました。
2
+
1
3
  1. 確認の順番が「ひっくり返せるか(`can_reverse_stone()`)」→「置けるか(`check_can_reverse()`)」になっていますが逆のほうが適切です。また「置けるか」の中に「ひっくり返せるか」が含まれるため、`put_stone()`では`can_reverse_stone()`ではなく`check_can_reverse()`で確認するのが良いでしょう。
2
4
  2. `check_can_reverse()`は全座標を対象に置けるか確認しているため、ターン毎の確認としては適切に動作しません。引数に`x`,`y`を渡して、その座標について置けるか確認しましょう。
3
5
  3. `reverse_stone()`で`check_can_reverse()`を実行していますが、ひっくり返せるかどうかは確認済みなので、再確認する必要はありません。
4
6
  4. `reverse_stone()`で`length`が定義されていないため、最後の石ひっくり返す行でエラーが出ます。`can_reverse_one()`が`length`を返すようにすると良いです。
5
7
  5. `put_stone()`で指定座標に石を置いていません。
6
- 6. `display()`でxとyが逆になっています。
8
+ 6. `display()`で`x``y`が逆になっています。
7
9
 
8
10
  以上をまとめると次のようになります。
9
11
  ```python
@@ -92,8 +94,8 @@
92
94
 
93
95
  def display(self):
94
96
  print('--' * 20)
95
- for y in range(8):
97
+ for y in range(tablesize):
96
- for x in range(8):
98
+ for x in range(tablesize):
97
99
  if self.cell[x][y] == white:
98
100
  print('W', end = ' ')
99
101
  elif self.cell[x][y] == black: