def _precompute_compositions(self):
     compositions = {}
     max_divisions = self._definition['max_divisions']
     for divisor in self._definition['divisors']:
         compositions[divisor] = [tuple(x) for x in 
             mathtools.yield_all_compositions_of_integer(divisor)
             if 1 < len(x) <= max_divisions]
     return compositions
 def _precompute_compositions(self):
     compositions = {}
     max_divisions = self._definition['max_divisions']
     for divisor in self._definition['divisors']:
         compositions[divisor] = [
             tuple(x)
             for x in mathtools.yield_all_compositions_of_integer(divisor)
             if 1 < len(x) <= max_divisions
         ]
     return compositions
def test_mathtools_yield_all_compositions_of_integer_01():
    r'''Yield all compositions (that is, ordered partitions)
    of positive integer n, in descending lex order.'''

    compositions = mathtools.yield_all_compositions_of_integer(5)
    compositions = list(compositions)

    assert compositions[0] == (5, )
    assert compositions[1] == (4, 1)
    assert compositions[2] == (3, 2)
    assert compositions[3] == (3, 1, 1)
    assert compositions[4] == (2, 3)
    assert compositions[5] == (2, 2, 1)
    assert compositions[6] == (2, 1, 2)
    assert compositions[7] == (2, 1, 1, 1)
    assert compositions[8] == (1, 4)
    assert compositions[9] == (1, 3, 1)
    assert compositions[10] == (1, 2, 2)
    assert compositions[11] == (1, 2, 1, 1)
    assert compositions[12] == (1, 1, 3)
    assert compositions[13] == (1, 1, 2, 1)
    assert compositions[14] == (1, 1, 1, 2)
    assert compositions[15] == (1, 1, 1, 1, 1)
def test_mathtools_yield_all_compositions_of_integer_01():
    r'''Yield all compositions (that is, ordered partitions)
    of positive integer n, in descending lex order.'''


    compositions = mathtools.yield_all_compositions_of_integer(5)
    compositions = list(compositions)

    assert compositions[0] == (5,)
    assert compositions[1] == (4, 1)
    assert compositions[2] == (3, 2)
    assert compositions[3] == (3, 1, 1)
    assert compositions[4] == (2, 3)
    assert compositions[5] == (2, 2, 1)
    assert compositions[6] == (2, 1, 2)
    assert compositions[7] == (2, 1, 1, 1)
    assert compositions[8] == (1, 4)
    assert compositions[9] == (1, 3, 1)
    assert compositions[10] == (1, 2, 2)
    assert compositions[11] == (1, 2, 1, 1)
    assert compositions[12] == (1, 1, 3)
    assert compositions[13] == (1, 1, 2, 1)
    assert compositions[14] == (1, 1, 1, 2)
    assert compositions[15] == (1, 1, 1, 1, 1)
 def __call__(self):
     self.result = [x for x in mathtools.yield_all_compositions_of_integer(self.number)]