Skip to content

CouplesAreForeverGrundyValue ​

The Grundy value of the game that splits a part above 2 into two parts: the nim-sum of the values of the parts, each the least value missing from the nim-sums over its splits.

✓ checked against that system · ! checked, with disagreements (hover a chip)FindStatSt000752via IntegerPartition✓
CouplesAreForeverGrundyValue(partition)The Grundy value of the game that splits a part above 2 into two parts: the nim-sum of the values of the parts, each the least value missing from the nim-sums over its splits.
Typed signatures
TypePackageApplies
(integer_partition) -> numbercombinatoricsalways

Domain: Partition statistics

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

0 if Length(_x) < 1 else Apply(
                                (g: list<integer>) => Fold(
                                                            Function(a + b - 2 *
                                                                             Sum(Map(Function(2 ^ k *
                                                                                              ((a -
                                                                                                a %
                                                                                                2 ^ k) /
                                                                                               2 ^ k %
                                                                                               2) *
                                                                                              ((b -
                                                                                                b %
                                                                                                2 ^ k) /
                                                                                               2 ^ k %
                                                                                               2), k), Range(0, Sum(_x)))), a, b),
                                                            0,
                                                            Map(
                                                                 Function(
                                                                           g[_x[i]],
                                                                           i,
                                                                         ),
                                                                 Range(
                                                                        1,
                                                                        Length(_x),
                                                                      ),
                                                               ),
                                                          ),
                                Fold(Function(Map(
                                                   Function((0 if b < 3 else Apply(
                                                                                    (s: list<integer>) => Min(Map(
                                                                                                                   Function(k if Sum(Map(Function(1 if m == k else 0, m), s)) ==
                                                                                                                                 0 else b, k),
                                                                                                                   Range(0, b - 1),
                                                                                                                 )),
                                                                                    Map(Function(a[j] +
                                                                                                 a[b - j] -
                                                                                                 2 *
                                                                                                 Sum(Map(Function(2 ^ k *
                                                                                                                  ((a[j] -
                                                                                                                    a[j] %
                                                                                                                    2 ^ k) /
                                                                                                                   2 ^ k %
                                                                                                                   2) *
                                                                                                                  ((a[b - j] -
                                                                                                                    a[b - j] %
                                                                                                                    2 ^ k) /
                                                                                                                   2 ^ k %
                                                                                                                   2), k), Range(0, Sum(_x)))), j), Range(1, b - 1)),
                                                                                  )) if i == b else a[i], i),
                                                   Range(1, Sum(_x)),
                                                 ), a, b), Map(
                                                               Function(0, i),
                                                               Range(1, Sum(_x)),
                                                             ), Range(1, Sum(_x))),
                              )

Examples

Basic #

the partition 4+2+14 + 2 + 1 of 77

live ↗
InCouplesAreForeverGrundyValue(IntegerPartition⁡([4,2,1]))\mathrm{CouplesAreForeverGrundyValue}({\operatorname{IntegerPartition}}([4, 2, 1]))Out22

the partition 3+3+13 + 3 + 1 of 77

live ↗
InCouplesAreForeverGrundyValue(IntegerPartition⁡([3,3,1]))\mathrm{CouplesAreForeverGrundyValue}({\operatorname{IntegerPartition}}([3, 3, 1]))Out00
Properties #

FindStat's value for [1]

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

Known value · FindStat St000752

FindStat's value for [2]

live ↗
InCombinatorialStat(IntegerPartition⁡([2]),CouplesAreForeverGrundyValue)\mathrm{CombinatorialStat}({\operatorname{IntegerPartition}}([2]), \text{CouplesAreForeverGrundyValue})Out00

Known value · FindStat St000752

FindStat's value for [3]

live ↗
InCombinatorialStat(IntegerPartition⁡([3]),CouplesAreForeverGrundyValue)\mathrm{CombinatorialStat}({\operatorname{IntegerPartition}}([3]), \text{CouplesAreForeverGrundyValue})Out11

Known value · FindStat St000752

About
Examples5
CrosswalkFindStat