def myCanFlip(board,color,pos,direction): #shortcut x and y dirs: res=None if direction==(0,1): #slice array,get everything in y dir from pos[1] and down: res=board[:,pos[1]:pos[1]+1][pos[0]+1:] elif direction==(0,-1): #slice array,get everything in y dir from pos[1] and up: res=board[:,pos[1]:pos[1]+1][:pos[0]][::-1] elif direction==(1,0): #slice array,get everything in x dir from pos[0] and right: res=board[pos[0]:pos[0]+1].flatten()[pos[1]+1:] elif direction==(-1,0): #slice array,get everything in x dir from pos[0] and left: res=board[pos[0]:pos[0]+1].flatten()[:pos[1]][::-1] else: return canFlip(board,color,pos,direction); if res!=None: res=res.flatten(); #print res, direction, pos #print "x or y dir" for elem in res: if elem==color: print res, direction, pos return True elif elem=='.': return False
def myValidMove(board,color,pos): if board[pos[0]][pos[1]] != '.': return False #loop unrolling: if canFlip(board, color, pos, (-1,-1))\ or canFlip(board, color, pos, (-1,1))\ or canFlip(board, color, pos, (-1,0))\ or canFlip(board, color, pos, (0,1))\ or canFlip(board, color, pos, (0,-1))\ or canFlip(board, color, pos, (1,0))\ or canFlip(board, color, pos, (1,-1))\ or canFlip(board, color, pos, (1,1)): return True;