Skip to content

LittleSchroderNumbers ​

The little Schröder numbers (super-Catalan numbers) 1,1,3,11,45,197,…1, 1, 3, 11, 45, 197, … as a lazy indexed collection.

LittleSchroderNumberssns_n, counting dissections of a convex polygon, an infinite indexed collection.

Domain: Collections

Details
  • A lazy indexed collection: Count(LittleSchroderNumbers)=+∞Count(LittleSchroderNumbers) = +\infty, and At(LittleSchroderNumbers,k)At(LittleSchroderNumbers, k) unranks term k−1k-1 via (n+1)s(n)=(6n−3)s(n−1)−(n−2)s(n−2)(n+1)s(n) = (6n-3)s(n-1) - (n-2)s(n-2), s0=s1=1s_0 = s_1 = 1, bigint throughout -- At(LittleSchroderNumbers,1)=s0=1At(LittleSchroderNumbers, 1) = s_0 = 1.
  • OEIS A001003, starting exactly at its offset-0 term: 1,1,3,11,45,197,903,…1, 1, 3, 11, 45, 197, 903, ….
  • Membership goes through Element: Element(11,LittleSchroderNumbers)Element(11, LittleSchroderNumbers) is true, Element(6,LittleSchroderNumbers)Element(6, LittleSchroderNumbers) is false. See SchroederNumbers -- sns_n is exactly half SchroederNumbersSchroederNumbers's term for n≥1n \ge 1.

Definition

Epsil, as the implementation runs it.

count()

PositiveInfinity

unrank(_r)

1 if _r == 0 else Fold(
                        Function(sm_a + Binomial(_r + sm_k, _r - sm_k) * (Binomial(2sm_k, sm_k) -
                                                                          (0 if 2sm_k <
                                                                                sm_k + 1 else Binomial(2sm_k, sm_k + 1))), sm_a, sm_k),
                        0,
                        Range(0, _r, 1),
                      ) / 2

rank(_x)

Apply(
       (sq_at: integer) => (0 if _x == (1 if 0 == 0 else Fold(
                                                               Function(sm_a + Binomial(0 + sm_k, 0 - sm_k) *
                                                                               (Binomial(2sm_k, sm_k) -
                                                                                (0 if 2sm_k <
                                                                                      sm_k + 1 else Binomial(2sm_k, sm_k + 1))), sm_a, sm_k),
                                                               0,
                                                               Range(0, 0, 1),
                                                             ) / 2) else sq_at) if (1 if sq_at == 0 else Fold(
                                                                                                              Function(sm_a +
                                                                                                                       Binomial(sq_at + sm_k, sq_at - sm_k) *
                                                                                                                       (Binomial(2sm_k, sm_k) -
                                                                                                                        (0 if 2sm_k <
                                                                                                                              sm_k + 1 else Binomial(2sm_k, sm_k + 1))), sm_a, sm_k),
                                                                                                              0,
                                                                                                              Range(0, sq_at, 1),
                                                                                                            ) /
                                                                                                        2) ==
                                                                                  _x else -1,
       Fold(
             Function(sq_at + 2 ^ sq_b if (1 if sq_at + 2 ^ sq_b == 0 else Fold(
                                                                                 Function(sm_a +
                                                                                          Binomial(sq_at +
                                                                                                   2 ^ sq_b +
                                                                                                   sm_k, sq_at +
                                                                                                     2 ^ sq_b -
                                                                                                     sm_k) *
                                                                                          (Binomial(2sm_k, sm_k) -
                                                                                           (0 if 2sm_k <
                                                                                                 sm_k + 1 else Binomial(2sm_k, sm_k + 1))), sm_a, sm_k),
                                                                                 0,
                                                                                 Range(0, sq_at +
                                                                                          2 ^ sq_b, 1),
                                                                               ) /
                                                                           2) <=
                                          _x else sq_at, sq_at, sq_b),
             0,
             Range(Floor(Log(Floor(Log(_x, 2)) + 2, 2)) + 1, 0, -1),
           ),
     ) if True else -1

valid(_x)

Apply(
       (sq_at: integer) => (1 if sq_at == 0 else Fold(
                                                       Function(sm_a + Binomial(
                                                                                 sq_at + sm_k,
                                                                                 sq_at - sm_k,
                                                                               ) *
                                                                       (Binomial(2sm_k, sm_k) -
                                                                        (0 if 2sm_k <
                                                                              sm_k +
                                                                              1 else Binomial(2sm_k, sm_k + 1))), sm_a, sm_k),
                                                       0,
                                                       Range(0, sq_at, 1),
                                                     ) / 2) == _x,
       Fold(
             Function(sq_at + 2 ^ sq_b if (1 if sq_at + 2 ^ sq_b == 0 else Fold(
                                                                                 Function(sm_a +
                                                                                          Binomial(sq_at +
                                                                                                   2 ^ sq_b +
                                                                                                   sm_k, sq_at +
                                                                                                     2 ^ sq_b -
                                                                                                     sm_k) *
                                                                                          (Binomial(2sm_k, sm_k) -
                                                                                           (0 if 2sm_k <
                                                                                                 sm_k + 1 else Binomial(2sm_k, sm_k + 1))), sm_a, sm_k),
                                                                                 0,
                                                                                 Range(0, sq_at +
                                                                                          2 ^ sq_b, 1),
                                                                               ) /
                                                                           2) <=
                                          _x else sq_at, sq_at, sq_b),
             0,
             Range(Floor(Log(Floor(Log(_x, 2)) + 2, 2)) + 1, 0, -1),
           ),
     ) if True && _x >= 1 else False

Enumeration

Examples

1 more kept as data, checked against the oracles
About
Examples1
CrosswalkOEIS

See also: Count, At, Element, SchroederNumbers, CatalanNumbers