login
Triangle read by rows: T(n,k) = number of fountains of n coins and height k.
2

%I #48 May 31 2019 05:24:45

%S 1,0,1,0,1,0,1,1,0,1,2,0,1,4,0,1,7,1,0,1,12,2,0,1,20,5,0,1,33,11,0,1,

%T 54,22,1,0,1,88,44,2,0,1,143,85,5,0,1,232,161,12,0,1,376,302,25,0,1,

%U 609,559,52,1,0,1,986,1026,105,2,0,1,1596,1870,207,5,0,1

%N Triangle read by rows: T(n,k) = number of fountains of n coins and height k.

%C Same as A187080, with trailing zeros omitted.

%H Alois P. Heinz, <a href="/A291878/b291878.txt">Rows n = 0..1000, flattened</a>

%e T(6, 1) = 1;

%e . O O O O O O .

%e -------------------------------------------------------

%e T(6, 2) = 7;

%e .. O O ......... O O ..... O . O ..

%e . O O O O ... O O O O ... O O O O .

%e .......................................................

%e .. O ............. O ............. O ............. O ..

%e . O O O O O ... O O O O O ... O O O O O ... O O O O O .

%e -------------------------------------------------------

%e T(6, 3) = 1;

%e ... O ...

%e .. O O ..

%e . O O O .

%e -------------------------------------------------------

%e First few rows are:

%e 1;

%e 0, 1;

%e 0, 1;

%e 0, 1, 1;

%e 0, 1, 2;

%e 0, 1, 4;

%e 0, 1, 7, 1;

%e 0, 1, 12, 2;

%e 0, 1, 20, 5;

%e 0, 1, 33, 11;

%e 0, 1, 54, 22, 1;

%e 0, 1, 88, 44, 2;

%p b:= proc(n, i, h) option remember; `if`(n=0, x^h,

%p add(b(n-j, j, max(h, j)), j=1..min(i+1, n)))

%p end:

%p T:= n-> (p-> seq(coeff(p, x, i), i=0..degree(p)))(b(n, 0$2)):

%p seq(T(n), n=0..30); # _Alois P. Heinz_, Sep 05 2017

%t b[n_, i_, h_] := b[n, i, h] = If[n == 0, x^h, Sum[b[n - j, j, Max[h, j]], {j, 1, Min[i + 1, n]}]];

%t T[n_] := Table[Coefficient[#, x, i], {i, 0, Exponent[#, x]}]& @ b[n, 0, 0];

%t Table[T[n], {n, 0, 30}] // Flatten (* _Jean-François Alcover_, May 31 2019, after _Alois P. Heinz_ *)

%o (Python)

%o from sympy.core.cache import cacheit

%o from sympy import Symbol, Poly, flatten

%o x=Symbol('x')

%o @cacheit

%o def b(n, i, h): return x**h if n==0 else sum([b(n - j, j, max(h, j)) for j in range(1, min(i + 1, n) + 1)])

%o def T(n): return 1 if n==0 else Poly(b(n, 0, 0)).all_coeffs()[::-1]

%o print(flatten(map(T, range(31)))) # _Indranil Ghosh_, Sep 06 2017

%Y Row sums give A005169.

%Y Columns 0-2 give A000007, A000012, A000071.

%Y Cf. A047998, A187080.

%K nonn,tabf

%O 0,11

%A _Seiichi Manyama_, Sep 05 2017