l配列内に隣接場所にr配列を置きたいが、位置がズレる。
python
1 2 3#l=[['0' for _ in range(5)] for _ in range(5)] 4 5 6 7l=[ 8 ['0', '0', '0', '0', '0'], 9 ['0', 'A', '0', '0', '0'], 10 ['0', '0', '0', '0', '0'], 11 ['0', '0', '0', '0', '0'], 12 ['0', '0', '0', '0', '0']] 13 14 15r=[ 16 ['0', '0', '0'], 17 ['0', 'B', 'B'], 18 ['0', '0', '0']] 19 20# ブロックの中央座標から隣接マスの取得 21INDEX01=[] 22INDEX02=[] 23 24# ブロックの置ける中央座標を取得 25for k,v in enumerate(l): 26 if 'A' in v: 27 INDEX01.append([k,v.index('A')]) 28# ブロックの置ける周囲座標を取得 29INDEX02.append([[INDEX01[0][0]-1,INDEX01[0][1]-1],[INDEX01[0][0]-1,INDEX01[0][1]],[INDEX01[0][0]-1,INDEX01[0][1]+1],[INDEX01[0][0],INDEX01[0][1]-1],INDEX01[0],[INDEX01[0][0],INDEX01[0][1]+1],[INDEX01[0][0-1],INDEX01[0][1]-1],[INDEX01[0][0]+1,INDEX01[0][1]],[INDEX01[0][0]+1,INDEX01[0][1]+1]]) 30 31 32from pprint import pprint 33 34 35print(INDEX02) 36 37 38 39# x=座標x y=座標y z=埋め込む配列 Warehouse_Slot[][] 40def Sample_Demo01(x,y,z): 41 for i_r, i_l in enumerate(range(x, min((x+3, 9)))): 42 for j_r, j_l in enumerate(range(y, min((y+3, 9)))): 43 if l[j_l][i_l]=='0':l[j_l][i_l]=z[j_r][i_r] 44 else:pass 45 pprint(l) 46 47 48Sample_Demo01(2,2,r) 49
python
1# 想定される置かれる場所 常にココから選ぶ 2[[[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [1, 0], [2, 1], [2, 2]]] 3 4# 2 2に配置 5 6# 想定される場所に置いたが、Aと隣接してない。 7[['0', '0', '0', '0', '0'], 8 ['0', 'A', '0', '0', '0'], 9 ['0', '0', '0', '0', '0'], 10 ['0', '0', '0', 'B', 'B'], 11 ['0', '0', '0', '0', '0']]
この場合、どの用に対処すれば良いのでしょうか?
[2,2]を選んだ場合に
下記の用に対処したいです。
python
1 2 3l=[ 4 ['0', '0', '0', '0', '0'], 5 ['0', 'A', '0', '0', '0'], 6 ['0', '0', 'B', 'B', '0'], 7 ['0', '0', '0', '0', '0'], 8 ['0', '0', '0', '0', '0']] 9
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。