def yield_all_set_partitions_of_sequence(sequence):
    '''Yields all set partitions of `sequence`.

    ::

        >>> for set_partition in sequencetools.yield_all_set_partitions_of_sequence(
        ...     [21, 22, 23, 24]):
        ...     set_partition
        ...
        [[21, 22, 23, 24]]
        [[21, 22, 23], [24]]
        [[21, 22, 24], [23]]
        [[21, 22], [23, 24]]
        [[21, 22], [23], [24]]
        [[21, 23, 24], [22]]
        [[21, 23], [22, 24]]
        [[21, 23], [22], [24]]
        [[21, 24], [22, 23]]
        [[21], [22, 23, 24]]
        [[21], [22, 23], [24]]
        [[21, 24], [22], [23]]
        [[21], [22, 24], [23]]
        [[21], [22], [23, 24]]
        [[21], [22], [23], [24]]

    Returns set partitions in order of restricted growth function.

    Returns generator of list of lists.
    '''
    from abjad.tools import sequencetools

    for rgf in sequencetools.yield_all_restricted_growth_functions_of_length(len(sequence)):
        partition = sequencetools.partition_sequence_by_restricted_growth_function(sequence, rgf)
        yield partition
def test_sequencetools_yield_all_restricted_growth_functions_of_length_01():

    rgfs = sequencetools.yield_all_restricted_growth_functions_of_length(3)

    assert rgfs.next() == (1, 1, 1)
    assert rgfs.next() == (1, 1, 2)
    assert rgfs.next() == (1, 2, 1)
    assert rgfs.next() == (1, 2, 2)
    assert rgfs.next() == (1, 2, 3)
def yield_all_set_partitions_of_sequence(sequence):
    '''Yields all set partitions of `sequence`.

    ::

        >>> for set_partition in sequencetools.yield_all_set_partitions_of_sequence(
        ...     [21, 22, 23, 24]):
        ...     set_partition
        ...
        [[21, 22, 23, 24]]
        [[21, 22, 23], [24]]
        [[21, 22, 24], [23]]
        [[21, 22], [23, 24]]
        [[21, 22], [23], [24]]
        [[21, 23, 24], [22]]
        [[21, 23], [22, 24]]
        [[21, 23], [22], [24]]
        [[21, 24], [22, 23]]
        [[21], [22, 23, 24]]
        [[21], [22, 23], [24]]
        [[21, 24], [22], [23]]
        [[21], [22, 24], [23]]
        [[21], [22], [23, 24]]
        [[21], [22], [23], [24]]

    Returns set partitions in order of restricted growth function.

    Returns generator of list of lists.
    '''
    from abjad.tools import sequencetools

    if not isinstance(sequence, collections.Sequence):
        message = 'must by sequence {!r}.'
        message = message.format(sequence)
        raise Exception(message)

    sequence_type = type(sequence)

    for rgf in sequencetools.yield_all_restricted_growth_functions_of_length(
            len(sequence)):
        partition = sequencetools.partition_sequence_by_restricted_growth_function(
            sequence, rgf)
        yield partition
def yield_all_set_partitions_of_sequence(sequence):
    '''Yields all set partitions of `sequence`.

    ::

        >>> for set_partition in sequencetools.yield_all_set_partitions_of_sequence(
        ...     [21, 22, 23, 24]):
        ...     set_partition
        ...
        [[21, 22, 23, 24]]
        [[21, 22, 23], [24]]
        [[21, 22, 24], [23]]
        [[21, 22], [23, 24]]
        [[21, 22], [23], [24]]
        [[21, 23, 24], [22]]
        [[21, 23], [22, 24]]
        [[21, 23], [22], [24]]
        [[21, 24], [22, 23]]
        [[21], [22, 23, 24]]
        [[21], [22, 23], [24]]
        [[21, 24], [22], [23]]
        [[21], [22, 24], [23]]
        [[21], [22], [23, 24]]
        [[21], [22], [23], [24]]

    Returns set partitions in order of restricted growth function.

    Returns generator of list of lists.
    '''
    from abjad.tools import sequencetools

    if not isinstance(sequence, collections.Sequence):
        message = 'must by sequence {!r}.'
        message = message.format(sequence)
        raise Exception(message)

    sequence_type = type(sequence)

    for rgf in sequencetools.yield_all_restricted_growth_functions_of_length(
        len(sequence)):
        partition = sequencetools.partition_sequence_by_restricted_growth_function(sequence, rgf)
        yield partition
Example #5
0
def yield_all_set_partitions_of_sequence(sequence):
    '''Yields all set partitions of `sequence`.

    ::

        >>> for set_partition in sequencetools.yield_all_set_partitions_of_sequence(
        ...     [21, 22, 23, 24]):
        ...     set_partition
        ...
        [[21, 22, 23, 24]]
        [[21, 22, 23], [24]]
        [[21, 22, 24], [23]]
        [[21, 22], [23, 24]]
        [[21, 22], [23], [24]]
        [[21, 23, 24], [22]]
        [[21, 23], [22, 24]]
        [[21, 23], [22], [24]]
        [[21, 24], [22, 23]]
        [[21], [22, 23, 24]]
        [[21], [22, 23], [24]]
        [[21, 24], [22], [23]]
        [[21], [22, 24], [23]]
        [[21], [22], [23, 24]]
        [[21], [22], [23], [24]]

    Returns set partitions in order of restricted growth function.

    Returns generator of list of lists.
    '''
    from abjad.tools import sequencetools

    for rgf in sequencetools.yield_all_restricted_growth_functions_of_length(
            len(sequence)):
        partition = sequencetools.partition_sequence_by_restricted_growth_function(
            sequence, rgf)
        yield partition