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>>ⓘNotable traits for ExhaustiveOrderedUniqueCollections<I, C>impl<I: Iterator, C: FromIterator<I::Item>> Iterator for ExhaustiveOrderedUniqueCollections<I, C> where
I::Item: Clone, type Item = C;
where
I::Item: Clone + Ord,
Expand description
Generates BTreeSet
s 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
extern crate itertools;
#[macro_use]
extern crate maplit;
use itertools::Itertools;
use malachite_base::sets::exhaustive::exhaustive_b_tree_sets;
fn main() {
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}
]
);
}