Files
@ 12a9e624e418
Branch filter:
Location: Tetris/tetris.py - annotation
12a9e624e418
1.1 KiB
text/x-python
obrázky
5b557313c5f2 5b557313c5f2 b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 5b557313c5f2 ac1b7e45a643 ac1b7e45a643 5b557313c5f2 5b557313c5f2 ac1b7e45a643 b55ea037fd35 5b557313c5f2 5b557313c5f2 b55ea037fd35 b55ea037fd35 ac1b7e45a643 b55ea037fd35 ac1b7e45a643 5b557313c5f2 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 5b557313c5f2 5b557313c5f2 b55ea037fd35 b55ea037fd35 ac1b7e45a643 5b557313c5f2 5b557313c5f2 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 7a1226ab980e b55ea037fd35 ac1b7e45a643 b55ea037fd35 b55ea037fd35 b55ea037fd35 b55ea037fd35 7a1226ab980e 7a1226ab980e b55ea037fd35 7a1226ab980e 7a1226ab980e ac1b7e45a643 7a1226ab980e 5b557313c5f2 b55ea037fd35 5b557313c5f2 | from datetime import datetime
import numpy as np
from pieces import listRotations,listShifts,fits
from dlx import Header,Column,Cell
import piece_list
board=np.zeros((2,5,5))
board[0][2][2]=1
(nz,ny,nx)=board.shape
pieces=[(name,np.array(arr)) for (name,arr) in piece_list.pieces]
header=list(range(1,15))+\
[(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 ((nameA,nameB),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[nameA]]=1
row[index[nameB]]=1
for coords in fit: row[index[coords]]=1
matrix.append(row)
print(len(header),"cols")
print(len(matrix),"rows")
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()
print(datetime.now())
head.search()
print(datetime.now())
|