def getValidStates(Array, currentPos):
    """

    A valid move is consider:
        UP   : A[i-1][j]
        DOWN : A[i+1][j]
        LEFT : A[i][j-1]
        RIGHT: A[i][j+1]

    but with the condition the cell isn't marked with 1 (WALL) or isn't out of bounds
    Returns a tuple int Array containing the possible Moves (Line,Collum)

    :param Array: 2dArray
    :type currentPos: tuple

    :rtype: tuple
    """
    ROWS = len(Array)
    COLUMNS = len(Array[0])

    i, j = currentPos
    L = []

    if j != 0:  # LEFT : A[i][j-1]
        if Array[i][j - 1] != 1:  # Not a WALL cell
            L.append((i, j - 1))

    if i != 0:  # UP   : A[i-1][j]
        if Array[i - 1][j] != 1:  # Not a WALL cell
            L.append((i - 1, j))

    if j != COLUMNS - 1:  # RIGHT: A[i][j+1]
        if Array[i][j + 1] != 1:  # Not a WALL cell
            L.append((i, j + 1))

    if i != ROWS - 1:  # DOWN : A[i+1][j]
        if Array[i + 1][j] != 1:  # Not a WALL cell
            L.append((i + 1, j))
    return L