Skip to content

LongestArithmeticProgression ​

The length of a longest subsequence whose entries form an arithmetic progression, of either sign.

✓ checked against that system · ! checked, with disagreements (hover a chip)FindStatSt001566via Permutation✓
LongestArithmeticProgression(p)The length of a longest subsequence whose entries form an arithmetic progression, of either sign.
Typed signatures
TypePackageApplies
(permutation) -> numbercombinatoricsalways

Domain: Permutation statistics

Details
  • Defined over Permutation as an expression in _x, evaluated by compute-engine — the definition IS the implementation.
  • Takes a Permutation 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.

Definition

Epsil, as the implementation runs it.

on Permutation, over _x

Length(_x) if Length(_x) < 2 else Max(Map(Function(Max(Map(
                                                            Function(Min(Filter(
                                                                                 Range(1, Length(_x)),
                                                                                 Function(_x[i] +
                                                                                          t * d <
                                                                                          1 ||
                                                                                          _x[i] +
                                                                                          t * d >
                                                                                          Length(_x) ||
                                                                                          Sum(Map(
                                                                                                   Function(m if _x[m] ==
                                                                                                                 _x[i] +
                                                                                                                 t * d else 0, m),
                                                                                                   Range(1, Length(_x)),
                                                                                                 )) <
                                                                                          Sum(Map(
                                                                                                   Function(m if _x[m] ==
                                                                                                                 _x[i] +
                                                                                                                 (t - 1) *
                                                                                                                 d else 0, m),
                                                                                                   Range(1, Length(_x)),
                                                                                                 )), t),
                                                                               )), d),
                                                            Filter(
                                                                    Range(1 -
                                                                          Length(_x), Length(_x) -
                                                                            1),
                                                                    Function(d !=
                                                                             0, d),
                                                                  ),
                                                          )), i), Range(
                                                                        1,
                                                                        Length(_x),
                                                                      )))

Examples

Basic #

the one-line word 312312

live ↗
InLongestArithmeticProgression(Permutation⁡([3,1,2]))\mathrm{LongestArithmeticProgression}({\operatorname{Permutation}}([3, 1, 2]))Out22

the one-line word 24132413

live ↗
InLongestArithmeticProgression(Permutation⁡([2,4,1,3]))\mathrm{LongestArithmeticProgression}({\operatorname{Permutation}}([2, 4, 1, 3]))Out22
Properties #

FindStat's value for [1]

live ↗
InCombinatorialStat(Permutation⁡([1]),LongestArithmeticProgression)\mathrm{CombinatorialStat}({\operatorname{Permutation}}([1]), \text{LongestArithmeticProgression})Out11

Known value · FindStat St001566

FindStat's value for [1,2]

live ↗
InCombinatorialStat(Permutation⁡([1,2]),LongestArithmeticProgression)\mathrm{CombinatorialStat}({\operatorname{Permutation}}([1, 2]), \text{LongestArithmeticProgression})Out22

Known value · FindStat St001566

FindStat's value for [2,1]

live ↗
InCombinatorialStat(Permutation⁡([2,1]),LongestArithmeticProgression)\mathrm{CombinatorialStat}({\operatorname{Permutation}}([2, 1]), \text{LongestArithmeticProgression})Out22

Known value · FindStat St001566

About
Examples5
CrosswalkFindStat