概要
A Figure on Surface
コード
itertoolsを使用
import itertools
def matched(area, ptn):
#print(area)
ret = False
if ptn == 0:
if len(area) >= 2 and len(area[0]) >= 2 and area[0][0] == "1" and area[0][1] == "1" and area[1][0] == "1" and area[1][1] == "1":
ret = True
elif ptn == 1:
if len(area) >= 4 and len(area[0]) >= 1 and area[0][0] == "1" and area[1][0] == "1" and area[2][0] == "1" and area[3][0] == "1":
ret = True
elif ptn == 2:
if len(area) >= 0 and len(area[0]) >= 4 and area[0][0] == "1" and area[0][1] == "1" and area[0][2] == "1" and area[0][3] == "1":
ret = True
elif ptn == 3:
if len(area) >= 3 and len(area[0]) >= 2 and area[1][0] == "1" and area[2][0] == "1" and area[0][1] == "1" and area[0][2] == "1":
ret = True
elif ptn == 4:
if len(area) >= 2 and len(area[0]) >= 3 and area[0][0] == "1" and area[0][1] == "1" and area[1][1] == "1" and area[1][2] == "1":
ret = True
elif ptn == 5:
if len(area) >= 3 and len(area[0]) >= 2 and area[0][0] == "1" and area[1][0] == "1" and area[1][1] == "1" and area[2][1] == "1":
ret = True
elif ptn == 6:
if len(area) >= 2 and len(area[0]) >= 3 and area[0][1] == "1" and area[1][0] == "1" and area[1][1] == "1" and area[2][1] == "1":
ret = True
return ret
def A_Figure_on_Surface(area):
ret = []
for x, y, ptn in itertools.product(range(len(area)), range(len(area[0])), range(7+1)):
if matched([[area[i][j] for j in range(y, len(area[0]))] for i in range(x, len(area))], ptn):
ret.append([x, y, ptn])
break
return ret
def hoge(*args):
ret = []
for arg in args:
print(arg)
ret.append(A_Figure_on_Surface(arg))
return ret
print(hoge(
["00000000",
"00000000",
"01100000",
"00110000",
"00000000",
"00000000",
"00000000",
"00000000",
],[
"00011110",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",],
[
"00000000",
"00000000",
"00110000",
"00110000",
"00000000",
"00000000",
"00000000",
"00000000",]
))
実行結果
デバッグログ出力部含む
['00000000', '00000000', '01100000', '00110000', '00000000', '00000000', '00000000', '00000000']
['00011110', '00000000', '00000000', '00000000', '00000000', '00000000', '00000000', '00000000']
['00000000', '00000000', '00110000', '00110000', '00000000', '00000000', '00000000', '00000000']
[[[2, 1, 4]], [[0, 3, 2]], [[2, 2, 0]]]