Function malachite_base::sets::exhaustive::shortlex_b_tree_sets_min_length
source · pub fn shortlex_b_tree_sets_min_length<I: Clone + Iterator>(
min_length: u64,
xs: I,
) -> ShortlexOrderedUniqueCollections<I, BTreeSet<I::Item>> ⓘ
Expand description
Generates BTreeSet
s with a mininum length, with elements from a single iterator.
The BTreeSet
s are generated in order of increasing length, and within each length they are
ordered lexicographically with respect to the order of the element iterator.
The source iterator should not repeat any elements, but this is not enforced.
The iterator should be finite; if it is infinite, BTreeSet
s of length \max(2, \ell + 1)
and above will never be generated.
If the input iterator is infinite, the output length is also infinite.
If the input iterator length is $n$ and the min_length
is $\ell$, the output length is
$$
\sum_{i=\ell}^n \binom{n}{i}.
$$
§Examples
use itertools::Itertools;
use malachite_base::sets::exhaustive::shortlex_b_tree_sets_min_length;
use maplit::btreeset;
let xss = shortlex_b_tree_sets_min_length(2, 1..=4).collect_vec();
assert_eq!(
xss,
&[
btreeset! {1, 2},
btreeset! {1, 3},
btreeset! {1, 4},
btreeset! {2, 3},
btreeset! {2, 4},
btreeset! {3, 4},
btreeset! {1, 2, 3},
btreeset! {1, 2, 4},
btreeset! {1, 3, 4},
btreeset! {2, 3, 4},
btreeset! {1, 2, 3, 4}
]
);