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;