回答編集履歴
1
追記
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(
|
97
|
+
for y in range(tablesize):
|
96
|
-
for x in range(
|
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:
|