Jan-05-2021, 06:28 PM
Here is my binary attempt
def lowgap(n): return (n & -n).bit_length() - 1 def igap(n): if n & 1: n >>= lowgap(n + 1) while n: g = lowgap(n) yield g n >>= g n >>= lowgap(n + 1) def maxgap(n): return max(igap(n), default=0) for n in [7, 234, 37733222, 763623, 22300033, 9862444]: print(maxgap(n), bin(n))
Output:0 0b111
1 0b11101010
4 0b10001111111100001101100110
2 0b10111010011011100111
6 0b1010101000100010110000001
2 0b100101100111110100101100