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.

A269921 Triangle read by rows: T(n,f) is the number of rooted maps with n edges and f faces on an orientable surface of genus 1.

Original entry on oeis.org

1, 10, 10, 70, 167, 70, 420, 1720, 1720, 420, 2310, 14065, 24164, 14065, 2310, 12012, 100156, 256116, 256116, 100156, 12012, 60060, 649950, 2278660, 3392843, 2278660, 649950, 60060, 291720, 3944928, 17970784, 36703824, 36703824, 17970784
Offset: 2

Views

Author

Gheorghe Coserea, Mar 14 2016

Keywords

Comments

Row n contains n-1 terms.

Examples

			Triangle starts:
n\f    [1]      [2]      [3]      [4]      [5]      [6]      [7]
[2]    1;
[3]    10,      10;
[4]    70,      167,     70;
[5]    420,     1720,    1720,    420;
[6]    2310,    14065,   24164,   14065,   2310;
[7]    12012,   100156,  256116,  256116,  100156,  12012;
[8]    60060,   649950,  2278660, 3392843, 2278660, 649950,  60060;
[9]    ...
		

Crossrefs

Columns f=1-10 give: A002802 f=1, A006295 f=2, A006296 f=3, A288071 f=4, A288072 f=5, A287046 f=6, A287047 f=7, A287048 f=8, A288073 f=9, A288074 f=10.
Row sums give A006300 (column 1 of A269919).
Cf. A006297 (row maxima).

Programs

  • Mathematica
    M = 9; G = 1; gMax[n_] := Min[Quotient[n, 2], G];
    Q = Array[0&, {M + 1, M + 1}];
    Qget[n_, g_] := If[g < 0 || g > n/2, 0, Q[[n + 1, g + 1]]];
    Qset[n_, g_, v_] := (Q[[n + 1, g + 1]] = v );
    Quadric[x_] := (Qset[0, 0, x]; For[n = 1, n <= Length[Q] - 1, n++, For[g = 0, g <= gMax[n], g++, t1 = (1 + x)*(2*n - 1)/3 * Qget[n - 1, g]; t2 = (2*n - 3)*(2*n - 2)*(2*n - 1)/12 * Qget[n - 2, g - 1]; t3 = 1/2 * Sum[ Sum[(2*k - 1) * (2*(n - k) - 1) * Qget[k - 1, i] * Qget[n - k - 1, g - i], {i, 0, g}], {k, 1, n-1}]; Qset[n, g, (t1 + t2 + t3) * 6/(n+1)]]]);
    Quadric[x];
    (List @@@ Table[Qget[n - 1 + 2*G, G] // Expand, {n, 1, M + 1 - 2*G}]) /. x -> 1 // Flatten (* Jean-François Alcover, Jun 13 2017, adapted from PARI *)
  • PARI
    N = 9; G = 1; gmax(n) = min(n\2, G);
    Q = matrix(N + 1, N + 1);
    Qget(n, g) = { if (g < 0 || g > n/2, 0, Q[n+1, g+1]) };
    Qset(n, g, v) = { Q[n+1, g+1] = v };
    Quadric({x=1}) = {
      Qset(0, 0, x);
      for (n = 1, length(Q)-1, for (g = 0, gmax(n),
        my(t1 = (1+x)*(2*n-1)/3 * Qget(n-1, g),
           t2 = (2*n-3)*(2*n-2)*(2*n-1)/12 * Qget(n-2, g-1),
           t3 = 1/2 * sum(k = 1, n-1, sum(i = 0, g,
           (2*k-1) * (2*(n-k)-1) * Qget(k-1, i) * Qget(n-k-1, g-i))));
        Qset(n, g, (t1 + t2 + t3) * 6/(n+1))));
    };
    Quadric('x);
    concat(apply(p->Vecrev(p/'x), vector(N+1 - 2*G, n, Qget(n-1 + 2*G, G))))