Files
@ c4cd607ea28c
Branch filter:
Location: Tetris/tetris.py - annotation
c4cd607ea28c
1.1 KiB
text/x-python
skutečné dílky
b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 ac1b7e45a643 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 ac1b7e45a643 b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 ac1b7e45a643 7a1226ab980e 7a1226ab980e ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 7a1226ab980e b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 7a1226ab980e 7a1226ab980e b55ea037fd35 7a1226ab980e 7a1226ab980e ac1b7e45a643 7a1226ab980e b55ea037fd35 | import numpy as np
from pieces import listRotations,listShifts,fits
from dlx import Header,Column,Cell
board=np.zeros((1,4,3))
boat=np.array([[[0,1,0],[1,1,1]]])
sz=np.array([[[1,1,0],[0,1,1]]])
el=np.array([[[1,1,1],[1,0,0]]])
(nz,ny,nx)=board.shape
pieces=[("el1",el),("el2",el),("sz",sz)]
header=[name for (name,p) in pieces]+\
[(z,y,x) for z in range(nz) for y in range(ny) for x in range(nx) if not board[z][y][x]]
index={label:i for (i,label) in enumerate(header)}
matrix=[]
for (name,piece) in pieces:
for p in listRotations(piece):
for shift in listShifts(board,p):
fit=fits(board,p,shift)
if fit is not False:
row=[0]*len(header)
row[index[name]]=1
for coords in fit: row[index[coords]]=1
matrix.append(row)
print(header)
for row in matrix: print(row)
columns=[]
head=Header()
for label in header:
c=Column(label)
c.attachRight(head)
columns.append(c)
for row in matrix:
cells=[]
for (item,col) in zip(row,columns):
if item!=1: continue
c=Cell(col)
c.attachDown(col)
cells.append(c)
c.attachRight(cells[0])
col.size+=1
print()
head.search()
|