diff --git a/tetris.py b/tetris.py --- a/tetris.py +++ b/tetris.py @@ -1,34 +1,36 @@ +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((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]]]) +board=np.zeros((2,5,5)) +board[0][2][2]=1 (nz,ny,nx)=board.shape -pieces=[("el1",el),("el2",el),("sz",sz)] -header=[name for (name,p) in pieces]+\ +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 (name,piece) in pieces: +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[name]]=1 + row[index[nameA]]=1 + row[index[nameB]]=1 for coords in fit: row[index[coords]]=1 matrix.append(row) -print(header) -for row in matrix: print(row) +print(len(header),"cols") +print(len(matrix),"rows") columns=[] head=Header() @@ -48,4 +50,6 @@ for row in matrix: col.size+=1 print() +print(datetime.now()) head.search() +print(datetime.now())