次のマトリックスがあります。
W = [['a', 'b', 'b', 'b', 'a'],
['a', 'a', 'a', 'a', 'b'],
['a', 'b', 'a', 'b', 'b'],
['a', 'a', 'a', 'b', 'b'],
['b', 'b', 'b', 'b', 'b'],
['b', 'b', 'b', 'b', 'b']]
行列から W[x][y] を選択した場合、その特定の点の周りの文字をどのように数えることができますか? たとえば、b である W[4][1] を選択するとします。その点の周りに 3 つの a があることがわかります。しかし、コーディングによってどのように判断できますか? 私は非常に厄介なコードのピースになってしまい、行列の次元を変更すると機能しないことに気付きました。問題は、ラウンドに近いポイントを選択すると、W[y-1][(x):(x+1)].count("a")
ある種の思考が機能しないことでもありました。
繰り返しますが、助けていただければ幸いです。ありがとう!
アップデート:
W = [['K', ' ', ' ', ' ', ' '],
['K', 'K', 'K', 'K', ' '],
['K', ' ', 'K', ' ', ' '],
['K', 'K', 'K', ' ', ' '],
[' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ']]
def count_matrix(W, y, x, ch="K"):
ref = (-1, 0, 1)
occ = []
a = "K"
b = " "
for dy, dx in [(a, b) for a in ref for b in ref if (a,b)!=(0, 0)]:
if (x+dx) >= 0 and (y+dy) >= 0:
try:
occ.append(W[x+dx][y+dy])
except IndexError:
pass
return occ.count(ch)
print count_matrix(W,0,0)
これは を返します0
。