login
The OEIS is supported by the many generous donors to the OEIS Foundation.

 

Logo
Hints
(Greetings from The On-Line Encyclopedia of Integer Sequences!)
A161001 Those positive integers n that when read in binary contains runs of 0's and 1's being of distinct lengths, the list of lengths forming a permutation of some number of consecutive positive integers. 3

%I #12 Jan 05 2021 03:30:02

%S 1,3,4,6,7,15,24,28,31,35,39,49,55,57,59,63,112,120,127,255,391,399,

%T 451,463,480,483,487,496,511,536,540,560,572,624,632,776,782,784,798,

%U 880,888,900,902,912,926,944,956,964,966,968,974,984,988,1023,1984,2016

%N Those positive integers n that when read in binary contains runs of 0's and 1's being of distinct lengths, the list of lengths forming a permutation of some number of consecutive positive integers.

%C Think of binary n as a string S of 0's and 1's. By a "run" of 0's or 1's, it is meant either a substring all of contiguous 0's, each run bounded by 1's or the edge of S; or a substring all of contiguous 1's, each run bounded by 0's or the edge of S.

%H Michael S. Branicky, <a href="/A161001/b161001.txt">Table of n, a(n) for n = 1..10000</a>

%e 451 in binary is 111000011. This contains a run of three 1's, followed by a run of four 0's, followed by a run of two 1's. Since (3,4,2) is a permutation of some number of consecutive positive integers (2,3,4), then 451 is in the sequence.

%o (Python)

%o from itertools import groupby

%o def ok(n):

%o runlengths = [len(list(g)) for k, g in groupby(bin(n)[2:])]

%o minrl = min(runlengths)

%o return sorted(runlengths) == list(range(minrl, minrl+len(runlengths)))

%o print([n for n in range(1, 2021) if ok(n)]) # _Michael S. Branicky_, Jan 04 2021

%o (Python) # alternate that directly generates terms

%o from itertools import permutations

%o def runlengths(k, r): # all terms with runlengths a permutation of k, ..., r

%o c = ['1', '0']

%o return sorted([int("".join([c[j%2]*p[j] for j in range(r-k+1)]), 2)

%o for p in permutations(range(k, r+1))])

%o def aupto(nn):

%o digits, k, r, out = 1, 1, 1, []

%o while len(out) < nn:

%o for r in range(1, digits + 1):

%o for k in range(1, r + 1):

%o if sum(range(k, r+1)) == digits:

%o out += runlengths(k, r)

%o digits += 1

%o return sorted(set(out))[:nn]

%o print(aupto(56)) # _Michael S. Branicky_, Jan 04 2021

%Y Cf. A161000.

%K base,nonn

%O 1,2

%A _Leroy Quet_, Jun 01 2009

%E Extended by _Ray Chandler_, Jun 13 2009

Lookup | Welcome | Wiki | Register | Music | Plot 2 | Demos | Index | Browse | More | WebCam
Contribute new seq. or comment | Format | Style Sheet | Transforms | Superseeker | Recents
The OEIS Community | Maintained by The OEIS Foundation Inc.

License Agreements, Terms of Use, Privacy Policy. .

Last modified April 25 07:53 EDT 2024. Contains 371964 sequences. (Running on oeis4.)