fn double_covering_restricted_prefix_combinations(
    main_outcome_prefix: &[usize],
    other_interval_prefix: &[usize],
    oracle_digits_infos: &[usize],
    suffix_len: usize,
) -> Vec<Vec<Vec<usize>>> {
    let mut combinations = double_covering_prefix_combinations(
        main_outcome_prefix,
        main_outcome_prefix,
        other_interval_prefix,
        oracle_digits_infos,
        suffix_len,
    );

    if main_outcome_prefix > other_interval_prefix {
        combinations.remove(combinations.len() - 1);
        combinations
    } else {
        combinations.into_iter().skip(1).collect::<Vec<_>>()
    }
}
/// All combinations of main outcome and other except for the one that contains
/// only main outcome.
All combinations of main outcome and other except for the one that contains
only main outcome.
All combinations of main outcome and other except for the one that contains only main outcome .
fn double_covering_restricted_prefix_combinations(
    main_outcome_prefix: &[usize],
    other_interval_prefix: &[usize],
    oracle_digits_infos: &[usize],
    suffix_len: usize,
) -> Vec<Vec<Vec<usize>>> {
    let mut combinations = double_covering_prefix_combinations(
        main_outcome_prefix,
        main_outcome_prefix,
        other_interval_prefix,
        oracle_digits_infos,
        suffix_len,
    );
    if main_outcome_prefix > other_interval_prefix {
        combinations.remove(combinations.len() - 1);
        combinations
    } else {
        combinations.into_iter().skip(1).collect::<Vec<_>>()
    }
}
fn double_covering_restricted_prefix_combinations ( main_outcome_prefix : & [ usize ] , other_interval_prefix : & [ usize ] , oracle_digits_infos : & [ usize ] , suffix_len : usize , ) -> Vec < Vec < Vec < usize > > > { let mut combinations = double_covering_prefix_combinations ( main_outcome_prefix , main_outcome_prefix , other_interval_prefix , oracle_digits_infos , suffix_len , ) ; if main_outcome_prefix > other_interval_prefix { combinations . remove ( combinations . len ( ) - 1 ) ; combinations } else { combinations . into_iter ( ) . skip ( 1 ) . collect :: < Vec < _ > > ( ) } }
All combinations of main outcome and other except for the one that contains
only main outcome.
All combinations of main outcome and other except for the one that contains only main outcome .
main_outcome_prefix
&[usize]
other_interval_prefix
&[usize]
oracle_digits_infos
&[usize]
suffix_len
usize