Skip to main content

sim_lib_discrete_comb/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Discrete combinatorics.
4//!
5//! This crate hosts exact counting functions (over `num_bigint::BigUint`), lazy
6//! enumerators, and canonical combinadic / Lehmer / mixed-radix rank-unrank
7//! helpers. These ordinals are the bridge to rank, but this crate never depends
8//! on `sim-lib-rank`.
9
10pub mod bit_vector;
11pub mod cards;
12pub mod combination;
13pub mod cookbook;
14pub mod count;
15pub mod error;
16pub mod mixed_radix;
17pub mod partition;
18pub mod permutation;
19pub mod subset;
20pub mod word;
21
22pub use bit_vector::{BitVectorIter, bit_vector_rank, bit_vector_unrank, bit_vectors};
23pub use cards::{CardSpec, combinatorics_cards};
24pub use combination::{CombinationIter, combination_rank, combination_unrank, combinations};
25pub use cookbook::{
26    FiniteEnumerationDemo, RankableValuesDemo, finite_enumeration_demo, rankable_values_demo,
27};
28pub use count::{
29    MAX_BINOMIAL_INPUT, MAX_FACTORIAL_INPUT, MAX_PARTITION_INPUT, bell_number, binomial,
30    binomial_checked, factorial, factorial_checked, falling_factorial, integer_partition_count,
31    integer_partition_count_checked, multinomial, permutation_count, stirling2,
32};
33pub use error::CombError;
34pub use mixed_radix::{mixed_radix_rank, mixed_radix_unrank};
35pub use partition::{IntegerPartitionIter, integer_partitions};
36pub use permutation::{PermutationIter, permutation_rank, permutation_unrank, permutations};
37pub use subset::{SubsetIter, subset_rank, subset_unrank, subsets};
38pub use word::{
39    MixedRadixWords, canonical_cycles, digits_to_word, longest_only, word_count, word_radices,
40    word_rank, word_to_digits, word_unrank, words,
41};
42
43/// Cookbook recipes for this lib, embedded at build time.
44pub static RECIPES: sim_cookbook::EmbeddedDir =
45    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));