A144789 Consider the runs of 0's in the binary representation of n, each of these runs being on the edge of the binary representation n and/or being bounded by 1's. a(n) = the length of the shortest such run (with positive length) of 0's in binary n. a(n) = 0 if there are no runs of 0's in binary n.
0, 1, 0, 2, 1, 1, 0, 3, 2, 1, 1, 2, 1, 1, 0, 4, 3, 1, 2, 1, 1, 1, 1, 3, 2, 1, 1, 2, 1, 1, 0, 5, 4, 1, 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, 1, 2, 1, 1, 1, 1, 3, 2, 1, 1, 2, 1, 1, 0, 6, 5, 1, 4, 2, 1, 1, 3, 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 4, 1, 3, 2, 1, 1, 2, 1, 1
Offset: 1
Examples
20 in binary is 10100. The runs of 0's are as follows: 1(0)1(00). The shortest of these runs contains exactly one 0's So a(20) = 1.
Programs
-
Maple
A007814 := proc(n) local nshf,a ; a := 0 ; nshf := n ; while nshf mod 2 = 0 do nshf := nshf/2 ; a := a+1 ; od: a ; end: A144789 := proc(n) option remember ; local lp2,lp2sh,bind ; bind := convert(n,base,2) ; if add(i,i=bind) = nops(bind) then RETURN(0) ; fi; lp2 := A007814(n) ; if lp2 = 0 then A144789(floor(n/2)) ; else lp2sh := A144789(n/2^lp2) ; if lp2sh = 0 then lp2 ; else min(lp2,lp2sh) ; fi; fi; end: for n from 1 to 140 do printf("%d,",A144789(n)) ; od: # R. J. Mathar, Sep 29 2008
-
Mathematica
Table[Min[Length/@Select[Split[IntegerDigits[n,2]],MemberQ[#,0]&]],{n,120}]/.\[Infinity]->0 (* Harvey P. Dale, Jul 24 2016 *)
Extensions
Extended by R. J. Mathar, Sep 29 2008