Files
@ b55ea037fd35
Branch filter:
Location: Tetris/tetris.py - annotation
b55ea037fd35
1.2 KiB
text/x-python
transformace na řídkou matici
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 b55ea037fd35 b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 ac1b7e45a643 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)
head.left.right=c
c.left=head.left
head.left=c
c.right=head
columns.append(c)
for row in matrix:
cells=[]
for (item,col) in zip(row,columns):
if item!=1: continue
c=Cell(up=col.up,down=col,col=col)
col.up.down=c
col.up=c
cells.append(c)
c.right=cells[0]
c.left=cells[0].left
c.left.right=c
c.right.left=c
head.search()
|