A323456 Irregular triangle read by rows: row n lists the numbers that can be obtained from the binary expansion of n by either deleting a single 0, or inserting a single 0 after any 1.
2, 1, 4, 5, 6, 2, 8, 3, 9, 10, 3, 10, 12, 11, 13, 14, 4, 16, 5, 17, 18, 5, 6, 18, 20, 7, 19, 21, 22, 6, 20, 24, 7, 21, 25, 26, 7, 22, 26, 28, 23, 27, 29, 30, 8, 32, 9, 33, 34, 9, 10, 34, 36, 11, 35, 37, 38, 10, 12, 36, 40, 11, 13, 37, 41, 42, 11, 14, 38, 42, 44
Offset: 1
Examples
From 6 = 110 we can get 11 = 3, 1010 = 10, or 1100 = 12, so row 6 is {3,10,12}. From 7 = 111 we can get 1011 = 11, 1101 = 13, or 1110 = 14, so row 7 is {11,13,14}. The triangle begins: 2, 1, 4, 5, 6, 2, 8, 3, 9, 10, 3, 10, 12, 11, 13, 14, 4, 16, 5, 17, 18, 5, 6, 18, 20, 7, 19, 21, 22, ...
Links
- Rémy Sigrist, Rows n = 1..1000, flattened
Programs
-
Mathematica
r323456[n_] := Module[{digs=IntegerDigits[n, 2]} ,Map[FromDigits[#, 2]&, Union[Map[Insert[digs, 0, #+1]&, Flatten[Position[digs, 1]]], Map[Drop[digs, {#}]&, Flatten[Position[digs, 0]]]]]] (* nth row *) a323456[{m_, n_}] := Flatten[Map[r323456, Range[m, n]]] a323456[{1,22}] (* Hartmut F. W. Hoft, Oct 24 2023 *)
-
PARI
row(n) = { my (r=Set(), w=0, s=0); while (n, my (v=1+valuation(n,2)); r = setunion(r, Set(n*2^(w+1)+s)); if (v>1, r = setunion(r, Set(n*2^(w-1)+s))); s += (n%(2^v))*2^w; w += v; n \= 2^v); r } \\ Rémy Sigrist, Jan 27 2019
-
Python
def row(n): b = bin(n)[2:] s1 = set(b[:i+1] + "0" + b[i+1:] for i in range(len(b)) if b[i] == "1") s2 = set(b[:i] + b[i+1:] for i in range(len(b)) if b[i] == "0") return sorted(int(w, 2) for w in s1 | s2) print([c for n in range(1, 23) for c in row(n)]) # Michael S. Branicky, Jul 24 2022
Extensions
More terms from Rémy Sigrist, Jan 27 2019
Comments