def rank(x, L):
    '''
    Returner antal værdier i L som er <= x.

    L er en sorteret liste af heltal.
    x er et heltal.
    Returnerer i, hvor 0 <= i <= len(L), og alle elementer
    i L[:i] <= x, og alle elementer i L[i:] > x.

    >>> rank(11, [3, 5, 8, 10, 12])
    4
    >>> rank(-11, [3, 5, 8, 10, 12])
    0
    >>> rank(42, [])
    0
    >>> rank(8, [3, 5, 8, 10, 12])
    3
    '''

    # L = [y, y, y, y, y, y, y, y, y, y, y, y, y, y, y]
    #                  ^        ^        ^
    #                 low      mid      high
    #    --- <= x --|                    |------ > x ---

    low = 0
    high = len(L)
    while low < high:
        mid = (low + high) // 2
        if L[mid] <= x:
            low = mid + 1
        else:
            high = mid

    return low


import doctest
doctest.testmod(verbose=True)
