login
Triangle of 2-parameter triangular numbers, read by rows. T(n, k) = (n*(n + 1) + k*(k + 1)) / 2.
2

%I #23 Dec 08 2023 12:40:16

%S 0,1,2,3,4,6,6,7,9,12,10,11,13,16,20,15,16,18,21,25,30,21,22,24,27,31,

%T 36,42,28,29,31,34,38,43,49,56,36,37,39,42,46,51,57,64,72,45,46,48,51,

%U 55,60,66,73,81,90,55,56,58,61,65,70,76,83,91,100,110

%N Triangle of 2-parameter triangular numbers, read by rows. T(n, k) = (n*(n + 1) + k*(k + 1)) / 2.

%C If the rows of the triangle are extended for k > n, the array A144216 is created, which is symmetrical to the main diagonal and therefore contains no new information compared to this triangle.

%F Recurrence: T(n, n) = n + T(n, n-1) starting with T(0, 0) = 0.

%F For k <> n: T(n, k) = n + T(n-1, k).

%F T(n, k) = t(n) + t(k), where t(n) are the triangular numbers A000217.

%F G.f.: (x + x*(2 - 5*x + x^2)*y + x^4*y^2)/((1 - x)^3*(1 - x*y)^3). - _Stefano Spezia_, Dec 07 2023

%e Triangle T(n, k) starts:

%e 0 | 0;

%e 1 | 1, 2;

%e 2 | 3, 4, 6;

%e 3 | 6, 7, 9, 12;

%e 4 | 10, 11, 13, 16, 20;

%e 5 | 15, 16, 18, 21, 25, 30;

%e 6 | 21, 22, 24, 27, 31, 36, 42;

%e 7 | 28, 29, 31, 34, 38, 43, 49, 56;

%e 8 | 36, 37, 39, 42, 46, 51, 57, 64, 72;

%e 9 | 45, 46, 48, 51, 55, 60, 66, 73, 81, 90;

%e 10 | 55, 56, 58, 61, 65, 70, 76, 83, 91, 100, 110;

%e .

%e Start at row 0, column 0 with 0. Go down by adding the column index in step n. At row n, restart the counting and go n steps right by adding the row index in step n, then change direction and go down again by adding the column index. After 3*n steps on this path you are at T(2*n, n) which is 2*triangular(n) + (triangular(2*n) - triangular(n)) = (5*n^2 + 3*n)/2. These are the sliced heptagonal numbers A147875 (see the illustration of Leo Tavares).

%e .

%e The equation T(n, k) = (n*(n + 1) + k*(k + 1))/2 can be extended to all n, k in ZZ.

%e [n\k] ... -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...

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

%e [-5] ..., 25, 20, 16, 13, 11, 10, 10, 11, 13, 16, 20, 25, ...

%e [-4] ..., 21, 16, 12, 9, 7, 6, 6, 7, 9, 12, 16, 21, ...

%e [-3] ..., 18, 13, 9, 6, 4, 3, 3, 4, 6, 9, 13, 18, ...

%e [-2] ..., 16, 11, 7, 4, 2, 1, 1, 2, 4, 7, 11, 16, ...

%e [-1] ..., 15, 10, 6, 3, 1, 0, 0, 1, 3, 6, 10, 15, ...

%e [ 0] ..., 15, 10, 6, 3, 1, 0, 0, 1, 3, 6, 10, 15, ...

%e [ 1] ..., 16, 11, 7, 4, 2, 1, 1, 2, 4, 7, 11, 16, ...

%e [ 2] ..., 18, 13, 9, 6, 4, 3, 3, 4, 6, 9, 13, 18, ...

%e [ 3] ..., 21, 16, 12, 9, 7, 6, 6, 7, 9, 12, 16, 21, ...

%e [ 4] ..., 25, 20, 16, 13, 11, 10, 10, 11, 13, 16, 20, 25, ...

%p T := (n, k) -> (n*(n + 1) + k*(k + 1)) / 2:

%p for n from 0 to 10 do seq(T(n, k), k = 0..n) od;

%t Module[{n=1},NestList[Append[#+n,n*++n]&,{0},10]] (* or *)

%t Table[(n(n+1)+k(k+1))/2,{n,0,10},{k,0,n}] (* _Paolo Xausa_, Dec 07 2023 *)

%o (Python) # A purely additive construction:

%o from functools import cache

%o @cache

%o def a_row(n: int) -> list[int]:

%o if n == 0: return [0]

%o row = a_row(n - 1) + [0]

%o for k in range(n): row[k] += n

%o row[n] = row[n - 1] + n

%o return row

%Y Columns: A000217, A000124, A152950, A166136, A121263.

%Y Diagonals: A002378, A000290, A002061, A059100, A027689.

%Y Cf. A147875 (T(2*n, n)), A016061 (row sums), A367965 (alternating row sums), A143216 (the multiplicative equivalent), A144216 (extended array).

%K nonn,tabl

%O 0,3

%A _Peter Luschny_, Dec 07 2023