queens=[]
opciones=['Clean board', 'Add queen', 'Remove queen' ]
@interact
def _(queen=input_box(default=(0,0)), opcion=selector(opciones, buttons=True), auto_update=False ):
global queens
if opcion=='Clean board':
queens=[]
elif opcion=='Add queen':
if queen not in queens:
queens.append(queen)
else:
if queen in queens:
queens.remove(queen)
board=matrix(ZZ,8,8)
for x in range(8):
for y in range(8):
board[x,y]=(x+y)%2*7
for x,y in queens:
for i in range(8):
if i!=y: board[x,i]=1+(x+i)%2*5
if i!=x: board[i,y]=1+(i+y)%2*5
for i in range(-min(x,y),min(8-x,8-y)):
if i!=0: board[x+i,y+i]=1+(x+y)%2*5
for i in range(max(-x,y-7),min(8-x,y+1)):
if i!=0: board[x+i,y-i]=1+(x+y)%2*5
for x,y in queens:
if ( board[x,y]==1 or board[x,y]==6 ):
print 'Queen at (%d,%d) is threatened by another queen'%(x,y)
board[x,y]=4
else:
board[x,y]=3
show(matrix_plot(board, cmap='Oranges' ))