Signed Compositions

class sage.combinat.composition_signed.SignedCompositions(n)[source]

Bases: Compositions_n

The class of signed compositions of \(n\).

EXAMPLES:

sage: SC3 = SignedCompositions(3); SC3
Signed compositions of 3
sage: SC3.cardinality()
18
sage: len(SC3.list())
18
sage: SC3.first()
[1, 1, 1]
sage: SC3.last()
[-3]
sage: SC3.random_element() # random
[1, -1, 1]
sage: SC3.list()
[[1, 1, 1],
 [1, 1, -1],
 [1, -1, 1],
 [1, -1, -1],
 [-1, 1, 1],
 [-1, 1, -1],
 [-1, -1, 1],
 [-1, -1, -1],
 [1, 2],
 [1, -2],
 [-1, 2],
 [-1, -2],
 [2, 1],
 [2, -1],
 [-2, 1],
 [-2, -1],
 [3],
 [-3]]
>>> from sage.all import *
>>> SC3 = SignedCompositions(Integer(3)); SC3
Signed compositions of 3
>>> SC3.cardinality()
18
>>> len(SC3.list())
18
>>> SC3.first()
[1, 1, 1]
>>> SC3.last()
[-3]
>>> SC3.random_element() # random
[1, -1, 1]
>>> SC3.list()
[[1, 1, 1],
 [1, 1, -1],
 [1, -1, 1],
 [1, -1, -1],
 [-1, 1, 1],
 [-1, 1, -1],
 [-1, -1, 1],
 [-1, -1, -1],
 [1, 2],
 [1, -2],
 [-1, 2],
 [-1, -2],
 [2, 1],
 [2, -1],
 [-2, 1],
 [-2, -1],
 [3],
 [-3]]
cardinality()[source]

Return the number of elements in self.

The number of signed compositions of \(n\) is equal to

\[\sum_{i=1}^{n+1} \binom{n-1}{i-1} 2^i\]

EXAMPLES:

sage: SC4 = SignedCompositions(4)
sage: SC4.cardinality() == len(SC4.list())
True
sage: SignedCompositions(3).cardinality()
18
>>> from sage.all import *
>>> SC4 = SignedCompositions(Integer(4))
>>> SC4.cardinality() == len(SC4.list())
True
>>> SignedCompositions(Integer(3)).cardinality()
18