Skip to content

LongestCatalanFactorSemilength ​

The semilength of the longest Dyck word in the Catalan factorization.

✓ checked against that system · ! checked, with disagreements (hover a chip)FindStatSt000875via BinaryWord✓
LongestCatalanFactorSemilength(word)The semilength of the longest Dyck word in the Catalan factorization.
Typed signatures
TypePackageApplies
(binary_word) -> numbercombinatoricsalways

Domain: Binary word statistics

Details
  • Defined over BinaryWord as an expression in _x, evaluated by compute-engine — the definition IS the implementation.
  • Takes a BinaryWord and nothing else — it reads values against their positions, or walks the orbits, so it needs the bijection. Applying it to a bare list is a type error, not a wrong answer.
  • FindStat's St000875. Every word is (D 0)^l D (1 D)^m with the D Dyck words; the longest D lies between two critical steps, or an end of the word and one.

Definition

Epsil, as the implementation runs it.

on BinaryWord, over _x

0 if Length(_x) < 1 else Apply(
                                (h: list<integer>) => Apply(
                                                             (g: list<integer>) => Max(g[1], g[2]) /
                                                                                   2,
                                                             Apply((a_init: list<integer>) => Fold(
                                                                                                    (a: list<integer>, b) => Apply(
                                                                                                                                    (a_next: list<integer>) => a_next,
                                                                                                                                    Apply(
                                                                                                                                           (c: integer) => [(1 - c) *
                                                                                                                                                            (a[1] + 1), Max(a[2], c * a[1])],
                                                                                                                                           (1 if h[b + 1] <
                                                                                                                                                 Min(Map(Function(h[m + 1], m), Range(0, b - 1, 1))) else 0) if _x[b] == 0 else 1 if h[b - 1 +
                                                                                                                                                                                    1] <
                                                                                                                                                                                  Min(Map(Function(h[m + 1], m), Range(b, Length(_x), 1))) else 0,
                                                                                                                                         ),
                                                                                                                                  ),
                                                                                                    a_init,
                                                                                                    Range(1, Length(_x)),
                                                                                                  ), [0, 0]),
                                                           ),
                                Apply((a_init: list<integer>) => Fold(
                                                                       (
                                                                         a: list<integer>,
                                                                         b,
                                                                       ) => Apply(
                                                                                  (a_next: list<integer>) => a_next,
                                                                                  Join(a, [a[Length(a)] +
                                                                                           (2 * _x[b] -
                                                                                            1)]),
                                                                                ),
                                                                       a_init,
                                                                       Range(1, Length(_x)),
                                                                     ), [0]),
                              )

Examples

Basic #

the word 110100111110100111

live ↗
InLongestCatalanFactorSemilength(BinaryWord⁡([1,1,0,1,0,0,1,1,1]))\mathrm{LongestCatalanFactorSemilength}({\operatorname{BinaryWord}}([1, 1, 0, 1, 0, 0, 1, 1, 1]))Out33
Properties #

FindStat's value for 0

live ↗
InCombinatorialStat(BinaryWord⁡([0]),LongestCatalanFactorSemilength)\mathrm{CombinatorialStat}({\operatorname{BinaryWord}}([0]), \text{LongestCatalanFactorSemilength})Out00

Known value · FindStat St000875

FindStat's value for 1

live ↗
InCombinatorialStat(BinaryWord⁡([1]),LongestCatalanFactorSemilength)\mathrm{CombinatorialStat}({\operatorname{BinaryWord}}([1]), \text{LongestCatalanFactorSemilength})Out00

Known value · FindStat St000875

FindStat's value for 00

live ↗
InCombinatorialStat(BinaryWord⁡([0,0]),LongestCatalanFactorSemilength)\mathrm{CombinatorialStat}({\operatorname{BinaryWord}}([0, 0]), \text{LongestCatalanFactorSemilength})Out00

Known value · FindStat St000875

About
Examples4
CrosswalkFindStat