@@ -7,30 +7,30 @@ class Piece:
self.variants=variants
pieces=[]
pieceSet=dict()
pieces.append(Piece([
pieceSet["sq"]=Piece([
# OO
((0,0),(0,1),(1,0),(1,1))
]))
])
pieceSet["long"]=Piece([
# OOOO
((0,0),(0,1),(0,2),(0,3)),
((0,0),(1,0),(2,0),(3,0))
pieceSet["boat"]=Piece([
# OOO
# .O.
((0,0),(0,1),(0,2),(1,1)),
((0,0),(1,0),(2,0),(1,1)),
((0,0),(1,-1),(1,0),(1,1)),
((0,0),(1,-1),(1,0),(2,0))
pieceSet["sz"]=Piece([
# .OO
# OO.
((0,0),(0,1),(1,-1),(1,0)),
@@ -40,9 +40,9 @@ pieces.append(Piece([
((0,0),(0,1),(1,1),(1,2)),
((0,0),(1,0),(1,-1),(2,-1))
pieceSet["el"]=Piece([
# O..
((0,0),(1,0),(0,1),(0,2)),
@@ -56,24 +56,27 @@ pieces.append(Piece([
((0,0),(0,1),(1,0),(2,0)),
((0,0),(1,0),(1,1),(1,2)),
((0,0),(1,0),(2,0),(2,-1))
WIDTH=5
WIDTH=8
HEIGHT=5
board=[[EMPTY]*WIDTH for r in range(HEIGHT)]
def fill(board):
def fill(board,pieces):
point=firstEmpty(board)
if not point: return True
res=[]
for p in pieces:
for (i,(k,p)) in enumerate(pieces):
if k==0: continue
for v in p.variants:
if place(board,point,v):
partialRes=fill(board)
pieces[i][0]-=1
partialRes=fill(board,pieces)
if partialRes:
res+=[((point,v), partialRes)]
remove(board,point,v)
pieces[i][0]+=1
return res
@@ -112,7 +115,7 @@ def visualise(board,tree,letter="A"):
visualise(board,rest,chr(ord(letter)+1))
res=fill(board)
res=fill(board,[[k,pieceSet[x]] for (k,x) in [(2,"sq"),(2,"el"),(2,"boat"),(2,"long"),(2,"sz")]])
if res:
visualise(board,res)
else:
Status change: