import random
import numpy as np
import collections
from pprint import pprint
# サイコロの準備
Dice=[i for i in range(1,12)]
# MAP
#l=[['0' for i in range(9)] for j in range(9)]
l=[
['0', '0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', 'A', '0', '0', '0', '0'],
['0', '0', '0', 'B', '0', 'D', '0', '0', '0'],
['0', '0', '0', '0', 'C', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0', '0', '0'],
['0', '0', '0', '0', '0', '0', '0', '0', '0']]
# ユーザー情報 ポイント
USE=[5,5,5,5]
# 回転済み ブロック
Warehouse_Slot=[[[['1', '0', '0'], ['0', '0', '0'], ['0', '0', '0']], [['0', '0', '1'], ['0', '0', '0'], ['0', '0', '0']], [['0', '0', '0'], ['0', '0', '0'], ['0', '0', '1']], [['0', '0', '0'], ['0', '0', '0'], ['1', '0', '0']]], [[['2', '2', '0'], ['0', '0', '0'], ['0', '0', '0']], [['0', '0', '2'], ['0', '0', '2'], ['0', '0', '0']], [['0', '0', '0'], ['0', '0', '0'], ['0', '2', '2']], [['0', '0', '0'], ['2', '0', '0'], ['2', '0', '0']]], [[['2', '0', '2'], ['0', '0', '0'], ['0', '0', '0']], [['0', '0', '2'], ['0', '0', '0'], ['0', '0', '2']], [['0', '0', '0'], ['0', '0', '0'], ['2', '0', '2']], [['2', '0', '0'], ['0', '0', '0'], ['2', '0', '0']]], [[['2', '0', '0'], ['0', '2', '0'], ['0', '0', '0']], [['0', '0', '2'], ['0', '2', '0'], ['0', '0', '0']], [['0', '0', '0'], ['0', '2', '0'], ['0', '0', '2']], [['0', '0', '0'], ['0', '2', '0'], ['2', '0', '0']]], [[['0', '3', '0'], ['3', '3', '3'], ['0', '0', '0']], [['0', '3', '0'], ['0', '3', '3'], ['0', '3', '0']], [['0', '0', '0'], ['3', '3', '3'], ['0', '3', '0']], [['0', '3', '0'], ['3', '3', '0'], ['0', '3', '0']]], [[['3', '3', '0'], ['3', '0', '0'], ['0', '0', '0']], [['0', '3', '3'], ['0', '0', '3'], ['0', '0', '0']], [['0', '0', '0'], ['0', '0', '3'], ['0', '3', '3']], [['0', '0', '0'], ['3', '0', '0'], ['3', '3', '0']]], [[['0', '5', '0'], ['0', '5', '0'], ['5', '5', '5']], [['5', '0', '0'], ['5', '5', '5'], ['5', '0', '0']], [['5', '5', '5'], ['0', '5', '0'], ['0', '5', '0']], [['0', '0', '5'], ['5', '5', '5'], ['0', '0', '5']]], [[['6', '6', '0'], ['6', '0', '0'], ['6', '6', '0']], [['6', '6', '6'], ['6', '0', '6'], ['0', '0', '0']], [['0', '6', '6'], ['0', '0', '6'], ['0', '6', '6']], [['0', '0', '0'], ['6', '0', '6'], ['6', '6', '6']]], [[['0', '7', '7'], ['7', '7', '0'], ['7', '0', '0']], [['7', '7', '0'], ['0', '7', '7'], ['0', '0', '7']], [['0', '0', '7'], ['0', '7', '7'], ['7', '7', '0']], [['7', '0', '0'], ['7', '7', '0'], ['0', '7', '7']]]]
# ブロックの費用と報酬
Warehouse_Slot_Bloku=[1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 12, 12, 12, 9, 9, 9, 9, 25, 25, 25, 25, 30, 30, 30, 30, 35, 35, 35, 35]
# サイコロの値
def Sample_Demo_New_Bloku_Random_Number():
global Dice
return random.choice(Dice)
# x=座標x y=座標y z=埋め込む配列 Warehouse_Slot[][]
def Sample_Demo01(x,y,z):
for i_r, i_l in enumerate(range(x, min((x+3, 9)))):
for j_r, j_l in enumerate(range(y, min((y+3, 9)))):
if l[j_l][i_l]=='0':l[j_l][i_l]=z[j_r][i_r]
else:pass
pprint(l)
# 各MAP要素の合計
def Sample_Demo_New_Bloku_Initialization(xyz):
c=[]
for i in range(len(xyz)):
c.append(collections.Counter(xyz[i]))
for j in range(len(c)-1):
c[0]+=c[j+1]
return c[0]
# ブロックの中央座標から隣接マスの取得
INDEX01=[]
INDEX02=[]
# ブロックの置ける中央座標を取得
def Sample_Demo00_index01(xyz):
for k,v in enumerate(l):
if xyz in v:INDEX01.append([k,v.index(xyz)])
Sample_Demo00_index02()
# ブロックの置ける周囲座標を取得
def Sample_Demo00_index02():
global INDEX01
INDEX02.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]])
pprint(l)
# ユーザーAが置ける範囲のindexを取得
Sample_Demo00_index01('A')
print(INDEX02),print()
# ブロックを置く ユーザーIDが未定
Sample_Demo01(0,0,Warehouse_Slot[8][0])
# 要素のカウント
print(Sample_Demo_New_Bloku_Initialization(l))
aW1wb3J0IHJhbmRvbQppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IGNvbGxlY3Rpb25zCmZyb20gcHByaW50IGltcG9ydCBwcHJpbnQKCiMg44K144Kk44Kz44Ot44Gu5rqW5YKZCkRpY2U9W2kgZm9yIGkgaW4gcmFuZ2UoMSwxMildCiMgTUFQCiNsPVtbJzAnIGZvciBpIGluIHJhbmdlKDkpXSBmb3IgaiBpbiByYW5nZSg5KV0KbD1bCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnQScsICcwJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJ0InLCAnMCcsICdEJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnQycsICcwJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJ10sCiBbJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJywgJzAnLCAnMCcsICcwJ11dCgoKIyDjg6bjg7zjgrbjg7zmg4XloLHjgIDjg53jgqTjg7Pjg4gKVVNFPVs1LDUsNSw1XQoKIyDlm57ou6LmuIjjgb/jgIDjg5bjg63jg4Pjgq8KV2FyZWhvdXNlX1Nsb3Q9W1tbWycxJywgJzAnLCAnMCddLCBbJzAnLCAnMCcsICcwJ10sIFsnMCcsICcwJywgJzAnXV0sIFtbJzAnLCAnMCcsICcxJ10sIFsnMCcsICcwJywgJzAnXSwgWycwJywgJzAnLCAnMCddXSwgW1snMCcsICcwJywgJzAnXSwgWycwJywgJzAnLCAnMCddLCBbJzAnLCAnMCcsICcxJ11dLCBbWycwJywgJzAnLCAnMCddLCBbJzAnLCAnMCcsICcwJ10sIFsnMScsICcwJywgJzAnXV1dLCBbW1snMicsICcyJywgJzAnXSwgWycwJywgJzAnLCAnMCddLCBbJzAnLCAnMCcsICcwJ11dLCBbWycwJywgJzAnLCAnMiddLCBbJzAnLCAnMCcsICcyJ10sIFsnMCcsICcwJywgJzAnXV0sIFtbJzAnLCAnMCcsICcwJ10sIFsnMCcsICcwJywgJzAnXSwgWycwJywgJzInLCAnMiddXSwgW1snMCcsICcwJywgJzAnXSwgWycyJywgJzAnLCAnMCddLCBbJzInLCAnMCcsICcwJ11dXSwgW1tbJzInLCAnMCcsICcyJ10sIFsnMCcsICcwJywgJzAnXSwgWycwJywgJzAnLCAnMCddXSwgW1snMCcsICcwJywgJzInXSwgWycwJywgJzAnLCAnMCddLCBbJzAnLCAnMCcsICcyJ11dLCBbWycwJywgJzAnLCAnMCddLCBbJzAnLCAnMCcsICcwJ10sIFsnMicsICcwJywgJzInXV0sIFtbJzInLCAnMCcsICcwJ10sIFsnMCcsICcwJywgJzAnXSwgWycyJywgJzAnLCAnMCddXV0sIFtbWycyJywgJzAnLCAnMCddLCBbJzAnLCAnMicsICcwJ10sIFsnMCcsICcwJywgJzAnXV0sIFtbJzAnLCAnMCcsICcyJ10sIFsnMCcsICcyJywgJzAnXSwgWycwJywgJzAnLCAnMCddXSwgW1snMCcsICcwJywgJzAnXSwgWycwJywgJzInLCAnMCddLCBbJzAnLCAnMCcsICcyJ11dLCBbWycwJywgJzAnLCAnMCddLCBbJzAnLCAnMicsICcwJ10sIFsnMicsICcwJywgJzAnXV1dLCBbW1snMCcsICczJywgJzAnXSwgWyczJywgJzMnLCAnMyddLCBbJzAnLCAnMCcsICcwJ11dLCBbWycwJywgJzMnLCAnMCddLCBbJzAnLCAnMycsICczJ10sIFsnMCcsICczJywgJzAnXV0sIFtbJzAnLCAnMCcsICcwJ10sIFsnMycsICczJywgJzMnXSwgWycwJywgJzMnLCAnMCddXSwgW1snMCcsICczJywgJzAnXSwgWyczJywgJzMnLCAnMCddLCBbJzAnLCAnMycsICcwJ11dXSwgW1tbJzMnLCAnMycsICcwJ10sIFsnMycsICcwJywgJzAnXSwgWycwJywgJzAnLCAnMCddXSwgW1snMCcsICczJywgJzMnXSwgWycwJywgJzAnLCAnMyddLCBbJzAnLCAnMCcsICcwJ11dLCBbWycwJywgJzAnLCAnMCddLCBbJzAnLCAnMCcsICczJ10sIFsnMCcsICczJywgJzMnXV0sIFtbJzAnLCAnMCcsICcwJ10sIFsnMycsICcwJywgJzAnXSwgWyczJywgJzMnLCAnMCddXV0sIFtbWycwJywgJzUnLCAnMCddLCBbJzAnLCAnNScsICcwJ10sIFsnNScsICc1JywgJzUnXV0sIFtbJzUnLCAnMCcsICcwJ10sIFsnNScsICc1JywgJzUnXSwgWyc1JywgJzAnLCAnMCddXSwgW1snNScsICc1JywgJzUnXSwgWycwJywgJzUnLCAnMCddLCBbJzAnLCAnNScsICcwJ11dLCBbWycwJywgJzAnLCAnNSddLCBbJzUnLCAnNScsICc1J10sIFsnMCcsICcwJywgJzUnXV1dLCBbW1snNicsICc2JywgJzAnXSwgWyc2JywgJzAnLCAnMCddLCBbJzYnLCAnNicsICcwJ11dLCBbWyc2JywgJzYnLCAnNiddLCBbJzYnLCAnMCcsICc2J10sIFsnMCcsICcwJywgJzAnXV0sIFtbJzAnLCAnNicsICc2J10sIFsnMCcsICcwJywgJzYnXSwgWycwJywgJzYnLCAnNiddXSwgW1snMCcsICcwJywgJzAnXSwgWyc2JywgJzAnLCAnNiddLCBbJzYnLCAnNicsICc2J11dXSwgW1tbJzAnLCAnNycsICc3J10sIFsnNycsICc3JywgJzAnXSwgWyc3JywgJzAnLCAnMCddXSwgW1snNycsICc3JywgJzAnXSwgWycwJywgJzcnLCAnNyddLCBbJzAnLCAnMCcsICc3J11dLCBbWycwJywgJzAnLCAnNyddLCBbJzAnLCAnNycsICc3J10sIFsnNycsICc3JywgJzAnXV0sIFtbJzcnLCAnMCcsICcwJ10sIFsnNycsICc3JywgJzAnXSwgWycwJywgJzcnLCAnNyddXV1dCiMg44OW44Ot44OD44Kv44Gu6LK755So44Go5aCx6YWsCldhcmVob3VzZV9TbG90X0Jsb2t1PVsxLCAxLCAxLCAxLCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCAxMiwgMTIsIDEyLCAxMiwgOSwgOSwgOSwgOSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMCwgMzAsIDMwLCAzNSwgMzUsIDM1LCAzNV0KCgojIOOCteOCpOOCs+ODreOBruWApApkZWYgU2FtcGxlX0RlbW9fTmV3X0Jsb2t1X1JhbmRvbV9OdW1iZXIoKToKCWdsb2JhbCBEaWNlCglyZXR1cm4gcmFuZG9tLmNob2ljZShEaWNlKQoKCiMgeD3luqfmqJl4IHk95bqn5qiZeSB6PeWfi+OCgei+vOOCgOmFjeWIlyAgV2FyZWhvdXNlX1Nsb3RbXVtdCmRlZiBTYW1wbGVfRGVtbzAxKHgseSx6KToKCWZvciBpX3IsIGlfbCBpbiBlbnVtZXJhdGUocmFuZ2UoeCwgbWluKCh4KzMsIDkpKSkpOgoJCWZvciBqX3IsIGpfbCBpbiBlbnVtZXJhdGUocmFuZ2UoeSwgbWluKCh5KzMsIDkpKSkpOgoJCQlpZiBsW2pfbF1baV9sXT09JzAnOmxbal9sXVtpX2xdPXpbal9yXVtpX3JdCgkJCWVsc2U6cGFzcwoJcHByaW50KGwpCgoKIyDlkIRNQVDopoHntKDjga7lkIjoqIgKZGVmIFNhbXBsZV9EZW1vX05ld19CbG9rdV9Jbml0aWFsaXphdGlvbih4eXopOgoJYz1bXQoJZm9yIGkgaW4gcmFuZ2UobGVuKHh5eikpOgoJCWMuYXBwZW5kKGNvbGxlY3Rpb25zLkNvdW50ZXIoeHl6W2ldKSkKCWZvciBqIGluIHJhbmdlKGxlbihjKS0xKToKCQljWzBdKz1jW2orMV0KCXJldHVybiBjWzBdCgoKIyDjg5bjg63jg4Pjgq/jga7kuK3lpK7luqfmqJnjgYvjgonpmqPmjqXjg57jgrnjga7lj5blvpcKSU5ERVgwMT1bXQpJTkRFWDAyPVtdCiMg44OW44Ot44OD44Kv44Gu572u44GR44KL5Lit5aSu5bqn5qiZ44KS5Y+W5b6XCmRlZiBTYW1wbGVfRGVtbzAwX2luZGV4MDEoeHl6KToKCWZvciBrLHYgaW4gZW51bWVyYXRlKGwpOgoJCWlmIHh5eiBpbiB2OklOREVYMDEuYXBwZW5kKFtrLHYuaW5kZXgoeHl6KV0pCglTYW1wbGVfRGVtbzAwX2luZGV4MDIoKQojIOODluODreODg+OCr+OBrue9ruOBkeOCi+WRqOWbsuW6p+aomeOCkuWPluW+lwpkZWYgU2FtcGxlX0RlbW8wMF9pbmRleDAyKCk6CglnbG9iYWwgSU5ERVgwMQoJSU5ERVgwMi5hcHBlbmQoW1tJTkRFWDAxWzBdWzBdLTEsSU5ERVgwMVswXVsxXS0xXSxbSU5ERVgwMVswXVswXS0xLElOREVYMDFbMF1bMV1dLFtJTkRFWDAxWzBdWzBdLTEsSU5ERVgwMVswXVsxXSsxXSxbSU5ERVgwMVswXVswXSxJTkRFWDAxWzBdWzFdLTFdLElOREVYMDFbMF0sW0lOREVYMDFbMF1bMF0sSU5ERVgwMVswXVsxXSsxXSxbSU5ERVgwMVswXVswLTFdLElOREVYMDFbMF1bMV0tMV0sW0lOREVYMDFbMF1bMF0rMSxJTkRFWDAxWzBdWzFdXSxbSU5ERVgwMVswXVswXSsxLElOREVYMDFbMF1bMV0rMV1dKQoKcHByaW50KGwpCgojIOODpuODvOOCtuODvEHjgYznva7jgZHjgovnr4Tlm7Ljga5pbmRleOOCkuWPluW+lwpTYW1wbGVfRGVtbzAwX2luZGV4MDEoJ0EnKQpwcmludChJTkRFWDAyKSxwcmludCgpCgojIOODluODreODg+OCr+OCkue9ruOBj+OAgOODpuODvOOCtuODvElE44GM5pyq5a6aClNhbXBsZV9EZW1vMDEoMCwwLFdhcmVob3VzZV9TbG90WzhdWzBdKQoKIyDopoHntKDjga7jgqvjgqbjg7Pjg4gKcHJpbnQoU2FtcGxlX0RlbW9fTmV3X0Jsb2t1X0luaXRpYWxpemF0aW9uKGwpKQo=