cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A350530 Square array read by antidiagonals downwards: T(n,k) is the number of sequences of length n with terms in 0..k such that the (n-1)-st difference is zero, but no earlier iterated difference is zero, n, k >= 1.

Original entry on oeis.org

1, 1, 0, 1, 1, 0, 1, 2, 0, 0, 1, 3, 0, 0, 0, 1, 4, 2, 0, 0, 0, 1, 5, 4, 0, 0, 0, 0, 1, 6, 8, 0, 0, 0, 0, 0, 1, 7, 12, 4, 0, 0, 0, 0, 0, 1, 8, 18, 12, 8, 4, 0, 0, 0, 0, 1, 9, 24, 28, 36, 28, 4, 0, 0, 0, 0, 1, 10, 32, 52, 84, 116, 48, 16, 0, 0, 0, 0
Offset: 1

Views

Author

Pontus von Brömssen, Jan 03 2022

Keywords

Comments

For fixed n, T(n,k) is a quasi-polynomial of degree n-1 in k. For example, T(4,k) = (8/27)*k^3 - 2*k^2 + b(k)*k + c(k), where b and c are periodic with period 3.

Examples

			Array begins:
  n\k|  0  1  2  3  4   5    6     7     8      9     10
  ---+--------------------------------------------------
   1 |  1  1  1  1  1   1    1     1     1      1      1
   2 |  0  1  2  3  4   5    6     7     8      9     10
   3 |  0  0  0  2  4   8   12    18    24     32     40
   4 |  0  0  0  0  0   4   12    28    52     84    132
   5 |  0  0  0  0  0   8   36    84   176    332    568
   6 |  0  0  0  0  4  28  116   308   704   1396   2548
   7 |  0  0  0  0  4  48  232   728  2104   4940  11008
   8 |  0  0  0  0 16 100  556  1936  7092  19908  49364
   9 |  0  0  0  0 12 176 1348  6588 23356  74228 202504
  10 |  0  0  0  0  8 268 2492 15544 72820 259800 842688
For n = 4 and k = 6, the following T(4,6) = 12 sequences are counted: 1454, 1564, 2125, 2565, 3126, 3236, 4541, 4651, 5212, 5652, 6213, 6323.
		

Crossrefs

Rows: A000012 (n=1), A001477 (n=2), A007590 (n=3).
Columns: A000007 (k=0), A019590 (k=1), A130706 (k=2).

Programs

  • Python
    def A350530_col(k,nmax):
        d = []
        c = [0]*nmax
        while 1:
            if not d or all(d[-1][:-1]):
                if d and d[-1][-1] == 0:
                    c[len(d)-1] += 1 + (0 != 2*d[0][0] != k+1)
                elif len(d) < nmax:
                    d.append([-1])
                    for i in range(len(d)-1):
                        d[-1].append(d[-1][-1]-d[-2][i])
            while d and d[-1][0] == k:
                d.pop()
            if not d or len(d) == 1 and 2*d[0][0] >= k: return c
            for i in range(len(d)):
                d[-1][i] += 1