login

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”).

Numbers k such that in the binary expansion of k, the Hamming weight of each block differs by at most 2 from every other block of the same length.
3

%I #18 Oct 09 2024 18:31:16

%S 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,

%T 26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,

%U 49,50,51,52,53,54,55,57,58,59,60,61,62,63,64,65,66,67,68,69,70,72,73,74,75

%N Numbers k such that in the binary expansion of k, the Hamming weight of each block differs by at most 2 from every other block of the same length.

%C Leading zeros in binary expansions are ignored.

%C For any n > 0, there are A274005(n)/2 positive terms with binary length n.

%C Empirically, if t is a term, then at least one of 2*t or 2*t + 1 is also a term.

%C If t is a term, then floor(t/2) is also a term.

%C The complement with respect to the nonnegative integers is 56, 71, 112, 113, 120, 135, 142, 143, 176, 184, 199, ... - _Andrew Howroyd_, Oct 09 2024

%H Andrew Howroyd, <a href="/A357759/b357759.txt">Table of n, a(n) for n = 1..7658</a>

%H Rémy Sigrist, <a href="/A357759/a357759.gp.txt">PARI program</a>

%H <a href="/index/Bi#binary">Index entries for sequences related to binary expansion of n</a>

%e For k = 12:

%e - the binary expansion of k is "1100",

%e - blocks of length 1 have Hamming weight 0 or 1,

%e - blocks of length 2 have Hamming weight 0, 1 or 2,

%e - blocks of length 3 have Hamming weight 1 or 2,

%e - blocks of length 4 have Hamming weight 2,

%e - so 12 belongs to the sequence.

%e For k = 56:

%e - the binary expansion of 44 is "111000",

%e - blocks of length 3 have Hamming weight 0, 1, 2 or 3,

%e - so 56 does not belong to the sequence.

%o (PARI) \\ See Links section.

%o (Python)

%o def ok(n):

%o b = bin(n)[2:]

%o if "000" in b and "111" in b: return False

%o for l in range(4, len(b)-1):

%o h = set(b[i:i+l].count("1") for i in range(len(b)-l+1))

%o if max(h) - min(h) > 2: return False

%o return True

%o print([k for k in range(69) if ok(k)]) # _Michael S. Branicky_, Oct 12 2022

%Y Cf. A274005, A357758.

%K nonn,base

%O 1,3

%A _Rémy Sigrist_, Oct 12 2022

%E a(69) onwards from _Andrew Howroyd_, Oct 09 2024