# Python 2, 75 * 0.5 = 37.5

<!-- language: lang-python -->

    N=2**input()-1
    v=N-~N
    while v:t=1+(v|~-v);v=N&t|~-(t&-t)/(v&-v)/2;print v^N


Repeatedly generates the next highest `v` with the same POPCOUNT by [this bit-twiddling algorithm][1]. 

Actually, it turned out easier to generate them in decreasing pop-count, then print the complement to make it increasing. That way, then `v` overflows `2**n`, we simply remove all but `n` bits with `&N` where `N=2**n-1`, and that gives the smallest number one popcount lower. That way, we can just do one loop. There's probably a better solution that directly finds the next *lower* number with the same POPCOUNT.

Due to a fencepost issue, we need to start with `v=2**(n+1)-1` so that the operation produces `v=N-1` on the first loop.

Output for `4`:

    0
    8
    4
    2
    1
    12
    10
    9
    6
    5
    3
    14
    13
    11
    7
    15

  [1]: https://stackoverflow.com/q/8281951