前提・実現したいこと
N×Nに分けられたマスにおいて、それぞれランダムな数字が格納されている。仮にマスが0だった場合、周囲の値があるマスの平均値を代入することとする。
発生している問題・エラーメッセージ
現在の実装では、周囲の8つのマスに必ず値がある前提でしか対応できておらず、周囲8つのマスにも0が含まれていた場合、そのマスを除いた平均値を代入する方法ができていないのが現状です。
該当のソースコード
python
1#dot[i][j]には既に値が入っております。 2 3#セルが0だった場合の処理 4for i in range(0,N): 5 for j in range(0,N): 6 if dot[i][j] == 0: 7 if i == 0 and j == 0:#左上 8 dot[i][j] = (dot[i][j+1]+dot[i+1][j]+dot[i+1][j+1])/3 9 elif i == 0 and j == N-1:#右上 10 dot[i][j] = (dot[i][j-1]+dot[i+1][j-1]+dot[i+1][j])/3 11 elif i == N-1 and j == 0:#左下 12 dot[i][j] = (dot[i-1][j]+dot[i-1][j+1]+dot[i][j+1])/3 13 elif i == N-1 and j == N-1:#右下 14 dot[i][j] = (dot[i-1][j]+dot[i-1][j-1]+dot[i][j-1])/3 15 elif i == 0:#上辺 16 dot[i][j] = (dot[i][j-1]+dot[i+1][j-1]+dot[i+1][j]+dot[i+1][j+1]+dot[i][j+1])/5 17 elif i == N-1:#下辺 18 dot[i][j] = (dot[i][j-1]+dot[i-1][j-1]+dot[i-1][j]+dot[i-1][j+1]+dot[i][j+1])/5 19 elif j == 0:#左辺 20 dot[i][j] = (dot[i-1][j]+dot[i-1][j+1]+dot[i][j]+dot[i][j+1]+dot[i+1][j]+dot[i+1][j+1])/5 21 elif j == N-1:#右辺 22 dot[i][j] = (dot[i-1][j-1]+dot[i-1][j]+dot[i][j-1]+dot[i][j]+dot[i+1][j-1]+dot[i+1][j])/5 23 else: 24 dot[i][j] = (dot[i-1][j-1]+dot[i-1][j]+dot[i-1][j+1]+dot[i][j-1]+dot[i][j]+dot[i][j+1]+dot[i+1][j-1]+dot[i+1][j]+dot[i+1][j+1])/8 25
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー