A101211 Triangle read by rows: n-th row is length of run of leftmost 1's, followed by length of run of 0's, followed by length of run of 1's, etc., in the binary representation of n.
1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 3, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 3, 1, 4, 1, 4, 1, 3, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 2, 3, 2, 2, 1, 2, 1, 1, 1, 2, 1, 2, 3, 2, 3, 1, 1, 4, 1, 5, 1, 5, 1, 4, 1, 1, 3, 1, 1, 1, 3, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1, 2, 2, 1
Offset: 1
Examples
Since 9 is 1001 in binary, the 9th row is 1,2,1. Since 11 is 1011 in binary, the 11th row is 1,1,2. Triangle begins: 1; 1,1; 2; 1,2; 1,1,1; 2,1; 3; 1,3;
Links
- Antti Karttunen, The rows 1..1023 of the table, flattened
Crossrefs
Programs
-
Haskell
import Data.List (group) a101211 n k = a101211_tabf !! (n-1) !! (k-1) a101211_row n = a101211_tabf !! (n-1) a101211_tabf = map (reverse . map length . group) $ tail a030308_tabf -- Reinhard Zumkeller, Dec 16 2013
-
Maple
# Maple program due to W. Edwin Clark: Runs := proc (L) local j, r, i, k; j := 1: r[j] := L[1]: for i from 2 to nops(L) do if L[i] = L[i-1] then r[j] := r[j], L[i] else j := j+1: r[j] := L[i] end if end do: [seq([r[k]], k = 1 .. j)] end proc: RunLengths := proc (L) map(nops, Runs(L)) end proc: c := proc (n) ListTools:-Reverse(convert(n, base, 2)): RunLengths(%) end proc: # Row n is obtained with the command c(n). - Emeric Deutsch, Jul 03 2017 # Maple program due to W. Edwin Clark, yielding the integer ind corresponding to a given composition (the index of the composition): ind := proc (x) local X, j, i: X := NULL: for j to nops(x) do if type(j, odd) then X := X, seq(1, i = 1 .. x[j]) end if: if type(j, even) then X := X, seq(0, i = 1 .. x[j]) end if end do: X := [X]: add(X[i]*2^(nops(X)-i), i = 1 .. nops(X)) end proc; # Clearly, ind(c(n))= n. - Emeric Deutsch, Jan 23 2018
-
Mathematica
Table[Length /@ Split@ IntegerDigits[n, 2], {n, 38}] // Flatten (* Michael De Vlieger, Jul 11 2017 *)
-
PARI
apply( {A101211_row(n)=Vecrev((n=vecextract([-1..exponent(n)], bitxor(2*n, bitor(n,1))))[^1]-n[^-1])}, [1..19]) \\ replacing older code by M. F. Hasler, Mar 24 2025
-
Python
from itertools import groupby def arow(n): return [len(list(g)) for k, g in groupby(bin(n)[2:])] def auptorow(rows): alst = [] for i in range(1, rows+1): alst.extend(arow(i)) return alst print(auptorow(38)) # Michael S. Branicky, Oct 02 2021
Formula
Extensions
More terms from Emeric Deutsch, Apr 12 2005
Comments