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.

A034297 Number of ordered positive integer solutions (m_1, m_2, ..., m_k) (for some k) to Sum_{i=1..k} m_i=n with |m_i-m_{i-1}| <= 1 for i = 2 ... k.

Original entry on oeis.org

1, 1, 2, 4, 6, 11, 17, 29, 47, 78, 130, 215, 357, 595, 990, 1651, 2748, 4584, 7643, 12744, 21256, 35451, 59133, 98636, 164531, 274463, 457837, 763746, 1274060, 2125356, 3545491, 5914545, 9866602, 16459421, 27457549, 45804648, 76411272, 127469285, 212644336
Offset: 0

Views

Author

Keywords

Comments

Compositions of n where successive parts differ by at most 1, see example. [Joerg Arndt, Dec 10 2012]

Examples

			From _Joerg Arndt_, Dec 10 2012: (Start)
The a(6) = 17 such compositions of 6 are
[ #]     composition
[ 1]    [ 1 1 1 1 1 1 ]
[ 2]    [ 1 1 1 1 2 ]
[ 3]    [ 1 1 1 2 1 ]
[ 4]    [ 1 1 2 1 1 ]
[ 5]    [ 1 1 2 2 ]
[ 6]    [ 1 2 1 1 1 ]
[ 7]    [ 1 2 1 2 ]
[ 8]    [ 1 2 2 1 ]
[ 9]    [ 1 2 3 ]
[10]    [ 2 1 1 1 1 ]
[11]    [ 2 1 1 2 ]
[12]    [ 2 1 2 1 ]
[13]    [ 2 2 1 1 ]
[14]    [ 2 2 2 ]
[15]    [ 3 2 1 ]
[16]    [ 3 3 ]
[17]    [ 6 ]
(End)
		

Crossrefs

Column k=1 of A214246, A214248.
Row sums of A309939.

Programs

  • Maple
    b:= proc(n, i) option remember;
          `if`(n=i, 1, `if`(n<0 or i<1, 0, add(b(n-i, i+j), j=-1..1)))
        end:
    a:= n-> add(b(n, k), k=0..n):
    seq(a(n), n=0..50);  # Alois P. Heinz, Jul 06 2012
  • Mathematica
    b[n_, i_] := b[n, i] = If[n == i, 1, If[n<0 || i<1, 0, Sum[b[n-i, i+j], {j, -1, 1}] ]]; a[n_] := Sum[b[n, k], {k, 1, n}]; Array[a, 50] (* Jean-François Alcover, Mar 13 2015, after Alois P. Heinz *)
  • PARI
    N=70;  nil=-1;
    T = matrix(N, N, i, j, nil);
    doIt(last, left) = my(c); c = T[last, left]; if (c == nil, c = 0; for (i = max(1, last - 1), last + 1, c += b(i, left - i)); T[last, left] = c); c;
    b(last, left) = if (left == 0, return(1)); if (left < 0, return(0)); doIt(last, left);
    a(n) = sum (i = 1, n, b(i, n - i));
    vector(N,n,a(n))  \\ David Wasserman, Feb 02 2006
    
  • Python
    from sympy.core.cache import cacheit
    @cacheit
    def b(n, i): return 1 if n==i else 0 if n<0 or i<1 else sum(b(n - i, i + j) for j in range(-1, 2))
    def a(n): return sum(b(n, k) for k in range(n + 1))
    print([a(n) for n in range(51)]) # Indranil Ghosh, Aug 14 2017, after Maple code

Formula

a(n) ~ c * d^n, where d = 1.668202067018461116361070469945501401879811945303435230637248..., c = 0.762436680050402638439806786781869262562176911054246754543346... . - Vaclav Kotesovec, Sep 02 2014

Extensions

More terms from David Wasserman, Feb 02 2006
a(0)=1 prepended by Alois P. Heinz, Aug 14 2017