login
A285280
Array read by antidiagonals: T(m,n) = number of m-ary words of length n with cyclically adjacent elements differing by 2 or less.
30
1, 3, 1, 9, 4, 1, 27, 14, 5, 1, 81, 46, 19, 6, 1, 243, 162, 65, 24, 7, 1, 729, 574, 247, 84, 29, 8, 1, 2187, 2042, 955, 332, 103, 34, 9, 1, 6561, 7270, 3733, 1336, 417, 122, 39, 10, 1, 19683, 25890, 14649, 5478, 1717, 502, 141, 44, 11, 1
OFFSET
3,2
COMMENTS
All rows are linear recurrences with constant coefficients. See PARI script to obtain generating functions.
LINKS
EXAMPLE
Table starts (m>=3, n>=0):
1 3 9 27 81 243 729 2187 ...
1 4 14 46 162 574 2042 7270 ...
1 5 19 65 247 955 3733 14649 ...
1 6 24 84 332 1336 5478 22658 ...
1 7 29 103 417 1717 7229 30793 ...
1 8 34 122 502 2098 8980 38928 ...
1 9 39 141 587 2479 10731 47063 ...
1 10 44 160 672 2860 12482 55198 ...
MATHEMATICA
diff = 2; m0 = diff + 1; mmax = 12;
TransferGf[m_, u_, t_, v_, z_] := Array[u, m].LinearSolve[IdentityMatrix[m] - z*Array[t, {m, m}], Array[v, m]]
RowGf[d_, m_, z_] := 1 + z*Sum[TransferGf[m, Boole[# == k] &, Boole[Abs[#1 - #2] <= d] &, Boole[Abs[# - k] <= d] &, z], {k, 1, m}];
row[m_] := row[m] = CoefficientList[RowGf[diff, m, x] + O[x]^mmax, x];
T[m_ /; m >= m0, n_ /; n >= 0] := row[m][[n + 1]];
Table[T[m - n, n], {m, m0, mmax}, {n, m - m0, 0, -1}] // Flatten (* Jean-François Alcover, Jun 16 2017, adapted from PARI *)
PROG
(PARI)
TransferGf(m, u, t, v, z)=vector(m, i, u(i))*matsolve(matid(m)-z*matrix(m, m, i, j, t(i, j)), vectorv(m, i, v(i)));
RowGf(d, m, z)=1+z*sum(k=1, m, TransferGf(m, i->if(i==k, 1, 0), (i, j)->abs(i-j)<=d, j->if(abs(j-k)<=d, 1, 0), z));
for(m=3, 10, print(RowGf(2, m, x)));
for(m=3, 10, v=Vec(RowGf(2, m, x) + O(x^8)); for(n=1, length(v), print1( v[n], ", ") ); print(); );
KEYWORD
nonn,tabl
AUTHOR
Andrew Howroyd, Apr 15 2017
STATUS
approved