Function malachite_base::sets::exhaustive::exhaustive_b_tree_sets

source ·
pub fn exhaustive_b_tree_sets<I: Clone + Iterator>(
    xs: I,
) -> ExhaustiveOrderedUniqueCollections<I, BTreeSet<I::Item>> 
where I::Item: Clone + Ord,
Expand description

Generates BTreeSets with elements from a single iterator.

The source iterator should not repeat any elements, but this is not enforced.

The iterator should be finite; if it is infinite, only prefixes of the iterator will be generated.

If the input iterator is infinite, the output length is also infinite.

If the input iterator length is $n$, the output length is $2^n$.

If xs is empty, the output consists of a single empty BTreeSet.

§Examples

use itertools::Itertools;
use malachite_base::sets::exhaustive::exhaustive_b_tree_sets;
use maplit::btreeset;

let xss = exhaustive_b_tree_sets(1..=4).collect_vec();
assert_eq!(
    xss,
    &[
        btreeset! {},
        btreeset! {1},
        btreeset! {2},
        btreeset! {1, 2},
        btreeset! {3},
        btreeset! {1, 3},
        btreeset! {2, 3},
        btreeset! {1, 2, 3},
        btreeset! {4},
        btreeset! {1, 4},
        btreeset! {2, 4},
        btreeset! {1, 2, 4},
        btreeset! {3, 4},
        btreeset! {1, 3, 4},
        btreeset! {2, 3, 4},
        btreeset! {1, 2, 3, 4}
    ]
);