下の表のように方向を決める数字があり、その方向に+1をしたいです。
〇の部分が3の場合、〇の下のマスに+1をするといった感じです。
また+1されたマスが3の場合、下のマスに+2をして最終的な累積量を知りたいです。
|0|x1|x2|x3|:|x1|x2|x3|
|:--|:--:|--:|
|y1|6|7|8|:|↖|↑|↗
|y2|5|〇|1|:|←|〇|→
|y3|4|3|2|:|↙|↓|↘
例えば下の表であれば、求めている実行結果は一番右の表の部分です。
|0|x1|x2|x3| :|x1|x2|x3|:|x1|x2|x3
|:--|:--:|--|
|y1|3|1|8|:|↓|→|↗|:|0|1|8|
|y2|2|7|7|:|↘|↑|↑|:|1|0|5|
|y3|1|8|7|:|→|↗|↑|:|0|3|0|
python
1Q = np.full((3,3),0) 2 3for a in range(3): 4 for b in range(3): 5 if K[a][b] == 1: 6 Q[a][b+1] += 1 7 elif K[a][b] == 2: 8 Q[a+1][b+1] += 1 9 elif K[a][b] == 3: 10 Q[a+1][b] += 1 11 elif K[a][b] == 4: 12 Q[a+1][b-1] += 1 13 elif K[a][b] == 5: 14 Q[a][b-1] += 1 15 elif K[a][b] == 6: 16 Q[a-1][b-1] += 1 17 elif K[a][b] == 7: 18 Q[a-1][b] += 1 19 elif K[a][b] == 8: 20 Q[a-1][b+1] += 1 21 22print(Q)
それぞれの方向で場合分けして最初の+1をするところまでは、何とか出来たのですが累積量まで自力でたどり着けませんでした。
自分の実行結果↓
|0|x1|x2|x3|
|:--|:--:|--:|
|y1|0|1|2
|y2|1|0|2|
|y3|0|2|0|
回答1件
あなたの回答
tips
プレビュー