Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).
%I #11 Jan 05 2021 03:30:46
%S 1,4,6,35,39,49,55,57,59,536,540,560,572,624,632,776,782,784,798,880,
%T 888,900,902,912,926,944,956,964,966,968,974,984,988,16775,16783,
%U 16835,16847,16867,16871,17159,17183,17283,17311,17379,17383,17935,17951
%N A positive integer n is included if n, when written in binary, is made of run-lengths (lengths of runs of 0's as well as of runs of 1's) that form a permutation of some number of consecutive positive integers starting with 1.
%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.
%C This sequence contains those terms of A161001 that each contain a run of length 1.
%H Michael S. Branicky, <a href="/A175061/b175061.txt">Table of n, a(n) for n = 1..10000</a>
%e 536 in binary is 1000011000. This contains a run of one 1, followed by a run of four 0's, followed by a run of two 1's, followed finally by a run of three 0's. So the run lengths are (1,4,2,3). And since this is a permutation of (1,2,3,4), then 536 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 return sorted(runlengths) == list(range(1, len(runlengths)+1))
%o print([n for n in range(1, 17952) if ok(n)]) # _Michael S. Branicky_, Jan 04 2021
%o (Python) # alternate that directly generates terms
%o from itertools import permutations
%o def runlength(r): # all terms with runlengths a permutation of 1, ..., r
%o c = ['1', '0']
%o return sorted([int("".join([c[j%2]*p[j] for j in range(r)]), 2)
%o for p in permutations(range(1, r+1))])
%o def aupto(nn):
%o r, out = 1, []
%o while len(out) < nn:
%o out += runlength(r)
%o r += 1
%o return out[:nn]
%o print(aupto(47)) # _Michael S. Branicky_, Jan 04 2021
%Y Cf. A161001, A175062
%K base,nonn
%O 1,2
%A _Leroy Quet_, Dec 12 2009
%E Extended by _Ray Chandler_, Dec 16 2009